diff options
Diffstat (limited to 'recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0003-beaglebone-rebase-everything-onto-3.2-WARNING-MEGAPA.patch')
-rw-r--r-- | recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0003-beaglebone-rebase-everything-onto-3.2-WARNING-MEGAPA.patch | 552 |
1 files changed, 552 insertions, 0 deletions
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0003-beaglebone-rebase-everything-onto-3.2-WARNING-MEGAPA.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0003-beaglebone-rebase-everything-onto-3.2-WARNING-MEGAPA.patch new file mode 100644 index 00000000..c5b1ce0d --- /dev/null +++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0003-beaglebone-rebase-everything-onto-3.2-WARNING-MEGAPA.patch | |||
@@ -0,0 +1,552 @@ | |||
1 | From 839c23bffe07e2c955904ce3e9e3c776c1b2f88b Mon Sep 17 00:00:00 2001 | ||
2 | From: Koen Kooi <koen@dominion.thruhere.net> | ||
3 | Date: Mon, 30 Jan 2012 21:30:09 +0100 | ||
4 | Subject: [PATCH 03/22] beaglebone: rebase everything onto 3.2 - WARNING | ||
5 | MEGAPATCH | ||
6 | |||
7 | --- | ||
8 | arch/arm/mach-omap2/board-am335xevm.c | 425 ++++++++++++++++++++++++++++++++- | ||
9 | 1 file changed, 414 insertions(+), 11 deletions(-) | ||
10 | |||
11 | diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c | ||
12 | index 8aa7e10..e0c20c5 100644 | ||
13 | --- a/arch/arm/mach-omap2/board-am335xevm.c | ||
14 | +++ b/arch/arm/mach-omap2/board-am335xevm.c | ||
15 | @@ -19,6 +19,7 @@ | ||
16 | #include <linux/i2c/at24.h> | ||
17 | #include <linux/phy.h> | ||
18 | #include <linux/gpio.h> | ||
19 | +#include <linux/leds.h> | ||
20 | #include <linux/spi/spi.h> | ||
21 | #include <linux/spi/flash.h> | ||
22 | #include <linux/gpio_keys.h> | ||
23 | @@ -167,6 +168,66 @@ struct da8xx_lcdc_platform_data TFC_S9700RTWV35TR_01B_pdata = { | ||
24 | |||
25 | #include "common.h" | ||
26 | |||
27 | +static const struct display_panel bbtoys7_panel = { | ||
28 | + WVGA, | ||
29 | + 16, | ||
30 | + 16, | ||
31 | + COLOR_ACTIVE, | ||
32 | +}; | ||
33 | + | ||
34 | +static struct lcd_ctrl_config bbtoys7_cfg = { | ||
35 | + &bbtoys7_panel, | ||
36 | + .ac_bias = 255, | ||
37 | + .ac_bias_intrpt = 0, | ||
38 | + .dma_burst_sz = 16, | ||
39 | + .bpp = 16, | ||
40 | + .fdd = 0x80, | ||
41 | + .tft_alt_mode = 0, | ||
42 | + .stn_565_mode = 0, | ||
43 | + .mono_8bit_mode = 0, | ||
44 | + .invert_line_clock = 1, | ||
45 | + .invert_frm_clock = 1, | ||
46 | + .sync_edge = 0, | ||
47 | + .sync_ctrl = 1, | ||
48 | + .raster_order = 0, | ||
49 | +}; | ||
50 | + | ||
51 | +struct da8xx_lcdc_platform_data bbtoys7_pdata = { | ||
52 | + .manu_name = "ThreeFive", | ||
53 | + .controller_data = &bbtoys7_cfg, | ||
54 | + .type = "TFC_S9700RTWV35TR_01B", | ||
55 | +}; | ||
56 | + | ||
57 | +static const struct display_panel dvi_panel = { | ||
58 | + WVGA, | ||
59 | + 16, | ||
60 | + 16, | ||
61 | + COLOR_ACTIVE, | ||
62 | +}; | ||
63 | + | ||
64 | +static struct lcd_ctrl_config dvi_cfg = { | ||
65 | + &dvi_panel, | ||
66 | + .ac_bias = 255, | ||
67 | + .ac_bias_intrpt = 0, | ||
68 | + .dma_burst_sz = 16, | ||
69 | + .bpp = 16, | ||
70 | + .fdd = 0x80, | ||
71 | + .tft_alt_mode = 0, | ||
72 | + .stn_565_mode = 0, | ||
73 | + .mono_8bit_mode = 0, | ||
74 | + .invert_line_clock = 1, | ||
75 | + .invert_frm_clock = 1, | ||
76 | + .sync_edge = 0, | ||
77 | + .sync_ctrl = 1, | ||
78 | + .raster_order = 0, | ||
79 | +}; | ||
80 | + | ||
81 | +struct da8xx_lcdc_platform_data dvi_pdata = { | ||
82 | + .manu_name = "BBToys", | ||
83 | + .controller_data = &dvi_cfg, | ||
84 | + .type = "1024x768@60", | ||
85 | +}; | ||
86 | + | ||
87 | /* TSc controller */ | ||
88 | #include <linux/input/ti_tscadc.h> | ||
89 | #include <linux/lis3lv02d.h> | ||
90 | @@ -320,9 +381,34 @@ struct am335x_evm_eeprom_config { | ||
91 | static struct am335x_evm_eeprom_config config; | ||
92 | static bool daughter_brd_detected; | ||
93 | |||
94 | -#define GP_EVM_REV_IS_1_0 0x1 | ||
95 | +struct beaglebone_cape_eeprom_config { | ||
96 | + u32 header; | ||
97 | + char format_revision[2]; | ||
98 | + char name[32]; | ||
99 | + char version[4]; | ||
100 | + char manufacturer[16]; | ||
101 | + char partnumber[16]; | ||
102 | + u16 numpins; | ||
103 | + char serial[12]; | ||
104 | + u8 muxdata[170]; | ||
105 | + u16 current_3v3; | ||
106 | + u16 current_vdd5v; | ||
107 | + u16 current_sys5v; | ||
108 | + u16 dc; | ||
109 | +}; | ||
110 | + | ||
111 | +static struct beaglebone_cape_eeprom_config cape_config; | ||
112 | +static bool beaglebone_cape_detected; | ||
113 | + | ||
114 | +/* keep track of ADC pin usage */ | ||
115 | +static int capecount = 0; | ||
116 | +static bool beaglebone_tsadcpins_free = 1; | ||
117 | + | ||
118 | + | ||
119 | +#define GP_EVM_REV_IS_1_0A 0x1 | ||
120 | #define GP_EVM_REV_IS_1_1A 0x2 | ||
121 | #define GP_EVM_REV_IS_UNKNOWN 0xFF | ||
122 | +#define GP_EVM_ACTUALLY_BEAGLEBONE 0xBB | ||
123 | static unsigned int gp_evm_revision = GP_EVM_REV_IS_UNKNOWN; | ||
124 | unsigned int gigabit_enable = 1; | ||
125 | |||
126 | @@ -404,11 +490,102 @@ static struct pinmux_config lcdc_pin_mux[] = { | ||
127 | {NULL, 0}, | ||
128 | }; | ||
129 | |||
130 | +/* Module pin mux for Beagleboardtoys DVI cape */ | ||
131 | +static struct pinmux_config dvi_pin_mux[] = { | ||
132 | + {"lcd_data0.lcd_data0", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | ||
133 | + | AM33XX_PULL_DISA}, | ||
134 | + {"lcd_data1.lcd_data1", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | ||
135 | + | AM33XX_PULL_DISA}, | ||
136 | + {"lcd_data2.lcd_data2", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | ||
137 | + | AM33XX_PULL_DISA}, | ||
138 | + {"lcd_data3.lcd_data3", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | ||
139 | + | AM33XX_PULL_DISA}, | ||
140 | + {"lcd_data4.lcd_data4", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | ||
141 | + | AM33XX_PULL_DISA}, | ||
142 | + {"lcd_data5.lcd_data5", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | ||
143 | + | AM33XX_PULL_DISA}, | ||
144 | + {"lcd_data6.lcd_data6", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | ||
145 | + | AM33XX_PULL_DISA}, | ||
146 | + {"lcd_data7.lcd_data7", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | ||
147 | + | AM33XX_PULL_DISA}, | ||
148 | + {"lcd_data8.lcd_data8", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | ||
149 | + | AM33XX_PULL_DISA}, | ||
150 | + {"lcd_data9.lcd_data9", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | ||
151 | + | AM33XX_PULL_DISA}, | ||
152 | + {"lcd_data10.lcd_data10", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | ||
153 | + | AM33XX_PULL_DISA}, | ||
154 | + {"lcd_data11.lcd_data11", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | ||
155 | + | AM33XX_PULL_DISA}, | ||
156 | + {"lcd_data12.lcd_data12", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | ||
157 | + | AM33XX_PULL_DISA}, | ||
158 | + {"lcd_data13.lcd_data13", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | ||
159 | + | AM33XX_PULL_DISA}, | ||
160 | + {"lcd_data14.lcd_data14", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | ||
161 | + | AM33XX_PULL_DISA}, | ||
162 | + {"lcd_data15.lcd_data15", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | ||
163 | + | AM33XX_PULL_DISA}, | ||
164 | + {"lcd_vsync.lcd_vsync", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT}, | ||
165 | + {"lcd_hsync.lcd_hsync", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT}, | ||
166 | + {"lcd_pclk.lcd_pclk", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT}, | ||
167 | + {"lcd_ac_bias_en.lcd_ac_bias_en", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT}, | ||
168 | + {"gpmc_a2.rgmii2_td3", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // USR0 LED | ||
169 | + {"gpmc_a3.rgmii2_td2", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // USR1 LED | ||
170 | + {"gpmc_ad7.gpmc_ad7", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // DVI PDn | ||
171 | + {NULL, 0}, | ||
172 | +}; | ||
173 | + | ||
174 | +/* Module pin mux for Beagleboardtoys 7" LCD cape */ | ||
175 | +static struct pinmux_config bbtoys7_pin_mux[] = { | ||
176 | + {"lcd_data0.lcd_data0", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | ||
177 | + | AM33XX_PULL_DISA}, | ||
178 | + {"lcd_data1.lcd_data1", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | ||
179 | + | AM33XX_PULL_DISA}, | ||
180 | + {"lcd_data2.lcd_data2", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | ||
181 | + | AM33XX_PULL_DISA}, | ||
182 | + {"lcd_data3.lcd_data3", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | ||
183 | + | AM33XX_PULL_DISA}, | ||
184 | + {"lcd_data4.lcd_data4", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | ||
185 | + | AM33XX_PULL_DISA}, | ||
186 | + {"lcd_data5.lcd_data5", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | ||
187 | + | AM33XX_PULL_DISA}, | ||
188 | + {"lcd_data6.lcd_data6", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | ||
189 | + | AM33XX_PULL_DISA}, | ||
190 | + {"lcd_data7.lcd_data7", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | ||
191 | + | AM33XX_PULL_DISA}, | ||
192 | + {"lcd_data8.lcd_data8", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | ||
193 | + | AM33XX_PULL_DISA}, | ||
194 | + {"lcd_data9.lcd_data9", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | ||
195 | + | AM33XX_PULL_DISA}, | ||
196 | + {"lcd_data10.lcd_data10", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | ||
197 | + | AM33XX_PULL_DISA}, | ||
198 | + {"lcd_data11.lcd_data11", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | ||
199 | + | AM33XX_PULL_DISA}, | ||
200 | + {"lcd_data12.lcd_data12", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | ||
201 | + | AM33XX_PULL_DISA}, | ||
202 | + {"lcd_data13.lcd_data13", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | ||
203 | + | AM33XX_PULL_DISA}, | ||
204 | + {"lcd_data14.lcd_data14", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | ||
205 | + | AM33XX_PULL_DISA}, | ||
206 | + {"lcd_data15.lcd_data15", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | ||
207 | + | AM33XX_PULL_DISA}, | ||
208 | + {"lcd_vsync.lcd_vsync", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT}, | ||
209 | + {"lcd_hsync.lcd_hsync", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT}, | ||
210 | + {"lcd_pclk.lcd_pclk", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT}, | ||
211 | + {"lcd_ac_bias_en.lcd_ac_bias_en", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT}, | ||
212 | + {"gpmc_a2.gpio1_18", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // Backlight | ||
213 | + {"ecap0_in_pwm0_out.gpio0_7", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, // AVDD_EN | ||
214 | + {NULL, 0}, | ||
215 | +}; | ||
216 | + | ||
217 | static struct pinmux_config tsc_pin_mux[] = { | ||
218 | {"ain0.ain0", OMAP_MUX_MODE0 | AM33XX_INPUT_EN}, | ||
219 | {"ain1.ain1", OMAP_MUX_MODE0 | AM33XX_INPUT_EN}, | ||
220 | {"ain2.ain2", OMAP_MUX_MODE0 | AM33XX_INPUT_EN}, | ||
221 | {"ain3.ain3", OMAP_MUX_MODE0 | AM33XX_INPUT_EN}, | ||
222 | + {"ain4.ain4", OMAP_MUX_MODE0 | AM33XX_INPUT_EN}, | ||
223 | + {"ain5.ain5", OMAP_MUX_MODE0 | AM33XX_INPUT_EN}, | ||
224 | + {"ain6.ain6", OMAP_MUX_MODE0 | AM33XX_INPUT_EN}, | ||
225 | + {"ain7.ain7", OMAP_MUX_MODE0 | AM33XX_INPUT_EN}, | ||
226 | {"vrefp.vrefp", OMAP_MUX_MODE0 | AM33XX_INPUT_EN}, | ||
227 | {"vrefn.vrefn", OMAP_MUX_MODE0 | AM33XX_INPUT_EN}, | ||
228 | {NULL, 0}, | ||
229 | @@ -543,9 +720,9 @@ static struct pinmux_config i2c1_pin_mux[] = { | ||
230 | |||
231 | static struct pinmux_config i2c2_pin_mux[] = { | ||
232 | {"uart1_ctsn.i2c2_sda", OMAP_MUX_MODE3 | AM33XX_SLEWCTRL_SLOW | | ||
233 | - AM33XX_PULL_UP | AM33XX_INPUT_EN}, | ||
234 | + AM33XX_PIN_INPUT_PULLUP}, | ||
235 | {"uart1_rtsn.i2c2_scl", OMAP_MUX_MODE3 | AM33XX_SLEWCTRL_SLOW | | ||
236 | - AM33XX_PULL_UP | AM33XX_INPUT_EN}, | ||
237 | + AM33XX_PIN_INPUT_PULLUP}, | ||
238 | {NULL, 0}, | ||
239 | }; | ||
240 | |||
241 | @@ -823,6 +1000,64 @@ static struct pinmux_config profibus_pin_mux[] = { | ||
242 | {NULL, 0}, | ||
243 | }; | ||
244 | |||
245 | + | ||
246 | +#define BEAGLEBONEDVI_USR0_LED GPIO_TO_PIN(1, 18) | ||
247 | +#define BEAGLEBONEDVI_USR1_LED GPIO_TO_PIN(1, 19) | ||
248 | + | ||
249 | +static struct gpio_led dvi_gpio_leds[] = { | ||
250 | + { | ||
251 | + .name = "beaglebone::usr0", | ||
252 | + .default_trigger = "heartbeat", | ||
253 | + .gpio = BEAGLEBONE_USR1_LED, | ||
254 | + }, | ||
255 | + { | ||
256 | + .name = "beaglebone::usr1", | ||
257 | + .default_trigger = "mmc0", | ||
258 | + .gpio = BEAGLEBONE_USR2_LED, | ||
259 | + }, | ||
260 | + { | ||
261 | + .name = "beaglebone::usr2", | ||
262 | + .gpio = BEAGLEBONE_USR3_LED, | ||
263 | + }, | ||
264 | + { | ||
265 | + .name = "beaglebone::usr3", | ||
266 | + .gpio = BEAGLEBONE_USR4_LED, | ||
267 | + }, | ||
268 | + { | ||
269 | + .name = "dvi::usr0", | ||
270 | + .default_trigger = "heartbeat", | ||
271 | + .gpio = BEAGLEBONEDVI_USR0_LED, | ||
272 | + }, | ||
273 | + { | ||
274 | + .name = "dvi::usr1", | ||
275 | + .default_trigger = "mmc0", | ||
276 | + .gpio = BEAGLEBONEDVI_USR1_LED, | ||
277 | + }, | ||
278 | +}; | ||
279 | + | ||
280 | +static struct gpio_led_platform_data dvi_gpio_led_info = { | ||
281 | + .leds = dvi_gpio_leds, | ||
282 | + .num_leds = ARRAY_SIZE(dvi_gpio_leds), | ||
283 | +}; | ||
284 | + | ||
285 | +static struct platform_device dvi_leds_gpio = { | ||
286 | + .name = "leds-gpio", | ||
287 | + .id = -1, | ||
288 | + .dev = { | ||
289 | + .platform_data = &dvi_gpio_led_info, | ||
290 | + }, | ||
291 | +}; | ||
292 | + | ||
293 | +static struct pinmux_config bone_pin_mux[] = { | ||
294 | + /* User LED gpios (gpio1_21 to gpio1_24) */ | ||
295 | + {"gpmc_a5.rgmii2_td0", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, | ||
296 | + {"gpmc_a6.rgmii2_tclk", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, | ||
297 | + {"gpmc_a7.rgmii2_rclk", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, | ||
298 | + {"gpmc_a8.rgmii2_rd3", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, | ||
299 | + /* Grounding gpio1_6 (pin 3 Conn A) signals bone tester to start diag tests */ | ||
300 | + {"gpmc_ad6.gpio1_6", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLUP}, | ||
301 | +}; | ||
302 | + | ||
303 | /* Module pin mux for eCAP0 */ | ||
304 | static struct pinmux_config ecap0_pin_mux[] = { | ||
305 | {"ecap0_in_pwm0_out.ecap0_in_pwm0_out", | ||
306 | @@ -932,6 +1167,51 @@ static void lcdc_init(int evm_id, int profile) | ||
307 | return; | ||
308 | } | ||
309 | |||
310 | +#define BEAGLEBONE_LCD_AVDD_EN GPIO_TO_PIN(0, 7) | ||
311 | +#define BEAGLEBONE_LCD_BL GPIO_TO_PIN(1, 18) | ||
312 | + | ||
313 | +static void bbtoys7lcd_init(int evm_id, int profile) | ||
314 | +{ | ||
315 | + setup_pin_mux(bbtoys7_pin_mux); | ||
316 | + | ||
317 | + // we are being stupid and setting pixclock from here instead of da8xx-fb.c | ||
318 | + if (conf_disp_pll(300000000)) { | ||
319 | + pr_info("Failed to set pixclock to 300000000, not attempting to" | ||
320 | + "register LCD cape\n"); | ||
321 | + return; | ||
322 | + } | ||
323 | + | ||
324 | + if (am33xx_register_lcdc(&bbtoys7_pdata)) | ||
325 | + pr_info("Failed to register Beagleboardtoys 7\" LCD cape device\n"); | ||
326 | + | ||
327 | + gpio_request(BEAGLEBONE_LCD_BL, "BONE_LCD_BL"); | ||
328 | + gpio_direction_output(BEAGLEBONE_LCD_BL, 1); | ||
329 | + gpio_request(BEAGLEBONE_LCD_AVDD_EN, "BONE_LCD_AVDD_EN"); | ||
330 | + gpio_direction_output(BEAGLEBONE_LCD_AVDD_EN, 1); | ||
331 | + | ||
332 | + return; | ||
333 | +} | ||
334 | + | ||
335 | +#define BEAGLEBONEDVI_PDn GPIO_TO_PIN(1, 7) | ||
336 | + | ||
337 | +static void dvi_init(int evm_id, int profile) | ||
338 | +{ | ||
339 | + setup_pin_mux(dvi_pin_mux); | ||
340 | + gpio_request(BEAGLEBONEDVI_PDn, "DVI_PDn"); | ||
341 | + gpio_direction_output(BEAGLEBONEDVI_PDn, 1); | ||
342 | + | ||
343 | + // we are being stupid and setting pixclock from here instead of da8xx-fb.c | ||
344 | + if (conf_disp_pll(560000000)) { | ||
345 | + pr_info("Failed to set pixclock to 56000000, not attempting to" | ||
346 | + "register DVI adapter\n"); | ||
347 | + return; | ||
348 | + } | ||
349 | + | ||
350 | + if (am33xx_register_lcdc(&dvi_pdata)) | ||
351 | + pr_info("Failed to register BeagleBoardToys DVI cape\n"); | ||
352 | + return; | ||
353 | +} | ||
354 | + | ||
355 | static void tsc_init(int evm_id, int profile) | ||
356 | { | ||
357 | int err; | ||
358 | @@ -939,16 +1219,48 @@ static void tsc_init(int evm_id, int profile) | ||
359 | if (gp_evm_revision == GP_EVM_REV_IS_1_1A) { | ||
360 | am335x_touchscreen_data.analog_input = 1; | ||
361 | pr_info("TSC connected to beta GP EVM\n"); | ||
362 | - } else { | ||
363 | + } | ||
364 | + if (gp_evm_revision == GP_EVM_REV_IS_1_1A) { | ||
365 | am335x_touchscreen_data.analog_input = 0; | ||
366 | pr_info("TSC connected to alpha GP EVM\n"); | ||
367 | } | ||
368 | + if( gp_evm_revision == GP_EVM_ACTUALLY_BEAGLEBONE) { | ||
369 | + am335x_touchscreen_data.analog_input = 1; | ||
370 | + pr_info("TSC connected to BeagleBone\n");; | ||
371 | + } | ||
372 | setup_pin_mux(tsc_pin_mux); | ||
373 | err = platform_device_register(&tsc_device); | ||
374 | if (err) | ||
375 | pr_err("failed to register touchscreen device\n"); | ||
376 | } | ||
377 | |||
378 | +static void bone_tsc_init(int evm_id, int profile) | ||
379 | +{ | ||
380 | + int err; | ||
381 | + setup_pin_mux(tsc_pin_mux); | ||
382 | + err = platform_device_register(&bone_tsc_device); | ||
383 | + if (err) | ||
384 | + pr_err("failed to register touchscreen device\n"); | ||
385 | +} | ||
386 | + | ||
387 | + | ||
388 | +static void boneleds_init(int evm_id, int profile ) | ||
389 | +{ | ||
390 | + int err; | ||
391 | + setup_pin_mux(bone_pin_mux); | ||
392 | + err = platform_device_register(&bone_leds_gpio); | ||
393 | + if (err) | ||
394 | + pr_err("failed to register BeagleBone LEDS\n"); | ||
395 | +} | ||
396 | + | ||
397 | +static void dvileds_init(int evm_id, int profile ) | ||
398 | +{ | ||
399 | + int err; | ||
400 | + err = platform_device_register(&dvi_leds_gpio); | ||
401 | + if (err) | ||
402 | + pr_err("failed to register BeagleBone DVI cape LEDS\n"); | ||
403 | +} | ||
404 | + | ||
405 | static void rgmii1_init(int evm_id, int profile) | ||
406 | { | ||
407 | setup_pin_mux(rgmii1_pin_mux); | ||
408 | @@ -1358,18 +1670,106 @@ static void i2c1_init(int evm_id, int profile) | ||
409 | return; | ||
410 | } | ||
411 | |||
412 | +static void beaglebone_cape_setup(struct memory_accessor *mem_acc, void *context) | ||
413 | +{ | ||
414 | + capecount++; | ||
415 | + int ret; | ||
416 | + char tmp[32]; | ||
417 | + char name[32]; | ||
418 | + char manufacturer[32]; | ||
419 | + | ||
420 | + /* get cape specific data */ | ||
421 | + ret = mem_acc->read(mem_acc, (char *)&cape_config, 0, sizeof(cape_config)); | ||
422 | + if (ret != sizeof(cape_config)) { | ||
423 | + pr_warning("BeagleBone cape EEPROM: could not read eeprom at address 0x%x\n", capecount + 0x53); | ||
424 | + if ((capecount > 3) && (beaglebone_tsadcpins_free == 1)) { | ||
425 | + pr_info("BeagleBone cape: exporting ADC pins to sysfs\n"); | ||
426 | + bone_tsc_init(0,0); | ||
427 | + beaglebone_tsadcpins_free = 0; | ||
428 | + } | ||
429 | + return; | ||
430 | + } | ||
431 | + | ||
432 | + if (cape_config.header != AM335X_EEPROM_HEADER) { | ||
433 | + pr_warning("BeagleBone Cape EEPROM: wrong header 0x%x, expected 0x%x\n", | ||
434 | + cape_config.header, AM335X_EEPROM_HEADER); | ||
435 | + goto out; | ||
436 | + } | ||
437 | + | ||
438 | + pr_info("BeagleBone cape EEPROM: found eeprom at address 0x%x\n", capecount + 0x53); | ||
439 | + snprintf(name, sizeof(cape_config.name) + 1, "%s", cape_config.name); | ||
440 | + snprintf(manufacturer, sizeof(cape_config.manufacturer) + 1, "%s", cape_config.manufacturer); | ||
441 | + pr_info("BeagleBone cape: %s %s\n", manufacturer, name); | ||
442 | + snprintf(tmp, sizeof(cape_config.partnumber) + 1, "%s", cape_config.partnumber); | ||
443 | + pr_info("BeagleBone cape partnumber: %s\n", tmp); | ||
444 | |||
445 | -static struct i2c_board_info am335x_i2c_boardinfo2[] = { | ||
446 | + if (!strncmp("BB-BONE-DVID-01", cape_config.partnumber, 5)) { | ||
447 | + pr_info("BeagleBone cape: initializing DVI cape\n"); | ||
448 | + dvi_init(0,0); | ||
449 | + } | ||
450 | + if (!strncmp("LCD01", cape_config.partnumber, 5)) { | ||
451 | + pr_info("BeagleBone cape: initializing LCD cape\n"); | ||
452 | + bbtoys7lcd_init(0,0); | ||
453 | + pr_info("BeagleBone cape: initializing LCD cape touchscreen\n"); | ||
454 | + tsc_init(0,0); | ||
455 | + beaglebone_tsadcpins_free = 0; | ||
456 | + } | ||
457 | + | ||
458 | + | ||
459 | + if ((capecount > 3) && (beaglebone_tsadcpins_free == 1)) { | ||
460 | + pr_info("BeagleBone cape: exporting ADC pins to sysfs\n"); | ||
461 | + bone_tsc_init(0,0); | ||
462 | + beaglebone_tsadcpins_free = 0; | ||
463 | + } | ||
464 | + | ||
465 | + return; | ||
466 | +out: | ||
467 | + /* | ||
468 | + * If the EEPROM hasn't been programed or an incorrect header | ||
469 | + * or board name are read, assume this is an old beaglebone board | ||
470 | + * (< Rev A3) | ||
471 | + */ | ||
472 | + pr_err("Could not detect BeagleBone cape properly\n"); | ||
473 | + beaglebone_cape_detected = false; | ||
474 | + | ||
475 | +} | ||
476 | + | ||
477 | +static struct at24_platform_data cape_eeprom_info = { | ||
478 | + .byte_len = (256*1024) / 8, | ||
479 | + .page_size = 64, | ||
480 | + .flags = AT24_FLAG_ADDR16, | ||
481 | + .context = (void *)NULL, | ||
482 | + .setup = beaglebone_cape_setup, | ||
483 | +}; | ||
484 | + | ||
485 | +static struct i2c_board_info __initdata cape_i2c_boardinfo[] = { | ||
486 | + { | ||
487 | + I2C_BOARD_INFO("24c256", 0x54), | ||
488 | + .platform_data = &cape_eeprom_info, | ||
489 | + }, | ||
490 | + { | ||
491 | + I2C_BOARD_INFO("24c256", 0x55), | ||
492 | + .platform_data = &cape_eeprom_info, | ||
493 | + }, | ||
494 | + { | ||
495 | + I2C_BOARD_INFO("24c256", 0x56), | ||
496 | + .platform_data = &cape_eeprom_info, | ||
497 | + }, | ||
498 | + { | ||
499 | + I2C_BOARD_INFO("24c256", 0x57), | ||
500 | + .platform_data = &cape_eeprom_info, | ||
501 | + }, | ||
502 | }; | ||
503 | |||
504 | static void i2c2_init(int evm_id, int profile) | ||
505 | { | ||
506 | - setup_pin_mux(i2c2_pin_mux); | ||
507 | - omap_register_i2c_bus(3, 100, am335x_i2c_boardinfo2, | ||
508 | - ARRAY_SIZE(am335x_i2c_boardinfo2)); | ||
509 | - return; | ||
510 | + setup_pin_mux(i2c2_pin_mux); | ||
511 | + omap_register_i2c_bus(3, 100, cape_i2c_boardinfo, | ||
512 | + ARRAY_SIZE(cape_i2c_boardinfo)); | ||
513 | + return; | ||
514 | } | ||
515 | |||
516 | + | ||
517 | /* Setup McASP 1 */ | ||
518 | static void mcasp1_init(int evm_id, int profile) | ||
519 | { | ||
520 | @@ -1723,8 +2123,9 @@ static struct evm_dev_cfg beaglebone_old_dev_cfg[] = { | ||
521 | {rmii1_init, DEV_ON_BASEBOARD, PROFILE_NONE}, | ||
522 | {usb0_init, DEV_ON_BASEBOARD, PROFILE_NONE}, | ||
523 | {usb1_init, DEV_ON_BASEBOARD, PROFILE_NONE}, | ||
524 | - {mmc0_init, DEV_ON_BASEBOARD, PROFILE_NONE}, | ||
525 | {i2c2_init, DEV_ON_BASEBOARD, PROFILE_NONE}, | ||
526 | + {mmc0_init, DEV_ON_BASEBOARD, PROFILE_NONE}, | ||
527 | + {boneleds_init, DEV_ON_BASEBOARD, PROFILE_ALL}, | ||
528 | {NULL, 0, 0}, | ||
529 | }; | ||
530 | |||
531 | @@ -1734,8 +2135,9 @@ static struct evm_dev_cfg beaglebone_dev_cfg[] = { | ||
532 | {mii1_init, DEV_ON_BASEBOARD, PROFILE_NONE}, | ||
533 | {usb0_init, DEV_ON_BASEBOARD, PROFILE_NONE}, | ||
534 | {usb1_init, DEV_ON_BASEBOARD, PROFILE_NONE}, | ||
535 | - {mmc0_init, DEV_ON_BASEBOARD, PROFILE_NONE}, | ||
536 | {i2c2_init, DEV_ON_BASEBOARD, PROFILE_NONE}, | ||
537 | + {mmc0_init, DEV_ON_BASEBOARD, PROFILE_NONE}, | ||
538 | + {boneleds_init, DEV_ON_BASEBOARD, PROFILE_ALL}, | ||
539 | {NULL, 0, 0}, | ||
540 | }; | ||
541 | |||
542 | @@ -1822,6 +2224,7 @@ static void setup_beaglebone_old(void) | ||
543 | static void setup_beaglebone(void) | ||
544 | { | ||
545 | pr_info("The board is a AM335x Beaglebone.\n"); | ||
546 | + gp_evm_revision = GP_EVM_ACTUALLY_BEAGLEBONE; | ||
547 | |||
548 | /* Beagle Bone has Micro-SD slot which doesn't have Write Protect pin */ | ||
549 | am335x_mmc[0].gpio_wp = -EINVAL; | ||
550 | -- | ||
551 | 1.7.9.4 | ||
552 | |||