[PATCH] SAMSUNG: S3C64XX: Fix SoC identification for S3C64xx devices
Kukjin Kim
kgene.kim at samsung.com
Mon Oct 17 20:08:58 EDT 2011
Mark Brown wrote:
>
> The IS_SAMSUNG_CPU() macro works by comparing the CPU ID mask exactly
> with
> the CPU ID. This was failing for S3C64xx SoCs as in order to support
> identification of the exact device the mask covers both variants of the
> chip, meaning that the test would always fail on S3C6410 devices. This in
> turn caused the core GPIO subsystem to fail to identify the CPU and not
> support any GPIOs, crippling the system.
>
> As a minimally invasive fix change the test for the class to be done by
> checking each implementation and oring them together.
>
> Signed-off-by: Mark Brown <broonie at opensource.wolfsonmicro.com>
> ---
>
Mark,
Oops :(
Thanks and applied.
> Arnd, this fixes the issue I had with Kukjin's GPIO pull request - with
> this applied my systems boot much more happily.
>
Arnd, I added this into next-samsung-devel-3 which has been requested pull
yesterday.
Thanks.
Best regards,
Kgene.
--
Kukjin Kim <kgene.kim at samsung.com>, Senior Engineer,
SW Solution Development Team, Samsung Electronics Co., Ltd.
> arch/arm/plat-samsung/include/plat/cpu.h | 6 +++---
> 1 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/arch/arm/plat-samsung/include/plat/cpu.h b/arch/arm/plat-
> samsung/include/plat/cpu.h
> index 54f370f..40fd7b6 100644
> --- a/arch/arm/plat-samsung/include/plat/cpu.h
> +++ b/arch/arm/plat-samsung/include/plat/cpu.h
> @@ -25,7 +25,6 @@ extern unsigned long samsung_cpu_id;
>
> #define S3C6400_CPU_ID 0x36400000
> #define S3C6410_CPU_ID 0x36410000
> -#define S3C64XX_CPU_ID (S3C6400_CPU_ID &
> S3C6410_CPU_ID)
> #define S3C64XX_CPU_MASK 0xFFFFF000
>
> #define S5P6440_CPU_ID 0x56440000
> @@ -50,7 +49,8 @@ static inline int is_samsung_##name(void) \
> }
>
> IS_SAMSUNG_CPU(s3c24xx, S3C24XX_CPU_ID, S3C24XX_CPU_MASK)
> -IS_SAMSUNG_CPU(s3c64xx, S3C64XX_CPU_ID, S3C64XX_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)
> IS_SAMSUNG_CPU(s5p6450, S5P6450_CPU_ID, S5P64XX_CPU_MASK)
> IS_SAMSUNG_CPU(s5pc100, S5PC100_CPU_ID, S5PC100_CPU_MASK)
> @@ -69,7 +69,7 @@ IS_SAMSUNG_CPU(exynos4412, EXYNOS4412_CPU_ID,
> EXYNOS4_CPU_MASK)
> #endif
>
> #if defined(CONFIG_CPU_S3C6400) || defined(CONFIG_CPU_S3C6410)
> -# define soc_is_s3c64xx() is_samsung_s3c64xx()
> +# define soc_is_s3c64xx() (is_samsung_s3c6400() ||
> is_samsung_s3c6410())
> #else
> # define soc_is_s3c64xx() 0
> #endif
> --
> 1.7.6.3
More information about the linux-arm-kernel
mailing list