[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