ARM: SAMSUNG: Add naming of s3c64xx-spi devices
Subsystems (3)
PATCH 1/1 ARM: SAMSUNG: Add naming of s3c64xx-spi devices
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.
--- 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(+), 0 deletions(-) create mode 100644 arch/arm/plat-samsung/include/plat/spi-core.h
arch/arm/mach-exynos/common.c +5 -0
@@ -47,6 +47,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"
@@ -346,6 +347,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 )
@@ -366,6 +369,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)
arch/arm/mach-s3c24xx/s3c2416.c +2 -0
@@ -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 ),
@@ -147,6 +148,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)); }
arch/arm/mach-s3c24xx/s3c2443.c +4 -0
@@ -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)); }
arch/arm/mach-s5p64x0/common.c +3 -0
@@ -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 ();
arch/arm/mach-s5pc100/common.c +3 -0
@@ -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)
arch/arm/mach-s5pv210/common.c +3 -0
@@ -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)
arch/arm/plat-samsung/include/plat/spi-core.h new file +30 -0
@@ -0,0 +1,30 @@ +/* +* Copyright (C) 2012 Heiko Stuebner <[email protected]> +* +* 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 */
Signature · 1 line
1.7.2.3
PATCH 1/1 ARM: SAMSUNG: Add naming of s3c64xx-spi devices
Hi Heiko,
Quoted 9 lines · Heiko St?bner
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_setnamefunction and populate all Samsung arches with the correct names. The function resides in a new header, as thes3c64xx-spi.hcontains driver platform data and should therefore at some later point move out of the Samsung include dir.
Quoted 4 lines
Tested on a s3c2416-based machine.
Signed-off-by Heiko Stuebner <[email protected]>Cc stable at vger.kernel.org
This patch looks good to me. I've tested it on Exynos4412 SoC based board. And it fixes quite serious problem - broken SPI support on a all Samsung machs (non-dt) except s3c64xx in mainline v3.6 kernel.
(mach-exynos only)
Jos? Miguel, can you confirm it solves the problem for you ?
--
Regards,
Sylwester
PATCH 1/1 ARM: SAMSUNG: Add naming of s3c64xx-spi devices
Quoted 21 lines · Sylwester Nawrocki
Hi Heiko,
Quoted 9 lines · Heiko St?bner
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_setnamefunction and populate all Samsung arches with the correct names. The function resides in a new header, as thes3c64xx-spi.hcontains driver platform data and should therefore at some later point move out of the Samsung include dir.Quoted 4 lines
Tested on a s3c2416-based machine.
Signed-off-by Heiko Stuebner <[email protected]>Cc stable at vger.kernel.orgThis patch looks good to me. I've tested it on Exynos4412 SoC based board. And it fixes quite serious problem - broken SPI support on a all Samsung machs (non-dt) except s3c64xx in mainline v3.6 kernel.
Quoted 5 lines
Reviewed-by Sylwester Nawrocki <[email protected]>Tested-by Sylwester Nawrocki <[email protected]>(mach-exynos only)
Jos? Miguel, can you confirm it solves the problem for you ?
The driver initialization problem is solved by this patch on my S3C2416 based board. Nevertheless, I didn?t have the time yet to test an actual SPI device connected to the bus.
BTW, I think the two debug messages at the end of the s3c64xx_spi_probe() routine should be promoted from dev_dbg to dev_info in order to be shown on a normal kernel boot.
Best regards,
Jos? Gon?alves
PATCH 1/1 ARM: SAMSUNG: Add naming of s3c64xx-spi devices
Quoted 37 lines · Jos? Miguel Gon?alves
Quoted 4 lines · Sylwester Nawrocki
Hi Heiko,
Quoted 1 line · Heiko St?bner
Commit
a5238e360b71(spi: s3c64xx: move controller information intodriver
Quoted 1 line
Quoted 1 line
data) introduced separate device names for the different subtypes of
the
Quoted 16 lines
Quoted 11 lines
spi controller but forgot to set these in the relevant machines.
To fix this introduce a
s3c64xx_spi_setnamefunction and populate all Samsung arches with the correct names. The function resides in a new header, as thes3c64xx-spi.hcontains 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 <[email protected]>Cc stable at vger.kernel.orgThis patch looks good to me. I've tested it on Exynos4412 SoC based board. And it fixes quite serious problem - broken SPI support on a all Samsung machs (non-dt) except s3c64xx in mainline v3.6 kernel.
Quoted 5 lines
Reviewed-by Sylwester Nawrocki <[email protected]>Tested-by Sylwester Nawrocki <[email protected]>(mach-exynos only)
Jos? Miguel, can you confirm it solves the problem for you ?
The driver initialization problem is solved by this patch on my S3C2416 based
board. Nevertheless, I didn?t have the time yet to test an actual SPI device
connected to the bus.
Quoted 6 lines
BTW, I think the two debug messages at the end of the
s3c64xx_spi_probe()routine
should be promoted fromdev_dbgtodev_infoin order to be shown on a normal
kernel boot.
You guys, thanks for fixing and testing.
Looks good to me, applied.
Thanks.
Best regards,
Kgene.
--
Kukjin Kim <[email protected]>, Senior Engineer, SW Solution Development Team, Samsung Electronics Co., Ltd.