All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] ARM: S3C2443: introduce soc_is_s3c2443 macro
@ 2012-11-26  8:40 Alexander Varnin
  2012-11-26  8:40 ` [PATCH 2/2] ARM: S3C2443: Workaround for 2443 EXTINT error Alexander Varnin
  2012-11-26  9:02 ` [PATCH 1/2] ARM: S3C2443: introduce soc_is_s3c2443 macro Heiko Stübner
  0 siblings, 2 replies; 5+ messages in thread
From: Alexander Varnin @ 2012-11-26  8:40 UTC (permalink / raw)
  To: linux-samsung-soc, kgene, heiko; +Cc: Alexander Varnin

Signed-off-by: Alexander Varnin <fenixk19@mail.ru>
---
 arch/arm/plat-samsung/include/plat/cpu.h |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/arch/arm/plat-samsung/include/plat/cpu.h b/arch/arm/plat-samsung/include/plat/cpu.h
index ace4451..613f492 100644
--- a/arch/arm/plat-samsung/include/plat/cpu.h
+++ b/arch/arm/plat-samsung/include/plat/cpu.h
@@ -23,6 +23,9 @@ extern unsigned long samsung_cpu_id;
 #define S3C24XX_CPU_ID		0x32400000
 #define S3C24XX_CPU_MASK	0xFFF00000
 
+#define S3C2443_CPU_ID		0x32443001
+#define S3C2443_CPU_MASK	0xFFFFFFFF
+
 #define S3C6400_CPU_ID		0x36400000
 #define S3C6410_CPU_ID		0x36410000
 #define S3C64XX_CPU_MASK	0xFFFFF000
@@ -52,6 +55,7 @@ static inline int is_samsung_##name(void)	\
 }
 
 IS_SAMSUNG_CPU(s3c24xx, S3C24XX_CPU_ID, S3C24XX_CPU_MASK)
+IS_SAMSUNG_CPU(s3c2443, S3C2443_CPU_ID, S3C2443_CPU_MASK)
 IS_SAMSUNG_CPU(s3c6400, S3C6400_CPU_ID, S3C64XX_CPU_MASK)
 IS_SAMSUNG_CPU(s3c6410, S3C6410_CPU_ID, S3C64XX_CPU_MASK)
 IS_SAMSUNG_CPU(s5p6440, S5P6440_CPU_ID, S5P64XX_CPU_MASK)
@@ -72,6 +76,12 @@ IS_SAMSUNG_CPU(exynos5250, EXYNOS5250_SOC_ID, EXYNOS5_SOC_MASK)
 # define soc_is_s3c24xx()	0
 #endif
 
+#if defined(CONFIG_CPU_S3C2443)
+# define soc_is_s3c2443()	is_samsung_s3c2443()
+#else
+# define soc_is_s3c2443()	0
+#endif
+
 #if defined(CONFIG_CPU_S3C6400) || defined(CONFIG_CPU_S3C6410)
 # define soc_is_s3c64xx()	(is_samsung_s3c6400() || is_samsung_s3c6410())
 #else
-- 
1.7.2.5

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 2/2] ARM: S3C2443: Workaround for 2443 EXTINT error
  2012-11-26  8:40 [PATCH 1/2] ARM: S3C2443: introduce soc_is_s3c2443 macro Alexander Varnin
@ 2012-11-26  8:40 ` Alexander Varnin
  2012-11-26  8:44   ` Alexander Varnin
  2012-11-26  9:02 ` [PATCH 1/2] ARM: S3C2443: introduce soc_is_s3c2443 macro Heiko Stübner
  1 sibling, 1 reply; 5+ messages in thread
From: Alexander Varnin @ 2012-11-26  8:40 UTC (permalink / raw)
  To: linux-samsung-soc, kgene, heiko; +Cc: 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@mail.ru>
---
 arch/arm/plat-s3c24xx/irq.c |   15 +++++++++++++++
 1 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/arch/arm/plat-s3c24xx/irq.c b/arch/arm/plat-s3c24xx/irq.c
index fe57bbb..bb36fc9 100644
--- a/arch/arm/plat-s3c24xx/irq.c
+++ b/arch/arm/plat-s3c24xx/irq.c
@@ -219,6 +219,21 @@ s3c_irqext_type(struct irq_data *data, unsigned int type)
 	}
 
 	value = __raw_readl(extint_reg);
+
+	if( (samsung_cpu_id & 0xfffff) == 0x43001) //Hack for 2443 error workaround
+	{
+	    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);
 
-- 
1.7.2.5

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 1/2] ARM: S3C2443: introduce soc_is_s3c2443 macro
@ 2012-11-26  8:44 Alexander Varnin
  0 siblings, 0 replies; 5+ messages in thread
From: Alexander Varnin @ 2012-11-26  8:44 UTC (permalink / raw)
  To: linux-samsung-soc, kgene, heiko; +Cc: Alexander Varnin

Signed-off-by: Alexander Varnin <fenixk19@mail.ru>
---
 arch/arm/plat-samsung/include/plat/cpu.h |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/arch/arm/plat-samsung/include/plat/cpu.h b/arch/arm/plat-samsung/include/plat/cpu.h
index ace4451..613f492 100644
--- a/arch/arm/plat-samsung/include/plat/cpu.h
+++ b/arch/arm/plat-samsung/include/plat/cpu.h
@@ -23,6 +23,9 @@ extern unsigned long samsung_cpu_id;
 #define S3C24XX_CPU_ID		0x32400000
 #define S3C24XX_CPU_MASK	0xFFF00000
 
+#define S3C2443_CPU_ID		0x32443001
+#define S3C2443_CPU_MASK	0xFFFFFFFF
+
 #define S3C6400_CPU_ID		0x36400000
 #define S3C6410_CPU_ID		0x36410000
 #define S3C64XX_CPU_MASK	0xFFFFF000
@@ -52,6 +55,7 @@ static inline int is_samsung_##name(void)	\
 }
 
 IS_SAMSUNG_CPU(s3c24xx, S3C24XX_CPU_ID, S3C24XX_CPU_MASK)
+IS_SAMSUNG_CPU(s3c2443, S3C2443_CPU_ID, S3C2443_CPU_MASK)
 IS_SAMSUNG_CPU(s3c6400, S3C6400_CPU_ID, S3C64XX_CPU_MASK)
 IS_SAMSUNG_CPU(s3c6410, S3C6410_CPU_ID, S3C64XX_CPU_MASK)
 IS_SAMSUNG_CPU(s5p6440, S5P6440_CPU_ID, S5P64XX_CPU_MASK)
@@ -72,6 +76,12 @@ IS_SAMSUNG_CPU(exynos5250, EXYNOS5250_SOC_ID, EXYNOS5_SOC_MASK)
 # define soc_is_s3c24xx()	0
 #endif
 
+#if defined(CONFIG_CPU_S3C2443)
+# define soc_is_s3c2443()	is_samsung_s3c2443()
+#else
+# define soc_is_s3c2443()	0
+#endif
+
 #if defined(CONFIG_CPU_S3C6400) || defined(CONFIG_CPU_S3C6410)
 # define soc_is_s3c64xx()	(is_samsung_s3c6400() || is_samsung_s3c6410())
 #else
-- 
1.7.2.5

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH 2/2] ARM: S3C2443: Workaround for 2443 EXTINT error
  2012-11-26  8:40 ` [PATCH 2/2] ARM: S3C2443: Workaround for 2443 EXTINT error Alexander Varnin
@ 2012-11-26  8:44   ` Alexander Varnin
  0 siblings, 0 replies; 5+ messages in thread
From: Alexander Varnin @ 2012-11-26  8:44 UTC (permalink / raw)
  To: Alexander Varnin; +Cc: linux-samsung-soc, kgene, heiko

Sorry, an old version.

26.11.2012 12:40, 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@mail.ru>
> ---
>   arch/arm/plat-s3c24xx/irq.c |   15 +++++++++++++++
>   1 files changed, 15 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/plat-s3c24xx/irq.c b/arch/arm/plat-s3c24xx/irq.c
> index fe57bbb..bb36fc9 100644
> --- a/arch/arm/plat-s3c24xx/irq.c
> +++ b/arch/arm/plat-s3c24xx/irq.c
> @@ -219,6 +219,21 @@ s3c_irqext_type(struct irq_data *data, unsigned int type)
>   	}
>   
>   	value = __raw_readl(extint_reg);
> +
> +	if( (samsung_cpu_id & 0xfffff) == 0x43001) //Hack for 2443 error workaround
> +	{
> +	    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);
>   

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/2] ARM: S3C2443: introduce soc_is_s3c2443 macro
  2012-11-26  8:40 [PATCH 1/2] ARM: S3C2443: introduce soc_is_s3c2443 macro Alexander Varnin
  2012-11-26  8:40 ` [PATCH 2/2] ARM: S3C2443: Workaround for 2443 EXTINT error Alexander Varnin
@ 2012-11-26  9:02 ` Heiko Stübner
  1 sibling, 0 replies; 5+ messages in thread
From: Heiko Stübner @ 2012-11-26  9:02 UTC (permalink / raw)
  To: Alexander Varnin; +Cc: linux-samsung-soc, kgene

Am Montag, 26. November 2012, 09:40:02 schrieb Alexander Varnin:
> Signed-off-by: Alexander Varnin <fenixk19@mail.ru>

Acked-by: Heiko Stuebner <heiko@sntech.de>

> ---
>  arch/arm/plat-samsung/include/plat/cpu.h |   10 ++++++++++
>  1 files changed, 10 insertions(+), 0 deletions(-)
> 
> diff --git a/arch/arm/plat-samsung/include/plat/cpu.h
> b/arch/arm/plat-samsung/include/plat/cpu.h index ace4451..613f492 100644
> --- a/arch/arm/plat-samsung/include/plat/cpu.h
> +++ b/arch/arm/plat-samsung/include/plat/cpu.h
> @@ -23,6 +23,9 @@ extern unsigned long samsung_cpu_id;
>  #define S3C24XX_CPU_ID		0x32400000
>  #define S3C24XX_CPU_MASK	0xFFF00000
> 
> +#define S3C2443_CPU_ID		0x32443001
> +#define S3C2443_CPU_MASK	0xFFFFFFFF
> +
>  #define S3C6400_CPU_ID		0x36400000
>  #define S3C6410_CPU_ID		0x36410000
>  #define S3C64XX_CPU_MASK	0xFFFFF000
> @@ -52,6 +55,7 @@ static inline int is_samsung_##name(void)	\
>  }
> 
>  IS_SAMSUNG_CPU(s3c24xx, S3C24XX_CPU_ID, S3C24XX_CPU_MASK)
> +IS_SAMSUNG_CPU(s3c2443, S3C2443_CPU_ID, S3C2443_CPU_MASK)
>  IS_SAMSUNG_CPU(s3c6400, S3C6400_CPU_ID, S3C64XX_CPU_MASK)
>  IS_SAMSUNG_CPU(s3c6410, S3C6410_CPU_ID, S3C64XX_CPU_MASK)
>  IS_SAMSUNG_CPU(s5p6440, S5P6440_CPU_ID, S5P64XX_CPU_MASK)
> @@ -72,6 +76,12 @@ IS_SAMSUNG_CPU(exynos5250, EXYNOS5250_SOC_ID,
> EXYNOS5_SOC_MASK) # define soc_is_s3c24xx()	0
>  #endif
> 
> +#if defined(CONFIG_CPU_S3C2443)
> +# define soc_is_s3c2443()	is_samsung_s3c2443()
> +#else
> +# define soc_is_s3c2443()	0
> +#endif
> +
>  #if defined(CONFIG_CPU_S3C6400) || defined(CONFIG_CPU_S3C6410)
>  # define soc_is_s3c64xx()	(is_samsung_s3c6400() || is_samsung_s3c6410())
>  #else

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2012-11-26  9:02 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-11-26  8:40 [PATCH 1/2] ARM: S3C2443: introduce soc_is_s3c2443 macro Alexander Varnin
2012-11-26  8:40 ` [PATCH 2/2] ARM: S3C2443: Workaround for 2443 EXTINT error Alexander Varnin
2012-11-26  8:44   ` Alexander Varnin
2012-11-26  9:02 ` [PATCH 1/2] ARM: S3C2443: introduce soc_is_s3c2443 macro Heiko Stübner
  -- strict thread matches above, loose matches on Subject: below --
2012-11-26  8:44 Alexander Varnin

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.