aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2/board-omap3logic.c
diff options
context:
space:
mode:
authorTony Lindgren <tony@atomide.com>2015-07-13 03:51:02 -0400
committerTony Lindgren <tony@atomide.com>2015-07-13 03:51:02 -0400
commitd0796c4cd91dc9a329e48d2ff804532ed0b4c676 (patch)
tree20f02faf08e030a10921d82cacb814b8be3aaddf /arch/arm/mach-omap2/board-omap3logic.c
parentbc0195aad0daa2ad5b0d76cce22b167bc3435590 (diff)
ARM: OMAP2+: Remove legacy booting support for LogicPD Torpedo
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. This board has support for device tree based booting, and we've been printing warnings about the legacy booting being deprecated for a few merge cycles now. Let's attempt to remove the legacy booting for it. The reason for removing the legacy booting support now rather than later is we can simply revert this patch if necessary if we run into some unexpected issues that are not trivial to fix for the device tree based booting. Cc: Tim Nordell <tim.nordell@logicpd.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
Diffstat (limited to 'arch/arm/mach-omap2/board-omap3logic.c')
-rw-r--r--arch/arm/mach-omap2/board-omap3logic.c249
1 files changed, 0 insertions, 249 deletions
diff --git a/arch/arm/mach-omap2/board-omap3logic.c b/arch/arm/mach-omap2/board-omap3logic.c
deleted file mode 100644
index 6049f60a8813..000000000000
--- a/arch/arm/mach-omap2/board-omap3logic.c
+++ /dev/null
@@ -1,249 +0,0 @@
1/*
2 * linux/arch/arm/mach-omap2/board-omap3logic.c
3 *
4 * Copyright (C) 2010 Li-Pro.Net
5 * Stephan Linz <linz@li-pro.net>
6 *
7 * Copyright (C) 2010-2012 Logic Product Development, Inc.
8 * Peter Barada <peter.barada@logicpd.com>
9 * Ashwin BIhari <ashwin.bihari@logicpd.com>
10 *
11 * Modified from Beagle, EVM, and RX51
12 *
13 * This program is free software; you can redistribute it and/or modify
14 * it under the terms of the GNU General Public License version 2 as
15 * published by the Free Software Foundation.
16 */
17
18#include <linux/kernel.h>
19#include <linux/init.h>
20#include <linux/platform_device.h>
21#include <linux/delay.h>
22#include <linux/err.h>
23#include <linux/clk.h>
24#include <linux/io.h>
25#include <linux/gpio.h>
26
27#include <linux/regulator/fixed.h>
28#include <linux/regulator/machine.h>
29
30#include <linux/i2c/twl.h>
31#include <linux/mmc/host.h>
32#include <linux/usb/phy.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 "mux.h"
40#include "hsmmc.h"
41#include "control.h"
42#include "common-board-devices.h"
43#include "gpmc.h"
44#include "gpmc-smsc911x.h"
45
46#define OMAP3LOGIC_SMSC911X_CS 1
47
48#define OMAP3530_LV_SOM_MMC_GPIO_CD 110
49#define OMAP3530_LV_SOM_MMC_GPIO_WP 126
50#define OMAP3530_LV_SOM_SMSC911X_GPIO_IRQ 152
51
52#define OMAP3_TORPEDO_MMC_GPIO_CD 127
53#define OMAP3_TORPEDO_SMSC911X_GPIO_IRQ 129
54
55static struct regulator_consumer_supply omap3logic_vmmc1_supply[] = {
56 REGULATOR_SUPPLY("vmmc", "omap_hsmmc.0"),
57};
58
59/* VMMC1 for MMC1 pins CMD, CLK, DAT0..DAT3 (20 mA, plus card == max 220 mA) */
60static struct regulator_init_data omap3logic_vmmc1 = {
61 .constraints = {
62 .name = "VMMC1",
63 .min_uV = 1850000,
64 .max_uV = 3150000,
65 .valid_modes_mask = REGULATOR_MODE_NORMAL
66 | REGULATOR_MODE_STANDBY,
67 .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE
68 | REGULATOR_CHANGE_MODE
69 | REGULATOR_CHANGE_STATUS,
70 },
71 .num_consumer_supplies = ARRAY_SIZE(omap3logic_vmmc1_supply),
72 .consumer_supplies = omap3logic_vmmc1_supply,
73};
74
75static struct twl4030_gpio_platform_data omap3logic_gpio_data = {
76 .use_leds = true,
77 .pullups = BIT(1),
78 .pulldowns = BIT(2) | BIT(6) | BIT(7) | BIT(8)
79 | BIT(13) | BIT(15) | BIT(16) | BIT(17),
80};
81
82static struct twl4030_usb_data omap3logic_usb_data = {
83 .usb_mode = T2_USB_MODE_ULPI,
84};
85
86
87static struct twl4030_platform_data omap3logic_twldata = {
88 /* platform_data for children goes here */
89 .gpio = &omap3logic_gpio_data,
90 .vmmc1 = &omap3logic_vmmc1,
91 .usb = &omap3logic_usb_data,
92};
93
94static int __init omap3logic_i2c_init(void)
95{
96 omap3_pmic_init("twl4030", &omap3logic_twldata);
97 return 0;
98}
99
100static struct omap2_hsmmc_info __initdata board_mmc_info[] = {
101 {
102 .name = "external",
103 .mmc = 1,
104 .caps = MMC_CAP_4_BIT_DATA,
105 .gpio_cd = -EINVAL,
106 .gpio_wp = -EINVAL,
107 },
108 {} /* Terminator */
109};
110
111static void __init board_mmc_init(void)
112{
113 if (machine_is_omap3530_lv_som()) {
114 /* OMAP3530 LV SOM board */
115 board_mmc_info[0].gpio_cd = OMAP3530_LV_SOM_MMC_GPIO_CD;
116 board_mmc_info[0].gpio_wp = OMAP3530_LV_SOM_MMC_GPIO_WP;
117 omap_mux_init_signal("gpio_110", OMAP_PIN_OUTPUT);
118 omap_mux_init_signal("gpio_126", OMAP_PIN_OUTPUT);
119 } else if (machine_is_omap3_torpedo()) {
120 /* OMAP3 Torpedo board */
121 board_mmc_info[0].gpio_cd = OMAP3_TORPEDO_MMC_GPIO_CD;
122 omap_mux_init_signal("gpio_127", OMAP_PIN_OUTPUT);
123 } else {
124 /* unsupported board */
125 printk(KERN_ERR "%s(): unknown machine type\n", __func__);
126 return;
127 }
128
129 omap_hsmmc_init(board_mmc_info);
130}
131
132static struct omap_smsc911x_platform_data __initdata board_smsc911x_data = {
133 .cs = OMAP3LOGIC_SMSC911X_CS,
134 .gpio_irq = -EINVAL,
135 .gpio_reset = -EINVAL,
136};
137
138/* TODO/FIXME (comment by Peter Barada, LogicPD):
139 * Fix the PBIAS voltage for Torpedo MMC1 pins that
140 * are used for other needs (IRQs, etc). */
141static void omap3torpedo_fix_pbias_voltage(void)
142{
143 u16 control_pbias_offset = OMAP343X_CONTROL_PBIAS_LITE;
144 u32 reg;
145
146 if (machine_is_omap3_torpedo())
147 {
148 /* Set the bias for the pin */
149 reg = omap_ctrl_readl(control_pbias_offset);
150
151 reg &= ~OMAP343X_PBIASLITEPWRDNZ1;
152 omap_ctrl_writel(reg, control_pbias_offset);
153
154 /* 100ms delay required for PBIAS configuration */
155 msleep(100);
156
157 reg |= OMAP343X_PBIASLITEVMODE1;
158 reg |= OMAP343X_PBIASLITEPWRDNZ1;
159 omap_ctrl_writel(reg | 0x300, control_pbias_offset);
160 }
161}
162
163static inline void __init board_smsc911x_init(void)
164{
165 if (machine_is_omap3530_lv_som()) {
166 /* OMAP3530 LV SOM board */
167 board_smsc911x_data.gpio_irq =
168 OMAP3530_LV_SOM_SMSC911X_GPIO_IRQ;
169 omap_mux_init_signal("gpio_152", OMAP_PIN_INPUT);
170 } else if (machine_is_omap3_torpedo()) {
171 /* OMAP3 Torpedo board */
172 board_smsc911x_data.gpio_irq = OMAP3_TORPEDO_SMSC911X_GPIO_IRQ;
173 omap_mux_init_signal("gpio_129", OMAP_PIN_INPUT);
174 } else {
175 /* unsupported board */
176 printk(KERN_ERR "%s(): unknown machine type\n", __func__);
177 return;
178 }
179
180 gpmc_smsc911x_init(&board_smsc911x_data);
181}
182
183#ifdef CONFIG_OMAP_MUX
184static struct omap_board_mux board_mux[] __initdata = {
185 /* mUSB */
186 OMAP3_MUX(HSUSB0_CLK, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
187 OMAP3_MUX(HSUSB0_STP, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
188 OMAP3_MUX(HSUSB0_DIR, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
189 OMAP3_MUX(HSUSB0_NXT, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
190 OMAP3_MUX(HSUSB0_DATA0, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
191 OMAP3_MUX(HSUSB0_DATA1, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
192 OMAP3_MUX(HSUSB0_DATA2, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
193 OMAP3_MUX(HSUSB0_DATA3, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
194 OMAP3_MUX(HSUSB0_DATA4, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
195 OMAP3_MUX(HSUSB0_DATA5, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
196 OMAP3_MUX(HSUSB0_DATA6, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
197 OMAP3_MUX(HSUSB0_DATA7, OMAP_MUX_MODE0 | OMAP_PIN_INPUT),
198
199 { .reg_offset = OMAP_MUX_TERMINATOR },
200};
201#endif
202
203static struct regulator_consumer_supply dummy_supplies[] = {
204 REGULATOR_SUPPLY("vddvario", "smsc911x.0"),
205 REGULATOR_SUPPLY("vdd33a", "smsc911x.0"),
206};
207
208static void __init omap3logic_init(void)
209{
210 regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies));
211 omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
212 omap3torpedo_fix_pbias_voltage();
213 omap3logic_i2c_init();
214 omap_serial_init();
215 omap_sdrc_init(NULL, NULL);
216 board_mmc_init();
217 board_smsc911x_init();
218
219 usb_bind_phy("musb-hdrc.0.auto", 0, "twl4030_usb");
220 usb_musb_init(NULL);
221
222 /* Ensure SDRC pins are mux'd for self-refresh */
223 omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT);
224 omap_mux_init_signal("sdrc_cke1", OMAP_PIN_OUTPUT);
225}
226
227MACHINE_START(OMAP3_TORPEDO, "Logic OMAP3 Torpedo board")
228 .atag_offset = 0x100,
229 .reserve = omap_reserve,
230 .map_io = omap3_map_io,
231 .init_early = omap35xx_init_early,
232 .init_irq = omap3_init_irq,
233 .init_machine = omap3logic_init,
234 .init_late = omap35xx_init_late,
235 .init_time = omap3_sync32k_timer_init,
236 .restart = omap3xxx_restart,
237MACHINE_END
238
239MACHINE_START(OMAP3530_LV_SOM, "OMAP Logic 3530 LV SOM board")
240 .atag_offset = 0x100,
241 .reserve = omap_reserve,
242 .map_io = omap3_map_io,
243 .init_early = omap35xx_init_early,
244 .init_irq = omap3_init_irq,
245 .init_machine = omap3logic_init,
246 .init_late = omap35xx_init_late,
247 .init_time = omap3_sync32k_timer_init,
248 .restart = omap3xxx_restart,
249MACHINE_END