aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTony Lindgren <tony@atomide.com>2015-03-16 20:07:26 -0400
committerTony Lindgren <tony@atomide.com>2015-03-16 20:07:26 -0400
commit01ea0d4247bb3a224a66007e0a1291232c15d61a (patch)
tree9ff5dcc52292c7e31a1d2822a097a67bf37ceb9f
parentf56a1b24f54e7d1f70b5dbcc32e702bf9a1f7e97 (diff)
ARM: OMAP2+: Remove legacy support for omap3 TouchBook
We've been moving all omap2+ based systems to boot in device tree only mode for a few years now. Only omap3 has legacy booting support remaining. Most omap3 boards already have related arch/arm/boot/*.dts* files for booting with device tree. As it seems this board only has minimal support upstreamed for the legacy booting and has not seen activity for on the mailing lists for a few years, let's attempt to remove the related legacy board-*.c file. I do not have this board, but it seems getting the same level of support with device tree based booting is mostly just configuring the .dts file. And there is no need to upgrade the boot loader as we can boot with appended DTB too. And most of the omap3 boards seem to be related to omap3-evm, and omap3beagleboard that are supported with device tree based booting. If somebody is using this board actively with the mainline kernel, please communicate this to the linux-omap mailing list so we can get the board booting with device tree based support. I can help some too getting the minimal device tree based booting going if help is needed. The reason for attempting to remove this board now is that I'd rather get the remaining omap3 legacy booting support into a known state where we at least have a .dts file being written for the remaining legacy boards. That is because for the next few merge cycles we can still revert this patch if absolutely necessary, but I'd rather not get suprised by missing .dts files at the point where we are ready to drop all remaining omap3 legacy booting support later on. Cc: Gregoire Gentil <gregoire@gentil.com> Cc: Radek Pilar <mrkva@mrkva.eu> Signed-off-by: Tony Lindgren <tony@atomide.com>
-rw-r--r--arch/arm/mach-omap2/Kconfig6
-rw-r--r--arch/arm/mach-omap2/Makefile1
-rw-r--r--arch/arm/mach-omap2/board-omap3touchbook.c395
3 files changed, 0 insertions, 402 deletions
diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig
index 559e287ce39f..276a755d2b0b 100644
--- a/arch/arm/mach-omap2/Kconfig
+++ b/arch/arm/mach-omap2/Kconfig
@@ -219,12 +219,6 @@ config MACH_OMAP3_PANDORA
219 select OMAP_PACKAGE_CBB 219 select OMAP_PACKAGE_CBB
220 select REGULATOR_FIXED_VOLTAGE if REGULATOR 220 select REGULATOR_FIXED_VOLTAGE if REGULATOR
221 221
222config MACH_TOUCHBOOK
223 bool "OMAP3 Touch Book"
224 depends on ARCH_OMAP3
225 default y
226 select OMAP_PACKAGE_CBB
227
228config MACH_NOKIA_N810 222config MACH_NOKIA_N810
229 bool 223 bool
230 224
diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
index c346b4840554..ec002bd4af77 100644
--- a/arch/arm/mach-omap2/Makefile
+++ b/arch/arm/mach-omap2/Makefile
@@ -253,7 +253,6 @@ obj-$(CONFIG_MACH_NOKIA_RX51) += board-rx51.o sdram-nokia.o
253obj-$(CONFIG_MACH_NOKIA_RX51) += board-rx51-peripherals.o 253obj-$(CONFIG_MACH_NOKIA_RX51) += board-rx51-peripherals.o
254obj-$(CONFIG_MACH_NOKIA_RX51) += board-rx51-video.o 254obj-$(CONFIG_MACH_NOKIA_RX51) += board-rx51-video.o
255obj-$(CONFIG_MACH_CM_T35) += board-cm-t35.o 255obj-$(CONFIG_MACH_CM_T35) += board-cm-t35.o
256obj-$(CONFIG_MACH_TOUCHBOOK) += board-omap3touchbook.o
257 256
258# Platform specific device init code 257# Platform specific device init code
259 258
diff --git a/arch/arm/mach-omap2/board-omap3touchbook.c b/arch/arm/mach-omap2/board-omap3touchbook.c
deleted file mode 100644
index a01993e5500f..000000000000
--- a/arch/arm/mach-omap2/board-omap3touchbook.c
+++ /dev/null
@@ -1,395 +0,0 @@
1/*
2 * linux/arch/arm/mach-omap2/board-omap3touchbook.c
3 *
4 * Copyright (C) 2009 Always Innovating
5 *
6 * Modified from mach-omap2/board-omap3beagleboard.c
7 *
8 * Initial code: Grégoire Gentil, Tim Yamin
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License version 2 as
12 * published by the Free Software Foundation.
13 */
14
15#include <linux/kernel.h>
16#include <linux/init.h>
17#include <linux/platform_device.h>
18#include <linux/delay.h>
19#include <linux/err.h>
20#include <linux/clk.h>
21#include <linux/io.h>
22#include <linux/leds.h>
23#include <linux/gpio.h>
24#include <linux/input.h>
25#include <linux/gpio_keys.h>
26
27#include <linux/mtd/mtd.h>
28#include <linux/mtd/partitions.h>
29#include <linux/mtd/nand.h>
30#include <linux/mmc/host.h>
31#include <linux/usb/phy.h>
32
33#include <linux/platform_data/spi-omap2-mcspi.h>
34#include <linux/spi/spi.h>
35
36#include <linux/spi/ads7846.h>
37
38#include <linux/regulator/machine.h>
39#include <linux/i2c/twl.h>
40
41#include <asm/mach-types.h>
42#include <asm/mach/arch.h>
43#include <asm/mach/map.h>
44#include <asm/mach/flash.h>
45#include <asm/system_info.h>
46
47#include "common.h"
48#include "gpmc.h"
49#include <linux/platform_data/mtd-nand-omap2.h>
50
51#include "mux.h"
52#include "hsmmc.h"
53#include "board-flash.h"
54#include "common-board-devices.h"
55
56#include <asm/setup.h>
57
58#define OMAP3_AC_GPIO 136
59#define OMAP3_TS_GPIO 162
60#define TB_BL_PWM_TIMER 9
61#define TB_KILL_POWER_GPIO 168
62
63#define NAND_CS 0
64
65static unsigned long touchbook_revision;
66
67static struct mtd_partition omap3touchbook_nand_partitions[] = {
68 /* All the partition sizes are listed in terms of NAND block size */
69 {
70 .name = "X-Loader",
71 .offset = 0,
72 .size = 4 * NAND_BLOCK_SIZE,
73 .mask_flags = MTD_WRITEABLE, /* force read-only */
74 },
75 {
76 .name = "U-Boot",
77 .offset = MTDPART_OFS_APPEND, /* Offset = 0x80000 */
78 .size = 15 * NAND_BLOCK_SIZE,
79 .mask_flags = MTD_WRITEABLE, /* force read-only */
80 },
81 {
82 .name = "U-Boot Env",
83 .offset = MTDPART_OFS_APPEND, /* Offset = 0x260000 */
84 .size = 1 * NAND_BLOCK_SIZE,
85 },
86 {
87 .name = "Kernel",
88 .offset = MTDPART_OFS_APPEND, /* Offset = 0x280000 */
89 .size = 32 * NAND_BLOCK_SIZE,
90 },
91 {
92 .name = "File System",
93 .offset = MTDPART_OFS_APPEND, /* Offset = 0x680000 */
94 .size = MTDPART_SIZ_FULL,
95 },
96};
97
98#include "sdram-micron-mt46h32m32lf-6.h"
99
100static struct omap2_hsmmc_info mmc[] = {
101 {
102 .mmc = 1,
103 .caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA,
104 .gpio_wp = 29,
105 .deferred = true,
106 },
107 {} /* Terminator */
108};
109
110static struct regulator_consumer_supply touchbook_vmmc1_supply[] = {
111 REGULATOR_SUPPLY("vmmc", "omap_hsmmc.0"),
112};
113
114static struct regulator_consumer_supply touchbook_vsim_supply[] = {
115 REGULATOR_SUPPLY("vmmc_aux", "omap_hsmmc.0"),
116};
117
118static struct gpio_led gpio_leds[];
119
120static int touchbook_twl_gpio_setup(struct device *dev,
121 unsigned gpio, unsigned ngpio)
122{
123 /* gpio + 0 is "mmc0_cd" (input/IRQ) */
124 mmc[0].gpio_cd = gpio + 0;
125 omap_hsmmc_late_init(mmc);
126
127 /* REVISIT: need ehci-omap hooks for external VBUS
128 * power switch and overcurrent detect
129 */
130 gpio_request_one(gpio + 1, GPIOF_IN, "EHCI_nOC");
131
132 /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */
133 gpio_request_one(gpio + TWL4030_GPIO_MAX, GPIOF_OUT_INIT_LOW,
134 "nEN_USB_PWR");
135
136 /* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */
137 gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1;
138
139 return 0;
140}
141
142static struct twl4030_gpio_platform_data touchbook_gpio_data = {
143 .use_leds = true,
144 .pullups = BIT(1),
145 .pulldowns = BIT(2) | BIT(6) | BIT(7) | BIT(8) | BIT(13)
146 | BIT(15) | BIT(16) | BIT(17),
147 .setup = touchbook_twl_gpio_setup,
148};
149
150static struct regulator_consumer_supply touchbook_vdac_supply[] = {
151{
152 .supply = "vdac",
153},
154};
155
156static struct regulator_consumer_supply touchbook_vdvi_supply[] = {
157{
158 .supply = "vdvi",
159},
160};
161
162/* VMMC1 for MMC1 pins CMD, CLK, DAT0..DAT3 (20 mA, plus card == max 220 mA) */
163static struct regulator_init_data touchbook_vmmc1 = {
164 .constraints = {
165 .min_uV = 1850000,
166 .max_uV = 3150000,
167 .valid_modes_mask = REGULATOR_MODE_NORMAL
168 | REGULATOR_MODE_STANDBY,
169 .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE
170 | REGULATOR_CHANGE_MODE
171 | REGULATOR_CHANGE_STATUS,
172 },
173 .num_consumer_supplies = ARRAY_SIZE(touchbook_vmmc1_supply),
174 .consumer_supplies = touchbook_vmmc1_supply,
175};
176
177/* VSIM for MMC1 pins DAT4..DAT7 (2 mA, plus card == max 50 mA) */
178static struct regulator_init_data touchbook_vsim = {
179 .constraints = {
180 .min_uV = 1800000,
181 .max_uV = 3000000,
182 .valid_modes_mask = REGULATOR_MODE_NORMAL
183 | REGULATOR_MODE_STANDBY,
184 .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE
185 | REGULATOR_CHANGE_MODE
186 | REGULATOR_CHANGE_STATUS,
187 },
188 .num_consumer_supplies = ARRAY_SIZE(touchbook_vsim_supply),
189 .consumer_supplies = touchbook_vsim_supply,
190};
191
192static struct twl4030_platform_data touchbook_twldata = {
193 /* platform_data for children goes here */
194 .gpio = &touchbook_gpio_data,
195 .vmmc1 = &touchbook_vmmc1,
196 .vsim = &touchbook_vsim,
197};
198
199static struct i2c_board_info __initdata touchBook_i2c_boardinfo[] = {
200 {
201 I2C_BOARD_INFO("bq27200", 0x55),
202 },
203};
204
205static int __init omap3_touchbook_i2c_init(void)
206{
207 /* Standard TouchBook bus */
208 omap3_pmic_get_config(&touchbook_twldata,
209 TWL_COMMON_PDATA_USB | TWL_COMMON_PDATA_AUDIO,
210 TWL_COMMON_REGULATOR_VDAC | TWL_COMMON_REGULATOR_VPLL2);
211
212 touchbook_twldata.vdac->num_consumer_supplies =
213 ARRAY_SIZE(touchbook_vdac_supply);
214 touchbook_twldata.vdac->consumer_supplies = touchbook_vdac_supply;
215
216 touchbook_twldata.vpll2->constraints.name = "VDVI";
217 touchbook_twldata.vpll2->num_consumer_supplies =
218 ARRAY_SIZE(touchbook_vdvi_supply);
219 touchbook_twldata.vpll2->consumer_supplies = touchbook_vdvi_supply;
220
221 omap3_pmic_init("twl4030", &touchbook_twldata);
222 /* Additional TouchBook bus */
223 omap_register_i2c_bus(3, 100, touchBook_i2c_boardinfo,
224 ARRAY_SIZE(touchBook_i2c_boardinfo));
225
226 return 0;
227}
228
229static struct ads7846_platform_data ads7846_pdata = {
230 .x_min = 100,
231 .y_min = 265,
232 .x_max = 3950,
233 .y_max = 3750,
234 .x_plate_ohms = 40,
235 .pressure_max = 255,
236 .debounce_max = 10,
237 .debounce_tol = 5,
238 .debounce_rep = 1,
239 .gpio_pendown = OMAP3_TS_GPIO,
240 .keep_vref_on = 1,
241};
242
243static struct gpio_led gpio_leds[] = {
244 {
245 .name = "touchbook::usr0",
246 .default_trigger = "heartbeat",
247 .gpio = 150,
248 },
249 {
250 .name = "touchbook::usr1",
251 .default_trigger = "mmc0",
252 .gpio = 149,
253 },
254 {
255 .name = "touchbook::pmu_stat",
256 .gpio = -EINVAL, /* gets replaced */
257 .active_low = true,
258 },
259};
260
261static struct gpio_led_platform_data gpio_led_info = {
262 .leds = gpio_leds,
263 .num_leds = ARRAY_SIZE(gpio_leds),
264};
265
266static struct platform_device leds_gpio = {
267 .name = "leds-gpio",
268 .id = -1,
269 .dev = {
270 .platform_data = &gpio_led_info,
271 },
272};
273
274static struct gpio_keys_button gpio_buttons[] = {
275 {
276 .code = BTN_EXTRA,
277 .gpio = 7,
278 .desc = "user",
279 .wakeup = 1,
280 },
281 {
282 .code = KEY_POWER,
283 .gpio = 183,
284 .desc = "power",
285 .wakeup = 1,
286 },
287};
288
289static struct gpio_keys_platform_data gpio_key_info = {
290 .buttons = gpio_buttons,
291 .nbuttons = ARRAY_SIZE(gpio_buttons),
292};
293
294static struct platform_device keys_gpio = {
295 .name = "gpio-keys",
296 .id = -1,
297 .dev = {
298 .platform_data = &gpio_key_info,
299 },
300};
301
302#ifdef CONFIG_OMAP_MUX
303static struct omap_board_mux board_mux[] __initdata = {
304 { .reg_offset = OMAP_MUX_TERMINATOR },
305};
306#endif
307
308static struct usbhs_phy_data phy_data[] __initdata = {
309 {
310 .port = 2,
311 .reset_gpio = 147,
312 .vcc_gpio = -EINVAL,
313 },
314};
315
316static struct platform_device *omap3_touchbook_devices[] __initdata = {
317 &leds_gpio,
318 &keys_gpio,
319};
320
321static struct usbhs_omap_platform_data usbhs_bdata __initdata = {
322 .port_mode[0] = OMAP_EHCI_PORT_MODE_PHY,
323 .port_mode[1] = OMAP_EHCI_PORT_MODE_PHY,
324};
325
326static void omap3_touchbook_poweroff(void)
327{
328 int pwr_off = TB_KILL_POWER_GPIO;
329
330 if (gpio_request_one(pwr_off, GPIOF_OUT_INIT_LOW, "DVI reset") < 0)
331 printk(KERN_ERR "Unable to get kill power GPIO\n");
332}
333
334static int __init early_touchbook_revision(char *p)
335{
336 if (!p)
337 return 0;
338
339 return kstrtoul(p, 10, &touchbook_revision);
340}
341early_param("tbr", early_touchbook_revision);
342
343static void __init omap3_touchbook_init(void)
344{
345 omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
346
347 pm_power_off = omap3_touchbook_poweroff;
348
349 if (system_rev >= 0x20 && system_rev <= 0x34301000) {
350 omap_mux_init_gpio(23, OMAP_PIN_INPUT);
351 mmc[0].gpio_wp = 23;
352 } else {
353 omap_mux_init_gpio(29, OMAP_PIN_INPUT);
354 }
355 omap_hsmmc_init(mmc);
356
357 omap3_touchbook_i2c_init();
358 platform_add_devices(omap3_touchbook_devices,
359 ARRAY_SIZE(omap3_touchbook_devices));
360 omap_serial_init();
361 omap_sdrc_init(mt46h32m32lf6_sdrc_params,
362 mt46h32m32lf6_sdrc_params);
363
364 omap_mux_init_gpio(170, OMAP_PIN_INPUT);
365 /* REVISIT leave DVI powered down until it's needed ... */
366 gpio_request_one(176, GPIOF_OUT_INIT_HIGH, "DVI_nPD");
367
368 /* Touchscreen and accelerometer */
369 omap_ads7846_init(4, OMAP3_TS_GPIO, 310, &ads7846_pdata);
370 usb_bind_phy("musb-hdrc.0.auto", 0, "twl4030_usb");
371 usb_musb_init(NULL);
372
373 usbhs_init_phys(phy_data, ARRAY_SIZE(phy_data));
374 usbhs_init(&usbhs_bdata);
375 board_nand_init(omap3touchbook_nand_partitions,
376 ARRAY_SIZE(omap3touchbook_nand_partitions), NAND_CS,
377 NAND_BUSWIDTH_16, NULL);
378
379 /* Ensure SDRC pins are mux'd for self-refresh */
380 omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT);
381 omap_mux_init_signal("sdrc_cke1", OMAP_PIN_OUTPUT);
382}
383
384MACHINE_START(TOUCHBOOK, "OMAP3 touchbook Board")
385 /* Maintainer: Gregoire Gentil - http://www.alwaysinnovating.com */
386 .atag_offset = 0x100,
387 .reserve = omap_reserve,
388 .map_io = omap3_map_io,
389 .init_early = omap3430_init_early,
390 .init_irq = omap3_init_irq,
391 .init_machine = omap3_touchbook_init,
392 .init_late = omap3430_init_late,
393 .init_time = omap3_secure_sync32k_timer_init,
394 .restart = omap3xxx_restart,
395MACHINE_END