Updating SPEAr Support
Subsystems (4)
PATCH v4 52/62 SPEAr3xx: Rework pmx_dev code to remove conflicts
In reply to Viresh KumarFrom: Ryan Mallon <[email protected]>
Prefix the pmx_devs to remove naming conflicts between the three SPEAr3xx platforms. Also make pmx_driver static to each platform and rework the init code to pass the devices rather than export the pmx_driver structure.
--- arch/arm/mach-spear3xx/include/mach/generic.h | 129 +++++++++++++------------ arch/arm/mach-spear3xx/spear300.c | 40 ++++---- arch/arm/mach-spear3xx/spear300_evb.c | 25 ++--- arch/arm/mach-spear3xx/spear310.c | 28 +++--- arch/arm/mach-spear3xx/spear310_evb.c | 41 ++++----- arch/arm/mach-spear3xx/spear320.c | 56 ++++++----- arch/arm/mach-spear3xx/spear320_evb.c | 35 +++---- arch/arm/mach-spear3xx/spear3xx.c | 60 ++++++------ 8 files changed, 206 insertions(+), 208 deletions(-)
arch/arm/mach-spear3xx/include/mach/generic.h +65 -64
@@ -69,21 +69,21 @@ void spear3xx_pmx_init_addr(struct pmx_driver *driver, unsigned int addr);#define PMX_TIMER_1_2_MASK (1 << 0)/* pad mux devices */ -extern struct pmx_dev pmx_firda; -extern struct pmx_dev pmx_i2c; -extern struct pmx_dev pmx_ssp_cs; -extern struct pmx_dev pmx_ssp; -extern struct pmx_dev pmx_mii; -extern struct pmx_dev pmx_gpio_pin0; -extern struct pmx_dev pmx_gpio_pin1; -extern struct pmx_dev pmx_gpio_pin2; -extern struct pmx_dev pmx_gpio_pin3; -extern struct pmx_dev pmx_gpio_pin4; -extern struct pmx_dev pmx_gpio_pin5; -extern struct pmx_dev pmx_uart0_modem; -extern struct pmx_dev pmx_uart0; -extern struct pmx_dev pmx_timer_3_4; -extern struct pmx_dev pmx_timer_1_2; +extern struct pmx_dev spear3xx_pmx_firda; +extern struct pmx_dev spear3xx_pmx_i2c; +extern struct pmx_dev spear3xx_pmx_ssp_cs; +extern struct pmx_dev spear3xx_pmx_ssp; +extern struct pmx_dev spear3xx_pmx_mii; +extern struct pmx_dev spear3xx_pmx_gpio_pin0; +extern struct pmx_dev spear3xx_pmx_gpio_pin1; +extern struct pmx_dev spear3xx_pmx_gpio_pin2; +extern struct pmx_dev spear3xx_pmx_gpio_pin3; +extern struct pmx_dev spear3xx_pmx_gpio_pin4; +extern struct pmx_dev spear3xx_pmx_gpio_pin5; +extern struct pmx_dev spear3xx_pmx_uart0_modem; +extern struct pmx_dev spear3xx_pmx_uart0; +extern struct pmx_dev spear3xx_pmx_timer_3_4; +extern struct pmx_dev spear3xx_pmx_timer_1_2;#if defined(CONFIG_MACH_SPEAR310 ) || defined(CONFIG_MACH_SPEAR320 )/* padmux plgpio devices */
@@ -104,8 +104,6 @@ extern struct pmx_dev pmx_plgpio_43_44_47_48;extern struct pmx_dev pmx_plgpio_45_46_49_50;#endif -extern struct pmx_driver pmx_driver; -/* spear300 declarations */ #ifdef CONFIG_MACH_SPEAR300 /* Add spear300 machine device structure declarations here */
@@ -134,27 +132,28 @@ extern struct pmx_mode camu_wlcd_mode;extern struct pmx_mode caml_lcd_mode;/* pad mux devices */ -extern struct pmx_dev pmx_fsmc_2_chips; -extern struct pmx_dev pmx_fsmc_4_chips; -extern struct pmx_dev pmx_keyboard; -extern struct pmx_dev pmx_clcd; -extern struct pmx_dev pmx_telecom_gpio; -extern struct pmx_dev pmx_telecom_tdm; -extern struct pmx_dev pmx_telecom_spi_cs_i2c_clk; -extern struct pmx_dev pmx_telecom_camera; -extern struct pmx_dev pmx_telecom_dac; -extern struct pmx_dev pmx_telecom_i2s; -extern struct pmx_dev pmx_telecom_boot_pins; -extern struct pmx_dev pmx_telecom_sdhci_4bit; -extern struct pmx_dev pmx_telecom_sdhci_8bit; -extern struct pmx_dev pmx_gpio1; +extern struct pmx_dev spear300_pmx_fsmc_2_chips; +extern struct pmx_dev spear300_pmx_fsmc_4_chips; +extern struct pmx_dev spear300_pmx_keyboard; +extern struct pmx_dev spear300_pmx_clcd; +extern struct pmx_dev spear300_pmx_telecom_gpio; +extern struct pmx_dev spear300_pmx_telecom_tdm; +extern struct pmx_dev spear300_pmx_telecom_spi_cs_i2c_clk; +extern struct pmx_dev spear300_pmx_telecom_camera; +extern struct pmx_dev spear300_pmx_telecom_dac; +extern struct pmx_dev spear300_pmx_telecom_i2s; +extern struct pmx_dev spear300_pmx_telecom_boot_pins; +extern struct pmx_dev spear300_pmx_telecom_sdhci_4bit; +extern struct pmx_dev spear300_pmx_telecom_sdhci_8bit; +extern struct pmx_dev spear300_pmx_gpio1;/* pad multiplexing support */ #define SPEAR300_PAD_MUX_CONFIG_REG 0x99000000#define SPEAR300_MODE_CONFIG_REG 0x99000004/* Add spear300 machine function declarations here */ -void __init spear300_init (void ); +void __init spear300_init (struct pmx_mode *pmx_mode,struct pmx_dev **pmx_devs, +u8 pmx_dev_count);#define SDHCI_MEM_ENB 0x1#define I2S_MEM_ENB 0x2void sdhci_i2s_mem_enable (u8 mask);
@@ -175,18 +174,19 @@ extern struct platform_device plgpio_device;extern struct platform_device nand_device;/* pad mux devices */ -extern struct pmx_dev pmx_emi_cs_0_1_4_5; -extern struct pmx_dev pmx_emi_cs_2_3; -extern struct pmx_dev pmx_uart1; -extern struct pmx_dev pmx_uart2; -extern struct pmx_dev pmx_uart3_4_5; -extern struct pmx_dev pmx_fsmc; -extern struct pmx_dev pmx_rs485_0_1; -extern struct pmx_dev pmx_tdm0; +extern struct pmx_dev spear310_pmx_emi_cs_0_1_4_5; +extern struct pmx_dev spear310_pmx_emi_cs_2_3; +extern struct pmx_dev spear310_pmx_uart1; +extern struct pmx_dev spear310_pmx_uart2; +extern struct pmx_dev spear310_pmx_uart3_4_5; +extern struct pmx_dev spear310_pmx_fsmc; +extern struct pmx_dev spear310_pmx_rs485_0_1; +extern struct pmx_dev spear310_pmx_tdm0;#define SPEAR310_PAD_MUX_CONFIG_REG 0xB4000008/* Add spear310 machine function declarations here */ -void __init spear310_init (void ); +void __init spear310_init (struct pmx_mode *pmx_mode,struct pmx_dev **pmx_devs, +u8 pmx_dev_count);/* spear320 declarations */ #elif defined(CONFIG_MACH_SPEAR320 )
@@ -211,35 +211,36 @@ extern struct pmx_mode auto_exp_mode;extern struct pmx_mode small_printers_mode;/* pad mux devices */ -extern struct pmx_dev pmx_clcd; -extern struct pmx_dev pmx_emi; -extern struct pmx_dev pmx_fsmc; -extern struct pmx_dev pmx_spp; -extern struct pmx_dev pmx_sdhci; -extern struct pmx_dev pmx_i2s; -extern struct pmx_dev pmx_uart1; -extern struct pmx_dev pmx_uart1_modem; -extern struct pmx_dev pmx_uart2; -extern struct pmx_dev pmx_touchscreen; -extern struct pmx_dev pmx_can; -extern struct pmx_dev pmx_sdhci_led; -extern struct pmx_dev pmx_pwm0; -extern struct pmx_dev pmx_pwm1; -extern struct pmx_dev pmx_pwm2; -extern struct pmx_dev pmx_pwm3; -extern struct pmx_dev pmx_ssp1; -extern struct pmx_dev pmx_ssp2; -extern struct pmx_dev pmx_mii1; -extern struct pmx_dev pmx_smii0; -extern struct pmx_dev pmx_smii1; -extern struct pmx_dev pmx_i2c1; +extern struct pmx_dev spear320_pmx_clcd; +extern struct pmx_dev spear320_pmx_emi; +extern struct pmx_dev spear320_pmx_fsmc; +extern struct pmx_dev spear320_pmx_spp; +extern struct pmx_dev spear320_pmx_sdhci; +extern struct pmx_dev spear320_pmx_i2s; +extern struct pmx_dev spear320_pmx_uart1; +extern struct pmx_dev spear320_pmx_uart1_modem; +extern struct pmx_dev spear320_pmx_uart2; +extern struct pmx_dev spear320_pmx_touchscreen; +extern struct pmx_dev spear320_pmx_can; +extern struct pmx_dev spear320_pmx_sdhci_led; +extern struct pmx_dev spear320_pmx_pwm0; +extern struct pmx_dev spear320_pmx_pwm1; +extern struct pmx_dev spear320_pmx_pwm2; +extern struct pmx_dev spear320_pmx_pwm3; +extern struct pmx_dev spear320_pmx_ssp1; +extern struct pmx_dev spear320_pmx_ssp2; +extern struct pmx_dev spear320_pmx_mii1; +extern struct pmx_dev spear320_pmx_smii0; +extern struct pmx_dev spear320_pmx_smii1; +extern struct pmx_dev spear320_pmx_i2c1;/* pad multiplexing support */ #define SPEAR320_PAD_MUX_CONFIG_REG 0xB300000C#define SPEAR320_MODE_CONFIG_REG 0xB3000010/* Add spear320 machine function declarations here */ -void __init spear320_init (void ); +void __init spear320_init (struct pmx_mode *pmx_mode,struct pmx_dev **pmx_devs, +u8 pmx_dev_count);/* Add misc structure declarations here */ extern struct clcd_board clcd_plat_data;
arch/arm/mach-spear3xx/spear300.c +22 -18
@@ -131,7 +131,7 @@ static struct pmx_dev_mode pmx_fsmc_2_chips_modes[] = { }, }; -struct pmx_dev pmx_fsmc_2_chips = { +struct pmx_dev spear300_pmx_fsmc_2_chips = { .name ="fsmc_2_chips" , .modes = pmx_fsmc_2_chips_modes, .mode_count =ARRAY_SIZE (pmx_fsmc_2_chips_modes),
@@ -154,7 +154,7 @@ static struct pmx_dev_mode pmx_fsmc_4_chips_modes[] = { }, }; -struct pmx_dev pmx_fsmc_4_chips = { +struct pmx_dev spear300_pmx_fsmc_4_chips = { .name ="fsmc_4_chips" , .modes = pmx_fsmc_4_chips_modes, .mode_count =ARRAY_SIZE (pmx_fsmc_4_chips_modes),
@@ -179,7 +179,7 @@ static struct pmx_dev_mode pmx_keyboard_modes[] = { }, }; -struct pmx_dev pmx_keyboard = { +struct pmx_dev spear300_pmx_keyboard = { .name ="keyboard" , .modes = pmx_keyboard_modes, .mode_count =ARRAY_SIZE (pmx_keyboard_modes),
@@ -213,7 +213,7 @@ static struct pmx_dev_mode pmx_clcd_modes[] = { }, }; -struct pmx_dev pmx_clcd = { +struct pmx_dev spear300_pmx_clcd = { .name ="clcd" , .modes = pmx_clcd_modes, .mode_count =ARRAY_SIZE (pmx_clcd_modes),
@@ -280,7 +280,7 @@ static struct pmx_dev_mode pmx_telecom_gpio_modes[] = { }, }; -struct pmx_dev pmx_telecom_gpio = { +struct pmx_dev spear300_pmx_telecom_gpio = { .name ="telecom_gpio" , .modes = pmx_telecom_gpio_modes, .mode_count =ARRAY_SIZE (pmx_telecom_gpio_modes),
@@ -306,7 +306,7 @@ static struct pmx_dev_mode pmx_telecom_tdm_modes[] = { }, }; -struct pmx_dev pmx_telecom_tdm = { +struct pmx_dev spear300_pmx_telecom_tdm = { .name ="telecom_tdm" , .modes = pmx_telecom_tdm_modes, .mode_count =ARRAY_SIZE (pmx_telecom_tdm_modes),
@@ -331,7 +331,7 @@ static struct pmx_dev_mode pmx_telecom_spi_cs_i2c_clk_modes[] = { }, }; -struct pmx_dev pmx_telecom_spi_cs_i2c_clk = { +struct pmx_dev spear300_pmx_telecom_spi_cs_i2c_clk = { .name ="telecom_spi_cs_i2c_clk" , .modes = pmx_telecom_spi_cs_i2c_clk_modes, .mode_count =ARRAY_SIZE (pmx_telecom_spi_cs_i2c_clk_modes),
@@ -363,7 +363,7 @@ static struct pmx_dev_mode pmx_telecom_camera_modes[] = { }, }; -struct pmx_dev pmx_telecom_camera = { +struct pmx_dev spear300_pmx_telecom_camera = { .name ="telecom_camera" , .modes = pmx_telecom_camera_modes, .mode_count =ARRAY_SIZE (pmx_telecom_camera_modes),
@@ -386,7 +386,7 @@ static struct pmx_dev_mode pmx_telecom_dac_modes[] = { }, }; -struct pmx_dev pmx_telecom_dac = { +struct pmx_dev spear300_pmx_telecom_dac = { .name ="telecom_dac" , .modes = pmx_telecom_dac_modes, .mode_count =ARRAY_SIZE (pmx_telecom_dac_modes),
@@ -411,7 +411,7 @@ static struct pmx_dev_mode pmx_telecom_i2s_modes[] = { }, }; -struct pmx_dev pmx_telecom_i2s = { +struct pmx_dev spear300_pmx_telecom_i2s = { .name ="telecom_i2s" , .modes = pmx_telecom_i2s_modes, .mode_count =ARRAY_SIZE (pmx_telecom_i2s_modes),
@@ -434,7 +434,7 @@ static struct pmx_dev_mode pmx_telecom_boot_pins_modes[] = { }, }; -struct pmx_dev pmx_telecom_boot_pins = { +struct pmx_dev spear300_pmx_telecom_boot_pins = { .name ="telecom_boot_pins" , .modes = pmx_telecom_boot_pins_modes, .mode_count =ARRAY_SIZE (pmx_telecom_boot_pins_modes),
@@ -462,7 +462,7 @@ static struct pmx_dev_mode pmx_telecom_sdhci_4bit_modes[] = { }, }; -struct pmx_dev pmx_telecom_sdhci_4bit = { +struct pmx_dev spear300_pmx_telecom_sdhci_4bit = { .name ="telecom_sdhci_4bit" , .modes = pmx_telecom_sdhci_4bit_modes, .mode_count =ARRAY_SIZE (pmx_telecom_sdhci_4bit_modes),
@@ -489,7 +489,7 @@ static struct pmx_dev_mode pmx_telecom_sdhci_8bit_modes[] = { }, }; -struct pmx_dev pmx_telecom_sdhci_8bit = { +struct pmx_dev spear300_pmx_telecom_sdhci_8bit = { .name ="telecom_sdhci_8bit" , .modes = pmx_telecom_sdhci_8bit_modes, .mode_count =ARRAY_SIZE (pmx_telecom_sdhci_8bit_modes),
@@ -512,14 +512,14 @@ static struct pmx_dev_mode pmx_gpio1_modes[] = { }, }; -struct pmx_dev pmx_gpio1 = { +struct pmx_dev spear300_pmx_gpio1 = { .name ="arm gpio1" , .modes = pmx_gpio1_modes, .mode_count =ARRAY_SIZE (pmx_gpio1_modes), };/* pmx driver structure */ -struct pmx_driver pmx_driver = { +static struct pmx_driver pmx_driver = { .mode_reg = {.address =SPEAR300_MODE_CONFIG_REG , .mask =0x0000000f }, };
@@ -773,7 +773,8 @@ void sdhci_i2s_mem_enable(u8 mask) }/* spear300 routines */ -void __init spear300_init (void ) +void __init spear300_init (struct pmx_mode *pmx_mode,struct pmx_dev **pmx_devs, +u8 pmx_dev_count) {int ret =0 ;
@@ -788,10 +789,13 @@ void __init spear300_init(void)printk (KERN_ERR "Error registering Shared IRQ\n" ); } +/* pmx initialization */ + pmx_driver.mode = pmx_mode; + pmx_driver.devs = pmx_devs; + pmx_driver.devs_count = pmx_dev_count; +/* This fixes addresses of all pmx devices for spear300 */ spear3xx_pmx_init_addr (&pmx_driver,SPEAR300_PAD_MUX_CONFIG_REG ); - -/* pmx initialization */ ret =pmx_register (&pmx_driver);if (ret)pr_err ("padmux: registeration failed. err no: %d\n" , ret);
arch/arm/mach-spear3xx/spear300_evb.c +10 -15
@@ -28,17 +28,17 @@/* padmux devices to enable */ static struct pmx_dev *pmx_devs[] = {/* spear3xx specific devices */ - &pmx_i2c, - &pmx_ssp_cs, - &pmx_ssp, - &pmx_mii, - &pmx_uart0, + &spear3xx_pmx_i2c, + &spear3xx_pmx_ssp_cs, + &spear3xx_pmx_ssp, + &spear3xx_pmx_mii, + &spear3xx_pmx_uart0,/* spear300 specific devices */ - &pmx_fsmc_2_chips, - &pmx_clcd, - &pmx_telecom_sdhci_4bit, - &pmx_gpio1, + &spear300_pmx_fsmc_2_chips, + &spear300_pmx_clcd, + &spear300_pmx_telecom_sdhci_4bit, + &spear300_pmx_gpio1, };static struct amba_device *amba_devs[]__initdata = {
@@ -109,11 +109,6 @@ static void __init spear300_evb_init(void) {unsigned int i; -/* padmux initialization, must be done before spear300_init */ - pmx_driver.mode = &photo_frame_mode; - pmx_driver.devs = pmx_devs; - pmx_driver.devs_count =ARRAY_SIZE (pmx_devs); -/* set keyboard plat data */ kbd_set_plat_data (&kbd_device, &kbd_data);
@@ -128,7 +123,7 @@ static void __init spear300_evb_init(void)sdhci_i2s_mem_enable (SDHCI_MEM_ENB );/* call spear300 machine init function */ -spear300_init (); +spear300_init (&photo_frame_mode, pmx_devs,ARRAY_SIZE (pmx_devs));/* Register slave devices on the I2C buses */ i2c_register_default_devices ();
arch/arm/mach-spear3xx/spear310.c +16 -12
@@ -38,7 +38,7 @@ static struct pmx_dev_mode pmx_emi_cs_0_1_4_5_modes[] = { }, }; -struct pmx_dev pmx_emi_cs_0_1_4_5 = { +struct pmx_dev spear310_pmx_emi_cs_0_1_4_5 = { .name ="emi_cs_0_1_4_5" , .modes = pmx_emi_cs_0_1_4_5_modes, .mode_count =ARRAY_SIZE (pmx_emi_cs_0_1_4_5_modes),
@@ -59,7 +59,7 @@ static struct pmx_dev_mode pmx_emi_cs_2_3_modes[] = { }, }; -struct pmx_dev pmx_emi_cs_2_3 = { +struct pmx_dev spear310_pmx_emi_cs_2_3 = { .name ="emi_cs_2_3" , .modes = pmx_emi_cs_2_3_modes, .mode_count =ARRAY_SIZE (pmx_emi_cs_2_3_modes),
@@ -80,7 +80,7 @@ static struct pmx_dev_mode pmx_uart1_modes[] = { }, }; -struct pmx_dev pmx_uart1 = { +struct pmx_dev spear310_pmx_uart1 = { .name ="uart1" , .modes = pmx_uart1_modes, .mode_count =ARRAY_SIZE (pmx_uart1_modes),
@@ -101,7 +101,7 @@ static struct pmx_dev_mode pmx_uart2_modes[] = { }, }; -struct pmx_dev pmx_uart2 = { +struct pmx_dev spear310_pmx_uart2 = { .name ="uart2" , .modes = pmx_uart2_modes, .mode_count =ARRAY_SIZE (pmx_uart2_modes),
@@ -122,7 +122,7 @@ static struct pmx_dev_mode pmx_uart3_4_5_modes[] = { }, }; -struct pmx_dev pmx_uart3_4_5 = { +struct pmx_dev spear310_pmx_uart3_4_5 = { .name ="uart3_4_5" , .modes = pmx_uart3_4_5_modes, .mode_count =ARRAY_SIZE (pmx_uart3_4_5_modes),
@@ -143,7 +143,7 @@ static struct pmx_dev_mode pmx_fsmc_modes[] = { }, }; -struct pmx_dev pmx_fsmc = { +struct pmx_dev spear310_pmx_fsmc = { .name ="fsmc" , .modes = pmx_fsmc_modes, .mode_count =ARRAY_SIZE (pmx_fsmc_modes),
@@ -164,7 +164,7 @@ static struct pmx_dev_mode pmx_rs485_0_1_modes[] = { }, }; -struct pmx_dev pmx_rs485_0_1 = { +struct pmx_dev spear310_pmx_rs485_0_1 = { .name ="rs485_0_1" , .modes = pmx_rs485_0_1_modes, .mode_count =ARRAY_SIZE (pmx_rs485_0_1_modes),
@@ -185,14 +185,14 @@ static struct pmx_dev_mode pmx_tdm0_modes[] = { }, }; -struct pmx_dev pmx_tdm0 = { +struct pmx_dev spear310_pmx_tdm0 = { .name ="tdm0" , .modes = pmx_tdm0_modes, .mode_count =ARRAY_SIZE (pmx_tdm0_modes), };/* pmx driver structure */ -struct pmx_driver pmx_driver; +static struct pmx_driver pmx_driver;/* Add spear310 specific devices here */ /* uart1 device registeration */
@@ -479,7 +479,8 @@ static struct spear_shirq shirq_intrcomm_ras = { };/* spear310 routines */ -void __init spear310_init (void ) +void __init spear310_init (struct pmx_mode *pmx_mode,struct pmx_dev **pmx_devs, +u8 pmx_dev_count) {void __iomem *base;int ret =0 ;
@@ -515,10 +516,13 @@ void __init spear310_init(void)printk (KERN_ERR "Error registering Shared IRQ 4\n" ); } +/* pmx initialization */ + pmx_driver.mode = pmx_mode; + pmx_driver.devs = pmx_devs; + pmx_driver.devs_count = pmx_dev_count; +/* This fixes addresses of all pmx devices for spear310 */ spear3xx_pmx_init_addr (&pmx_driver,SPEAR310_PAD_MUX_CONFIG_REG ); - -/* pmx initialization */ ret =pmx_register (&pmx_driver);if (ret)pr_err ("padmux: registeration failed. err no: %d\n" , ret);
arch/arm/mach-spear3xx/spear310_evb.c +18 -23
60 lines not on this page · raw message
arch/arm/mach-spear3xx/spear320.c +30 -26
208 lines not on this page · raw message
arch/arm/mach-spear3xx/spear320_evb.c +15 -20
@@ -46,22 +46,22 @@ static struct resource emi_nor_resources[] = {/* padmux devices to enable */ static struct pmx_dev *pmx_devs[] = {/* spear3xx specific devices */ - &pmx_i2c, - &pmx_ssp, - &pmx_mii, - &pmx_uart0, + &spear3xx_pmx_i2c, + &spear3xx_pmx_ssp, + &spear3xx_pmx_mii, + &spear3xx_pmx_uart0,/* spear320 specific devices */ - &pmx_fsmc, - &pmx_sdhci, - &pmx_i2s, - &pmx_uart1, - &pmx_uart2, - &pmx_can, - &pmx_pwm0, - &pmx_pwm1, - &pmx_pwm2, - &pmx_mii1, + &spear320_pmx_fsmc, + &spear320_pmx_sdhci, + &spear320_pmx_i2s, + &spear320_pmx_uart1, + &spear320_pmx_uart2, + &spear320_pmx_can, + &spear320_pmx_pwm0, + &spear320_pmx_pwm1, + &spear320_pmx_pwm2, + &spear320_pmx_mii1, };static struct amba_device *amba_devs[]__initdata = {
@@ -110,17 +110,12 @@ static void __init spear320_evb_init(void)/* set sdhci device platform data */ sdhci_set_plat_data (&sdhci_device, &sdhci_plat_data); -/* padmux initialization, must be done before spear320_init */ - pmx_driver.mode = &auto_net_mii_mode; - pmx_driver.devs = pmx_devs; - pmx_driver.devs_count =ARRAY_SIZE (pmx_devs); -/* set nand device's plat data */ fsmc_nand_set_plat_data (&nand_device,NULL ,0 ,NAND_SKIP_BBTSCAN ,FSMC_NAND_BW8 );/* call spear320 machine init function */ -spear320_init (); +spear320_init (&auto_net_mii_mode, pmx_devs,ARRAY_SIZE (pmx_devs));/* Register slave devices on the I2C buses */ i2c_register_default_devices ();
arch/arm/mach-spear3xx/spear3xx.c +30 -30
240 lines not on this page · raw message
Signature · 1 line
1.7.2.2
PATCH v4 53/62 SPEAr3xx: Rework KConfig to allow all boards to be compiled in
In reply to Viresh KumarFrom: Ryan Mallon <[email protected]>
Now that all three SPEAr3xx platforms can be built into one kernel, rework KConfig to allow this. Move everything into one KConfig file while we are here.
--- arch/arm/mach-spear3xx/Kconfig | 30 ++++++++++++++++-------- arch/arm/mach-spear3xx/Kconfig300 | 17 -------------- arch/arm/mach-spear3xx/Kconfig310 | 17 -------------- arch/arm/mach-spear3xx/Kconfig320 | 17 -------------- arch/arm/mach-spear3xx/include/mach/generic.h | 6 +++- 5 files changed, 24 insertions(+), 63 deletions(-) delete mode 100644 arch/arm/mach-spear3xx/Kconfig300 delete mode 100644 arch/arm/mach-spear3xx/Kconfig310 delete mode 100644 arch/arm/mach-spear3xx/Kconfig320
arch/arm/mach-spear3xx/Kconfig +20 -10
@@ -4,9 +4,26 @@ if ARCH_SPEAR3XX -choice - prompt "SPEAr3XX Family" - default MACH_SPEAR300 +menu "SPEAr3xx Implementations" +config BOARD_SPEAR300_EVB + bool "SPEAr300 Evaluation Board" + select MACH_SPEAR300 + help + Supports ST SPEAr300 Evaluation Board + +config BOARD_SPEAR310_EVB + bool "SPEAr310 Evaluation Board" + select MACH_SPEAR310 + help + Supports ST SPEAr310 Evaluation Board + +config BOARD_SPEAR320_EVB + bool "SPEAr320 Evaluation Board" + select MACH_SPEAR320 + help + Supports ST SPEAr320 Evaluation Board + +endmenu config MACH_SPEAR300 bool "SPEAr300"
@@ -23,11 +40,4 @@ config MACH_SPEAR320 help Supports ST SPEAr320 Machine -endchoice - -# Adding SPEAr3XX machine specific configuration files -source "arch/arm/mach-spear3xx/Kconfig300" -source "arch/arm/mach-spear3xx/Kconfig310" -source "arch/arm/mach-spear3xx/Kconfig320" - endif #ARCH_SPEAR3XX
arch/arm/mach-spear3xx/Kconfig300 deleted +0 -17
@@ -1,17 +0,0 @@ -# -# SPEAr300 machine configuration file -# - -if MACH_SPEAR300 - -choice - prompt "SPEAr300 Boards" - default BOARD_SPEAR300_EVB - -config BOARD_SPEAR300_EVB - bool "SPEAr300 Evaluation Board" - help - Supports ST SPEAr300 Evaluation Board -endchoice - -endif #MACH_SPEAR300
arch/arm/mach-spear3xx/Kconfig310 deleted +0 -17
@@ -1,17 +0,0 @@ -# -# SPEAr310 machine configuration file -# - -if MACH_SPEAR310 - -choice - prompt "SPEAr310 Boards" - default BOARD_SPEAR310_EVB - -config BOARD_SPEAR310_EVB - bool "SPEAr310 Evaluation Board" - help - Supports ST SPEAr310 Evaluation Board -endchoice - -endif #MACH_SPEAR310
arch/arm/mach-spear3xx/Kconfig320 deleted +0 -17
@@ -1,17 +0,0 @@ -# -# SPEAr320 machine configuration file -# - -if MACH_SPEAR320 - -choice - prompt "SPEAr320 Boards" - default BOARD_SPEAR320_EVB - -config BOARD_SPEAR320_EVB - bool "SPEAr320 Evaluation Board" - help - Supports ST SPEAr320 Evaluation Board -endchoice - -endif #MACH_SPEAR320
arch/arm/mach-spear3xx/include/mach/generic.h +4 -2
@@ -160,9 +160,10 @@ void sdhci_i2s_mem_enable(u8 mask);/* Add misc structure declarations here */ extern struct clcd_board clcd_plat_data; +#endif /* spear310 declarations */ -#elif defined(CONFIG_MACH_SPEAR310 ) +#if defined(CONFIG_MACH_SPEAR310 )/* Add spear310 machine device structure declarations here */ extern struct amba_device uart1_device;extern struct amba_device uart2_device;
@@ -187,9 +188,10 @@ extern struct pmx_dev spear310_pmx_tdm0;/* Add spear310 machine function declarations here */ void __init spear310_init (struct pmx_mode *pmx_mode,struct pmx_dev **pmx_devs,u8 pmx_dev_count); +#endif /* spear320 declarations */ -#elif defined(CONFIG_MACH_SPEAR320 ) +#if defined(CONFIG_MACH_SPEAR320 )/* Add spear320 machine device structure declarations here */ extern struct amba_device clcd_device;extern struct amba_device ssp_device[];
Signature · 1 line
1.7.2.2
PATCH v4 54/62 SPEAr3xx: Replace defconfigs with single unified defconfig
In reply to Viresh KumarFrom: Ryan Mallon <[email protected]>
We only need one defconfig for SPEAr3xx now since we can build all three boards into one kernel.
---
arch/arm/configs/spear310_defconfig | 52 --------------------
arch/arm/configs/spear320_defconfig | 52 --------------------
.../{spear300_defconfig => spear3xx_defconfig} | 4 +-
3 files changed, 3 insertions(+), 105 deletions(-)
delete mode 100644 arch/arm/configs/spear310_defconfig
delete mode 100644 arch/arm/configs/spear320_defconfig
rename arch/arm/configs/{spear300_defconfig => spear3xx_defconfig} (93%)arch/arm/configs/spear310_defconfig deleted +0 -52
@@ -1,52 +0,0 @@ -CONFIG_EXPERIMENTAL=y -CONFIG_SYSVIPC=y -CONFIG_BSD_PROCESS_ACCT=y -CONFIG_BLK_DEV_INITRD=y -CONFIG_KALLSYMS_EXTRA_PASS=y -CONFIG_MODULES=y -CONFIG_MODULE_UNLOAD=y -CONFIG_MODVERSIONS=y -CONFIG_PLAT_SPEAR=y -CONFIG_MACH_SPEAR310=y -CONFIG_BINFMT_MISC=y -CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" -CONFIG_BLK_DEV_RAM=y -CONFIG_BLK_DEV_RAM_SIZE=16384 -CONFIG_INPUT_FF_MEMLESS=y -# CONFIG_INPUT_MOUSEDEV_PSAUX is not set -# CONFIG_INPUT_KEYBOARD is not set -# CONFIG_INPUT_MOUSE is not set -CONFIG_SERIAL_AMBA_PL011=y -CONFIG_SERIAL_AMBA_PL011_CONSOLE=y -# CONFIG_LEGACY_PTYS is not set -# CONFIG_HW_RANDOM is not set -CONFIG_RAW_DRIVER=y -CONFIG_MAX_RAW_DEVS=8192 -CONFIG_GPIO_SYSFS=y -CONFIG_GPIO_PL061=y -# CONFIG_HWMON is not set -# CONFIG_VGA_CONSOLE is not set -# CONFIG_HID_SUPPORT is not set -# CONFIG_USB_SUPPORT is not set -CONFIG_EXT2_FS=y -CONFIG_EXT2_FS_XATTR=y -CONFIG_EXT2_FS_SECURITY=y -CONFIG_EXT3_FS=y -CONFIG_EXT3_FS_SECURITY=y -CONFIG_AUTOFS4_FS=m -CONFIG_MSDOS_FS=m -CONFIG_VFAT_FS=m -CONFIG_FAT_DEFAULT_IOCHARSET="ascii" -CONFIG_TMPFS=y -CONFIG_PARTITION_ADVANCED=y -CONFIG_NLS=y -CONFIG_NLS_DEFAULT="utf8" -CONFIG_NLS_CODEPAGE_437=y -CONFIG_NLS_ASCII=m -CONFIG_MAGIC_SYSRQ=y -CONFIG_DEBUG_FS=y -CONFIG_DEBUG_KERNEL=y -CONFIG_DEBUG_SPINLOCK=y -CONFIG_DEBUG_SPINLOCK_SLEEP=y -CONFIG_DEBUG_INFO=y -# CONFIG_CRC32 is not set
arch/arm/configs/spear320_defconfig deleted +0 -52
52 lines not on this page · raw message
arch/arm/configs/spear3xx_defconfig renamed from arch/arm/configs/spear300_defconfig +3 -1
@@ -7,6 +7,9 @@ CONFIG_MODULES=y CONFIG_MODULE_UNLOAD=y CONFIG_MODVERSIONS=y CONFIG_PLAT_SPEAR=y +CONFIG_BOARD_SPEAR300_EVB=y +CONFIG_BOARD_SPEAR310_EVB=y +CONFIG_BOARD_SPEAR320_EVB=y CONFIG_BINFMT_MISC=y CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" CONFIG_BLK_DEV_RAM=y
@@ -24,7 +27,6 @@ CONFIG_MAX_RAW_DEVS=8192 CONFIG_GPIO_SYSFS=y CONFIG_GPIO_PL061=y # CONFIG_HWMON is not set -# CONFIG_VGA_CONSOLE is not set # CONFIG_HID_SUPPORT is not set # CONFIG_USB_SUPPORT is not set CONFIG_EXT2_FS=y
Signature · 1 line
1.7.2.2
PATCH v4 55/62 ST SPEAr: Appending spear3** with global structures
In reply to Viresh Kumar--- arch/arm/mach-spear3xx/include/mach/generic.h | 138 ++++++++++++------------ arch/arm/mach-spear3xx/spear300.c | 42 ++++---- arch/arm/mach-spear3xx/spear300_evb.c | 39 ++++---- arch/arm/mach-spear3xx/spear310.c | 16 ++-- arch/arm/mach-spear3xx/spear310_evb.c | 33 +++--- arch/arm/mach-spear3xx/spear320.c | 36 +++--- arch/arm/mach-spear3xx/spear320_evb.c | 46 +++++---- arch/arm/mach-spear3xx/spear3xx.c | 18 ++-- 8 files changed, 186 insertions(+), 182 deletions(-)
arch/arm/mach-spear3xx/include/mach/generic.h +69 -69
@@ -31,15 +31,15 @@#define SPEAR_GPT0_CHAN1_IRQ SPEAR3XX_IRQ_CPU_GPT1_2/* Add spear3xx family device structure declarations here */ -extern struct amba_device gpio_device; -extern struct amba_device ssp0_device; -extern struct amba_device uart_device; -extern struct amba_device wdt_device; -extern struct platform_device ehci_device; -extern struct platform_device i2c_device; -extern struct platform_device ohci0_device; -extern struct platform_device ohci1_device; -extern struct platform_device rtc_device; +extern struct amba_device spear3xx_gpio_device; +extern struct amba_device spear3xx_ssp0_device; +extern struct amba_device spear3xx_uart_device; +extern struct amba_device spear3xx_wdt_device; +extern struct platform_device spear3xx_ehci_device; +extern struct platform_device spear3xx_i2c_device; +extern struct platform_device spear3xx_ohci0_device; +extern struct platform_device spear3xx_ohci1_device; +extern struct platform_device spear3xx_rtc_device;extern struct sys_timer spear3xx_timer;/* Add spear3xx family function declarations here */
@@ -87,49 +87,49 @@ extern struct pmx_dev spear3xx_pmx_timer_1_2;#if defined(CONFIG_MACH_SPEAR310 ) || defined(CONFIG_MACH_SPEAR320 )/* padmux plgpio devices */ -extern struct pmx_dev pmx_plgpio_0_1; -extern struct pmx_dev pmx_plgpio_2_3; -extern struct pmx_dev pmx_plgpio_4_5; -extern struct pmx_dev pmx_plgpio_6_9; -extern struct pmx_dev pmx_plgpio_10_27; -extern struct pmx_dev pmx_plgpio_28; -extern struct pmx_dev pmx_plgpio_29; -extern struct pmx_dev pmx_plgpio_30; -extern struct pmx_dev pmx_plgpio_31; -extern struct pmx_dev pmx_plgpio_32; -extern struct pmx_dev pmx_plgpio_33; -extern struct pmx_dev pmx_plgpio_34_36; -extern struct pmx_dev pmx_plgpio_37_42; -extern struct pmx_dev pmx_plgpio_43_44_47_48; -extern struct pmx_dev pmx_plgpio_45_46_49_50; +extern struct pmx_dev spear3xx_pmx_plgpio_0_1; +extern struct pmx_dev spear3xx_pmx_plgpio_2_3; +extern struct pmx_dev spear3xx_pmx_plgpio_4_5; +extern struct pmx_dev spear3xx_pmx_plgpio_6_9; +extern struct pmx_dev spear3xx_pmx_plgpio_10_27; +extern struct pmx_dev spear3xx_pmx_plgpio_28; +extern struct pmx_dev spear3xx_pmx_plgpio_29; +extern struct pmx_dev spear3xx_pmx_plgpio_30; +extern struct pmx_dev spear3xx_pmx_plgpio_31; +extern struct pmx_dev spear3xx_pmx_plgpio_32; +extern struct pmx_dev spear3xx_pmx_plgpio_33; +extern struct pmx_dev spear3xx_pmx_plgpio_34_36; +extern struct pmx_dev spear3xx_pmx_plgpio_37_42; +extern struct pmx_dev spear3xx_pmx_plgpio_43_44_47_48; +extern struct pmx_dev spear3xx_pmx_plgpio_45_46_49_50;#endif /* spear300 declarations */ #ifdef CONFIG_MACH_SPEAR300 /* Add spear300 machine device structure declarations here */ -extern struct amba_device clcd_device; -extern struct amba_device gpio1_device; -extern struct platform_device kbd_device; -extern struct platform_device nand0_device; -extern struct platform_device nand1_device; -extern struct platform_device nand2_device; -extern struct platform_device nand3_device; -extern struct platform_device sdhci_device; +extern struct amba_device spear300_clcd_device; +extern struct amba_device spear300_gpio1_device; +extern struct platform_device spear300_kbd_device; +extern struct platform_device spear300_nand0_device; +extern struct platform_device spear300_nand1_device; +extern struct platform_device spear300_nand2_device; +extern struct platform_device spear300_nand3_device; +extern struct platform_device spear300_sdhci_device;/* pad mux modes */ -extern struct pmx_mode nand_mode; -extern struct pmx_mode nor_mode; -extern struct pmx_mode photo_frame_mode; -extern struct pmx_mode lend_ip_phone_mode; -extern struct pmx_mode hend_ip_phone_mode; -extern struct pmx_mode lend_wifi_phone_mode; -extern struct pmx_mode hend_wifi_phone_mode; -extern struct pmx_mode ata_pabx_wi2s_mode; -extern struct pmx_mode ata_pabx_i2s_mode; -extern struct pmx_mode caml_lcdw_mode; -extern struct pmx_mode camu_lcd_mode; -extern struct pmx_mode camu_wlcd_mode; -extern struct pmx_mode caml_lcd_mode; +extern struct pmx_mode spear300_nand_mode; +extern struct pmx_mode spear300_nor_mode; +extern struct pmx_mode spear300_photo_frame_mode; +extern struct pmx_mode spear300_lend_ip_phone_mode; +extern struct pmx_mode spear300_hend_ip_phone_mode; +extern struct pmx_mode spear300_lend_wifi_phone_mode; +extern struct pmx_mode spear300_hend_wifi_phone_mode; +extern struct pmx_mode spear300_ata_pabx_wi2s_mode; +extern struct pmx_mode spear300_ata_pabx_i2s_mode; +extern struct pmx_mode spear300_caml_lcdw_mode; +extern struct pmx_mode spear300_camu_lcd_mode; +extern struct pmx_mode spear300_camu_wlcd_mode; +extern struct pmx_mode spear300_caml_lcd_mode;/* pad mux devices */ extern struct pmx_dev spear300_pmx_fsmc_2_chips;
@@ -165,14 +165,14 @@ extern struct clcd_board clcd_plat_data;/* spear310 declarations */ #if defined(CONFIG_MACH_SPEAR310 )/* Add spear310 machine device structure declarations here */ -extern struct amba_device uart1_device; -extern struct amba_device uart2_device; -extern struct amba_device uart3_device; -extern struct amba_device uart4_device; -extern struct amba_device uart5_device; -extern struct platform_device emi_nor_device; -extern struct platform_device plgpio_device; -extern struct platform_device nand_device; +extern struct amba_device spear310_uart1_device; +extern struct amba_device spear310_uart2_device; +extern struct amba_device spear310_uart3_device; +extern struct amba_device spear310_uart4_device; +extern struct amba_device spear310_uart5_device; +extern struct platform_device spear310_emi_nor_device; +extern struct platform_device spear310_plgpio_device; +extern struct platform_device spear310_nand_device;/* pad mux devices */ extern struct pmx_dev spear310_pmx_emi_cs_0_1_4_5;
@@ -193,24 +193,24 @@ void __init spear310_init(struct pmx_mode *pmx_mode, struct pmx_dev **pmx_devs,/* spear320 declarations */ #if defined(CONFIG_MACH_SPEAR320 )/* Add spear320 machine device structure declarations here */ -extern struct amba_device clcd_device; -extern struct amba_device ssp_device[]; -extern struct amba_device uart1_device; -extern struct amba_device uart2_device; -extern struct platform_device can0_device; -extern struct platform_device can1_device; -extern struct platform_device emi_nor_device; -extern struct platform_device i2c1_device; -extern struct platform_device nand_device; -extern struct platform_device plgpio_device; -extern struct platform_device pwm_device; -extern struct platform_device sdhci_device; +extern struct amba_device spear320_clcd_device; +extern struct amba_device spear320_ssp_device[]; +extern struct amba_device spear320_uart1_device; +extern struct amba_device spear320_uart2_device; +extern struct platform_device spear320_can0_device; +extern struct platform_device spear320_can1_device; +extern struct platform_device spear320_emi_nor_device; +extern struct platform_device spear320_i2c1_device; +extern struct platform_device spear320_nand_device; +extern struct platform_device spear320_plgpio_device; +extern struct platform_device spear320_pwm_device; +extern struct platform_device spear320_sdhci_device;/* pad mux modes */ -extern struct pmx_mode auto_net_smii_mode; -extern struct pmx_mode auto_net_mii_mode; -extern struct pmx_mode auto_exp_mode; -extern struct pmx_mode small_printers_mode; +extern struct pmx_mode spear320_auto_net_smii_mode; +extern struct pmx_mode spear320_auto_net_mii_mode; +extern struct pmx_mode spear320_auto_exp_mode; +extern struct pmx_mode spear320_small_printers_mode;/* pad mux devices */ extern struct pmx_dev spear320_pmx_clcd;
arch/arm/mach-spear3xx/spear300.c +21 -21
156 lines not on this page · raw message
arch/arm/mach-spear3xx/spear300_evb.c +20 -19
@@ -43,28 +43,28 @@ static struct pmx_dev *pmx_devs[] = {static struct amba_device *amba_devs[]__initdata = {/* spear3xx specific devices */ - &gpio_device, - &ssp0_device, - &uart_device, - &wdt_device, + &spear3xx_gpio_device, + &spear3xx_ssp0_device, + &spear3xx_uart_device, + &spear3xx_wdt_device,/* spear300 specific devices */ - &clcd_device, - &gpio1_device, + &spear300_clcd_device, + &spear300_gpio1_device, };static struct platform_device *plat_devs[]__initdata = {/* spear3xx specific devices */ - &ehci_device, - &i2c_device, - &nand0_device, - &ohci0_device, - &ohci1_device, - &rtc_device, + &spear3xx_ehci_device, + &spear3xx_i2c_device, + &spear3xx_ohci0_device, + &spear3xx_ohci1_device, + &spear3xx_rtc_device,/* spear300 specific devices */ - &kbd_device, - &sdhci_device, + &spear300_kbd_device, + &spear300_nand0_device, + &spear300_sdhci_device, };/* sdhci board specific information */
@@ -110,20 +110,21 @@ static void __init spear300_evb_init(void)unsigned int i;/* set keyboard plat data */ -kbd_set_plat_data (&kbd_device, &kbd_data); +kbd_set_plat_data (&spear300_kbd_device, &kbd_data);/* set nand0 device's plat data */ -fsmc_nand_set_plat_data (&nand0_device,NULL ,0 ,NAND_SKIP_BBTSCAN , -FSMC_NAND_BW8 ); +fsmc_nand_set_plat_data (&spear300_nand0_device,NULL ,0 , +NAND_SKIP_BBTSCAN ,FSMC_NAND_BW8 );/* set sdhci device platform data */ -sdhci_set_plat_data (&sdhci_device, &sdhci_plat_data); +sdhci_set_plat_data (&spear300_sdhci_device, &sdhci_plat_data);/* Enable sdhci memory */ sdhci_i2s_mem_enable (SDHCI_MEM_ENB );/* call spear300 machine init function */ -spear300_init (&photo_frame_mode, pmx_devs,ARRAY_SIZE (pmx_devs)); +spear300_init (&spear300_photo_frame_mode, pmx_devs, +ARRAY_SIZE (pmx_devs));/* Register slave devices on the I2C buses */ i2c_register_default_devices ();
arch/arm/mach-spear3xx/spear310.c +8 -8
@@ -196,7 +196,7 @@ static struct pmx_driver pmx_driver;/* Add spear310 specific devices here */ /* uart1 device registeration */ -struct amba_device uart1_device = { +struct amba_device spear310_uart1_device = { .dev = { .init_name ="uart1" , },
@@ -209,7 +209,7 @@ struct amba_device uart1_device = { };/* uart2 device registeration */ -struct amba_device uart2_device = { +struct amba_device spear310_uart2_device = { .dev = { .init_name ="uart2" , },
@@ -222,7 +222,7 @@ struct amba_device uart2_device = { };/* uart3 device registeration */ -struct amba_device uart3_device = { +struct amba_device spear310_uart3_device = { .dev = { .init_name ="uart3" , },
@@ -235,7 +235,7 @@ struct amba_device uart3_device = { };/* uart4 device registeration */ -struct amba_device uart4_device = { +struct amba_device spear310_uart4_device = { .dev = { .init_name ="uart4" , },
@@ -248,7 +248,7 @@ struct amba_device uart4_device = { };/* uart5 device registeration */ -struct amba_device uart5_device = { +struct amba_device spear310_uart5_device = { .dev = { .init_name ="uart5" , },
@@ -277,7 +277,7 @@ static struct resource nand_resources[] = { }, }; -struct platform_device nand_device = { +struct platform_device spear310_nand_device = { .name ="nand" , .id =-1 , .resource = nand_resources,
@@ -323,7 +323,7 @@ int spear300_o2p(int offset)/* emi nor flash device registeration */ static struct physmap_flash_data emi_norflash_data; -struct platform_device emi_nor_device = { +struct platform_device spear310_emi_nor_device = { .name ="physmap-flash" , .id =-1 , .dev.platform_data = &emi_norflash_data,
@@ -351,7 +351,7 @@ static struct resource plgpio_resources[] = { }, }; -struct platform_device plgpio_device = { +struct platform_device spear310_plgpio_device = { .name ="plgpio" , .id =-1 , .dev = {
arch/arm/mach-spear3xx/spear310_evb.c +17 -16
@@ -68,26 +68,26 @@ static struct pmx_dev *pmx_devs[] = {static struct amba_device *amba_devs[]__initdata = {/* spear3xx specific devices */ - &gpio_device, - &ssp0_device, - &uart_device, - &wdt_device, + &spear3xx_gpio_device, + &spear3xx_ssp0_device, + &spear3xx_uart_device, + &spear3xx_wdt_device,/* spear310 specific devices */ };static struct platform_device *plat_devs[]__initdata = {/* spear3xx specific devices */ - &ehci_device, - &i2c_device, - &nand_device, - &ohci0_device, - &ohci1_device, - &rtc_device, + &spear3xx_ehci_device, + &spear3xx_i2c_device, + &spear3xx_ohci0_device, + &spear3xx_ohci1_device, + &spear3xx_rtc_device,/* spear310 specific devices */ - &emi_nor_device, - &plgpio_device, + &spear310_emi_nor_device, + &spear310_nand_device, + &spear310_plgpio_device, };/* spi board information */
@@ -125,8 +125,8 @@ static void __init spear310_evb_init(void)unsigned int i;/* set nand device's plat data */ -fsmc_nand_set_plat_data (&nand_device,NULL ,0 ,NAND_SKIP_BBTSCAN , -FSMC_NAND_BW8 ); +fsmc_nand_set_plat_data (&spear310_nand_device,NULL ,0 , +NAND_SKIP_BBTSCAN ,FSMC_NAND_BW8 );/* call spear310 machine init function */ spear310_init (NULL , pmx_devs,ARRAY_SIZE (pmx_devs));
@@ -135,12 +135,13 @@ static void __init spear310_evb_init(void)i2c_register_default_devices ();/* initialize emi related data in emi plat data */ -emi_init_board_info (&emi_nor_device, emi_nor_resources, +emi_init_board_info (&spear310_emi_nor_device, emi_nor_resources,ARRAY_SIZE (emi_nor_resources), partition_info,ARRAY_SIZE (partition_info),EMI_FLASH_WIDTH32 );/* Initialize emi regiters */ -emi_init (&emi_nor_device,SPEAR310_EMI_REG_BASE ,0 ,EMI_FLASH_WIDTH32 ); +emi_init (&spear310_emi_nor_device,SPEAR310_EMI_REG_BASE ,0 , +EMI_FLASH_WIDTH32 );/* Add Platform Devices */ platform_add_devices (plat_devs,ARRAY_SIZE (plat_devs));
arch/arm/mach-spear3xx/spear320.c +18 -18
@@ -30,25 +30,25 @@#define SMALL_PRINTERS_MODE (1 << 3)#define ALL_MODES 0xF -struct pmx_mode auto_net_smii_mode = { +struct pmx_mode spear320_auto_net_smii_mode = { .id =AUTO_NET_SMII_MODE , .name ="Automation Networking SMII Mode" , .value =0x00 , }; -struct pmx_mode auto_net_mii_mode = { +struct pmx_mode spear320_auto_net_mii_mode = { .id =AUTO_NET_MII_MODE , .name ="Automation Networking MII Mode" , .value =0x01 , }; -struct pmx_mode auto_exp_mode = { +struct pmx_mode spear320_auto_exp_mode = { .id =AUTO_EXP_MODE , .name ="Automation Expanded Mode" , .value =0x02 , }; -struct pmx_mode small_printers_mode = { +struct pmx_mode spear320_small_printers_mode = { .id =SMALL_PRINTERS_MODE , .name ="Small Printers Mode" , .value =0x03 ,
@@ -594,7 +594,7 @@ static struct pmx_driver pmx_driver = {/* Add spear320 specific devices here */ /* CLCD device registration */ -struct amba_device clcd_device = { +struct amba_device spear320_clcd_device = { .dev = { .init_name ="clcd" , .coherent_dma_mask = ~0 ,
@@ -622,7 +622,7 @@ static struct pl022_ssp_controller ssp_platform_data[] = { } }; -struct amba_device ssp_device[] = { +struct amba_device spear320_ssp_device[] = { { .dev = { .coherent_dma_mask = ~0 ,
@@ -651,7 +651,7 @@ struct amba_device ssp_device[] = { };/* uart1 device registeration */ -struct amba_device uart1_device = { +struct amba_device spear320_uart1_device = { .dev = { .init_name ="uart1" , },
@@ -664,7 +664,7 @@ struct amba_device uart1_device = { };/* uart2 device registeration */ -struct amba_device uart2_device = { +struct amba_device spear320_uart2_device = { .dev = { .init_name ="uart2" , },
@@ -688,7 +688,7 @@ static struct resource can0_resources[] = { }, }; -struct platform_device can0_device = { +struct platform_device spear320_can0_device = { .name ="c_can_platform" , .id =0 , .num_resources =ARRAY_SIZE (can0_resources),
@@ -706,7 +706,7 @@ static struct resource can1_resources[] = { }, }; -struct platform_device can1_device = { +struct platform_device spear320_can1_device = { .name ="c_can_platform" , .id =1 , .num_resources =ARRAY_SIZE (can1_resources),
@@ -715,7 +715,7 @@ struct platform_device can1_device = {/* emi nor flash device registeration */ static struct physmap_flash_data emi_norflash_data; -struct platform_device emi_nor_device = { +struct platform_device spear320_emi_nor_device = { .name ="physmap-flash" , .id =-1 , .dev.platform_data = &emi_norflash_data,
@@ -733,7 +733,7 @@ static struct resource i2c1_resources[] = { }, }; -struct platform_device i2c1_device = { +struct platform_device spear320_i2c1_device = { .name ="i2c_designware" , .id =1 , .dev = {
@@ -760,7 +760,7 @@ static struct resource nand_resources[] = { }, }; -struct platform_device nand_device = { +struct platform_device spear320_nand_device = { .name ="nand" , .id =-1 , .resource = nand_resources,
@@ -771,8 +771,8 @@ struct platform_device nand_device = {/* plgpio device registeration */ static struct plgpio_platform_data plgpio_plat_data = { .gpio_base =8 , - .irq_base =SPEAR_PLGPIO_INT_BASE , - .gpio_count =SPEAR_PLGPIO_COUNT , + .irq_base =SPEAR3XX_PLGPIO_INT_BASE , + .gpio_count =SPEAR3XX_PLGPIO_COUNT , };static struct resource plgpio_resources[] = {
@@ -786,7 +786,7 @@ static struct resource plgpio_resources[] = { }, }; -struct platform_device plgpio_device = { +struct platform_device spear320_plgpio_device = { .name ="plgpio" , .id =-1 , .dev = {
@@ -805,7 +805,7 @@ static struct resource pwm_resources[] = { }, }; -struct platform_device pwm_device = { +struct platform_device spear320_pwm_device = { .name ="pwm" , .id =-1 , .num_resources =ARRAY_SIZE (pwm_resources),
@@ -824,7 +824,7 @@ static struct resource sdhci_resources[] = { } }; -struct platform_device sdhci_device = { +struct platform_device spear320_sdhci_device = { .dev = { .coherent_dma_mask = ~0 , },
arch/arm/mach-spear3xx/spear320_evb.c +24 -22
79 lines not on this page · raw message
arch/arm/mach-spear3xx/spear3xx.c +9 -9
@@ -32,7 +32,7 @@ static struct pl061_platform_data gpio_plat_data = { .irq_base = SPEAR3XX_GPIO_INT_BASE, }; -struct amba_device gpio_device = { +struct amba_device spear3xx_gpio_device = { .dev = { .init_name ="gpio" , .platform_data = &gpio_plat_data,
@@ -61,7 +61,7 @@ static struct pl022_ssp_controller ssp_platform_data = { .num_chipselect = 2, }; -struct amba_device ssp0_device = { +struct amba_device spear3xx_ssp0_device = { .dev = { .coherent_dma_mask = ~0 , .init_name ="ssp-pl022.0" ,
@@ -76,7 +76,7 @@ struct amba_device ssp0_device = { };/* uart device registration */ -struct amba_device uart_device = { +struct amba_device spear3xx_uart_device = { .dev = { .init_name ="uart" , },
@@ -89,7 +89,7 @@ struct amba_device uart_device = { };/* watchdog device registeration */ -struct amba_device wdt_device = { +struct amba_device spear3xx_wdt_device = { .dev = { .init_name ="wdt" , },
@@ -112,7 +112,7 @@ static struct resource i2c_resources[] = { }, }; -struct platform_device i2c_device = { +struct platform_device spear3xx_i2c_device = { .name ="i2c_designware" , .id =0 , .dev = {
@@ -162,7 +162,7 @@ static struct resource ohci1_resources[] = {static u64 ehci_dmamask = ~0 ;static int usbh_id =-1 ; -struct platform_device ehci_device = { +struct platform_device spear3xx_ehci_device = { .name ="spear-ehci" , .id =-1 , .dev = {
@@ -176,7 +176,7 @@ struct platform_device ehci_device = {static u64 ohci0_dmamask = ~0 ; -struct platform_device ohci0_device = { +struct platform_device spear3xx_ohci0_device = { .name ="spear-ohci" , .id =0 , .dev = {
@@ -190,7 +190,7 @@ struct platform_device ohci0_device = {static u64 ohci1_dmamask = ~0 ; -struct platform_device ohci1_device = { +struct platform_device spear3xx_ohci1_device = { .name ="spear-ohci" , .id =1 , .dev = {
@@ -214,7 +214,7 @@ static struct resource rtc_resources[] = { }, }; -struct platform_device rtc_device = { +struct platform_device spear3xx_rtc_device = { .name ="rtc-spear" , .id =-1 , .num_resources =ARRAY_SIZE (rtc_resources),
Signature · 1 line
1.7.2.2
PATCH v4 56/62 ST SPEAr3xx: Updating plgpio and emi source to make it compliant with single image strategy
In reply to Viresh Kumar--- arch/arm/mach-spear3xx/emi.c | 18 ++++++++++- arch/arm/mach-spear3xx/include/mach/emi.h | 19 ++++++----- arch/arm/mach-spear3xx/include/mach/gpio.h | 27 ++++++++-------- arch/arm/plat-spear/plgpio.c | 46 ++++++++++++++++++++------- 4 files changed, 75 insertions(+), 35 deletions(-)
arch/arm/mach-spear3xx/emi.c +17 -1
@@ -15,6 +15,7 @@#include <linux/err.h> #include <linux/init.h> #include <linux/io.h> +#include <asm/mach-types.h> #include <mach/emi.h> int __init emi_init(struct platform_device *pdev, unsigned long base,
@@ -23,8 +24,23 @@ int __init emi_init(struct platform_device *pdev, unsigned long base,void __iomem *emi_reg_base;struct clk *clk;int ret; +u32 ack_reg, max_banks; +/* u32 timeout_reg, irq_reg; */ + +/* fixing machine dependent values */ +if (machine_is_spear310 ()) { + ack_reg =SPEAR310_ACK_REG ; + max_banks =SPEAR310_EMI_MAX_BANKS ; +/* timeout_reg = SPEAR310_TIMEOUT_REG; */ +/* irq_reg = SPEAR310_IRQ_REG; */ + }else { + ack_reg =SPEAR320_ACK_REG ; + max_banks =SPEAR320_EMI_MAX_BANKS ; +/* timeout_reg = SPEAR320_TIMEOUT_REG; */ +/* irq_reg = SPEAR320_IRQ_REG; */ + } -if (bank > (EMI_MAX_BANKS -1 )) +if (bank > (max_banks -1 ))return -EINVAL ; emi_reg_base =ioremap (base,EMI_REG_SIZE );
arch/arm/mach-spear3xx/include/mach/emi.h +10 -9
@@ -33,18 +33,19 @@#define CTRL_REG (0x14)#if defined(CONFIG_MACH_SPEAR310 ) -#define TIMEOUT_REG (0x90) -#define ACK_REG (0x94) -#define IRQ_REG (0x98) +#define SPEAR310_TIMEOUT_REG (0x90) +#define SPEAR310_ACK_REG (0x94) +#define SPEAR310_IRQ_REG (0x98) -#define EMI_MAX_BANKS 6 +#define SPEAR310_EMI_MAX_BANKS 6 +#endif -#elif defined(CONFIG_MACH_SPEAR320 ) -#define TIMEOUT_REG (0x60) -#define ACK_REG (0x64) -#define IRQ_REG (0x68) +#if defined(CONFIG_MACH_SPEAR320 ) +#define SPEAR320_TIMEOUT_REG (0x60) +#define SPEAR320_ACK_REG (0x64) +#define SPEAR320_IRQ_REG (0x68) -#define EMI_MAX_BANKS 4 +#define SPEAR320_EMI_MAX_BANKS 4#endif
arch/arm/mach-spear3xx/include/mach/gpio.h +14 -13
@@ -17,20 +17,21 @@#include <plat/gpio.h> #ifdef CONFIG_MACH_SPEAR310 -#define PLGPIO_ENB 0x0010 -#define PLGPIO_WDATA 0x0020 -#define PLGPIO_DIR 0x0030 -#define PLGPIO_IE 0x0040 -#define PLGPIO_RDATA 0x0050 -#define PLGPIO_MIS 0x0060 +#define SPEAR310_PLGPIO_ENB 0x0010 +#define SPEAR310_PLGPIO_WDATA 0x0020 +#define SPEAR310_PLGPIO_DIR 0x0030 +#define SPEAR310_PLGPIO_IE 0x0040 +#define SPEAR310_PLGPIO_RDATA 0x0050 +#define SPEAR310_PLGPIO_MIS 0x0060 +#endif -#elif defined(CONFIG_MACH_SPEAR320 ) -#define PLGPIO_ENB 0x0024 -#define PLGPIO_WDATA 0x0034 -#define PLGPIO_DIR 0x0044 -#define PLGPIO_RDATA 0x0054 -#define PLGPIO_IE 0x0064 -#define PLGPIO_MIS 0x0074 +#if defined(CONFIG_MACH_SPEAR320 ) +#define SPEAR320_PLGPIO_ENB 0x0024 +#define SPEAR320_PLGPIO_WDATA 0x0034 +#define SPEAR320_PLGPIO_DIR 0x0044 +#define SPEAR320_PLGPIO_RDATA 0x0054 +#define SPEAR320_PLGPIO_IE 0x0064 +#define SPEAR320_PLGPIO_MIS 0x0074#endif #define BASIC_GPIO_0 0
arch/arm/plat-spear/plgpio.c +34 -12
121 lines not on this page · raw message
Signature · 1 line
1.7.2.2
PATCH v4 57/62 SPEAr6xx: Rework Kconfig for single image solution
In reply to Viresh Kumar--- arch/arm/mach-spear6xx/Kconfig | 15 ++++++++------- arch/arm/mach-spear6xx/Kconfig600 | 17 ----------------- 2 files changed, 8 insertions(+), 24 deletions(-) delete mode 100644 arch/arm/mach-spear6xx/Kconfig600
arch/arm/mach-spear6xx/Kconfig +8 -7
@@ -4,17 +4,18 @@ if ARCH_SPEAR6XX -choice - prompt "SPEAr6XX Family" - default MACH_SPEAR600 +menu "SPEAr6xx Implementations" +config BOARD_SPEAR600_EVB + bool "SPEAr600 Evaluation Board" + select MACH_SPEAR600 + help + Supports ST SPEAr600 Evaluation Board + +endmenu config MACH_SPEAR600 bool "SPEAr600" help Supports ST SPEAr600 Machine -endchoice - -# Adding SPEAr6XX machine specific configuration files -source "arch/arm/mach-spear6xx/Kconfig600" endif #ARCH_SPEAR6XX
arch/arm/mach-spear6xx/Kconfig600 deleted +0 -17
@@ -1,17 +0,0 @@ -# -# SPEAr600 machine configuration file -# - -if MACH_SPEAR600 - -choice - prompt "SPEAr600 Boards" - default BOARD_SPEAR600_EVB - -config BOARD_SPEAR600_EVB - bool "SPEAr600 Evaluation Board" - help - Supports ST SPEAr600 Evaluation Board -endchoice - -endif #MACH_SPEAR600
Signature · 1 line
1.7.2.2
PATCH v4 58/62 ST SPEAR6xx: renaming spear600_defconfig as spear6xx_defconfig
In reply to Viresh Kumar---
.../{spear600_defconfig => spear6xx_defconfig} | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
rename arch/arm/configs/{spear600_defconfig => spear6xx_defconfig} (97%)arch/arm/configs/spear6xx_defconfig renamed from arch/arm/configs/spear600_defconfig +1 -1
@@ -8,6 +8,7 @@ CONFIG_MODULE_UNLOAD=y CONFIG_MODVERSIONS=y CONFIG_PLAT_SPEAR=y CONFIG_ARCH_SPEAR6XX=y +CONFIG_BOARD_SPEAR600_EVB=y CONFIG_BINFMT_MISC=y CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" CONFIG_BLK_DEV_RAM=y
@@ -22,7 +23,6 @@ CONFIG_MAX_RAW_DEVS=8192 CONFIG_GPIO_SYSFS=y CONFIG_GPIO_PL061=y # CONFIG_HWMON is not set -# CONFIG_VGA_CONSOLE is not set # CONFIG_HID_SUPPORT is not set # CONFIG_USB_SUPPORT is not set CONFIG_EXT2_FS=y
Signature · 1 line
1.7.2.2
PATCH v4 59/62 ST SPEAr13xx: Pass default padmux settings as parameter to spear13**_init routine
In reply to Viresh KumarThis patch makes pmx_driver static to spear1300.c and spear1310.c, also now default setting of padmux are sent to spear1300_init and spear1310_init routines
--- arch/arm/mach-spear13xx/include/mach/generic.h | 8 ++++---- arch/arm/mach-spear13xx/spear1300.c | 9 +++++++-- arch/arm/mach-spear13xx/spear1300_evb.c | 7 +------ arch/arm/mach-spear13xx/spear1310.c | 9 +++++++-- arch/arm/mach-spear13xx/spear1310_evb.c | 7 +------ 5 files changed, 20 insertions(+), 20 deletions(-)
arch/arm/mach-spear13xx/include/mach/generic.h +4 -4
@@ -220,8 +220,6 @@ extern struct pmx_dev pmx_uart1_modem;#define SPEAR_GPT0_CHAN0_IRQ IRQ_GPT0_TMR0#define SPEAR_GPT0_CHAN1_IRQ IRQ_GPT0_TMR1 -extern struct pmx_driver pmx_driver; -/* Add spear13xx family device structure declarations here */ extern struct amba_device spear13xx_gpio_device[];extern struct amba_device spear13xx_ssp_device;
@@ -250,7 +248,8 @@ void spear13xx_secondary_startup(void);/* spear1300 declarations */ #ifdef CONFIG_MACH_SPEAR1300 /* Add spear1300 machine function declarations here */ -void __init spear1300_init (void ); +void __init spear1300_init (struct pmx_mode *pmx_mode,struct pmx_dev **pmx_devs, +u8 pmx_dev_count);#endif /* CONFIG_MACH_SPEAR1300 */
@@ -261,7 +260,8 @@ extern struct platform_device spear1310_can0_device;extern struct platform_device spear1310_can1_device;/* Add spear1310 machine function declarations here */ -void __init spear1310_init (void ); +void __init spear1310_init (struct pmx_mode *pmx_mode,struct pmx_dev **pmx_devs, +u8 pmx_dev_count);void __init spear1310_map_io (void );#endif /* CONFIG_MACH_SPEAR1310 */
arch/arm/mach-spear13xx/spear1300.c +7 -2
@@ -15,11 +15,12 @@#include <mach/spear.h> /* pmx driver structure */ -struct pmx_driver pmx_driver; +static struct pmx_driver pmx_driver;/* Add spear1300 specific devices here */ -void __init spear1300_init (void ) +void __init spear1300_init (struct pmx_mode *pmx_mode,struct pmx_dev **pmx_devs, +u8 pmx_dev_count) {int ret;
@@ -27,6 +28,10 @@ void __init spear1300_init(void)spear13xx_init ();/* pmx initialization */ + pmx_driver.mode = pmx_mode; + pmx_driver.devs = pmx_devs; + pmx_driver.devs_count = pmx_dev_count; + ret =pmx_register (&pmx_driver);if (ret)pr_err ("padmux: registeration failed. err no: %d\n" , ret);
arch/arm/mach-spear13xx/spear1300_evb.c +1 -6
@@ -107,11 +107,6 @@ static void __init spear1300_evb_init(void) {unsigned int i; -/* padmux initialization, must be done before spear1300_init */ - pmx_driver.mode =NULL ; - pmx_driver.devs = pmx_devs; - pmx_driver.devs_count =ARRAY_SIZE (pmx_devs); -/* set keyboard plat data */ kbd_set_plat_data (&spear13xx_kbd_device, &kbd_data);
@@ -121,7 +116,7 @@ static void __init spear1300_evb_init(void)nand_mach_init (FSMC_NAND_BW8 );/* call spear1300 machine init function */ -spear1300_init (); +spear1300_init (NULL , pmx_devs,ARRAY_SIZE (pmx_devs));/* Register slave devices on the I2C buses */ i2c_register_default_devices ();
arch/arm/mach-spear13xx/spear1310.c +7 -2
@@ -17,7 +17,7 @@#include <mach/hardware.h> /* pmx driver structure */ -struct pmx_driver pmx_driver; +static struct pmx_driver pmx_driver;/* Pad multiplexing for uart1_modem device */ static struct pmx_mux_reg pmx_uart1_modem_mux[] = {
@@ -410,7 +410,8 @@ void __init spear1310_map_io(void)iotable_init (spear1310_io_desc,ARRAY_SIZE (spear1310_io_desc)); } -void __init spear1310_init (void ) +void __init spear1310_init (struct pmx_mode *pmx_mode,struct pmx_dev **pmx_devs, +u8 pmx_dev_count) {int ret;
@@ -418,6 +419,10 @@ void __init spear1310_init(void)spear13xx_init ();/* pmx initialization */ + pmx_driver.mode = pmx_mode; + pmx_driver.devs = pmx_devs; + pmx_driver.devs_count = pmx_dev_count; + ret =pmx_register (&pmx_driver);if (ret)pr_err ("padmux: registeration failed. err no: %d\n" , ret);
arch/arm/mach-spear13xx/spear1310_evb.c +1 -6
@@ -119,11 +119,6 @@ static void __init spear1310_evb_init(void) {unsigned int i; -/* padmux initialization, must be done before spear1300_init */ - pmx_driver.mode =NULL ; - pmx_driver.devs = pmx_devs; - pmx_driver.devs_count =ARRAY_SIZE (pmx_devs); -/* set keyboard plat data */ kbd_set_plat_data (&spear13xx_kbd_device, &kbd_data);
@@ -133,7 +128,7 @@ static void __init spear1310_evb_init(void)nand_mach_init (FSMC_NAND_BW8 );/* call spear1310 machine init function */ -spear1310_init (); +spear1310_init (NULL , pmx_devs,ARRAY_SIZE (pmx_devs));/* Register slave devices on the I2C buses */ i2c_register_default_devices ();
Signature · 1 line
1.7.2.2
PATCH v4 60/62 ST SPEAr: Adding devices & clocks
In reply to Viresh Kumar--- arch/arm/mach-spear13xx/clock.c | 39 ++++++++++ arch/arm/mach-spear13xx/include/mach/generic.h | 6 ++ arch/arm/mach-spear13xx/include/mach/irqs.h | 10 +- arch/arm/mach-spear13xx/include/mach/spear1310.h | 33 ++++++++ arch/arm/mach-spear13xx/spear1310.c | 87 ++++++++++++++++++++++ arch/arm/mach-spear13xx/spear1310_evb.c | 8 ++ arch/arm/mach-spear3xx/spear310_evb.c | 5 + arch/arm/mach-spear3xx/spear320_evb.c | 6 ++ 8 files changed, 189 insertions(+), 5 deletions(-)
arch/arm/mach-spear13xx/clock.c +39 -0
@@ -1025,6 +1025,40 @@ static struct clk gmac_phy4_clk = { .recalc = &follow_parent, }; +/* uart1 clock */ +static struct clk uart1_clk = { + .flags =ALWAYS_ENABLED , + .pclk = &ras_pclk_clk, + .recalc = &follow_parent, +}; + +/* uart2 clock */ +static struct clk uart2_clk = { + .flags =ALWAYS_ENABLED , + .pclk = &ras_pclk_clk, + .recalc = &follow_parent, +}; + +/* uart3 clock */ +static struct clk uart3_clk = { + .flags =ALWAYS_ENABLED , + .pclk = &ras_pclk_clk, + .recalc = &follow_parent, +}; + +/* uart4 clock */ +static struct clk uart4_clk = { + .flags =ALWAYS_ENABLED , + .pclk = &ras_pclk_clk, + .recalc = &follow_parent, +}; + +/* uart5 clock */ +static struct clk uart5_clk = { + .flags =ALWAYS_ENABLED , + .pclk = &ras_pclk_clk, + .recalc = &follow_parent, +};#endif static struct clk dummy_apb_pclk;
@@ -1138,6 +1172,11 @@ static struct clk_lookup spear1310_clk_lookups[] = { {.dev_id = "stmmacphy.2", .clk = &gmac_phy2_clk}, {.dev_id = "stmmacphy.3", .clk = &gmac_phy3_clk}, {.dev_id = "stmmacphy.4", .clk = &gmac_phy4_clk}, + {.dev_id = "uart1", .clk = &uart1_clk}, + {.dev_id = "uart2", .clk = &uart2_clk}, + {.dev_id = "uart3", .clk = &uart3_clk}, + {.dev_id = "uart4", .clk = &uart4_clk}, + {.dev_id = "uart5", .clk = &uart5_clk}, }; #endif
arch/arm/mach-spear13xx/include/mach/generic.h +6 -0
@@ -256,8 +256,14 @@ void __init spear1300_init(struct pmx_mode *pmx_mode, struct pmx_dev **pmx_devs,/* spear1310 declarations */ #ifdef CONFIG_MACH_SPEAR1310 /* Add spear1310 machine device structure declarations here */ +extern struct amba_device spear1310_uart1_device; +extern struct amba_device spear1310_uart2_device; +extern struct amba_device spear1310_uart3_device; +extern struct amba_device spear1310_uart4_device; +extern struct amba_device spear1310_uart5_device;extern struct platform_device spear1310_can0_device;extern struct platform_device spear1310_can1_device; +extern struct platform_device spear1310_i2c1_device;/* Add spear1310 machine function declarations here */ void __init spear1310_init(struct pmx_mode *pmx_mode, struct pmx_dev **pmx_devs,
arch/arm/mach-spear13xx/include/mach/irqs.h +5 -5
@@ -97,11 +97,11 @@#define IRQ_CCAN1 (IRQ_SHPI_START + 83)#define IRQ_TDM0 (IRQ_SHPI_START + 84)#define IRQ_TDM1 (IRQ_SHPI_START + 85) -#define IRQ_UART0 (IRQ_SHPI_START + 86) -#define IRQ_UART1 (IRQ_SHPI_START + 87) -#define IRQ_UART2 (IRQ_SHPI_START + 88) -#define IRQ_UART3 (IRQ_SHPI_START + 89) -#define IRQ_UART4 (IRQ_SHPI_START + 90) +#define IRQ_UART1 (IRQ_SHPI_START + 86) +#define IRQ_UART2 (IRQ_SHPI_START + 87) +#define IRQ_UART3 (IRQ_SHPI_START + 88) +#define IRQ_UART4 (IRQ_SHPI_START + 89) +#define IRQ_UART5 (IRQ_SHPI_START + 90)#define IRQ_I2C_CNTR (IRQ_SHPI_START + 91)#define IRQ_GMAC0_SBD (IRQ_SHPI_START + 92)#define IRQ_GMAC0_PMT (IRQ_SHPI_START + 93)
arch/arm/mach-spear13xx/include/mach/spear1310.h +33 -0
@@ -16,9 +16,32 @@#ifndef __MACH_SPEAR1310_H#define __MACH_SPEAR1310_H +#define SPEAR1310_TDM_E1_0_BASE UL(0x6C200000) +#define SPEAR1310_TDM_E1_1_BASE UL(0x6C300000) +#define SPEAR1310_RS485_0_BASE UL(0x6C400000) +#define SPEAR1310_RS485_1_BASE UL(0x6C500000) +#define SPEAR1310_GETH1_BASE UL(0x6D000000) +#define SPEAR1310_GETH2_BASE UL(0x6D100000) +#define SPEAR1310_GETH3_BASE UL(0x6D200000) +#define SPEAR1310_GETH4_BASE UL(0x6D300000) +#define SPEAR1310_UART1_BASE UL(0x6D400000) +#define SPEAR1310_UART2_BASE UL(0x6D500000) +#define SPEAR1310_UART3_BASE UL(0x6D600000) +#define SPEAR1310_UART4_BASE UL(0x6D700000) +#define SPEAR1310_UART5_BASE UL(0x6D800000) +#define SPEAR1310_I2C1_BASE UL(0x6D900000)#define SPEAR1310_CAN0_BASE UL(0x6DA00000)#define SPEAR1310_CAN1_BASE UL(0x6DB00000)#define SPEAR1310_RAS_BASE UL(0x6C800000) +#define SPEAR1310_GETH1_BASE UL(0x6D000000) +#define SPEAR1310_GETH2_BASE UL(0x6D100000) +#define SPEAR1310_GETH3_BASE UL(0x6D200000) +#define SPEAR1310_GETH4_BASE UL(0x6D300000) +#define SPEAR1310_FSMC1_CS0_BASE UL(0x70000000) +#define SPEAR1310_FSMC1_CS1_BASE UL(0x74000000) +#define SPEAR1310_FSMC1_CS2_BASE UL(0x78000000) +#define SPEAR1310_FSMC1_CS3_BASE UL(0x7C000000) +#define SPEAR1310_FSMC1_BASE UL(0x6FF00000)/* RAS Area Control Register */ #define SPEAR1310_RAS_CTRL_REG0 (SPEAR1310_RAS_BASE + 0x0)
@@ -26,6 +49,16 @@#define SPEAR1310_PHY_CLK_MASK 0xF#define SPEAR1310_PHY_CLK_SHIFT 0 +#define RAS_FSMC_MODE_MASK 0x3 +#define RAS_FSMC_MODE_NOR 0 +#define RAS_FSMC_MODE_NAND 1 +#define RAS_FSMC_MODE_SRAM 2 +#define RAS_FSMC_WIDTH_MASK 0x30 +#define RAS_FSMC_WIDTH_8 0x00 +#define RAS_FSMC_WIDTH_16 0x10 +#define RAS_FSMC_WIDTH_32 0x20 +#define RAS_FSMC_CS_SPLIT 0x40 +#endif /* __MACH_SPEAR1310_H */ #endif /* CONFIG_MACH_SPEAR1310 */
arch/arm/mach-spear13xx/spear1310.c +87 -0
105 lines not on this page · raw message
arch/arm/mach-spear13xx/spear1310_evb.c +8 -0
@@ -57,6 +57,13 @@ static struct amba_device *amba_devs[] __initdata = { &spear13xx_gpio_device[1 ], &spear13xx_ssp_device, &spear13xx_uart_device, + +/* spear1310 specific devices */ + &spear1310_uart1_device, + &spear1310_uart2_device, + &spear1310_uart3_device, + &spear1310_uart4_device, + &spear1310_uart5_device, }; static struct platform_device *plat_devs[] __initdata = {
@@ -74,6 +81,7 @@ static struct platform_device *plat_devs[] __initdata = {/* spear1310 specific devices */ &spear1310_can0_device, &spear1310_can1_device, + &spear1310_i2c1_device, };/* keyboard specific platform data */
arch/arm/mach-spear3xx/spear310_evb.c +5 -0
@@ -74,6 +74,11 @@ static struct amba_device *amba_devs[] __initdata = { &spear3xx_wdt_device,/* spear310 specific devices */ + &spear310_uart1_device, + &spear310_uart2_device, + &spear310_uart3_device, + &spear310_uart4_device, + &spear310_uart5_device, }; static struct platform_device *plat_devs[] __initdata = {
arch/arm/mach-spear3xx/spear320_evb.c +6 -0
@@ -67,11 +67,16 @@ static struct pmx_dev *pmx_devs[] = {static struct amba_device *amba_devs[]__initdata = {/* spear3xx specific devices */ &spear3xx_gpio_device, + &spear3xx_ssp0_device, &spear3xx_uart_device, &spear3xx_wdt_device,/* spear320 specific devices */ &spear320_clcd_device, + &spear320_ssp_device[0 ], + &spear320_ssp_device[1 ], + &spear320_uart1_device, + &spear320_uart2_device, };static struct platform_device *plat_devs[]__initdata = {
@@ -85,6 +90,7 @@ static struct platform_device *plat_devs[] __initdata = {/* spear320 specific devices */ &spear320_can0_device, &spear320_can1_device, + &spear320_emi_nor_device, &spear320_i2c1_device, &spear320_nand_device, &spear320_plgpio_device,
Signature · 1 line
1.7.2.2
PATCH v4 61/62 ST SPEAr: Adding information in Documentation/ and MAINTAINERS
In reply to Viresh KumarFrom: Shiraz Hashim <[email protected]>
--- Documentation/arm/SPEAr/overview.txt | 34 +++++++++++++++++++++++----------- MAINTAINERS | 6 ++++++ 2 files changed, 29 insertions(+), 11 deletions(-)
Documentation/arm/SPEAr/overview.txt +23 -11
@@ -9,8 +9,9 @@ Introduction The ST Microelectronics SPEAr range of ARM9/CortexA9 System-on-Chip CPUs are supported by the 'spear' platform of ARM Linux. Currently SPEAr300, - SPEAr310, SPEAr320 and SPEAr600 SOCs are supported. Support for the SPEAr13XX - series is in progress. + SPEAr310, SPEAr320, SPEAr600, SPEAr1300 and SPEAr1310 SOCs are supported. + SPEAr3XX and SPEAr6XX are based on ARM9 whereas SPEAr13XX is based on latest + ARM Cortex A9 CPUs. Hierarchy in SPEAr is as follows:
@@ -27,16 +28,25 @@ Introduction - SPEAr600_EVB (Evaluation Board) - SPEAr13XX (13XX SOC series, based on ARM CORTEXA9) - SPEAr1300 (SOC) + - SPEAr1300_EVB (Evaluation Board) + - SPEAr1310 (SOC) + - SPEAr1310_EVB (Evaluation Board) Configuration ------------- - A generic configuration is provided for each machine, and can be used as the + A generic configuration is provided for each machine family, and can be used as the default by - make spear600_defconfig - make spear300_defconfig - make spear310_defconfig - make spear320_defconfig + #make ARCH=arm spear13xx_defconfig + #make ARCH=arm spear3xx_defconfig + #make ARCH=arm spear6xx_defconfig + + Compilation + ----------- + + After applying default configuration, Linux kernel for SPEAr architecture + can be compiled as + #make ARCH=arm CROSS_COMPILE=arm-linux- uImage Layout ------
@@ -48,13 +58,15 @@ Introduction Each machine series have a directory with name arch/arm/mach-spear followed by series name. Like mach-spear3xx, mach-spear6xx and mach-spear13xx. - Common file for machines of spear3xx family is mach-spear3xx/spear3xx.c and for - spear6xx is mach-spear6xx/spear6xx.c. mach-spear* also contain soc/machine + Common file for machines of spear3xx family is mach-spear3xx/spear3xx.c, for + spear6xx is mach-spear6xx/spear6xx.c and similarly for spear13xx is + mach-spear13xx/spear13xx.c. mach-spear* also contain soc/machine specific files, like spear300.c, spear310.c, spear320.c and spear600.c. - mach-spear* also contains board specific files for each machine type. + Board specific files for each machine type is also contained in mach-spear* + folder. Document Author --------------- - Viresh Kumar, (c) 2010 ST Microelectronics + Viresh Kumar, Shiraz Hashim (c) 2010 ST Microelectronics
MAINTAINERS +6 -0
@@ -5802,6 +5802,12 @@ W: http://www.st.com/spear S: Maintained F: arch/arm/plat-spear/ +SPEAR13XX MACHINE SUPPORT +M: Shiraz Hashim <[email protected]> +W: http://www.st.com/spear +S: Maintained +F: arch/arm/mach-spear13xx/ + SPEAR3XX MACHINE SUPPORT M: Viresh Kumar <[email protected]> W: http://www.st.com/spear
Signature · 1 line
1.7.2.2
PATCH v4 62/62 ST SPEAr: Updating defconfigs
In reply to Viresh Kumar--- arch/arm/configs/spear13xx_defconfig | 78 ++++++++++++++++++++++++++++++--- arch/arm/configs/spear3xx_defconfig | 80 +++++++++++++++++++++++++++++++--- arch/arm/configs/spear6xx_defconfig | 72 ++++++++++++++++++++++++++++--- 3 files changed, 211 insertions(+), 19 deletions(-)
arch/arm/configs/spear13xx_defconfig +72 -6
@@ -10,31 +10,94 @@ CONFIG_PLAT_SPEAR=y CONFIG_ARCH_SPEAR13XX=y CONFIG_BOARD_SPEAR1300_EVB=y CONFIG_BOARD_SPEAR1310_EVB=y +CONFIG_PCI=y +CONFIG_PCI_MSI=y +CONFIG_PCIEPORTBUS=y +# CONFIG_PCIEAER is not set CONFIG_SMP=y CONFIG_NR_CPUS=2 CONFIG_AEABI=y +CONFIG_CPU_FREQ=y +CONFIG_CPU_FREQ_STAT_DETAILS=y +CONFIG_CPU_FREQ_GOV_POWERSAVE=y +CONFIG_CPU_FREQ_GOV_USERSPACE=y +CONFIG_CPU_FREQ_GOV_ONDEMAND=y +CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y +CONFIG_VFP=y CONFIG_BINFMT_MISC=y +CONFIG_PM=y +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_NET_IPIP=y +CONFIG_ARPD=y +# CONFIG_IPV6 is not set +# CONFIG_WIRELESS is not set CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y CONFIG_MTD=y CONFIG_MTD_CONCAT=y CONFIG_MTD_PARTITIONS=y CONFIG_MTD_CMDLINE_PARTS=y CONFIG_MTD_CHAR=y CONFIG_MTD_BLOCK=y +CONFIG_MTD_CFI=y +CONFIG_MTD_CFI_INTELEXT=y +CONFIG_MTD_CFI_STAA=y +CONFIG_MTD_PHYSMAP=y +CONFIG_MTD_M25P80=y +# CONFIG_M25PXX_USE_FAST_READ is not set +CONFIG_MTD_NAND=y +CONFIG_MTD_NAND_FSMC=y CONFIG_BLK_DEV_RAM=y CONFIG_BLK_DEV_RAM_SIZE=16384 +CONFIG_SCSI=y +CONFIG_BLK_DEV_SD=y +CONFIG_CHR_DEV_ST=y +CONFIG_CHR_DEV_OSST=y +CONFIG_BLK_DEV_SR=y +CONFIG_CHR_DEV_SG=y +CONFIG_CHR_DEV_SCH=y +CONFIG_NETDEVICES=y +# CONFIG_WLAN is not set CONFIG_INPUT_FF_MEMLESS=y # CONFIG_INPUT_MOUSEDEV_PSAUX is not set -# CONFIG_INPUT_KEYBOARD is not set +CONFIG_INPUT_EVDEV=y +CONFIG_INPUT_EVBUG=y +# CONFIG_KEYBOARD_ATKBD is not set +CONFIG_KEYBOARD_SPEAR=y # CONFIG_INPUT_MOUSE is not set CONFIG_SERIAL_AMBA_PL011=y CONFIG_SERIAL_AMBA_PL011_CONSOLE=y # CONFIG_LEGACY_PTYS is not set CONFIG_RAW_DRIVER=y CONFIG_MAX_RAW_DEVS=8192 +CONFIG_I2C=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_DESIGNWARE=y +CONFIG_SPI=y +CONFIG_SPI_PL022=y +CONFIG_SPI_SPIDEV=y +CONFIG_GPIO_SYSFS=y +CONFIG_GPIO_PL061=y # CONFIG_HWMON is not set # CONFIG_HID_SUPPORT is not set -# CONFIG_USB_SUPPORT is not set +CONFIG_USB=y +CONFIG_USB_EHCI_HCD=y +# CONFIG_USB_EHCI_TT_NEWSCHED is not set +CONFIG_USB_OHCI_HCD=y +CONFIG_USB_STORAGE=y +CONFIG_USB_TEST=y +CONFIG_MMC=y +CONFIG_MMC_SDHCI=y +CONFIG_MMC_SDHCI_SPEAR=y +CONFIG_RTC_CLASS=y CONFIG_EXT2_FS=y CONFIG_EXT2_FS_XATTR=y CONFIG_EXT2_FS_SECURITY=y
@@ -42,16 +105,18 @@ CONFIG_EXT3_FS=y # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set CONFIG_EXT3_FS_SECURITY=y CONFIG_AUTOFS4_FS=m -CONFIG_MSDOS_FS=m -CONFIG_VFAT_FS=m +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y CONFIG_FAT_DEFAULT_IOCHARSET="ascii" CONFIG_TMPFS=y CONFIG_JFFS2_FS=y +CONFIG_NFS_FS=y +CONFIG_ROOT_NFS=y +# CONFIG_RPCSEC_GSS_KRB5 is not set CONFIG_PARTITION_ADVANCED=y -CONFIG_NLS=y CONFIG_NLS_DEFAULT="utf8" CONFIG_NLS_CODEPAGE_437=y -CONFIG_NLS_ASCII=m +CONFIG_NLS_ASCII=y CONFIG_MAGIC_SYSRQ=y CONFIG_DEBUG_FS=y CONFIG_DEBUG_KERNEL=y
@@ -59,3 +124,4 @@ CONFIG_DETECT_HUNG_TASK=y CONFIG_DEBUG_SPINLOCK=y CONFIG_DEBUG_SPINLOCK_SLEEP=y CONFIG_DEBUG_INFO=y +# CONFIG_ARM_UNWIND is not set
arch/arm/configs/spear3xx_defconfig +73 -7
116 lines not on this page · raw message
arch/arm/configs/spear6xx_defconfig +66 -6
106 lines not on this page · raw message
Signature · 1 line
1.7.2.2
v4 cover Updating SPEAr Support
In reply to Viresh KumarQuoted 14 lines · Viresh Kumar
Changes since V3:
- SPEAr13xx: gic init, smp and hotplug code updated w.r.t. latest linus/master
- Appending UL toVMALLOC_ENDMacros
- readl & writle_relaxedused instread_rawinuncompress.h
- infinite loop removed fromarch_reset()inmach-spear13xx/include/mach/system.h
- patch: ST-SPEAr13xx-Modified-static-mappings is broken into two patches. Now, static mapping for SPEAr1310 RAS will be present only on 1310 machine.
- Updated commit message of: SPEAr Power Management: Added the support for Standby mode
- Default ssp freq changed to 25MHz.
- patch: ST-SPEAr-13xx-Adding-support-for-SPEAr1310 is splitted into two patches. Separate patch for 320 CAN is added.
- Wrapper routinespi_init()in spear*evb.c files is removed.
Quoted 8 lines
- routine
i2c_register_board_devices()is renamed toi2c_register_default_devices()inarch/arm/plat-spear/i2c_eval_board.cfile
- Following patches are removed from this patchset, they will be added separately:
ST-SPEAr-FSMC-Flexible-Static-Memory-Controller-NOR-.patch
- Following patches are already present in linus-next or already Acked, so they are also removed from this patchset:
Newly-erased-page-read-workaround.patch
Does this mean I can get rid of the entire set of spear patches in the patch system now?
v4 cover Updating SPEAr Support
Quoted 3 lines · Russell King - ARM Linux
Does this mean I can get rid of the entire set of spear patches in the patch system now?
.
Ya. Sure.