| From 308b3afb97dc342e9c4f958d8b4c459ae0e22bd7 Mon Sep 17 00:00:00 2001 |
| From: Heiko Stuebner <heiko@sntech.de> |
| Date: Wed, 17 Oct 2012 16:47:11 +0900 |
| Subject: ARM: SAMSUNG: Add naming of s3c64xx-spi devices |
| |
| From: Heiko Stuebner <heiko@sntech.de> |
| |
| commit 308b3afb97dc342e9c4f958d8b4c459ae0e22bd7 upstream. |
| |
| Commit a5238e360b71 (spi: s3c64xx: move controller information into driver |
| data) introduced separate device names for the different subtypes of the |
| spi controller but forgot to set these in the relevant machines. |
| |
| To fix this introduce a s3c64xx_spi_setname function and populate all |
| Samsung arches with the correct names. The function resides in a new |
| header, as the s3c64xx-spi.h contains driver platform data and should |
| therefore at some later point move out of the Samsung include dir. |
| |
| Tested on a s3c2416-based machine. |
| |
| Signed-off-by: Heiko Stuebner <heiko@sntech.de> |
| Reviewed-by: Sylwester Nawrocki <s.nawrocki@samsung.com> |
| [s.nawrocki@samsung.com: tested on mach-exynos] |
| Tested-by: Sylwester Nawrocki <s.nawrocki@samsung.com> |
| Signed-off-by: Kukjin Kim <kgene.kim@samsung.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| arch/arm/mach-exynos/common.c | 5 ++++ |
| arch/arm/mach-s3c24xx/s3c2416.c | 2 + |
| arch/arm/mach-s3c24xx/s3c2443.c | 4 +++ |
| arch/arm/mach-s5p64x0/common.c | 3 ++ |
| arch/arm/mach-s5pc100/common.c | 3 ++ |
| arch/arm/mach-s5pv210/common.c | 3 ++ |
| arch/arm/plat-samsung/include/plat/spi-core.h | 30 ++++++++++++++++++++++++++ |
| 7 files changed, 50 insertions(+) |
| |
| --- a/arch/arm/mach-exynos/common.c |
| +++ b/arch/arm/mach-exynos/common.c |
| @@ -44,6 +44,7 @@ |
| #include <plat/fimc-core.h> |
| #include <plat/iic-core.h> |
| #include <plat/tv-core.h> |
| +#include <plat/spi-core.h> |
| #include <plat/regs-serial.h> |
| |
| #include "common.h" |
| @@ -338,6 +339,8 @@ static void __init exynos4_map_io(void) |
| |
| s5p_fb_setname(0, "exynos4-fb"); |
| s5p_hdmi_setname("exynos4-hdmi"); |
| + |
| + s3c64xx_spi_setname("exynos4210-spi"); |
| } |
| |
| static void __init exynos5_map_io(void) |
| @@ -358,6 +361,8 @@ static void __init exynos5_map_io(void) |
| s3c_i2c0_setname("s3c2440-i2c"); |
| s3c_i2c1_setname("s3c2440-i2c"); |
| s3c_i2c2_setname("s3c2440-i2c"); |
| + |
| + s3c64xx_spi_setname("exynos4210-spi"); |
| } |
| |
| static void __init exynos4_init_clocks(int xtal) |
| --- a/arch/arm/mach-s3c24xx/s3c2416.c |
| +++ b/arch/arm/mach-s3c24xx/s3c2416.c |
| @@ -61,6 +61,7 @@ |
| #include <plat/nand-core.h> |
| #include <plat/adc-core.h> |
| #include <plat/rtc-core.h> |
| +#include <plat/spi-core.h> |
| |
| static struct map_desc s3c2416_iodesc[] __initdata = { |
| IODESC_ENT(WATCHDOG), |
| @@ -131,6 +132,7 @@ void __init s3c2416_map_io(void) |
| /* initialize device information early */ |
| s3c2416_default_sdhci0(); |
| s3c2416_default_sdhci1(); |
| + s3c64xx_spi_setname("s3c2443-spi"); |
| |
| iotable_init(s3c2416_iodesc, ARRAY_SIZE(s3c2416_iodesc)); |
| } |
| --- a/arch/arm/mach-s3c24xx/s3c2443.c |
| +++ b/arch/arm/mach-s3c24xx/s3c2443.c |
| @@ -43,6 +43,7 @@ |
| #include <plat/nand-core.h> |
| #include <plat/adc-core.h> |
| #include <plat/rtc-core.h> |
| +#include <plat/spi-core.h> |
| |
| static struct map_desc s3c2443_iodesc[] __initdata = { |
| IODESC_ENT(WATCHDOG), |
| @@ -100,6 +101,9 @@ void __init s3c2443_map_io(void) |
| s3c24xx_gpiocfg_default.set_pull = s3c2443_gpio_setpull; |
| s3c24xx_gpiocfg_default.get_pull = s3c2443_gpio_getpull; |
| |
| + /* initialize device information early */ |
| + s3c64xx_spi_setname("s3c2443-spi"); |
| + |
| iotable_init(s3c2443_iodesc, ARRAY_SIZE(s3c2443_iodesc)); |
| } |
| |
| --- a/arch/arm/mach-s5p64x0/common.c |
| +++ b/arch/arm/mach-s5p64x0/common.c |
| @@ -44,6 +44,7 @@ |
| #include <plat/sdhci.h> |
| #include <plat/adc-core.h> |
| #include <plat/fb-core.h> |
| +#include <plat/spi-core.h> |
| #include <plat/gpio-cfg.h> |
| #include <plat/regs-irqtype.h> |
| #include <plat/regs-serial.h> |
| @@ -179,6 +180,7 @@ void __init s5p6440_map_io(void) |
| /* initialize any device information early */ |
| s3c_adc_setname("s3c64xx-adc"); |
| s3c_fb_setname("s5p64x0-fb"); |
| + s3c64xx_spi_setname("s5p64x0-spi"); |
| |
| s5p64x0_default_sdhci0(); |
| s5p64x0_default_sdhci1(); |
| @@ -193,6 +195,7 @@ void __init s5p6450_map_io(void) |
| /* initialize any device information early */ |
| s3c_adc_setname("s3c64xx-adc"); |
| s3c_fb_setname("s5p64x0-fb"); |
| + s3c64xx_spi_setname("s5p64x0-spi"); |
| |
| s5p64x0_default_sdhci0(); |
| s5p64x0_default_sdhci1(); |
| --- a/arch/arm/mach-s5pc100/common.c |
| +++ b/arch/arm/mach-s5pc100/common.c |
| @@ -45,6 +45,7 @@ |
| #include <plat/fb-core.h> |
| #include <plat/iic-core.h> |
| #include <plat/onenand-core.h> |
| +#include <plat/spi-core.h> |
| #include <plat/regs-serial.h> |
| #include <plat/watchdog-reset.h> |
| |
| @@ -165,6 +166,8 @@ void __init s5pc100_map_io(void) |
| s3c_onenand_setname("s5pc100-onenand"); |
| s3c_fb_setname("s5pc100-fb"); |
| s3c_cfcon_setname("s5pc100-pata"); |
| + |
| + s3c64xx_spi_setname("s5pc100-spi"); |
| } |
| |
| void __init s5pc100_init_clocks(int xtal) |
| --- a/arch/arm/mach-s5pv210/common.c |
| +++ b/arch/arm/mach-s5pv210/common.c |
| @@ -43,6 +43,7 @@ |
| #include <plat/iic-core.h> |
| #include <plat/keypad-core.h> |
| #include <plat/tv-core.h> |
| +#include <plat/spi-core.h> |
| #include <plat/regs-serial.h> |
| |
| #include "common.h" |
| @@ -196,6 +197,8 @@ void __init s5pv210_map_io(void) |
| |
| /* setup TV devices */ |
| s5p_hdmi_setname("s5pv210-hdmi"); |
| + |
| + s3c64xx_spi_setname("s5pv210-spi"); |
| } |
| |
| void __init s5pv210_init_clocks(int xtal) |
| --- /dev/null |
| +++ b/arch/arm/plat-samsung/include/plat/spi-core.h |
| @@ -0,0 +1,30 @@ |
| +/* |
| + * Copyright (C) 2012 Heiko Stuebner <heiko@sntech.de> |
| + * |
| + * This program is free software; you can redistribute it and/or modify |
| + * it under the terms of the GNU General Public License version 2 as |
| + * published by the Free Software Foundation. |
| + */ |
| + |
| +#ifndef __PLAT_S3C_SPI_CORE_H |
| +#define __PLAT_S3C_SPI_CORE_H |
| + |
| +/* These functions are only for use with the core support code, such as |
| + * the cpu specific initialisation code |
| + */ |
| + |
| +/* re-define device name depending on support. */ |
| +static inline void s3c64xx_spi_setname(char *name) |
| +{ |
| +#ifdef CONFIG_S3C64XX_DEV_SPI0 |
| + s3c64xx_device_spi0.name = name; |
| +#endif |
| +#ifdef CONFIG_S3C64XX_DEV_SPI1 |
| + s3c64xx_device_spi1.name = name; |
| +#endif |
| +#ifdef CONFIG_S3C64XX_DEV_SPI2 |
| + s3c64xx_device_spi2.name = name; |
| +#endif |
| +} |
| + |
| +#endif /* __PLAT_S3C_SPI_CORE_H */ |