aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTony Lindgren <tony@atomide.com>2016-06-15 04:28:59 -0400
committerTony Lindgren <tony@atomide.com>2016-07-11 02:47:38 -0400
commite92fc4f04a34a407f5ff8acaa13127c62b7bec07 (patch)
tree9a54b337424b23eb39b129afc1b224cf6cd93c54
parent9b7141d01a76c4cb19159dedb9d3470a5df352c9 (diff)
ARM: OMAP2+: Drop legacy board file for LDP
Let's drop the last two remaining omap3 legacy boot board files. Let's only use the device tree based booting known to work for these two boards. We still have two omap3 boards booting in legacy mode in addition to device tree based booting. All the other ten or so omap2+ SoCs have been booting using device tree mode only for years now. This has allowed us to get rid of quite a bit of arch/arm/mach-omap2 related platform init code in favor of dts and driver changes. Pretty much the only remaining known users for omap3 legacy boot board files are Kevin's and Russell's boot test systems, and N900 kernel tree maintained by Pali and Ivaylo. And all of them are also supporting the device tree based booting. The legacy booting mode has been kept around mostly to verify against regressions. As there is still a slim chance of possible other uses of the mainline kernel for these boards, let's just drop the board files for v4.8, and let's not touch the related platform init code until around v4.9 time if no issues are found. This makes it trivial for us to add back the board files with a simple revert. 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-ldp.c430
3 files changed, 0 insertions, 437 deletions
diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig
index 3c6b07097273..9f15235ab138 100644
--- a/arch/arm/mach-omap2/Kconfig
+++ b/arch/arm/mach-omap2/Kconfig
@@ -188,12 +188,6 @@ config MACH_OMAP2_TUSB6010
188 depends on ARCH_OMAP2 && SOC_OMAP2420 188 depends on ARCH_OMAP2 && SOC_OMAP2420
189 default y if MACH_NOKIA_N8X0 189 default y if MACH_NOKIA_N8X0
190 190
191config MACH_OMAP_LDP
192 bool "OMAP3 LDP board"
193 depends on ARCH_OMAP3
194 default y
195 select OMAP_PACKAGE_CBB
196
197config MACH_OMAP3517EVM 191config MACH_OMAP3517EVM
198 bool "OMAP3517/ AM3517 EVM board" 192 bool "OMAP3517/ AM3517 EVM board"
199 depends on ARCH_OMAP3 193 depends on ARCH_OMAP3
diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
index 8660889f9912..7ab35eb159c5 100644
--- a/arch/arm/mach-omap2/Makefile
+++ b/arch/arm/mach-omap2/Makefile
@@ -228,7 +228,6 @@ obj-$(CONFIG_SOC_OMAP2420) += msdi.o
228 228
229# Specific board support 229# Specific board support
230obj-$(CONFIG_MACH_OMAP_GENERIC) += board-generic.o pdata-quirks.o 230obj-$(CONFIG_MACH_OMAP_GENERIC) += board-generic.o pdata-quirks.o
231obj-$(CONFIG_MACH_OMAP_LDP) += board-ldp.o
232obj-$(CONFIG_MACH_NOKIA_N8X0) += board-n8x0.o 231obj-$(CONFIG_MACH_NOKIA_N8X0) += board-n8x0.o
233 232
234# Platform specific device init code 233# Platform specific device init code
diff --git a/arch/arm/mach-omap2/board-ldp.c b/arch/arm/mach-omap2/board-ldp.c
deleted file mode 100644
index 390795b334c3..000000000000
--- a/arch/arm/mach-omap2/board-ldp.c
+++ /dev/null
@@ -1,430 +0,0 @@
1/*
2 * linux/arch/arm/mach-omap2/board-ldp.c
3 *
4 * Copyright (C) 2008 Texas Instruments Inc.
5 * Nishant Kamat <nskamat@ti.com>
6 *
7 * Modified from mach-omap2/board-3430sdp.c
8 *
9 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License version 2 as
11 * published by the Free Software Foundation.
12 */
13#include <linux/gpio.h>
14#include <linux/kernel.h>
15#include <linux/init.h>
16#include <linux/platform_device.h>
17#include <linux/delay.h>
18#include <linux/input.h>
19#include <linux/input/matrix_keypad.h>
20#include <linux/gpio_keys.h>
21#include <linux/workqueue.h>
22#include <linux/err.h>
23#include <linux/clk.h>
24#include <linux/spi/spi.h>
25#include <linux/regulator/fixed.h>
26#include <linux/regulator/machine.h>
27#include <linux/i2c/twl.h>
28#include <linux/io.h>
29#include <linux/smsc911x.h>
30#include <linux/mmc/host.h>
31#include <linux/usb/phy.h>
32#include <linux/platform_data/spi-omap2-mcspi.h>
33
34#include <asm/mach-types.h>
35#include <asm/mach/arch.h>
36#include <asm/mach/map.h>
37
38#include "common.h"
39#include "gpmc.h"
40#include "gpmc-smsc911x.h"
41
42#include <linux/platform_data/omapdss.h>
43#include <video/omap-panel-data.h>
44
45#include "board-flash.h"
46#include "mux.h"
47#include "hsmmc.h"
48#include "control.h"
49#include "common-board-devices.h"
50#include "display.h"
51
52#define LDP_SMSC911X_CS 1
53#define LDP_SMSC911X_GPIO 152
54#define DEBUG_BASE 0x08000000
55#define LDP_ETHR_START DEBUG_BASE
56
57static uint32_t board_keymap[] = {
58 KEY(0, 0, KEY_1),
59 KEY(1, 0, KEY_2),
60 KEY(2, 0, KEY_3),
61 KEY(0, 1, KEY_4),
62 KEY(1, 1, KEY_5),
63 KEY(2, 1, KEY_6),
64 KEY(3, 1, KEY_F5),
65 KEY(0, 2, KEY_7),
66 KEY(1, 2, KEY_8),
67 KEY(2, 2, KEY_9),
68 KEY(3, 2, KEY_F6),
69 KEY(0, 3, KEY_F7),
70 KEY(1, 3, KEY_0),
71 KEY(2, 3, KEY_F8),
72 PERSISTENT_KEY(4, 5),
73 KEY(4, 4, KEY_VOLUMEUP),
74 KEY(5, 5, KEY_VOLUMEDOWN),
75 0
76};
77
78static struct matrix_keymap_data board_map_data = {
79 .keymap = board_keymap,
80 .keymap_size = ARRAY_SIZE(board_keymap),
81};
82
83static struct twl4030_keypad_data ldp_kp_twl4030_data = {
84 .keymap_data = &board_map_data,
85 .rows = 6,
86 .cols = 6,
87 .rep = 1,
88};
89
90static struct gpio_keys_button ldp_gpio_keys_buttons[] = {
91 [0] = {
92 .code = KEY_ENTER,
93 .gpio = 101,
94 .desc = "enter sw",
95 .active_low = 1,
96 .debounce_interval = 30,
97 },
98 [1] = {
99 .code = KEY_F1,
100 .gpio = 102,
101 .desc = "func 1",
102 .active_low = 1,
103 .debounce_interval = 30,
104 },
105 [2] = {
106 .code = KEY_F2,
107 .gpio = 103,
108 .desc = "func 2",
109 .active_low = 1,
110 .debounce_interval = 30,
111 },
112 [3] = {
113 .code = KEY_F3,
114 .gpio = 104,
115 .desc = "func 3",
116 .active_low = 1,
117 .debounce_interval = 30,
118 },
119 [4] = {
120 .code = KEY_F4,
121 .gpio = 105,
122 .desc = "func 4",
123 .active_low = 1,
124 .debounce_interval = 30,
125 },
126 [5] = {
127 .code = KEY_LEFT,
128 .gpio = 106,
129 .desc = "left sw",
130 .active_low = 1,
131 .debounce_interval = 30,
132 },
133 [6] = {
134 .code = KEY_RIGHT,
135 .gpio = 107,
136 .desc = "right sw",
137 .active_low = 1,
138 .debounce_interval = 30,
139 },
140 [7] = {
141 .code = KEY_UP,
142 .gpio = 108,
143 .desc = "up sw",
144 .active_low = 1,
145 .debounce_interval = 30,
146 },
147 [8] = {
148 .code = KEY_DOWN,
149 .gpio = 109,
150 .desc = "down sw",
151 .active_low = 1,
152 .debounce_interval = 30,
153 },
154};
155
156static struct gpio_keys_platform_data ldp_gpio_keys = {
157 .buttons = ldp_gpio_keys_buttons,
158 .nbuttons = ARRAY_SIZE(ldp_gpio_keys_buttons),
159 .rep = 1,
160};
161
162static struct platform_device ldp_gpio_keys_device = {
163 .name = "gpio-keys",
164 .id = -1,
165 .dev = {
166 .platform_data = &ldp_gpio_keys,
167 },
168};
169
170static struct omap_smsc911x_platform_data smsc911x_cfg = {
171 .cs = LDP_SMSC911X_CS,
172 .gpio_irq = LDP_SMSC911X_GPIO,
173 .gpio_reset = -EINVAL,
174 .flags = SMSC911X_USE_32BIT,
175};
176
177static inline void __init ldp_init_smsc911x(void)
178{
179 gpmc_smsc911x_init(&smsc911x_cfg);
180}
181
182/* LCD */
183
184#define LCD_PANEL_RESET_GPIO 55
185#define LCD_PANEL_QVGA_GPIO 56
186
187static const struct display_timing ldp_lcd_videomode = {
188 .pixelclock = { 0, 5400000, 0 },
189
190 .hactive = { 0, 240, 0 },
191 .hfront_porch = { 0, 3, 0 },
192 .hback_porch = { 0, 39, 0 },
193 .hsync_len = { 0, 3, 0 },
194
195 .vactive = { 0, 320, 0 },
196 .vfront_porch = { 0, 2, 0 },
197 .vback_porch = { 0, 7, 0 },
198 .vsync_len = { 0, 1, 0 },
199
200 .flags = DISPLAY_FLAGS_HSYNC_LOW | DISPLAY_FLAGS_VSYNC_LOW |
201 DISPLAY_FLAGS_DE_HIGH | DISPLAY_FLAGS_PIXDATA_POSEDGE,
202};
203
204static struct panel_dpi_platform_data ldp_lcd_pdata = {
205 .name = "lcd",
206 .source = "dpi.0",
207
208 .data_lines = 18,
209
210 .display_timing = &ldp_lcd_videomode,
211
212 .enable_gpio = -1, /* filled in code */
213 .backlight_gpio = -1, /* filled in code */
214};
215
216static struct platform_device ldp_lcd_device = {
217 .name = "panel-dpi",
218 .id = 0,
219 .dev.platform_data = &ldp_lcd_pdata,
220};
221
222static struct omap_dss_board_info ldp_dss_data = {
223 .default_display_name = "lcd",
224};
225
226static void __init ldp_display_init(void)
227{
228 int r;
229
230 static struct gpio gpios[] __initdata = {
231 {LCD_PANEL_RESET_GPIO, GPIOF_OUT_INIT_HIGH, "LCD RESET"},
232 {LCD_PANEL_QVGA_GPIO, GPIOF_OUT_INIT_HIGH, "LCD QVGA"},
233 };
234
235 r = gpio_request_array(gpios, ARRAY_SIZE(gpios));
236 if (r) {
237 pr_err("Cannot request LCD GPIOs, error %d\n", r);
238 return;
239 }
240
241 omap_display_init(&ldp_dss_data);
242}
243
244static int ldp_twl_gpio_setup(struct device *dev, unsigned gpio, unsigned ngpio)
245{
246 int res;
247
248 /* LCD enable GPIO */
249 ldp_lcd_pdata.enable_gpio = gpio + 7;
250
251 /* Backlight enable GPIO */
252 ldp_lcd_pdata.backlight_gpio = gpio + 15;
253
254 res = platform_device_register(&ldp_lcd_device);
255 if (res)
256 pr_err("Unable to register LCD: %d\n", res);
257
258 return 0;
259}
260
261static struct twl4030_gpio_platform_data ldp_gpio_data = {
262 .setup = ldp_twl_gpio_setup,
263};
264
265static struct regulator_consumer_supply ldp_vmmc1_supply[] = {
266 REGULATOR_SUPPLY("vmmc", "omap_hsmmc.0"),
267};
268
269/* VMMC1 for MMC1 pins CMD, CLK, DAT0..DAT3 (20 mA, plus card == max 220 mA) */
270static struct regulator_init_data ldp_vmmc1 = {
271 .constraints = {
272 .min_uV = 1850000,
273 .max_uV = 3150000,
274 .valid_modes_mask = REGULATOR_MODE_NORMAL
275 | REGULATOR_MODE_STANDBY,
276 .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE
277 | REGULATOR_CHANGE_MODE
278 | REGULATOR_CHANGE_STATUS,
279 },
280 .num_consumer_supplies = ARRAY_SIZE(ldp_vmmc1_supply),
281 .consumer_supplies = ldp_vmmc1_supply,
282};
283
284/* ads7846 on SPI */
285static struct regulator_consumer_supply ldp_vaux1_supplies[] = {
286 REGULATOR_SUPPLY("vcc", "spi1.0"),
287};
288
289/* VAUX1 */
290static struct regulator_init_data ldp_vaux1 = {
291 .constraints = {
292 .min_uV = 3000000,
293 .max_uV = 3000000,
294 .apply_uV = true,
295 .valid_modes_mask = REGULATOR_MODE_NORMAL
296 | REGULATOR_MODE_STANDBY,
297 .valid_ops_mask = REGULATOR_CHANGE_MODE
298 | REGULATOR_CHANGE_STATUS,
299 },
300 .num_consumer_supplies = ARRAY_SIZE(ldp_vaux1_supplies),
301 .consumer_supplies = ldp_vaux1_supplies,
302};
303
304static struct regulator_consumer_supply ldp_vpll2_supplies[] = {
305 REGULATOR_SUPPLY("vdds_dsi", "omapdss"),
306 REGULATOR_SUPPLY("vdds_dsi", "omapdss_dpi.0"),
307 REGULATOR_SUPPLY("vdds_dsi", "omapdss_dsi.0"),
308};
309
310static struct regulator_init_data ldp_vpll2 = {
311 .constraints = {
312 .name = "VDVI",
313 .min_uV = 1800000,
314 .max_uV = 1800000,
315 .apply_uV = true,
316 .valid_modes_mask = REGULATOR_MODE_NORMAL
317 | REGULATOR_MODE_STANDBY,
318 .valid_ops_mask = REGULATOR_CHANGE_MODE
319 | REGULATOR_CHANGE_STATUS,
320 },
321 .num_consumer_supplies = ARRAY_SIZE(ldp_vpll2_supplies),
322 .consumer_supplies = ldp_vpll2_supplies,
323};
324
325static struct twl4030_platform_data ldp_twldata = {
326 /* platform_data for children goes here */
327 .vmmc1 = &ldp_vmmc1,
328 .vaux1 = &ldp_vaux1,
329 .vpll2 = &ldp_vpll2,
330 .gpio = &ldp_gpio_data,
331 .keypad = &ldp_kp_twl4030_data,
332};
333
334static int __init omap_i2c_init(void)
335{
336 omap3_pmic_get_config(&ldp_twldata,
337 TWL_COMMON_PDATA_USB | TWL_COMMON_PDATA_MADC, 0);
338 omap3_pmic_init("twl4030", &ldp_twldata);
339 omap_register_i2c_bus(2, 400, NULL, 0);
340 omap_register_i2c_bus(3, 400, NULL, 0);
341 return 0;
342}
343
344static struct omap2_hsmmc_info mmc[] __initdata = {
345 {
346 .mmc = 1,
347 .caps = MMC_CAP_4_BIT_DATA,
348 .gpio_cd = -EINVAL,
349 .gpio_wp = -EINVAL,
350 },
351 {} /* Terminator */
352};
353
354static struct platform_device *ldp_devices[] __initdata = {
355 &ldp_gpio_keys_device,
356};
357
358#ifdef CONFIG_OMAP_MUX
359static struct omap_board_mux board_mux[] __initdata = {
360 { .reg_offset = OMAP_MUX_TERMINATOR },
361};
362#endif
363
364static struct mtd_partition ldp_nand_partitions[] = {
365 /* All the partition sizes are listed in terms of NAND block size */
366 {
367 .name = "X-Loader-NAND",
368 .offset = 0,
369 .size = 4 * (64 * 2048), /* 512KB, 0x80000 */
370 .mask_flags = MTD_WRITEABLE, /* force read-only */
371 },
372 {
373 .name = "U-Boot-NAND",
374 .offset = MTDPART_OFS_APPEND, /* Offset = 0x80000 */
375 .size = 10 * (64 * 2048), /* 1.25MB, 0x140000 */
376 .mask_flags = MTD_WRITEABLE, /* force read-only */
377 },
378 {
379 .name = "Boot Env-NAND",
380 .offset = MTDPART_OFS_APPEND, /* Offset = 0x1c0000 */
381 .size = 2 * (64 * 2048), /* 256KB, 0x40000 */
382 },
383 {
384 .name = "Kernel-NAND",
385 .offset = MTDPART_OFS_APPEND, /* Offset = 0x0200000*/
386 .size = 240 * (64 * 2048), /* 30M, 0x1E00000 */
387 },
388 {
389 .name = "File System - NAND",
390 .offset = MTDPART_OFS_APPEND, /* Offset = 0x2000000 */
391 .size = MTDPART_SIZ_FULL, /* 96MB, 0x6000000 */
392 },
393
394};
395
396static struct regulator_consumer_supply dummy_supplies[] = {
397 REGULATOR_SUPPLY("vddvario", "smsc911x.0"),
398 REGULATOR_SUPPLY("vdd33a", "smsc911x.0"),
399};
400
401static void __init omap_ldp_init(void)
402{
403 regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies));
404 omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
405 ldp_init_smsc911x();
406 omap_i2c_init();
407 platform_add_devices(ldp_devices, ARRAY_SIZE(ldp_devices));
408 omap_ads7846_init(1, 54, 310, NULL);
409 omap_serial_init();
410 omap_sdrc_init(NULL, NULL);
411 usb_bind_phy("musb-hdrc.0.auto", 0, "twl4030_usb");
412 usb_musb_init(NULL);
413 board_nand_init(ldp_nand_partitions, ARRAY_SIZE(ldp_nand_partitions),
414 0, 0, nand_default_timings);
415
416 omap_hsmmc_init(mmc);
417 ldp_display_init();
418}
419
420MACHINE_START(OMAP_LDP, "OMAP LDP board")
421 .atag_offset = 0x100,
422 .reserve = omap_reserve,
423 .map_io = omap3_map_io,
424 .init_early = omap3430_init_early,
425 .init_irq = omap3_init_irq,
426 .init_machine = omap_ldp_init,
427 .init_late = omap3430_init_late,
428 .init_time = omap_init_time,
429 .restart = omap3xxx_restart,
430MACHINE_END