summaryrefslogtreecommitdiffstats
path: root/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/0007-ARM-OMAP-beagleboard-Add-infrastructure-to-do-fixups.patch
diff options
context:
space:
mode:
Diffstat (limited to 'extras/recipes-kernel/linux/linux-omap-psp-2.6.32/0007-ARM-OMAP-beagleboard-Add-infrastructure-to-do-fixups.patch')
-rw-r--r--extras/recipes-kernel/linux/linux-omap-psp-2.6.32/0007-ARM-OMAP-beagleboard-Add-infrastructure-to-do-fixups.patch172
1 files changed, 172 insertions, 0 deletions
diff --git a/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/0007-ARM-OMAP-beagleboard-Add-infrastructure-to-do-fixups.patch b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/0007-ARM-OMAP-beagleboard-Add-infrastructure-to-do-fixups.patch
new file mode 100644
index 00000000..86e6a709
--- /dev/null
+++ b/extras/recipes-kernel/linux/linux-omap-psp-2.6.32/0007-ARM-OMAP-beagleboard-Add-infrastructure-to-do-fixups.patch
@@ -0,0 +1,172 @@
1From 25ae9895ed107a6fe9d9c4345f21bbdaee4ccde6 Mon Sep 17 00:00:00 2001
2From: Koen Kooi <koen@dominion.thruhere.net>
3Date: Mon, 3 May 2010 14:41:29 +0200
4Subject: [PATCH 07/45] ARM: OMAP: beagleboard: Add infrastructure to do fixups based on expansionboard name passed by u-boot
5
6And add support for zippy2
7---
8 arch/arm/mach-omap2/board-omap3beagle.c | 88 +++++++++++++++++++++++++++----
9 1 files changed, 78 insertions(+), 10 deletions(-)
10
11diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c
12index 429dacb..ac96551 100644
13--- a/arch/arm/mach-omap2/board-omap3beagle.c
14+++ b/arch/arm/mach-omap2/board-omap3beagle.c
15@@ -75,6 +75,8 @@ static struct omap_opp * _omap37x_l3_rate_table = NULL;
16
17 #define NAND_BLOCK_SIZE SZ_128K
18
19+char expansionboard_name[16];
20+
21 #if defined(CONFIG_ENC28J60) || defined(CONFIG_ENC28J60_MODULE)
22
23 #include <plat/mcspi.h>
24@@ -87,7 +89,7 @@ static struct omap2_mcspi_device_config enc28j60_spi_chip_info = {
25 .single_channel = 1, /* 0: slave, 1: master */
26 };
27
28-static struct spi_board_info omap3beagle_spi_board_info[] __initdata = {
29+static struct spi_board_info omap3beagle_zippy_spi_board_info[] __initdata = {
30 {
31 .modalias = "enc28j60",
32 .bus_num = 4,
33@@ -102,21 +104,62 @@ static void __init omap3beagle_enc28j60_init(void)
34 if ((gpio_request(OMAP3BEAGLE_GPIO_ENC28J60_IRQ, "ENC28J60_IRQ") == 0) &&
35 (gpio_direction_input(OMAP3BEAGLE_GPIO_ENC28J60_IRQ) == 0)) {
36 gpio_export(OMAP3BEAGLE_GPIO_ENC28J60_IRQ, 0);
37- omap3beagle_spi_board_info[0].irq = OMAP_GPIO_IRQ(OMAP3BEAGLE_GPIO_ENC28J60_IRQ);
38- set_irq_type(omap3beagle_spi_board_info[0].irq, IRQ_TYPE_EDGE_FALLING);
39+ omap3beagle_zippy_spi_board_info[0].irq = OMAP_GPIO_IRQ(OMAP3BEAGLE_GPIO_ENC28J60_IRQ);
40+ set_irq_type(omap3beagle_zippy_spi_board_info[0].irq, IRQ_TYPE_EDGE_FALLING);
41 } else {
42 printk(KERN_ERR "could not obtain gpio for ENC28J60_IRQ\n");
43 return;
44 }
45
46- spi_register_board_info(omap3beagle_spi_board_info,
47- ARRAY_SIZE(omap3beagle_spi_board_info));
48+ spi_register_board_info(omap3beagle_zippy_spi_board_info,
49+ ARRAY_SIZE(omap3beagle_zippy_spi_board_info));
50 }
51
52 #else
53 static inline void __init omap3beagle_enc28j60_init(void) { return; }
54 #endif
55
56+#if defined(CONFIG_KS8851) || defined(CONFIG_KS8851_MODULE)
57+
58+#include <plat/mcspi.h>
59+#include <linux/spi/spi.h>
60+
61+#define OMAP3BEAGLE_GPIO_KS8851_IRQ 157
62+
63+static struct omap2_mcspi_device_config ks8851_spi_chip_info = {
64+ .turbo_mode = 0,
65+ .single_channel = 1, /* 0: slave, 1: master */
66+};
67+
68+static struct spi_board_info omap3beagle_zippy2_spi_board_info[] __initdata = {
69+ {
70+ .modalias = "ks8851",
71+ .bus_num = 4,
72+ .chip_select = 0,
73+ .max_speed_hz = 36000000,
74+ .controller_data = &ks8851_spi_chip_info,
75+ },
76+};
77+
78+static void __init omap3beagle_ks8851_init(void)
79+{
80+ if ((gpio_request(OMAP3BEAGLE_GPIO_KS8851_IRQ, "KS8851_IRQ") == 0) &&
81+ (gpio_direction_input(OMAP3BEAGLE_GPIO_KS8851_IRQ) == 0)) {
82+ gpio_export(OMAP3BEAGLE_GPIO_KS8851_IRQ, 0);
83+ omap3beagle_zippy2_spi_board_info[0].irq = OMAP_GPIO_IRQ(OMAP3BEAGLE_GPIO_KS8851_IRQ);
84+ set_irq_type(omap3beagle_zippy2_spi_board_info[0].irq, IRQ_TYPE_EDGE_FALLING);
85+ } else {
86+ printk(KERN_ERR "could not obtain gpio for KS8851_IRQ\n");
87+ return;
88+ }
89+
90+ spi_register_board_info(omap3beagle_zippy2_spi_board_info,
91+ ARRAY_SIZE(omap3beagle_zippy2_spi_board_info));
92+}
93+
94+#else
95+static inline void __init omap3beagle_ks8851_init(void) { return; }
96+#endif
97
98 static struct mtd_partition omap3beagle_nand_partitions[] = {
99 /* All the partition sizes are listed in terms of NAND block size */
100@@ -281,8 +324,6 @@ static struct twl4030_hsmmc_info mmc[] = {
101 {
102 .mmc = 2,
103 .wires = 4,
104- .gpio_wp = 141,
105- .gpio_cd = 162,
106 .transceiver = true,
107 .ocr_mask = 0x00100000, /* 3.3V */
108 },
109@@ -601,7 +642,7 @@ static void __init omap3beagle_flash_init(void)
110 }
111 }
112
113-static struct ehci_hcd_omap_platform_data ehci_pdata __initconst = {
114+static struct ehci_hcd_omap_platform_data ehci_pdata __initdata = {
115
116 .port_mode[0] = EHCI_HCD_OMAP_MODE_PHY,
117 .port_mode[1] = EHCI_HCD_OMAP_MODE_PHY,
118@@ -621,6 +662,15 @@ static struct omap_board_mux board_mux[] __initdata = {
119 #define board_mux NULL
120 #endif
121
122+static int __init expansionboard_setup(char *str)
123+{
124+ if (!str)
125+ return -EINVAL;
126+ strncpy(expansionboard_name, str, 16);
127+ printk(KERN_INFO "Beagle expansionboard: %s\n", expansionboard_name);
128+ return 0;
129+}
130+
131 static void __init omap3_beagle_init(void)
132 {
133 omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
134@@ -634,8 +684,24 @@ static void __init omap3_beagle_init(void)
135 /* REVISIT leave DVI powered down until it's needed ... */
136 gpio_direction_output(170, true);
137
138- omap3beagle_enc28j60_init();
139-
140+ if(!strcmp(expansionboard_name, "zippy"))
141+ {
142+ printk(KERN_INFO "Beagle expansionboard: initializing enc28j60\n");
143+ omap3beagle_enc28j60_init();
144+ printk(KERN_INFO "Beagle expansionboard: assigning GPIO 141 and 162 to MMC1\n");
145+ mmc[1].gpio_wp = 141;
146+ mmc[1].gpio_cd = 162;
147+ }
148+
149+ if(!strcmp(expansionboard_name, "zippy2"))
150+ {
151+ printk(KERN_INFO "Beagle expansionboard: initializing ks_8851\n");
152+ omap3beagle_ks8851_init();
153+ printk(KERN_INFO "Beagle expansionboard: assigning GPIO 141 and 162 to MMC1\n");
154+ mmc[1].gpio_wp = 141;
155+ mmc[1].gpio_cd = 162;
156+ }
157+
158 usb_musb_init();
159 usb_ehci_init(&ehci_pdata);
160 omap3beagle_flash_init();
161@@ -652,6 +718,8 @@ static void __init omap3_beagle_map_io(void)
162 omap2_map_common_io();
163 }
164
165+early_param("buddy", expansionboard_setup);
166+
167 MACHINE_START(OMAP3_BEAGLE, "OMAP3 Beagle Board")
168 /* Maintainer: Syed Mohammed Khasim - http://beagleboard.org */
169 .phys_io = 0x48000000,
170--
1711.6.6.1
172