diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-14 16:13:07 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-14 16:13:07 -0500 |
commit | ec08bdb148767f1193f5f3028749ed865ac27181 (patch) | |
tree | 03effeb02aaa21a21eaa70cd438ae301566af740 /arch/arm/mach-omap2/board-omap3beagle.c | |
parent | 9cefa17e196beab300d4faf09d242de77e5900d5 (diff) | |
parent | 7d4ca85a53bab1f6f9911411be38e0486a11187a (diff) |
Merge branch 'omap-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6
* 'omap-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6: (27 commits)
omap4: Fix ULPI PHY init for ES1.0 SDP
omap3: beaglexm: fix power on of DVI
omap3: igep3: Add omap_reserve functionality
omap3: beaglexm: fix DVI reset GPIO
omap3: beaglexm: fix EHCI power up GPIO dir
omap3: igep2: Add keypad support
omap3: igep3: Fix IGEP module second MMC channel power supply
omap3: igep3: Add USB EHCI support for IGEP module
omap3: clocks: Fix build error 'CK_3430ES2' undeclared here
arm: omap4: pandaboard: turn on PHY reference clock at init
omap2plus: prm: Trvial build break fix for undefined reference to 'omap2_prm_read_mod_reg'
omap2plus: voltage: Trivial linking fix for 'EINVAL' undeclared
omap2plus: voltage: Trivial linking fix 'undefined reference'
omap2plus: voltage: Trivial warning fix 'no return statement'
omap2plus: clockdomain: Trivial fix for build break because of clktrctrl_mask
arm: omap: gpio: don't access irq_desc array directly
omap2+: pm_bus: make functions used as pointers as static
OMAP: GPIO: fix _set_gpio_triggering() for OMAP2+
OMAP2+: TWL: include pm header for init protos
OMAP2+: TWL: make conversion routines static
...
Fix up conflicts in arch/arm/mach-omap2/board-omap3beagle.c ("DVI reset
GPIO" vs "use generic DPI panel driver")
Diffstat (limited to 'arch/arm/mach-omap2/board-omap3beagle.c')
-rw-r--r-- | arch/arm/mach-omap2/board-omap3beagle.c | 60 |
1 files changed, 54 insertions, 6 deletions
diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c index a4fe8e1ee1bd..46d814ab5656 100644 --- a/arch/arm/mach-omap2/board-omap3beagle.c +++ b/arch/arm/mach-omap2/board-omap3beagle.c | |||
@@ -207,7 +207,7 @@ static struct omap_dss_device beagle_dvi_device = { | |||
207 | .driver_name = "generic_dpi_panel", | 207 | .driver_name = "generic_dpi_panel", |
208 | .data = &dvi_panel, | 208 | .data = &dvi_panel, |
209 | .phy.dpi.data_lines = 24, | 209 | .phy.dpi.data_lines = 24, |
210 | .reset_gpio = 170, | 210 | .reset_gpio = -EINVAL, |
211 | }; | 211 | }; |
212 | 212 | ||
213 | static struct omap_dss_device beagle_tv_device = { | 213 | static struct omap_dss_device beagle_tv_device = { |
@@ -279,6 +279,8 @@ static struct gpio_led gpio_leds[]; | |||
279 | static int beagle_twl_gpio_setup(struct device *dev, | 279 | static int beagle_twl_gpio_setup(struct device *dev, |
280 | unsigned gpio, unsigned ngpio) | 280 | unsigned gpio, unsigned ngpio) |
281 | { | 281 | { |
282 | int r; | ||
283 | |||
282 | if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM) { | 284 | if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM) { |
283 | mmc[0].gpio_wp = -EINVAL; | 285 | mmc[0].gpio_wp = -EINVAL; |
284 | } else if ((omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_C1_3) || | 286 | } else if ((omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_C1_3) || |
@@ -299,17 +301,63 @@ static int beagle_twl_gpio_setup(struct device *dev, | |||
299 | /* REVISIT: need ehci-omap hooks for external VBUS | 301 | /* REVISIT: need ehci-omap hooks for external VBUS |
300 | * power switch and overcurrent detect | 302 | * power switch and overcurrent detect |
301 | */ | 303 | */ |
304 | if (omap3_beagle_get_rev() != OMAP3BEAGLE_BOARD_XM) { | ||
305 | r = gpio_request(gpio + 1, "EHCI_nOC"); | ||
306 | if (!r) { | ||
307 | r = gpio_direction_input(gpio + 1); | ||
308 | if (r) | ||
309 | gpio_free(gpio + 1); | ||
310 | } | ||
311 | if (r) | ||
312 | pr_err("%s: unable to configure EHCI_nOC\n", __func__); | ||
313 | } | ||
302 | 314 | ||
303 | gpio_request(gpio + 1, "EHCI_nOC"); | 315 | /* |
304 | gpio_direction_input(gpio + 1); | 316 | * TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, XM active |
305 | 317 | * high / others active low) | |
306 | /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */ | 318 | */ |
307 | gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR"); | 319 | gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR"); |
308 | gpio_direction_output(gpio + TWL4030_GPIO_MAX, 0); | 320 | if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM) |
321 | gpio_direction_output(gpio + TWL4030_GPIO_MAX, 1); | ||
322 | else | ||
323 | gpio_direction_output(gpio + TWL4030_GPIO_MAX, 0); | ||
324 | |||
325 | /* DVI reset GPIO is different between beagle revisions */ | ||
326 | if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM) | ||
327 | beagle_dvi_device.reset_gpio = 129; | ||
328 | else | ||
329 | beagle_dvi_device.reset_gpio = 170; | ||
309 | 330 | ||
310 | /* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */ | 331 | /* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */ |
311 | gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1; | 332 | gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1; |
312 | 333 | ||
334 | /* | ||
335 | * gpio + 1 on Xm controls the TFP410's enable line (active low) | ||
336 | * gpio + 2 control varies depending on the board rev as follows: | ||
337 | * P7/P8 revisions(prototype): Camera EN | ||
338 | * A2+ revisions (production): LDO (supplies DVI, serial, led blocks) | ||
339 | */ | ||
340 | if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM) { | ||
341 | r = gpio_request(gpio + 1, "nDVI_PWR_EN"); | ||
342 | if (!r) { | ||
343 | r = gpio_direction_output(gpio + 1, 0); | ||
344 | if (r) | ||
345 | gpio_free(gpio + 1); | ||
346 | } | ||
347 | if (r) | ||
348 | pr_err("%s: unable to configure nDVI_PWR_EN\n", | ||
349 | __func__); | ||
350 | r = gpio_request(gpio + 2, "DVI_LDO_EN"); | ||
351 | if (!r) { | ||
352 | r = gpio_direction_output(gpio + 2, 1); | ||
353 | if (r) | ||
354 | gpio_free(gpio + 2); | ||
355 | } | ||
356 | if (r) | ||
357 | pr_err("%s: unable to configure DVI_LDO_EN\n", | ||
358 | __func__); | ||
359 | } | ||
360 | |||
313 | return 0; | 361 | return 0; |
314 | } | 362 | } |
315 | 363 | ||