Updates for omap3 for merge window after 2.6.30
Subsystems (4)
Tony Lindgren
maintainercover Updates for omap3 for merge window after 2.6.30
Hi all,
Here are mostly omap3 specific updates for the coming merge window for review. Still to come few more boards and regulator framework changes for omap3 in one more series.
Regards,
Tony
---
Imre Deak (1):
ARM: OMAP3: ZOOM MDK: Add FB support to board file
Paul Walmsley (2):
ARM: OMAP3: SDRC: add timing data for Qimonda HYB18M512160AF-6
ARM: OMAP3: SDRC: add timing data for Micron MT46H32M32LF-6
Tony Lindgren (2):
ARM: OMAP3: Initialize more devices for LDP
ARM: OMAP2/3: Remove L4_WK_OMAP_BASE, L4_PER_OMAP_BASE, L4_EMU_BASE, L3_OMAP_BASE
Vikram Pandita (1):
ARM: OMAP2/3: Serial: Remove arch_initcall dependency
arch/arm/mach-omap2/board-3430sdp.c | 3 arch/arm/mach-omap2/board-ldp.c | 219 ++++++++++++++++++++ arch/arm/mach-omap2/board-omap3beagle.c | 4 arch/arm/mach-omap2/board-omap3pandora.c | 3 arch/arm/mach-omap2/board-overo.c | 3 arch/arm/mach-omap2/sdram-micron-mt46h32m32lf-6.h | 69 ++++++ .../mach-omap2/sdram-qimonda-hyb18m512160af-6.h | 54 +++++ arch/arm/mach-omap2/serial.c | 22 +- arch/arm/plat-omap/include/mach/keypad.h | 4 arch/arm/plat-omap/include/mach/omap34xx.h | 4 10 files changed, 361 insertions(+), 24 deletions(-) create mode 100644 arch/arm/mach-omap2/sdram-micron-mt46h32m32lf-6.h create mode 100644 arch/arm/mach-omap2/sdram-qimonda-hyb18m512160af-6.h
Signature · 1 line
Signature
Tony Lindgren
maintainerPATCH 1/6 ARM: OMAP2/3: Remove L4_WK_OMAP_BASE, L4_PER_OMAP_BASE, L4_EMU_BASE, L3_OMAP_BASE
These are not being used right now, and the processor specific defines should be used instead by any code accessing these registers.
--- arch/arm/plat-omap/include/mach/omap34xx.h | 4 ---- 1 files changed, 0 insertions(+), 4 deletions(-)
arch/arm/plat-omap/include/mach/omap34xx.h +0 -4
@@ -31,13 +31,9 @@#define L4_34XX_BASE 0x48000000#define L4_WK_34XX_BASE 0x48300000 -#define L4_WK_OMAP_BASE L4_WK_34XX_BASE#define L4_PER_34XX_BASE 0x49000000 -#define L4_PER_OMAP_BASE L4_PER_34XX_BASE#define L4_EMU_34XX_BASE 0x54000000 -#define L4_EMU_BASE L4_EMU_34XX_BASE#define L3_34XX_BASE 0x68000000 -#define L3_OMAP_BASE L3_34XX_BASE#define OMAP3430_32KSYNCT_BASE 0x48320000#define OMAP3430_CM_BASE 0x48004800
Tony Lindgren
maintainerPATCH 2/6 ARM: OMAP2/3: Serial: Remove arch_initcall dependency
In reply to Tony LindgrenFrom: Vikram Pandita <[email protected]>
Move platform_device_register() for serial device to omap_serial_init()
There is no need to have arch_initcall() dependency in serial as already board files call the function omap_serial_init()
--- arch/arm/mach-omap2/serial.c | 22 +++++++++------------- 1 files changed, 9 insertions(+), 13 deletions(-)
arch/arm/mach-omap2/serial.c +9 -13
@@ -98,6 +98,14 @@ void omap_serial_enable_clocks(int enable) } } +static struct platform_device serial_device = { + .name ="serial8250" , + .id =PLAT8250_DEV_PLATFORM , + .dev = { + .platform_data = serial_platform_data, + }, +}; +void __init omap_serial_init (void ) {int i;
@@ -142,18 +150,6 @@ void __init omap_serial_init(void)omap_serial_reset (p); } -} -static struct platform_device serial_device = { - .name ="serial8250" , - .id =PLAT8250_DEV_PLATFORM , - .dev = { - .platform_data = serial_platform_data, - }, -}; - -static int __init omap_init (void ) -{ -return platform_device_register (&serial_device); +platform_device_register (&serial_device); } -arch_initcall (omap_init);
Tony Lindgren
maintainerPATCH 3/6 ARM: OMAP3: SDRC: add timing data for Micron MT46H32M32LF-6
In reply to Tony LindgrenFrom: Paul Walmsley <[email protected]>
Add timing data for the Micron MT46H32M32LF-6 SDRAM chip, used on the OMAP3 Beagle and EVM boards. Original timing data is from the Micron datasheet PDF downloaded from:
http://download.micron.com/pdf/datasheets/dram/mobile/1gb_ddr_mobile_sdram_t48m.pdf
Thanks to Rajendra Nayak <[email protected]> for his help identifying the chips used on Beagle & OMAP3EVM.
--- arch/arm/mach-omap2/board-omap3beagle.c | 4 + arch/arm/mach-omap2/board-omap3pandora.c | 3 + arch/arm/mach-omap2/board-overo.c | 3 + arch/arm/mach-omap2/sdram-micron-mt46h32m32lf-6.h | 69 +++++++++++++++++++++ 4 files changed, 76 insertions(+), 3 deletions(-) create mode 100644 arch/arm/mach-omap2/sdram-micron-mt46h32m32lf-6.h
arch/arm/mach-omap2/board-omap3beagle.c +3 -1
@@ -105,6 +105,8 @@ static struct platform_device omap3beagle_nand_device = { .resource = &omap3beagle_nand_resource, }; +#include "sdram-micron-mt46h32m32lf-6.h" +static struct omap_uart_config omap3_beagle_uart_config__initdata = { .enabled_uarts = ((1 <<0 ) | (1 <<1 ) | (1 <<2 )), };
@@ -185,7 +187,7 @@ static int __init omap3_beagle_i2c_init(void)static void __init omap3_beagle_init_irq (void ) { -omap2_init_common_hw (NULL ); +omap2_init_common_hw (mt46h32m32lf6_sdrc_params);omap_init_irq ();#ifdef CONFIG_OMAP_32K_TIMER omap2_gp_clockevent_set_gptimer (12 );
arch/arm/mach-omap2/board-omap3pandora.c +2 -1
@@ -36,6 +36,7 @@#include <mach/mcspi.h> #include <mach/usb.h> +#include "sdram-micron-mt46h32m32lf-6.h" #include "mmc-twl4030.h" #define OMAP3_PANDORA_TS_GPIO 94
@@ -118,7 +119,7 @@ static int __init omap3pandora_i2c_init(void)static void __init omap3pandora_init_irq (void ) { -omap2_init_common_hw (NULL ); +omap2_init_common_hw (mt46h32m32lf6_sdrc_params);omap_init_irq ();omap_gpio_init (); }
arch/arm/mach-omap2/board-overo.c +2 -1
@@ -45,6 +45,7 @@#include <mach/nand.h> #include <mach/usb.h> +#include "sdram-micron-mt46h32m32lf-6.h" #include "mmc-twl4030.h" #define OVERO_GPIO_BT_XGATE 15
@@ -303,7 +304,7 @@ static int __init overo_i2c_init(void)static void __init overo_init_irq (void ) { -omap2_init_common_hw (NULL ); +omap2_init_common_hw (mt46h32m32lf6_sdrc_params);omap_init_irq ();omap_gpio_init (); }
arch/arm/mach-omap2/sdram-micron-mt46h32m32lf-6.h new file +69 -0
69 lines not on this page · raw message
Tony Lindgren
maintainerRe: [PATCH 3/6] ARM: OMAP3: SDRC: add timing data for Micron MT46H32M32LF-6, v2
Quoted 10 lines · Tony Lindgren
From: Paul Walmsley <[email protected]>
Add timing data for the Micron MT46H32M32LF-6 SDRAM chip, used on the OMAP3 Beagle and EVM boards. Original timing data is from the Micron datasheet PDF downloaded from:
http://download.micron.com/pdf/datasheets/dram/mobile/1gb_ddr_mobile_sdram_t48m.pdf
Thanks to Rajendra Nayak <[email protected]> for his help identifying the chips used on Beagle & OMAP3EVM.
Here's this one with updated timings from Paul:
Boards that used 133.3MHz maximum rate SDRAM were never released to the public and presumably used the OMAPZoom kernel; so, drop these unused rates. Viz.:
http://marc.info/?l=linux-omap&m=124232922426311&w=2
Regards,
Tony
Quoted 1 line
From
91429b625404116b31f7c03700407df11ed61bcbMon Sep 17 00:00:00 2001
From: Paul Walmsley <[email protected]>
Date: Thu, 21 May 2009 09:50:27 -0700
Subject: [PATCH] ARM: OMAP3: SDRC: add timing data for Micron MT46H32M32LF-6, v2
Add timing data for the Micron MT46H32M32LF-6 SDRAM chip, used on the OMAP3 Beagle and EVM boards. Original timing data is from the Micron datasheet PDF downloaded from:
http://download.micron.com/pdf/datasheets/dram/mobile/1gb_ddr_mobile_sdram_t48m.pdf
Thanks to Rajendra Nayak <[email protected]> for his help identifying the chips used on Beagle & OMAP3EVM.
arch/arm/mach-omap2/board-omap3beagle.c +3 -1
@@ -105,6 +105,8 @@ static struct platform_device omap3beagle_nand_device = { .resource = &omap3beagle_nand_resource, }; +#include "sdram-micron-mt46h32m32lf-6.h" +static struct omap_uart_config omap3_beagle_uart_config__initdata = { .enabled_uarts = ((1 <<0 ) | (1 <<1 ) | (1 <<2 )), };
@@ -185,7 +187,7 @@ static int __init omap3_beagle_i2c_init(void)static void __init omap3_beagle_init_irq (void ) { -omap2_init_common_hw (NULL ); +omap2_init_common_hw (mt46h32m32lf6_sdrc_params);omap_init_irq ();#ifdef CONFIG_OMAP_32K_TIMER omap2_gp_clockevent_set_gptimer (12 );
arch/arm/mach-omap2/board-omap3pandora.c +2 -1
@@ -36,6 +36,7 @@#include <mach/mcspi.h> #include <mach/usb.h> +#include "sdram-micron-mt46h32m32lf-6.h" #include "mmc-twl4030.h" #define OMAP3_PANDORA_TS_GPIO 94
@@ -118,7 +119,7 @@ static int __init omap3pandora_i2c_init(void)static void __init omap3pandora_init_irq (void ) { -omap2_init_common_hw (NULL ); +omap2_init_common_hw (mt46h32m32lf6_sdrc_params);omap_init_irq ();omap_gpio_init (); }
arch/arm/mach-omap2/board-overo.c +2 -1
@@ -45,6 +45,7 @@#include <mach/nand.h> #include <mach/usb.h> +#include "sdram-micron-mt46h32m32lf-6.h" #include "mmc-twl4030.h" #define OVERO_GPIO_BT_XGATE 15
@@ -303,7 +304,7 @@ static int __init overo_i2c_init(void)static void __init overo_init_irq (void ) { -omap2_init_common_hw (NULL ); +omap2_init_common_hw (mt46h32m32lf6_sdrc_params);omap_init_irq ();omap_gpio_init (); }
arch/arm/mach-omap2/sdram-micron-mt46h32m32lf-6.h new file +55 -0
55 lines not on this page · raw message
Tony Lindgren
maintainerPATCH 4/6 ARM: OMAP3: SDRC: add timing data for Qimonda HYB18M512160AF-6
In reply to Tony LindgrenFrom: Paul Walmsley <[email protected]>
Add timing data for the Qimonda HYB18M512160AF-6 SDRAM chip, used on the OMAP3430SDP boards.
Thanks to Rajendra Nayak <[email protected]> for his help identifying the chip used on 3430SDP.
--- arch/arm/mach-omap2/board-3430sdp.c | 3 + .../mach-omap2/sdram-qimonda-hyb18m512160af-6.h | 54 ++++++++++++++++++++ 2 files changed, 56 insertions(+), 1 deletions(-) create mode 100644 arch/arm/mach-omap2/sdram-qimonda-hyb18m512160af-6.h
arch/arm/mach-omap2/board-3430sdp.c +2 -1
@@ -41,6 +41,7 @@#include <mach/keypad.h> #include <mach/gpmc-smc91x.h> +#include "sdram-qimonda-hyb18m512160af-6.h" #include "mmc-twl4030.h" #define CONFIG_DISABLE_HFCLK 1
@@ -168,7 +169,7 @@ static struct platform_device *sdp3430_devices[] __initdata = {static void __init omap_3430sdp_init_irq (void ) { -omap2_init_common_hw (NULL ); +omap2_init_common_hw (hyb18m512160af6_sdrc_params);omap_init_irq ();omap_gpio_init (); }
arch/arm/mach-omap2/sdram-qimonda-hyb18m512160af-6.h new file +54 -0
54 lines not on this page · raw message
Tony Lindgren
maintainerPATCH 5/6 ARM: OMAP3: ZOOM MDK: Add FB support to board file
In reply to Tony LindgrenFrom: Imre Deak <[email protected]>
Based on an earlier patch by Stanley.Miao <[email protected]> with board-*.c changes split to avoid conflicts with other device updates.
--- arch/arm/mach-omap2/board-ldp.c | 19 +++++++++++++++---- 1 files changed, 15 insertions(+), 4 deletions(-)
arch/arm/mach-omap2/board-ldp.c +15 -4
@@ -77,10 +77,6 @@ static struct platform_device ldp_smsc911x_device = { }, }; -static struct platform_device *ldp_devices[]__initdata = { - &ldp_smsc911x_device, -}; -static inline void __init ldp_init_smsc911x (void ) {int eth_cs;
@@ -122,8 +118,18 @@ static struct omap_uart_config ldp_uart_config __initdata = { .enabled_uarts = ((1 << 0) | (1 << 1) | (1 << 2)), }; +static struct platform_device ldp_lcd_device = { + .name ="ldp_lcd" , + .id =-1 , +}; + +static struct omap_lcd_config ldp_lcd_config__initdata = { + .ctrl_name ="internal" , +}; +static struct omap_board_config_kernel ldp_config[]__initdata = { {OMAP_TAG_UART , &ldp_uart_config }, + {OMAP_TAG_LCD , &ldp_lcd_config }, };static struct twl4030_gpio_platform_data ldp_gpio_data = {
@@ -168,6 +174,11 @@ static struct twl4030_hsmmc_info mmc[] __initdata = { {}/* Terminator */ }; +static struct platform_device *ldp_devices[]__initdata = { + &ldp_smsc911x_device, + &ldp_lcd_device, +}; +static void __init omap_ldp_init (void ) {omap_i2c_init ();
Tony Lindgren
maintainerPATCH 6/6 ARM: OMAP3: Initialize more devices for LDP
In reply to Tony LindgrenBased on an earlier patches by Stanley.Miao <[email protected]> and Nishant Kamat <[email protected]>.
Note that at the ads7846 support still needs support for vaux_control for the touchscreen to work.
--- arch/arm/mach-omap2/board-ldp.c | 204 ++++++++++++++++++++++++++++++ arch/arm/plat-omap/include/mach/keypad.h | 4 + 2 files changed, 207 insertions(+), 1 deletions(-)
arch/arm/mach-omap2/board-ldp.c +203 -1
@@ -16,11 +16,13 @@#include <linux/platform_device.h> #include <linux/delay.h> #include <linux/input.h> +#include <linux/gpio_keys.h> #include <linux/workqueue.h> #include <linux/err.h> #include <linux/clk.h> #include <linux/spi/spi.h> #include <linux/spi/ads7846.h> +#include <linux/regulator/machine.h> #include <linux/i2c/twl4030.h> #include <linux/io.h> #include <linux/smsc911x.h>
@@ -39,6 +41,7 @@#include <asm/delay.h> #include <mach/control.h> #include <mach/usb.h> +#include <mach/keypad.h> #include "mmc-twl4030.h"
@@ -77,6 +80,165 @@ static struct platform_device ldp_smsc911x_device = { }, }; +static int ldp_twl4030_keymap[] = { +KEY (0 ,0 ,KEY_1 ), +KEY (1 ,0 ,KEY_2 ), +KEY (2 ,0 ,KEY_3 ), +KEY (0 ,1 ,KEY_4 ), +KEY (1 ,1 ,KEY_5 ), +KEY (2 ,1 ,KEY_6 ), +KEY (3 ,1 ,KEY_F5 ), +KEY (0 ,2 ,KEY_7 ), +KEY (1 ,2 ,KEY_8 ), +KEY (2 ,2 ,KEY_9 ), +KEY (3 ,2 ,KEY_F6 ), +KEY (0 ,3 ,KEY_F7 ), +KEY (1 ,3 ,KEY_0 ), +KEY (2 ,3 ,KEY_F8 ), +PERSISTENT_KEY (4 ,5 ), +KEY (4 ,4 ,KEY_VOLUMEUP ), +KEY (5 ,5 ,KEY_VOLUMEDOWN ), +0 +}; + +static struct twl4030_keypad_data ldp_kp_twl4030_data = { + .rows =6 , + .cols =6 , + .keymap = ldp_twl4030_keymap, + .keymapsize =ARRAY_SIZE (ldp_twl4030_keymap), + .rep =1 , +}; + +static struct gpio_keys_button ldp_gpio_keys_buttons[] = { + [0 ] = { + .code =KEY_ENTER , + .gpio =101 , + .desc ="enter sw" , + .active_low =1 , + .debounce_interval =30 , + }, + [1 ] = { + .code =KEY_F1 , + .gpio =102 , + .desc ="func 1" , + .active_low =1 , + .debounce_interval =30 , + }, + [2 ] = { + .code =KEY_F2 , + .gpio =103 , + .desc ="func 2" , + .active_low =1 , + .debounce_interval =30 , + }, + [3 ] = { + .code =KEY_F3 , + .gpio =104 , + .desc ="func 3" , + .active_low =1 , + .debounce_interval =30 , + }, + [4 ] = { + .code =KEY_F4 , + .gpio =105 , + .desc ="func 4" , + .active_low =1 , + .debounce_interval =30 , + }, + [5 ] = { + .code =KEY_LEFT , + .gpio =106 , + .desc ="left sw" , + .active_low =1 , + .debounce_interval =30 , + }, + [6 ] = { + .code =KEY_RIGHT , + .gpio =107 , + .desc ="right sw" , + .active_low =1 , + .debounce_interval =30 , + }, + [7 ] = { + .code =KEY_UP , + .gpio =108 , + .desc ="up sw" , + .active_low =1 , + .debounce_interval =30 , + }, + [8 ] = { + .code =KEY_DOWN , + .gpio =109 , + .desc ="down sw" , + .active_low =1 , + .debounce_interval =30 , + }, +}; + +static struct gpio_keys_platform_data ldp_gpio_keys = { + .buttons = ldp_gpio_keys_buttons, + .nbuttons =ARRAY_SIZE (ldp_gpio_keys_buttons), + .rep =1 , +}; + +static struct platform_device ldp_gpio_keys_device = { + .name ="gpio-keys" , + .id =-1 , + .dev = { + .platform_data = &ldp_gpio_keys, + }, +}; + +static int ts_gpio; + +/** +* @brief ads7846_dev_init : Requests & sets GPIO line for pen-irq +* +* @return - void. If request gpio fails then Flag KERN_ERR. +*/ +static void ads7846_dev_init (void ) +{ +if (gpio_request (ts_gpio,"ads7846 irq" ) <0 ) { +printk (KERN_ERR "can't get ads746 pen down GPIO\n" ); +return ; + } + +gpio_direction_input (ts_gpio); +omap_set_gpio_debounce (ts_gpio,1 ); +omap_set_gpio_debounce_time (ts_gpio,0xa ); +} + +static int ads7846_get_pendown_state (void ) +{ +return !gpio_get_value (ts_gpio); +} + +static struct ads7846_platform_data tsc2046_config__initdata = { + .get_pendown_state = ads7846_get_pendown_state, + .keep_vref_on =1 , +}; + +static struct omap2_mcspi_device_config tsc2046_mcspi_config = { + .turbo_mode =0 , + .single_channel =1 ,/* 0: slave, 1: master */ +}; + +static struct spi_board_info ldp_spi_board_info[]__initdata = { + [0 ] = { +/* +* TSC2046 operates at a max freqency of 2MHz, so +* operate slightly below at 1.5MHz +*/ + .modalias ="ads7846" , + .bus_num =1 , + .chip_select =0 , + .max_speed_hz =1500000 , + .controller_data = &tsc2046_mcspi_config, + .irq =0 , + .platform_data = &tsc2046_config, + }, +}; +static inline void __init ldp_init_smsc911x (void ) {int eth_cs;
@@ -132,18 +294,49 @@ static struct omap_board_config_kernel ldp_config[] __initdata = { { OMAP_TAG_LCD, &ldp_lcd_config }, }; +static struct twl4030_usb_data ldp_usb_data = { + .usb_mode =T2_USB_MODE_ULPI , +}; +static struct twl4030_gpio_platform_data ldp_gpio_data = { .gpio_base =OMAP_MAX_GPIO_LINES , .irq_base =TWL4030_GPIO_IRQ_BASE , .irq_end =TWL4030_GPIO_IRQ_END , }; +static struct twl4030_madc_platform_data ldp_madc_data = { + .irq_line =1 , +}; + +static struct regulator_consumer_supply ldp_vmmc1_supply = { + .supply ="vmmc" , +}; + +/* VMMC1 for MMC1 pins CMD, CLK, DAT0..DAT3 (20 mA, plus card == max 220 mA) */ +static struct regulator_init_data ldp_vmmc1 = { + .constraints = { + .min_uV =1850000 , + .max_uV =3150000 , + .valid_modes_mask =REGULATOR_MODE_NORMAL + |REGULATOR_MODE_STANDBY , + .valid_ops_mask =REGULATOR_CHANGE_VOLTAGE + |REGULATOR_CHANGE_MODE + |REGULATOR_CHANGE_STATUS , + }, + .num_consumer_supplies =1 , + .consumer_supplies = &ldp_vmmc1_supply, +}; +static struct twl4030_platform_data ldp_twldata = { .irq_base =TWL4030_IRQ_BASE , .irq_end =TWL4030_IRQ_END ,/* platform_data for children goes here */ + .madc = &ldp_madc_data, + .usb = &ldp_usb_data, + .vmmc1 = &ldp_vmmc1, .gpio = &ldp_gpio_data, + .keypad = &ldp_kp_twl4030_data, }; static struct i2c_board_info __initdata ldp_i2c_boardinfo[] = {
@@ -177,6 +370,7 @@ static struct twl4030_hsmmc_info mmc[] __initdata = {static struct platform_device *ldp_devices[]__initdata = { &ldp_smsc911x_device, &ldp_lcd_device, + &ldp_gpio_keys_device, };static void __init omap_ldp_init (void )
@@ -185,9 +379,17 @@ static void __init omap_ldp_init(void)platform_add_devices (ldp_devices,ARRAY_SIZE (ldp_devices)); omap_board_config = ldp_config; omap_board_config_size =ARRAY_SIZE (ldp_config); + ts_gpio =54 ; + ldp_spi_board_info[0 ].irq =gpio_to_irq (ts_gpio); +spi_register_board_info (ldp_spi_board_info, +ARRAY_SIZE (ldp_spi_board_info)); +ads7846_dev_init ();omap_serial_init (); -twl4030_mmc_init (mmc);usb_musb_init (); + +twl4030_mmc_init (mmc); +/* link regulators to MMC adapters */ + ldp_vmmc1_supply.dev = mmc[0 ].dev; }static void __init omap_ldp_map_io (void )
arch/arm/plat-omap/include/mach/keypad.h +4 -0
@@ -33,7 +33,11 @@ struct omap_kp_platform_data {#define GROUP_3 (3 << 16)#define GROUP_MASK GROUP_3 +#define KEY_PERSISTENT 0x00800000 +#define KEYNUM_MASK 0x00EFFFFF#define KEY (col, row, val) (((col) << 28) | ((row) << 24) | (val)) +#define PERSISTENT_KEY (col, row) (((col) << 28) | ((row) << 24) | \ + KEY_PERSISTENT)#endif
Re: [PATCH 6/6] ARM: OMAP3: Initialize more devices for LDP
Quoted 21 lines · Tony Lindgren
arch/arm/mach-omap2/board-ldp.c +12
-0+static struct regulator_consumer_supply ldp_vmmc1_supply = { + .supply ="vmmc" , +}; + +/* VMMC1 for MMC1 pins CMD, CLK, DAT0..DAT3 (20 mA, plus card == max 220 mA) */ +static struct regulator_init_data ldp_vmmc1 = { + .consumer_supplies = &ldp_vmmc1_supply, +}; +static struct twl4030_platform_data ldp_twldata = { + .vmmc1 = &ldp_vmmc1, };static struct i2c_board_info __initdata ldp_i2c_boardinfo[] = {@@ -185,9 +379,17 @@ static void __init omap_ldp_init(void)platform_add_devices (ldp_devices,ARRAY_SIZE (ldp_devices)); omap_board_config = ldp_config; omap_board_config_size =ARRAY_SIZE (ldp_config); + ts_gpio =54 ; + ldp_spi_board_info[0 ].irq =gpio_to_irq (ts_gpio);
arch/arm/mach-omap2/board-ldp.c static void __init omap_ldp_init(void) · line 392
Quoted 10 lines
arch/arm/mach-omap2/board-ldp.c +7
-1+spi_register_board_info (ldp_spi_board_info, +ARRAY_SIZE (ldp_spi_board_info)); +ads7846_dev_init ();omap_serial_init (); -twl4030_mmc_init (mmc);usb_musb_init (); + +twl4030_mmc_init (mmc); +/* link regulators to MMC adapters */ + ldp_vmmc1_supply.dev = mmc[0 ].dev;
This feels wrong - setup after registering devices. All it takes is to have to move various device drivers to be earlier in the initialization ordering and things start breaking in unexpected ways.
If MMC controls the Vmmc1 supply, then why does the Vmmc1 supply need the struct device pointer for the MMC controller?
Re: [PATCH 6/6] ARM: OMAP3: Initialize more devices for LDP
Quoted 11 lines · Russell King - ARM Linux
arch/arm/mach-omap2/board-ldp.c static void __init omap_ldp_init(void) · line 392
Quoted 2 lines · Tony Lindgren
arch/arm/mach-omap2/board-ldp.c +2
-0+/* link regulators to MMC adapters */ + ldp_vmmc1_supply.dev = mmc[0 ].dev;This feels wrong - setup after registering devices. All it takes is to have to move various device drivers to be earlier in the initialization ordering and things start breaking in unexpected ways.
If MMC controls the Vmmc1 supply, then why does the Vmmc1 supply need the struct device pointer for the MMC controller?
Like the clock API the regulator API looks up clients for regulators based on a combination of the struct device for the client driver and the name of the supply. Unfortunately with both the I2C and SPI APIs the struct device is only available once the driver has probed so this can't be set up with static data prior to probe, hence this sort of bodge.
Long term I think we'll want to fix I2C and SPI to let us have static data for this.
Quoted 5 lines · Tony Lindgren
Hi all,
Here are mostly omap3 specific updates for the coming merge window for review. Still to come few more boards and regulator framework changes for omap3 in one more series.
I've merged these into omap for-next branch.
Quoted 41 lines
Regards,
Tony
---
Imre Deak (1):
ARM: OMAP3: ZOOM MDK: Add FB support to board filePaul Walmsley (2):
ARM: OMAP3: SDRC: add timing data for Qimonda HYB18M512160AF-6
ARM: OMAP3: SDRC: add timing data for Micron MT46H32M32LF-6Tony Lindgren (2):
ARM: OMAP3: Initialize more devices for LDP
ARM: OMAP2/3: RemoveL4_WK_OMAP_BASE,L4_PER_OMAP_BASE,L4_EMU_BASE,L3_OMAP_BASEVikram Pandita (1):
ARM: OMAP2/3: Serial: Removearch_initcalldependencyarch/arm/mach-omap2/board-3430sdp.c | 3 arch/arm/mach-omap2/board-ldp.c | 219 ++++++++++++++++++++ arch/arm/mach-omap2/board-omap3beagle.c | 4 arch/arm/mach-omap2/board-omap3pandora.c | 3 arch/arm/mach-omap2/board-overo.c | 3 arch/arm/mach-omap2/sdram-micron-mt46h32m32lf-6.h | 69 ++++++ .../mach-omap2/sdram-qimonda-hyb18m512160af-6.h | 54 +++++ arch/arm/mach-omap2/serial.c | 22 +- arch/arm/plat-omap/include/mach/keypad.h | 4 arch/arm/plat-omap/include/mach/omap34xx.h | 4 10 files changed, 361 insertions(+), 24 deletions(-) create mode 100644 arch/arm/mach-omap2/sdram-micron-mt46h32m32lf-6.h create mode 100644 arch/arm/mach-omap2/sdram-qimonda-hyb18m512160af-6.hSignature · 5 lines
Signature -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html