[PATCH 49/62] ARM: s5p64x0: fix building with only one soc type
Kukjin Kim
kgene.kim at samsung.com
Wed Mar 19 23:59:33 EDT 2014
Arnd Bergmann wrote:
>
> The s5p64x0 platform supports two distinct SoCs, s5p6440 and s5p6450,
> and in the normal configuration, both are enabled. However if we build
> a kernel that only enables one of the two, the #ifdef logic in common.c
> breaks down, as some of the functions declared in the header are defined
> to NULL using the preprocessor but then defined anyway.
>
> This patch cleans up the mess and ensures that each function has either
> exactly one C declaration and one matching C definition, or we have
> a NULL defined function pointer but no C definition.
>
> Signed-off-by: Arnd Bergmann <arnd at arndb.de>
> Cc: Tomasz Figa <tomasz.figa at gmail.com>
> Cc: Kukjin Kim <kgene.kim at samsung.com>
Yes you're right, we need to sort them(6440 and 6450) out later though.
Acked-by: Kukjin Kim <kgene.kim at samsung.com>
Thanks,
Kukjin
> Cc: Ben Dooks <ben-linux at fluff.org>
> ---
> arch/arm/mach-s5p64x0/common.c | 18 ++++++++++++++++--
> arch/arm/mach-s5p64x0/common.h | 5 +----
> 2 files changed, 17 insertions(+), 6 deletions(-)
>
> diff --git a/arch/arm/mach-s5p64x0/common.c b/arch/arm/mach-
> s5p64x0/common.c
> index eb2ad14..9a43be0 100644
> --- a/arch/arm/mach-s5p64x0/common.c
> +++ b/arch/arm/mach-s5p64x0/common.c
> @@ -205,6 +205,7 @@ void __init s5p64x0_init_io(struct map_desc
*mach_desc,
> int size)
> samsung_pwm_set_platdata(&s5p64x0_pwm_variant);
> }
>
> +#ifdef CONFIG_CPU_S5P6440
> void __init s5p6440_map_io(void)
> {
> /* initialize any device information early */
> @@ -218,7 +219,9 @@ void __init s5p6440_map_io(void)
>
> iotable_init(s5p6440_iodesc, ARRAY_SIZE(s5p6440_iodesc));
> }
> +#endif
>
> +#ifdef CONFIG_CPU_S5P6450
> void __init s5p6450_map_io(void)
> {
> /* initialize any device information early */
> @@ -232,13 +235,14 @@ void __init s5p6450_map_io(void)
>
> iotable_init(s5p6450_iodesc, ARRAY_SIZE(s5p6450_iodesc));
> }
> +#endif
>
> /*
> * s5p64x0_init_clocks
> *
> * register and setup the CPU clocks
> */
> -
> +#ifdef CONFIG_CPU_S5P6440
> void __init s5p6440_init_clocks(int xtal)
> {
> printk(KERN_DEBUG "%s: initializing clocks\n", __func__);
> @@ -248,7 +252,9 @@ void __init s5p6440_init_clocks(int xtal)
> s5p6440_register_clocks();
> s5p6440_setup_clocks();
> }
> +#endif
>
> +#ifdef CONFIG_CPU_S5P6450
> void __init s5p6450_init_clocks(int xtal)
> {
> printk(KERN_DEBUG "%s: initializing clocks\n", __func__);
> @@ -258,13 +264,14 @@ void __init s5p6450_init_clocks(int xtal)
> s5p6450_register_clocks();
> s5p6450_setup_clocks();
> }
> +#endif
>
> /*
> * s5p64x0_init_irq
> *
> * register the CPU interrupts
> */
> -
> +#ifdef CONFIG_CPU_S5P6440
> void __init s5p6440_init_irq(void)
> {
> /* S5P6440 supports 2 VIC */
> @@ -279,7 +286,9 @@ void __init s5p6440_init_irq(void)
>
> s5p_init_irq(vic, ARRAY_SIZE(vic));
> }
> +#endif
>
> +#ifdef CONFIG_CPU_S5P6450
> void __init s5p6450_init_irq(void)
> {
> /* S5P6450 supports only 2 VIC */
> @@ -294,6 +303,7 @@ void __init s5p6450_init_irq(void)
>
> s5p_init_irq(vic, ARRAY_SIZE(vic));
> }
> +#endif
>
> struct bus_type s5p64x0_subsys = {
> .name = "s5p64x0-core",
> @@ -321,6 +331,7 @@ int __init s5p64x0_init(void)
> }
>
> /* uart registration process */
> +#ifdef CONFIG_CPU_S5P6440
> void __init s5p6440_init_uarts(struct s3c2410_uartcfg *cfg, int no)
> {
> int uart;
> @@ -332,11 +343,14 @@ void __init s5p6440_init_uarts(struct
> s3c2410_uartcfg *cfg, int no)
>
> s3c24xx_init_uartdevs("s3c6400-uart", s5p_uart_resources, cfg, no);
> }
> +#endif
>
> +#ifdef CONFIG_CPU_S5P6450
> void __init s5p6450_init_uarts(struct s3c2410_uartcfg *cfg, int no)
> {
> s3c24xx_init_uartdevs("s3c6400-uart", s5p_uart_resources, cfg, no);
> }
> +#endif
>
> #define eint_offset(irq) ((irq) - IRQ_EINT(0))
>
> diff --git a/arch/arm/mach-s5p64x0/common.h b/arch/arm/mach-
> s5p64x0/common.h
> index f3a9b43..cbe7f3d 100644
> --- a/arch/arm/mach-s5p64x0/common.h
> +++ b/arch/arm/mach-s5p64x0/common.h
> @@ -25,10 +25,10 @@ void s5p6450_register_clocks(void);
> void s5p6450_setup_clocks(void);
>
> void s5p64x0_restart(enum reboot_mode mode, const char *cmd);
> +extern int s5p64x0_init(void);
>
> #ifdef CONFIG_CPU_S5P6440
>
> -extern int s5p64x0_init(void);
> extern void s5p6440_map_io(void);
> extern void s5p6440_init_clocks(int xtal);
>
> @@ -38,12 +38,10 @@ extern void s5p6440_init_uarts(struct s3c2410_uartcfg
> *cfg, int no);
> #define s5p6440_init_clocks NULL
> #define s5p6440_init_uarts NULL
> #define s5p6440_map_io NULL
> -#define s5p64x0_init NULL
> #endif
>
> #ifdef CONFIG_CPU_S5P6450
>
> -extern int s5p64x0_init(void);
> extern void s5p6450_map_io(void);
> extern void s5p6450_init_clocks(int xtal);
>
> @@ -53,7 +51,6 @@ extern void s5p6450_init_uarts(struct s3c2410_uartcfg
> *cfg, int no);
> #define s5p6450_init_clocks NULL
> #define s5p6450_init_uarts NULL
> #define s5p6450_map_io NULL
> -#define s5p64x0_init NULL
> #endif
>
> #endif /* __ARCH_ARM_MACH_S5P64X0_COMMON_H */
> --
> 1.8.3.2
More information about the linux-arm-kernel
mailing list