Is it ok, to send only one last patch after changes, without the one,
who make macro?
26.11.2012 13:12, Heiko Stübner пишет:
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