aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2
diff options
context:
space:
mode:
authorTony Lindgren <tony@atomide.com>2015-03-16 19:56:58 -0400
committerTony Lindgren <tony@atomide.com>2015-03-16 19:56:58 -0400
commit35cc73dae6374919affa64ba3092b6a1801c0943 (patch)
treee7e78890ccb1fdc9acef3f2c489f5dbfaf71a45d /arch/arm/mach-omap2
parentc517d838eb7d07bbe9507871fab3931deccff539 (diff)
ARM: OMAP3: Remove legacy support for EMA-Tech Stalker board
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. Also looks like this board is no longer listed on ema-tech.com product page at: http://ema-tech.com/en/categories.html Cc: Jason Lam <lzg@ema-tech.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'arch/arm/mach-omap2')
-rw-r--r--arch/arm/mach-omap2/Kconfig6
-rw-r--r--arch/arm/mach-omap2/Makefile2
-rw-r--r--arch/arm/mach-omap2/board-omap3stalker.c433
3 files changed, 0 insertions, 441 deletions
diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig
index 2b8e47788062..88e3eaf7cabf 100644
--- a/arch/arm/mach-omap2/Kconfig
+++ b/arch/arm/mach-omap2/Kconfig
@@ -260,12 +260,6 @@ config MACH_CM_T35
260config MACH_CM_T3730 260config MACH_CM_T3730
261 bool 261 bool
262 262
263config MACH_SBC3530
264 bool "OMAP3 SBC STALKER board"
265 depends on ARCH_OMAP3
266 default y
267 select OMAP_PACKAGE_CUS
268
269config OMAP3_SDRC_AC_TIMING 263config OMAP3_SDRC_AC_TIMING
270 bool "Enable SDRC AC timing register changes" 264 bool "Enable SDRC AC timing register changes"
271 depends on ARCH_OMAP3 265 depends on ARCH_OMAP3
diff --git a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
index b83f18fcec9b..10b9563279b6 100644
--- a/arch/arm/mach-omap2/Makefile
+++ b/arch/arm/mach-omap2/Makefile
@@ -256,8 +256,6 @@ obj-$(CONFIG_MACH_NOKIA_RX51) += board-rx51-video.o
256obj-$(CONFIG_MACH_CM_T35) += board-cm-t35.o 256obj-$(CONFIG_MACH_CM_T35) += board-cm-t35.o
257obj-$(CONFIG_MACH_TOUCHBOOK) += board-omap3touchbook.o 257obj-$(CONFIG_MACH_TOUCHBOOK) += board-omap3touchbook.o
258 258
259obj-$(CONFIG_MACH_SBC3530) += board-omap3stalker.o
260
261# Platform specific device init code 259# Platform specific device init code
262 260
263omap-flash-$(CONFIG_MTD_NAND_OMAP2) := board-flash.o 261omap-flash-$(CONFIG_MTD_NAND_OMAP2) := board-flash.o
diff --git a/arch/arm/mach-omap2/board-omap3stalker.c b/arch/arm/mach-omap2/board-omap3stalker.c
deleted file mode 100644
index 6311f4b1ee44..000000000000
--- a/arch/arm/mach-omap2/board-omap3stalker.c
+++ /dev/null
@@ -1,433 +0,0 @@
1/*
2 * linux/arch/arm/mach-omap2/board-omap3evm.c
3 *
4 * Copyright (C) 2008 Guangzhou EMA-Tech
5 *
6 * Modified from mach-omap2/board-omap3evm.c
7 *
8 * Initial code: Syed Mohammed Khasim
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/regulator/fixed.h>
28#include <linux/regulator/machine.h>
29#include <linux/i2c/twl.h>
30#include <linux/mmc/host.h>
31#include <linux/input/matrix_keypad.h>
32#include <linux/spi/spi.h>
33#include <linux/interrupt.h>
34#include <linux/smsc911x.h>
35#include <linux/platform_data/at24.h>
36#include <linux/usb/phy.h>
37
38#include <asm/mach-types.h>
39#include <asm/mach/arch.h>
40#include <asm/mach/map.h>
41#include <asm/mach/flash.h>
42
43#include "common.h"
44#include "gpmc.h"
45#include <linux/platform_data/mtd-nand-omap2.h>
46#include <video/omapdss.h>
47#include <video/omap-panel-data.h>
48
49#include <linux/platform_data/spi-omap2-mcspi.h>
50
51#include "sdram-micron-mt46h32m32lf-6.h"
52#include "mux.h"
53#include "hsmmc.h"
54#include "common-board-devices.h"
55
56#if defined(CONFIG_SMSC911X) || defined(CONFIG_SMSC911X_MODULE)
57#include "gpmc-smsc911x.h"
58
59#define OMAP3STALKER_ETHR_START 0x2c000000
60#define OMAP3STALKER_ETHR_SIZE 1024
61#define OMAP3STALKER_ETHR_GPIO_IRQ 19
62#define OMAP3STALKER_SMC911X_CS 5
63
64static struct omap_smsc911x_platform_data smsc911x_cfg = {
65 .cs = OMAP3STALKER_SMC911X_CS,
66 .gpio_irq = OMAP3STALKER_ETHR_GPIO_IRQ,
67 .gpio_reset = -EINVAL,
68 .flags = (SMSC911X_USE_32BIT | SMSC911X_SAVE_MAC_ADDRESS),
69};
70
71static inline void __init omap3stalker_init_eth(void)
72{
73 omap_mux_init_gpio(19, OMAP_PIN_INPUT_PULLUP);
74 gpmc_smsc911x_init(&smsc911x_cfg);
75}
76
77#else
78static inline void __init omap3stalker_init_eth(void)
79{
80 return;
81}
82#endif
83
84/*
85 * OMAP3 DSS control signals
86 */
87
88#define DSS_ENABLE_GPIO 199
89#define LCD_PANEL_BKLIGHT_GPIO 210
90#define ENABLE_VPLL2_DEV_GRP 0xE0
91
92static void __init omap3_stalker_display_init(void)
93{
94 return;
95}
96static struct connector_dvi_platform_data omap3stalker_dvi_connector_pdata = {
97 .name = "dvi",
98 .source = "tfp410.0",
99 .i2c_bus_num = -1,
100};
101
102static struct platform_device omap3stalker_dvi_connector_device = {
103 .name = "connector-dvi",
104 .id = 0,
105 .dev.platform_data = &omap3stalker_dvi_connector_pdata,
106};
107
108static struct encoder_tfp410_platform_data omap3stalker_tfp410_pdata = {
109 .name = "tfp410.0",
110 .source = "dpi.0",
111 .data_lines = 24,
112 .power_down_gpio = DSS_ENABLE_GPIO,
113};
114
115static struct platform_device omap3stalker_tfp410_device = {
116 .name = "tfp410",
117 .id = 0,
118 .dev.platform_data = &omap3stalker_tfp410_pdata,
119};
120
121static struct connector_atv_platform_data omap3stalker_tv_pdata = {
122 .name = "tv",
123 .source = "venc.0",
124 .connector_type = OMAP_DSS_VENC_TYPE_COMPOSITE,
125 .invert_polarity = false,
126};
127
128static struct platform_device omap3stalker_tv_connector_device = {
129 .name = "connector-analog-tv",
130 .id = 0,
131 .dev.platform_data = &omap3stalker_tv_pdata,
132};
133
134static struct omap_dss_board_info omap3_stalker_dss_data = {
135 .default_display_name = "dvi",
136};
137
138static struct regulator_consumer_supply omap3stalker_vmmc1_supply[] = {
139 REGULATOR_SUPPLY("vmmc", "omap_hsmmc.0"),
140};
141
142static struct regulator_consumer_supply omap3stalker_vsim_supply[] = {
143 REGULATOR_SUPPLY("vmmc_aux", "omap_hsmmc.0"),
144};
145
146/* VMMC1 for MMC1 pins CMD, CLK, DAT0..DAT3 (20 mA, plus card == max 220 mA) */
147static struct regulator_init_data omap3stalker_vmmc1 = {
148 .constraints = {
149 .min_uV = 1850000,
150 .max_uV = 3150000,
151 .valid_modes_mask = REGULATOR_MODE_NORMAL
152 | REGULATOR_MODE_STANDBY,
153 .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE
154 | REGULATOR_CHANGE_MODE | REGULATOR_CHANGE_STATUS,
155 },
156 .num_consumer_supplies = ARRAY_SIZE(omap3stalker_vmmc1_supply),
157 .consumer_supplies = omap3stalker_vmmc1_supply,
158};
159
160/* VSIM for MMC1 pins DAT4..DAT7 (2 mA, plus card == max 50 mA) */
161static struct regulator_init_data omap3stalker_vsim = {
162 .constraints = {
163 .min_uV = 1800000,
164 .max_uV = 3000000,
165 .valid_modes_mask = REGULATOR_MODE_NORMAL
166 | REGULATOR_MODE_STANDBY,
167 .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE
168 | REGULATOR_CHANGE_MODE | REGULATOR_CHANGE_STATUS,
169 },
170 .num_consumer_supplies = ARRAY_SIZE(omap3stalker_vsim_supply),
171 .consumer_supplies = omap3stalker_vsim_supply,
172};
173
174static struct omap2_hsmmc_info mmc[] = {
175 {
176 .mmc = 1,
177 .caps = MMC_CAP_4_BIT_DATA,
178 .gpio_cd = -EINVAL,
179 .gpio_wp = 23,
180 .deferred = true,
181 },
182 {} /* Terminator */
183};
184
185static struct gpio_keys_button gpio_buttons[] = {
186 {
187 .code = BTN_EXTRA,
188 .gpio = 18,
189 .desc = "user",
190 .wakeup = 1,
191 },
192};
193
194static struct gpio_keys_platform_data gpio_key_info = {
195 .buttons = gpio_buttons,
196 .nbuttons = ARRAY_SIZE(gpio_buttons),
197};
198
199static struct platform_device keys_gpio = {
200 .name = "gpio-keys",
201 .id = -1,
202 .dev = {
203 .platform_data = &gpio_key_info,
204 },
205};
206
207static struct gpio_led gpio_leds[] = {
208 {
209 .name = "stalker:D8:usr0",
210 .default_trigger = "default-on",
211 .gpio = 126,
212 },
213 {
214 .name = "stalker:D9:usr1",
215 .default_trigger = "default-on",
216 .gpio = 127,
217 },
218 {
219 .name = "stalker:D3:mmc0",
220 .gpio = -EINVAL, /* gets replaced */
221 .active_low = true,
222 .default_trigger = "mmc0",
223 },
224 {
225 .name = "stalker:D4:heartbeat",
226 .gpio = -EINVAL, /* gets replaced */
227 .active_low = true,
228 .default_trigger = "heartbeat",
229 },
230};
231
232static struct gpio_led_platform_data gpio_led_info = {
233 .leds = gpio_leds,
234 .num_leds = ARRAY_SIZE(gpio_leds),
235};
236
237static struct platform_device leds_gpio = {
238 .name = "leds-gpio",
239 .id = -1,
240 .dev = {
241 .platform_data = &gpio_led_info,
242 },
243};
244
245static int
246omap3stalker_twl_gpio_setup(struct device *dev,
247 unsigned gpio, unsigned ngpio)
248{
249 /* gpio + 0 is "mmc0_cd" (input/IRQ) */
250 mmc[0].gpio_cd = gpio + 0;
251 omap_hsmmc_late_init(mmc);
252
253 /*
254 * Most GPIOs are for USB OTG. Some are mostly sent to
255 * the P2 connector; notably LEDA for the LCD backlight.
256 */
257
258 /* TWL4030_GPIO_MAX + 0 == ledA, LCD Backlight control */
259 gpio_request_one(gpio + TWL4030_GPIO_MAX, GPIOF_OUT_INIT_LOW,
260 "EN_LCD_BKL");
261
262 /* gpio + 7 == DVI Enable */
263 gpio_request_one(gpio + 7, GPIOF_OUT_INIT_LOW, "EN_DVI");
264
265 /* TWL4030_GPIO_MAX + 1 == ledB (out, mmc0) */
266 gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1;
267 /* GPIO + 13 == ledsync (out, heartbeat) */
268 gpio_leds[3].gpio = gpio + 13;
269
270 platform_device_register(&leds_gpio);
271 return 0;
272}
273
274static struct twl4030_gpio_platform_data omap3stalker_gpio_data = {
275 .use_leds = true,
276 .setup = omap3stalker_twl_gpio_setup,
277};
278
279static uint32_t board_keymap[] = {
280 KEY(0, 0, KEY_LEFT),
281 KEY(0, 1, KEY_DOWN),
282 KEY(0, 2, KEY_ENTER),
283 KEY(0, 3, KEY_M),
284
285 KEY(1, 0, KEY_RIGHT),
286 KEY(1, 1, KEY_UP),
287 KEY(1, 2, KEY_I),
288 KEY(1, 3, KEY_N),
289
290 KEY(2, 0, KEY_A),
291 KEY(2, 1, KEY_E),
292 KEY(2, 2, KEY_J),
293 KEY(2, 3, KEY_O),
294
295 KEY(3, 0, KEY_B),
296 KEY(3, 1, KEY_F),
297 KEY(3, 2, KEY_K),
298 KEY(3, 3, KEY_P)
299};
300
301static struct matrix_keymap_data board_map_data = {
302 .keymap = board_keymap,
303 .keymap_size = ARRAY_SIZE(board_keymap),
304};
305
306static struct twl4030_keypad_data omap3stalker_kp_data = {
307 .keymap_data = &board_map_data,
308 .rows = 4,
309 .cols = 4,
310 .rep = 1,
311};
312
313static struct twl4030_platform_data omap3stalker_twldata = {
314 /* platform_data for children goes here */
315 .keypad = &omap3stalker_kp_data,
316 .gpio = &omap3stalker_gpio_data,
317 .vmmc1 = &omap3stalker_vmmc1,
318 .vsim = &omap3stalker_vsim,
319};
320
321static struct at24_platform_data fram_info = {
322 .byte_len = (64 * 1024) / 8,
323 .page_size = 8192,
324 .flags = AT24_FLAG_ADDR16 | AT24_FLAG_IRUGO,
325};
326
327static struct i2c_board_info __initdata omap3stalker_i2c_boardinfo3[] = {
328 {
329 I2C_BOARD_INFO("24c64", 0x50),
330 .flags = I2C_CLIENT_WAKE,
331 .platform_data = &fram_info,
332 },
333};
334
335static int __init omap3_stalker_i2c_init(void)
336{
337 omap3_pmic_get_config(&omap3stalker_twldata,
338 TWL_COMMON_PDATA_USB | TWL_COMMON_PDATA_MADC |
339 TWL_COMMON_PDATA_AUDIO,
340 TWL_COMMON_REGULATOR_VDAC | TWL_COMMON_REGULATOR_VPLL2);
341
342 omap3stalker_twldata.vdac->constraints.apply_uV = true;
343 omap3stalker_twldata.vpll2->constraints.apply_uV = true;
344 omap3stalker_twldata.vpll2->constraints.name = "VDVI";
345
346 omap3_pmic_init("twl4030", &omap3stalker_twldata);
347 omap_register_i2c_bus(2, 400, NULL, 0);
348 omap_register_i2c_bus(3, 400, omap3stalker_i2c_boardinfo3,
349 ARRAY_SIZE(omap3stalker_i2c_boardinfo3));
350 return 0;
351}
352
353#define OMAP3_STALKER_TS_GPIO 175
354
355static struct usbhs_phy_data phy_data[] __initdata = {
356 {
357 .port = 2,
358 .reset_gpio = 21,
359 .vcc_gpio = -EINVAL,
360 },
361};
362
363static struct platform_device *omap3_stalker_devices[] __initdata = {
364 &keys_gpio,
365 &omap3stalker_tfp410_device,
366 &omap3stalker_dvi_connector_device,
367 &omap3stalker_tv_connector_device,
368};
369
370static struct usbhs_omap_platform_data usbhs_bdata __initdata = {
371 .port_mode[1] = OMAP_EHCI_PORT_MODE_PHY,
372};
373
374#ifdef CONFIG_OMAP_MUX
375static struct omap_board_mux board_mux[] __initdata = {
376 OMAP3_MUX(SYS_NIRQ, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP |
377 OMAP_PIN_OFF_INPUT_PULLUP | OMAP_PIN_OFF_WAKEUPENABLE),
378 OMAP3_MUX(MCSPI1_CS1, OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLUP |
379 OMAP_PIN_OFF_INPUT_PULLUP | OMAP_PIN_OFF_WAKEUPENABLE),
380 {.reg_offset = OMAP_MUX_TERMINATOR},
381};
382#endif
383
384static struct regulator_consumer_supply dummy_supplies[] = {
385 REGULATOR_SUPPLY("vddvario", "smsc911x.0"),
386 REGULATOR_SUPPLY("vdd33a", "smsc911x.0"),
387};
388
389static void __init omap3_stalker_init(void)
390{
391 regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies));
392 omap3_mux_init(board_mux, OMAP_PACKAGE_CUS);
393
394 omap_mux_init_gpio(23, OMAP_PIN_INPUT);
395 omap_hsmmc_init(mmc);
396
397 omap3_stalker_i2c_init();
398
399 platform_add_devices(omap3_stalker_devices,
400 ARRAY_SIZE(omap3_stalker_devices));
401
402 omap_display_init(&omap3_stalker_dss_data);
403
404 omap_serial_init();
405 omap_sdrc_init(mt46h32m32lf6_sdrc_params, NULL);
406 usb_bind_phy("musb-hdrc.0.auto", 0, "twl4030_usb");
407 usb_musb_init(NULL);
408
409 usbhs_init_phys(phy_data, ARRAY_SIZE(phy_data));
410 usbhs_init(&usbhs_bdata);
411 omap_ads7846_init(1, OMAP3_STALKER_TS_GPIO, 310, NULL);
412
413 omap_mux_init_gpio(21, OMAP_PIN_OUTPUT);
414 omap_mux_init_gpio(18, OMAP_PIN_INPUT_PULLUP);
415
416 omap3stalker_init_eth();
417 omap3_stalker_display_init();
418/* Ensure SDRC pins are mux'd for self-refresh */
419 omap_mux_init_signal("sdr_cke0", OMAP_PIN_OUTPUT);
420 omap_mux_init_signal("sdr_cke1", OMAP_PIN_OUTPUT);
421}
422
423MACHINE_START(SBC3530, "OMAP3 STALKER")
424 /* Maintainer: Jason Lam -lzg@ema-tech.com */
425 .atag_offset = 0x100,
426 .map_io = omap3_map_io,
427 .init_early = omap35xx_init_early,
428 .init_irq = omap3_init_irq,
429 .init_machine = omap3_stalker_init,
430 .init_late = omap35xx_init_late,
431 .init_time = omap3_secure_sync32k_timer_init,
432 .restart = omap3xxx_restart,
433MACHINE_END