Re: [PATCH 2/2] ARM: S3C2443: Workaround for 2443 EXTINT error

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Alexander,

I think this patch needs a bit more love :-) .

Please run scripts/checkpatch.pl on it and fix all the reported problems.

And I'd change the comment to something like:

/*
 * S3C2443 CPU has a problem with EXTINTn registers.
 * Essentially register-reads return transformed data, but the write
 * is done according to the datasheet.
 *
 * Fix this by transforming the read data to the correct format.
 *
 * For details refer to the document "S3C2443 GUIDE TO EXTRA GPIO"
 */

Especially the mail address does not need to be in the code - the git history 
preserves the committer identity quite well.


Heiko 

Am Montag, 26. November 2012, 09:44:41 schrieb Alexander Varnin:
> S3C2443 CPU has a problem with incorrect reading from EXTINTn
> registers. So s3c_irqext_type function wrongly modifies them.
> So add special check to s3c_irqext_type, to handle this case.
> 
> Signed-off-by: Alexander Varnin <fenixk19@xxxxxxx>
> ---
>  arch/arm/plat-s3c24xx/irq.c |   26 ++++++++++++++++++++++++++
>  1 files changed, 26 insertions(+), 0 deletions(-)
> 
> diff --git a/arch/arm/plat-s3c24xx/irq.c b/arch/arm/plat-s3c24xx/irq.c
> index fe57bbb..ed19996 100644
> --- a/arch/arm/plat-s3c24xx/irq.c
> +++ b/arch/arm/plat-s3c24xx/irq.c
> @@ -219,6 +219,32 @@ s3c_irqext_type(struct irq_data *data, unsigned int
> type) }
> 
>  	value = __raw_readl(extint_reg);
> +
> +	/*
> +	* S3C2443 CPU has a problem with EXTINTn registers.
> +	* Essentially register-reads returned transformed data, but the write
> +	* is done according to the datasheet.
> +	*
> +	* There is hack introduced for 2443 error workaround.
> +	*
> +	* For detais refer to the document "S3C2443 GUIDE TO EXTRA GPIO" found on
> the web. +	*
> +	* A. Varnin <fenixk19@xxxxxxx>
> +	*/

> +	if(soc_is_s3c2443())
> +	{
> +	    	int i;
> +		int fixed = 0;
> +		if(extint_reg == S3C24XX_EXTINT1 || extint_reg == S3C24XX_EXTINT2)
> +			for(i=0; i<7;i++)
> +		    		fixed |= (((value >> ((7-i)*4+1)) & 7) | ((value >> ((7-
i)*4-3)) &
> 8)) << i*4; +		else
> +			for(i=0; i<7;i++)
> +		    		fixed |= ( (value >> (7-i)*4) & 0xf )  << i*4;
> +		fixed |= (((value>>1) & 7) | ((value<<3) & 8)) << 27;
> +		value = fixed;
> +	}
> +
>  	value = (value & ~(7 << extint_offset)) | (newvalue << extint_offset);
>  	__raw_writel(value, extint_reg);

--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux SoC Development]     [Linux Rockchip Development]     [Linux USB Development]     [Video for Linux]     [Linux Audio Users]     [Linux SCSI]     [Yosemite News]

  Powered by Linux