From 63dffacec4d267d239f789d4812ba390ac1784f5 Mon Sep 17 00:00:00 2001 From: Mike Turquette Date: Wed, 5 Aug 2009 09:11:10 -0500 Subject: linux-omap3-pm: OMAP3 kernel recipe to build Kevin Hilman's linux-omap-pm tree Currently tested on Zoom2 and Beagle board. Please test if you have an OMAP3 board! The source tree for this recipe is the latest and greatest power management code for OMAP3. You can find it at http://git.kernel.org/?p=linux/kernel/git/khilman/linux-omap-pm.git;a=summary Signed-off-by: Mike Turquette --- .../0002-OMAP3-Zoom2-Add-TWL4030-support.patch | 281 +++++++++++++++++++++ 1 file changed, 281 insertions(+) create mode 100644 meta/packages/linux/linux-omap3-pm-git/zoom2/0002-OMAP3-Zoom2-Add-TWL4030-support.patch (limited to 'meta/packages/linux/linux-omap3-pm-git/zoom2/0002-OMAP3-Zoom2-Add-TWL4030-support.patch') diff --git a/meta/packages/linux/linux-omap3-pm-git/zoom2/0002-OMAP3-Zoom2-Add-TWL4030-support.patch b/meta/packages/linux/linux-omap3-pm-git/zoom2/0002-OMAP3-Zoom2-Add-TWL4030-support.patch new file mode 100644 index 000000000..ed5b4e2df --- /dev/null +++ b/meta/packages/linux/linux-omap3-pm-git/zoom2/0002-OMAP3-Zoom2-Add-TWL4030-support.patch @@ -0,0 +1,281 @@ +From b71cd09cefcd54e792a2ac032c3be64a97ef830c Mon Sep 17 00:00:00 2001 +From: Vikram Pandita +Date: Fri, 12 Jun 2009 17:44:07 -0500 +Subject: [PATCH 2/8] OMAP3:Zoom2: Add TWL4030 support + +Add TWL4030 CORE and TWL4030 drivers to Zoom2 board file +TWL drivers enabled are: + bci + madc + usb + keypad + mmc + +Signed-off-by: Vikram Pandita +--- + arch/arm/mach-omap2/board-zoom2.c | 204 +++++++++++++++++++++++++++++++++++-- + 1 files changed, 193 insertions(+), 11 deletions(-) + +diff --git a/arch/arm/mach-omap2/board-zoom2.c b/arch/arm/mach-omap2/board-zoom2.c +index 0ec2023..e4bf50a 100644 +--- a/arch/arm/mach-omap2/board-zoom2.c ++++ b/arch/arm/mach-omap2/board-zoom2.c +@@ -12,18 +12,85 @@ + #include + #include + #include ++#include + #include + #include ++#include + + #include + #include + + #include + #include ++#include + + #include "mmc-twl4030.h" + #include "omap3-opp.h" + ++/* Zoom2 has Qwerty keyboard*/ ++static int zoom2_twl4030_keymap[] = { ++ KEY(0, 0, KEY_E), ++ KEY(1, 0, KEY_R), ++ KEY(2, 0, KEY_T), ++ KEY(3, 0, KEY_HOME), ++ KEY(6, 0, KEY_I), ++ KEY(7, 0, KEY_LEFTSHIFT), ++ KEY(0, 1, KEY_D), ++ KEY(1, 1, KEY_F), ++ KEY(2, 1, KEY_G), ++ KEY(3, 1, KEY_SEND), ++ KEY(6, 1, KEY_K), ++ KEY(7, 1, KEY_ENTER), ++ KEY(0, 2, KEY_X), ++ KEY(1, 2, KEY_C), ++ KEY(2, 2, KEY_V), ++ KEY(3, 2, KEY_END), ++ KEY(6, 2, KEY_DOT), ++ KEY(7, 2, KEY_CAPSLOCK), ++ KEY(0, 3, KEY_Z), ++ KEY(1, 3, KEY_KPPLUS), ++ KEY(2, 3, KEY_B), ++ KEY(3, 3, KEY_F1), ++ KEY(6, 3, KEY_O), ++ KEY(7, 3, KEY_SPACE), ++ KEY(0, 4, KEY_W), ++ KEY(1, 4, KEY_Y), ++ KEY(2, 4, KEY_U), ++ KEY(3, 4, KEY_F2), ++ KEY(4, 4, KEY_VOLUMEUP), ++ KEY(6, 4, KEY_L), ++ KEY(7, 4, KEY_LEFT), ++ KEY(0, 5, KEY_S), ++ KEY(1, 5, KEY_H), ++ KEY(2, 5, KEY_J), ++ KEY(3, 5, KEY_F3), ++ KEY(5, 5, KEY_VOLUMEDOWN), ++ KEY(6, 5, KEY_M), ++ KEY(4, 5, KEY_ENTER), ++ KEY(7, 5, KEY_RIGHT), ++ KEY(0, 6, KEY_Q), ++ KEY(1, 6, KEY_A), ++ KEY(2, 6, KEY_N), ++ KEY(3, 6, KEY_BACKSPACE), ++ KEY(6, 6, KEY_P), ++ KEY(7, 6, KEY_UP), ++ KEY(6, 7, KEY_SELECT), ++ KEY(7, 7, KEY_DOWN), ++ KEY(0, 7, KEY_PROG1), /*MACRO 1 */ ++ KEY(1, 7, KEY_PROG2), /*MACRO 2 */ ++ KEY(2, 7, KEY_PROG3), /*MACRO 3 */ ++ KEY(3, 7, KEY_PROG4), /*MACRO 4 */ ++ 0 ++}; ++ ++static struct twl4030_keypad_data zoom2_kp_twl4030_data = { ++ .rows = 8, ++ .cols = 8, ++ .keymap = zoom2_twl4030_keymap, ++ .keymapsize = ARRAY_SIZE(zoom2_twl4030_keymap), ++ .rep = 1, ++}; ++ + static struct omap_uart_config zoom2_uart_config __initdata = { + .enabled_uarts = ((1 << 0) | (1 << 1) | (1 << 2)), + }; +@@ -42,10 +109,128 @@ static void __init omap_zoom2_init_irq(void) + omap_gpio_init(); + } + ++ ++static struct regulator_consumer_supply zoom2_vmmc1_supply = { ++ .supply = "vmmc", ++}; ++ ++static struct regulator_consumer_supply zoom2_vsim_supply = { ++ .supply = "vmmc_aux", ++}; ++ ++static struct regulator_consumer_supply zoom2_vmmc2_supply = { ++ .supply = "vmmc", ++}; ++ ++/* VMMC1 for OMAP VDD_MMC1 (i/o) and MMC1 card */ ++static struct regulator_init_data zoom2_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 = &zoom2_vmmc1_supply, ++}; ++ ++/* VMMC2 for MMC2 card */ ++static struct regulator_init_data zoom2_vmmc2 = { ++ .constraints = { ++ .min_uV = 1850000, ++ .max_uV = 1850000, ++ .apply_uV = true, ++ .valid_modes_mask = REGULATOR_MODE_NORMAL ++ | REGULATOR_MODE_STANDBY, ++ .valid_ops_mask = REGULATOR_CHANGE_MODE ++ | REGULATOR_CHANGE_STATUS, ++ }, ++ .num_consumer_supplies = 1, ++ .consumer_supplies = &zoom2_vmmc2_supply, ++}; ++ ++/* VSIM for OMAP VDD_MMC1A (i/o for DAT4..DAT7) */ ++static struct regulator_init_data zoom2_vsim = { ++ .constraints = { ++ .min_uV = 1800000, ++ .max_uV = 3000000, ++ .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 = &zoom2_vsim_supply, ++}; ++ ++static struct twl4030_hsmmc_info mmc[] __initdata = { ++ { ++ .mmc = 1, ++ .wires = 4, ++ .gpio_wp = -EINVAL, ++ }, ++ { ++ .mmc = 2, ++ .wires = 4, ++ .gpio_wp = -EINVAL, ++ }, ++ {} /* Terminator */ ++}; ++ ++static int zoom2_twl_gpio_setup(struct device *dev, ++ unsigned gpio, unsigned ngpio) ++{ ++ /* gpio + 0 is "mmc0_cd" (input/IRQ), ++ * gpio + 1 is "mmc1_cd" (input/IRQ) ++ */ ++ mmc[0].gpio_cd = gpio + 0; ++ mmc[1].gpio_cd = gpio + 1; ++ twl4030_mmc_init(mmc); ++ ++ /* link regulators to MMC adapters ... we "know" the ++ * regulators will be set up only *after* we return. ++ */ ++ zoom2_vmmc1_supply.dev = mmc[0].dev; ++ zoom2_vsim_supply.dev = mmc[0].dev; ++ zoom2_vmmc2_supply.dev = mmc[1].dev; ++ ++ return 0; ++} ++ ++ ++static int zoom2_batt_table[] = { ++/* 0 C*/ ++30800, 29500, 28300, 27100, ++26000, 24900, 23900, 22900, 22000, 21100, 20300, 19400, 18700, 17900, ++17200, 16500, 15900, 15300, 14700, 14100, 13600, 13100, 12600, 12100, ++11600, 11200, 10800, 10400, 10000, 9630, 9280, 8950, 8620, 8310, ++8020, 7730, 7460, 7200, 6950, 6710, 6470, 6250, 6040, 5830, ++5640, 5450, 5260, 5090, 4920, 4760, 4600, 4450, 4310, 4170, ++4040, 3910, 3790, 3670, 3550 ++}; ++ ++static struct twl4030_bci_platform_data zoom2_bci_data = { ++ .battery_tmp_tbl = zoom2_batt_table, ++ .tblsize = ARRAY_SIZE(zoom2_batt_table), ++}; ++ ++static struct twl4030_usb_data zoom2_usb_data = { ++ .usb_mode = T2_USB_MODE_ULPI, ++}; ++ + static struct twl4030_gpio_platform_data zoom2_gpio_data = { + .gpio_base = OMAP_MAX_GPIO_LINES, + .irq_base = TWL4030_GPIO_IRQ_BASE, + .irq_end = TWL4030_GPIO_IRQ_END, ++ .setup = zoom2_twl_gpio_setup, ++}; ++ ++static struct twl4030_madc_platform_data zoom2_madc_data = { ++ .irq_line = 1, + }; + + static struct twl4030_platform_data zoom2_twldata = { +@@ -53,7 +238,15 @@ static struct twl4030_platform_data zoom2_twldata = { + .irq_end = TWL4030_IRQ_END, + + /* platform_data for children goes here */ ++ .bci = &zoom2_bci_data, ++ .madc = &zoom2_madc_data, ++ .usb = &zoom2_usb_data, + .gpio = &zoom2_gpio_data, ++ .keypad = &zoom2_kp_twl4030_data, ++ .vmmc1 = &zoom2_vmmc1, ++ .vmmc2 = &zoom2_vmmc2, ++ .vsim = &zoom2_vsim, ++ + }; + + static struct i2c_board_info __initdata zoom2_i2c_boardinfo[] = { +@@ -74,16 +267,6 @@ static int __init omap_i2c_init(void) + return 0; + } + +-static struct twl4030_hsmmc_info mmc[] __initdata = { +- { +- .mmc = 1, +- .wires = 4, +- .gpio_cd = -EINVAL, +- .gpio_wp = -EINVAL, +- }, +- {} /* Terminator */ +-}; +- + extern int __init omap_zoom2_debugboard_init(void); + + static void __init omap_zoom2_init(void) +@@ -91,7 +274,6 @@ static void __init omap_zoom2_init(void) + omap_i2c_init(); + omap_serial_init(); + omap_zoom2_debugboard_init(); +- twl4030_mmc_init(mmc); + usb_musb_init(); + } + +-- +1.6.3.2 + -- cgit v1.2.3