summaryrefslogtreecommitdiffstats
path: root/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0003-beaglebone-rebase-everything-onto-3.2-WARNING-MEGAPA.patch
diff options
context:
space:
mode:
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.patch552
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 @@
1From 839c23bffe07e2c955904ce3e9e3c776c1b2f88b Mon Sep 17 00:00:00 2001
2From: Koen Kooi <koen@dominion.thruhere.net>
3Date: Mon, 30 Jan 2012 21:30:09 +0100
4Subject: [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
11diff --git a/arch/arm/mach-omap2/board-am335xevm.c b/arch/arm/mach-omap2/board-am335xevm.c
12index 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--
5511.7.9.4
552