linux-omap-psp 2.6.32: sync with .dev
[glsdk/meta-ti-glsdk.git] / recipes-bsp / linux / linux-omap-psp-2.6.32 / beagleboard-xmc / 0008-omap3-beagle-cleaned-up-board-revision-conditions.patch
1 From 8bd3ffb5755c49aaffecb20b9bd43f955ac26251 Mon Sep 17 00:00:00 2001
2 From: Jason Kridner <jkridner@beagleboard.org>
3 Date: Wed, 16 Mar 2011 09:21:06 -0500
4 Subject: [PATCH 08/10] omap3: beagle: cleaned up board revision conditions
6 ---
7  arch/arm/mach-omap2/board-omap3beagle.c |   70 ++++++++++++++-----------------
8  1 files changed, 32 insertions(+), 38 deletions(-)
10 diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
11 index 4bde54b..664a9c6 100644
12 --- a/arch/arm/mach-omap2/board-omap3beagle.c
13 +++ b/arch/arm/mach-omap2/board-omap3beagle.c
14 @@ -191,7 +191,7 @@ enum {
15         OMAP3BEAGLE_BOARD_AXBX,
16         OMAP3BEAGLE_BOARD_C1_3,
17         OMAP3BEAGLE_BOARD_C4,
18 -       OMAP3BEAGLE_BOARD_XM,
19 +       OMAP3BEAGLE_BOARD_XMAB,
20         OMAP3BEAGLE_BOARD_XMC,
21  };
22  
23 @@ -245,11 +245,11 @@ static void __init omap3_beagle_init_rev(void)
24                 break;
25         case 0:
26                 printk(KERN_INFO "OMAP3 Beagle Rev: xM A\n");
27 -               omap3_beagle_version = OMAP3BEAGLE_BOARD_XM;
28 +               omap3_beagle_version = OMAP3BEAGLE_BOARD_XMAB;
29                 break;
30         case 1:
31                 printk(KERN_INFO "OMAP3 Beagle Rev: xM B\n");
32 -               omap3_beagle_version = OMAP3BEAGLE_BOARD_XM;
33 +               omap3_beagle_version = OMAP3BEAGLE_BOARD_XMAB;
34                 break;
35         case 2:
36                 printk(KERN_INFO "OMAP3 Beagle Rev: xM C\n");
37 @@ -458,13 +458,18 @@ static int beagle_twl_gpio_setup(struct device *dev,
38  {
39         int r;
40  
41 -       if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM) {
42 +       switch(omap3_beagle_get_rev())
43 +       {
44 +       case OMAP3BEAGLE_BOARD_XMAB:
45 +       case OMAP3BEAGLE_BOARD_XMC:
46                 mmc[0].gpio_wp = -EINVAL;
47 -       } else if ((omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_C1_3) ||
48 -               (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_C4)) {
49 +               break;
50 +       case OMAP3BEAGLE_BOARD_C1_3:
51 +       case OMAP3BEAGLE_BOARD_C4:
52                 omap_mux_init_gpio(23, OMAP_PIN_INPUT);
53                 mmc[0].gpio_wp = 23;
54 -       } else {
55 +               break;
56 +       default:
57                 omap_mux_init_gpio(29, OMAP_PIN_INPUT);
58         }
59         /* gpio + 0 is "mmc0_cd" (input/IRQ) */
60 @@ -479,7 +484,8 @@ static int beagle_twl_gpio_setup(struct device *dev,
61          * power switch and overcurrent detect
62          */
63  
64 -       if (omap3_beagle_get_rev() != OMAP3BEAGLE_BOARD_XM) {
65 +       if ((omap3_beagle_get_rev() != OMAP3BEAGLE_BOARD_XMAB) &&
66 +               (omap3_beagle_get_rev() != OMAP3BEAGLE_BOARD_XMC)) {
67                 r = gpio_request(gpio + 1, "EHCI_nOC");
68                 if (!r) {
69                         r = gpio_direction_input(gpio + 1);
70 @@ -490,54 +496,41 @@ static int beagle_twl_gpio_setup(struct device *dev,
71                         pr_err("%s: unable to configure EHCI_nOC\n", __func__);
72         }
73  
74 -       if (cpu_is_omap3630()) {
75 -               /* Power on DVI, Serial and PWR led */
76 -               gpio_request(gpio + 1, "nDVI_PWR_EN");
77 -               gpio_direction_output(gpio + 1, 0);
78 -
79 -               /* Power on camera interface */
80 -               gpio_request(gpio + 2, "CAM_EN");
81 -               gpio_direction_output(gpio + 2, 1);
82 -
83 -               /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */
84 -               gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR");
85 -               gpio_direction_output(gpio + TWL4030_GPIO_MAX, 1);
86 -       }
87 -       else {
88 -               gpio_request(gpio + 1, "EHCI_nOC");
89 -               gpio_direction_input(gpio + 1);
90 -
91 -               /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */
92 -               gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR");
93 -               gpio_direction_output(gpio + TWL4030_GPIO_MAX, 0);
94 -       }
95 -
96         /*
97 -        * TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, XM active
98 +        * TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, xM Ax/Bx active
99          * high / others active low)
100          */
101         gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR");
102 -       if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM)
103 +       if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XMAB)
104                 gpio_direction_output(gpio + TWL4030_GPIO_MAX, 1);
105         else
106                 gpio_direction_output(gpio + TWL4030_GPIO_MAX, 0);
107  
108         /* DVI reset GPIO is different between beagle revisions */
109 -       if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM)
110 -               beagle_dvi_device.reset_gpio = 129;
111 -       else
112 +       switch(omap3_beagle_get_rev())
113 +       {
114 +       case OMAP3BEAGLE_BOARD_AXBX:
115 +       case OMAP3BEAGLE_BOARD_C1_3:
116 +       case OMAP3BEAGLE_BOARD_C4:
117                 beagle_dvi_device.reset_gpio = 170;
118 +               break;
119 +       case OMAP3BEAGLE_BOARD_XMAB:
120 +       case OMAP3BEAGLE_BOARD_XMC:
121 +       default:
122 +               beagle_dvi_device.reset_gpio = 129;
123 +       }
124  
125         /* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */
126         gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1;
127  
128         /*
129 -        * gpio + 1 on Xm controls the TFP410's enable line (active low)
130 +        * gpio + 1 on xM controls the TFP410's enable line (active low)
131          * gpio + 2 control varies depending on the board rev as follows:
132          * P7/P8 revisions(prototype): Camera EN
133          * A2+ revisions (production): LDO (supplies DVI, serial, led blocks)
134          */
135 -       if (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XM) {
136 +       if ((omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XMAB) ||
137 +               (omap3_beagle_get_rev() == OMAP3BEAGLE_BOARD_XMC)) {
138                 r = gpio_request(gpio + 1, "nDVI_PWR_EN");
139                 if (!r) {
140                         r = gpio_direction_output(gpio + 1, 0);
141 @@ -1013,7 +1006,8 @@ static void __init omap3_beagle_init(void)
142         omap3_beagle_init_rev();
143         omap3_beagle_i2c_init();
144  
145 -       if (cpu_is_omap3630()) {
146 +       if ((omap3_beagle_get_rev() != OMAP3BEAGLE_BOARD_XMAB) &&
147 +               (omap3_beagle_get_rev() != OMAP3BEAGLE_BOARD_XMC)) {
148                 gpio_buttons[0].gpio = 4;
149         }
150  
151 -- 
152 1.6.6.1