Commit 57abae34c8ec0b6d86a66ea2d53589b2564a70d5

Authored by Vaibhav Bedia
1 parent 90c0ebd772
Exists in master

arm:omap:am335x: Add cpuidle related board data

Add board specific cpuidle hookup for AM335x EVM

Signed-off-by: Vaibhav Bedia <vaibhav.bedia@ti.com>

Showing 1 changed file with 49 additions and 0 deletions Inline Diff

arch/arm/mach-omap2/board-am335xevm.c
1 /* 1 /*
2 * Code for AM335X EVM. 2 * Code for AM335X EVM.
3 * 3 *
4 * Copyright (C) 2011 Texas Instruments, Inc. - http://www.ti.com/ 4 * Copyright (C) 2011 Texas Instruments, Inc. - http://www.ti.com/
5 * 5 *
6 * This program is free software; you can redistribute it and/or 6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License as 7 * modify it under the terms of the GNU General Public License as
8 * published by the Free Software Foundation version 2. 8 * published by the Free Software Foundation version 2.
9 * 9 *
10 * This program is distributed "as is" WITHOUT ANY WARRANTY of any 10 * This program is distributed "as is" WITHOUT ANY WARRANTY of any
11 * kind, whether express or implied; without even the implied warranty 11 * kind, whether express or implied; without even the implied warranty
12 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details. 13 * GNU General Public License for more details.
14 */ 14 */
15 #include <linux/kernel.h> 15 #include <linux/kernel.h>
16 #include <linux/init.h> 16 #include <linux/init.h>
17 #include <linux/i2c.h> 17 #include <linux/i2c.h>
18 #include <linux/i2c/at24.h> 18 #include <linux/i2c/at24.h>
19 #include <linux/phy.h> 19 #include <linux/phy.h>
20 #include <linux/gpio.h> 20 #include <linux/gpio.h>
21 #include <linux/spi/spi.h> 21 #include <linux/spi/spi.h>
22 #include <linux/spi/flash.h> 22 #include <linux/spi/flash.h>
23 #ifdef CONFIG_KEYBOARD_GPIO 23 #ifdef CONFIG_KEYBOARD_GPIO
24 #include <linux/gpio_keys.h> 24 #include <linux/gpio_keys.h>
25 #endif 25 #endif
26 #ifdef CONFIG_KEYBOARD_MATRIX 26 #ifdef CONFIG_KEYBOARD_MATRIX
27 #include <linux/input.h> 27 #include <linux/input.h>
28 #include <linux/input/matrix_keypad.h> 28 #include <linux/input/matrix_keypad.h>
29 #endif 29 #endif
30 #include <linux/mtd/mtd.h> 30 #include <linux/mtd/mtd.h>
31 #include <linux/mtd/nand.h> 31 #include <linux/mtd/nand.h>
32 #include <linux/mtd/partitions.h> 32 #include <linux/mtd/partitions.h>
33 #include <linux/platform_device.h> 33 #include <linux/platform_device.h>
34 #include <linux/clk.h> 34 #include <linux/clk.h>
35 #include <linux/err.h> 35 #include <linux/err.h>
36 #include <linux/wl12xx.h> 36 #include <linux/wl12xx.h>
37 #include <linux/ethtool.h> 37 #include <linux/ethtool.h>
38 #include <linux/mfd/tps65910.h> 38 #include <linux/mfd/tps65910.h>
39 39
40 /* LCD controller is similar to DA850 */ 40 /* LCD controller is similar to DA850 */
41 #include <video/da8xx-fb.h> 41 #include <video/da8xx-fb.h>
42 42
43 #include <mach/hardware.h> 43 #include <mach/hardware.h>
44 #include <mach/board-am335xevm.h> 44 #include <mach/board-am335xevm.h>
45 45
46 #include <asm/mach-types.h> 46 #include <asm/mach-types.h>
47 #include <asm/mach/arch.h> 47 #include <asm/mach/arch.h>
48 #include <asm/mach/map.h> 48 #include <asm/mach/map.h>
49 #include <asm/hardware/asp.h> 49 #include <asm/hardware/asp.h>
50 50
51 #include <plat/irqs.h> 51 #include <plat/irqs.h>
52 #include <plat/board.h> 52 #include <plat/board.h>
53 #include <plat/common.h> 53 #include <plat/common.h>
54 #include <plat/lcdc.h> 54 #include <plat/lcdc.h>
55 #include <plat/usb.h> 55 #include <plat/usb.h>
56 #include <plat/mmc.h> 56 #include <plat/mmc.h>
57 57
58 #include "board-flash.h" 58 #include "board-flash.h"
59 #include "cpuidle33xx.h"
59 #include "mux.h" 60 #include "mux.h"
60 #include "devices.h" 61 #include "devices.h"
61 #include "hsmmc.h" 62 #include "hsmmc.h"
62 63
63 /* TLK PHY IDs */ 64 /* TLK PHY IDs */
64 #define TLK110_PHY_ID 0x2000A201 65 #define TLK110_PHY_ID 0x2000A201
65 #define TLK110_PHY_MASK 0xfffffff0 66 #define TLK110_PHY_MASK 0xfffffff0
66 67
67 /* BBB PHY IDs */ 68 /* BBB PHY IDs */
68 #define BBB_PHY_ID 0x7c0f1 69 #define BBB_PHY_ID 0x7c0f1
69 #define BBB_PHY_MASK 0xfffffffe 70 #define BBB_PHY_MASK 0xfffffffe
70 71
71 /* TLK110 PHY register offsets */ 72 /* TLK110 PHY register offsets */
72 #define TLK110_COARSEGAIN_REG 0x00A3 73 #define TLK110_COARSEGAIN_REG 0x00A3
73 #define TLK110_LPFHPF_REG 0x00AC 74 #define TLK110_LPFHPF_REG 0x00AC
74 #define TLK110_SPAREANALOG_REG 0x00B9 75 #define TLK110_SPAREANALOG_REG 0x00B9
75 #define TLK110_VRCR_REG 0x00D0 76 #define TLK110_VRCR_REG 0x00D0
76 #define TLK110_SETFFE_REG 0x0107 77 #define TLK110_SETFFE_REG 0x0107
77 #define TLK110_FTSP_REG 0x0154 78 #define TLK110_FTSP_REG 0x0154
78 #define TLK110_ALFATPIDL_REG 0x002A 79 #define TLK110_ALFATPIDL_REG 0x002A
79 #define TLK110_PSCOEF21_REG 0x0096 80 #define TLK110_PSCOEF21_REG 0x0096
80 #define TLK110_PSCOEF3_REG 0x0097 81 #define TLK110_PSCOEF3_REG 0x0097
81 #define TLK110_ALFAFACTOR1_REG 0x002C 82 #define TLK110_ALFAFACTOR1_REG 0x002C
82 #define TLK110_ALFAFACTOR2_REG 0x0023 83 #define TLK110_ALFAFACTOR2_REG 0x0023
83 #define TLK110_CFGPS_REG 0x0095 84 #define TLK110_CFGPS_REG 0x0095
84 #define TLK110_FTSPTXGAIN_REG 0x0150 85 #define TLK110_FTSPTXGAIN_REG 0x0150
85 #define TLK110_SWSCR3_REG 0x000B 86 #define TLK110_SWSCR3_REG 0x000B
86 #define TLK110_SCFALLBACK_REG 0x0040 87 #define TLK110_SCFALLBACK_REG 0x0040
87 #define TLK110_PHYRCR_REG 0x001F 88 #define TLK110_PHYRCR_REG 0x001F
88 89
89 /* TLK110 register writes values */ 90 /* TLK110 register writes values */
90 #define TLK110_COARSEGAIN_VAL 0x0000 91 #define TLK110_COARSEGAIN_VAL 0x0000
91 #define TLK110_LPFHPF_VAL 0x8000 92 #define TLK110_LPFHPF_VAL 0x8000
92 #define TLK110_SPANALOG_VAL 0x0000 93 #define TLK110_SPANALOG_VAL 0x0000
93 #define TLK110_VRCR_VAL 0x0008 94 #define TLK110_VRCR_VAL 0x0008
94 #define TLK110_SETFFE_VAL 0x0605 95 #define TLK110_SETFFE_VAL 0x0605
95 #define TLK110_FTSP_VAL 0x0255 96 #define TLK110_FTSP_VAL 0x0255
96 #define TLK110_ALFATPIDL_VAL 0x7998 97 #define TLK110_ALFATPIDL_VAL 0x7998
97 #define TLK110_PSCOEF21_VAL 0x3A20 98 #define TLK110_PSCOEF21_VAL 0x3A20
98 #define TLK110_PSCOEF3_VAL 0x003F 99 #define TLK110_PSCOEF3_VAL 0x003F
99 #define TLK110_ALFACTOR1_VAL 0xFF80 100 #define TLK110_ALFACTOR1_VAL 0xFF80
100 #define TLK110_ALFACTOR2_VAL 0x021C 101 #define TLK110_ALFACTOR2_VAL 0x021C
101 #define TLK110_CFGPS_VAL 0x0000 102 #define TLK110_CFGPS_VAL 0x0000
102 #define TLK110_FTSPTXGAIN_VAL 0x6A88 103 #define TLK110_FTSPTXGAIN_VAL 0x6A88
103 #define TLK110_SWSCR3_VAL 0x0000 104 #define TLK110_SWSCR3_VAL 0x0000
104 #define TLK110_SCFALLBACK_VAL 0xC11D 105 #define TLK110_SCFALLBACK_VAL 0xC11D
105 #define TLK110_PHYRCR_VAL 0x4000 106 #define TLK110_PHYRCR_VAL 0x4000
106 107
107 #ifdef CONFIG_TLK110_WORKAROUND 108 #ifdef CONFIG_TLK110_WORKAROUND
108 #define am335x_tlk110_phy_init()\ 109 #define am335x_tlk110_phy_init()\
109 do { \ 110 do { \
110 phy_register_fixup_for_uid(TLK110_PHY_ID,\ 111 phy_register_fixup_for_uid(TLK110_PHY_ID,\
111 TLK110_PHY_MASK,\ 112 TLK110_PHY_MASK,\
112 am335x_tlk110_phy_fixup);\ 113 am335x_tlk110_phy_fixup);\
113 } while (0); 114 } while (0);
114 #else 115 #else
115 #define am335x_tlk110_phy_init() do { } while (0); 116 #define am335x_tlk110_phy_init() do { } while (0);
116 #endif 117 #endif
117 118
118 /* Convert GPIO signal to GPIO pin number */ 119 /* Convert GPIO signal to GPIO pin number */
119 #define GPIO_TO_PIN(bank, gpio) (32 * (bank) + (gpio)) 120 #define GPIO_TO_PIN(bank, gpio) (32 * (bank) + (gpio))
120 121
121 static const struct display_panel disp_panel = { 122 static const struct display_panel disp_panel = {
122 WVGA, 123 WVGA,
123 32, 124 32,
124 32, 125 32,
125 COLOR_ACTIVE, 126 COLOR_ACTIVE,
126 }; 127 };
127 128
128 static struct lcd_ctrl_config lcd_cfg = { 129 static struct lcd_ctrl_config lcd_cfg = {
129 &disp_panel, 130 &disp_panel,
130 .ac_bias = 255, 131 .ac_bias = 255,
131 .ac_bias_intrpt = 0, 132 .ac_bias_intrpt = 0,
132 .dma_burst_sz = 16, 133 .dma_burst_sz = 16,
133 .bpp = 32, 134 .bpp = 32,
134 .fdd = 0x80, 135 .fdd = 0x80,
135 .tft_alt_mode = 0, 136 .tft_alt_mode = 0,
136 .stn_565_mode = 0, 137 .stn_565_mode = 0,
137 .mono_8bit_mode = 0, 138 .mono_8bit_mode = 0,
138 .invert_line_clock = 1, 139 .invert_line_clock = 1,
139 .invert_frm_clock = 1, 140 .invert_frm_clock = 1,
140 .sync_edge = 0, 141 .sync_edge = 0,
141 .sync_ctrl = 1, 142 .sync_ctrl = 1,
142 .raster_order = 0, 143 .raster_order = 0,
143 }; 144 };
144 145
145 struct da8xx_lcdc_platform_data TFC_S9700RTWV35TR_01B_pdata = { 146 struct da8xx_lcdc_platform_data TFC_S9700RTWV35TR_01B_pdata = {
146 .manu_name = "ThreeFive", 147 .manu_name = "ThreeFive",
147 .controller_data = &lcd_cfg, 148 .controller_data = &lcd_cfg,
148 .type = "TFC_S9700RTWV35TR_01B", 149 .type = "TFC_S9700RTWV35TR_01B",
149 }; 150 };
150 151
151 /* TSc controller */ 152 /* TSc controller */
152 #include <linux/input/ti_tscadc.h> 153 #include <linux/input/ti_tscadc.h>
153 #include <linux/lis3lv02d.h> 154 #include <linux/lis3lv02d.h>
154 155
155 static struct resource tsc_resources[] = { 156 static struct resource tsc_resources[] = {
156 [0] = { 157 [0] = {
157 .start = AM33XX_TSC_BASE, 158 .start = AM33XX_TSC_BASE,
158 .end = AM33XX_TSC_BASE + SZ_8K - 1, 159 .end = AM33XX_TSC_BASE + SZ_8K - 1,
159 .flags = IORESOURCE_MEM, 160 .flags = IORESOURCE_MEM,
160 }, 161 },
161 [1] = { 162 [1] = {
162 .start = AM33XX_IRQ_ADC_GEN, 163 .start = AM33XX_IRQ_ADC_GEN,
163 .end = AM33XX_IRQ_ADC_GEN, 164 .end = AM33XX_IRQ_ADC_GEN,
164 .flags = IORESOURCE_IRQ, 165 .flags = IORESOURCE_IRQ,
165 }, 166 },
166 }; 167 };
167 168
168 static struct tsc_data am335x_touchscreen_data = { 169 static struct tsc_data am335x_touchscreen_data = {
169 .wires = 4, 170 .wires = 4,
170 .x_plate_resistance = 200, 171 .x_plate_resistance = 200,
171 }; 172 };
172 173
173 static struct platform_device tsc_device = { 174 static struct platform_device tsc_device = {
174 .name = "tsc", 175 .name = "tsc",
175 .id = -1, 176 .id = -1,
176 .dev = { 177 .dev = {
177 .platform_data = &am335x_touchscreen_data, 178 .platform_data = &am335x_touchscreen_data,
178 }, 179 },
179 .num_resources = ARRAY_SIZE(tsc_resources), 180 .num_resources = ARRAY_SIZE(tsc_resources),
180 .resource = tsc_resources, 181 .resource = tsc_resources,
181 }; 182 };
182 183
183 static u8 am335x_iis_serializer_direction1[] = { 184 static u8 am335x_iis_serializer_direction1[] = {
184 INACTIVE_MODE, INACTIVE_MODE, TX_MODE, RX_MODE, 185 INACTIVE_MODE, INACTIVE_MODE, TX_MODE, RX_MODE,
185 INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, 186 INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE,
186 INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, 187 INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE,
187 INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, 188 INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE, INACTIVE_MODE,
188 }; 189 };
189 190
190 static struct snd_platform_data am335x_evm_snd_data1 = { 191 static struct snd_platform_data am335x_evm_snd_data1 = {
191 .tx_dma_offset = 0x46400000, /* McASP1 */ 192 .tx_dma_offset = 0x46400000, /* McASP1 */
192 .rx_dma_offset = 0x46400000, 193 .rx_dma_offset = 0x46400000,
193 .op_mode = DAVINCI_MCASP_IIS_MODE, 194 .op_mode = DAVINCI_MCASP_IIS_MODE,
194 .num_serializer = ARRAY_SIZE(am335x_iis_serializer_direction1), 195 .num_serializer = ARRAY_SIZE(am335x_iis_serializer_direction1),
195 .tdm_slots = 2, 196 .tdm_slots = 2,
196 .serial_dir = am335x_iis_serializer_direction1, 197 .serial_dir = am335x_iis_serializer_direction1,
197 .asp_chan_q = EVENTQ_2, 198 .asp_chan_q = EVENTQ_2,
198 .version = MCASP_VERSION_3, 199 .version = MCASP_VERSION_3,
199 .txnumevt = 1, 200 .txnumevt = 1,
200 .rxnumevt = 1, 201 .rxnumevt = 1,
201 }; 202 };
202 203
203 static struct omap2_hsmmc_info am335x_mmc[] __initdata = { 204 static struct omap2_hsmmc_info am335x_mmc[] __initdata = {
204 { 205 {
205 .mmc = 1, 206 .mmc = 1,
206 .caps = MMC_CAP_4_BIT_DATA, 207 .caps = MMC_CAP_4_BIT_DATA,
207 .gpio_cd = GPIO_TO_PIN(0, 6), 208 .gpio_cd = GPIO_TO_PIN(0, 6),
208 .gpio_wp = GPIO_TO_PIN(3, 18), 209 .gpio_wp = GPIO_TO_PIN(3, 18),
209 .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, /* 3V3 */ 210 .ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34, /* 3V3 */
210 }, 211 },
211 { 212 {
212 .mmc = 0, /* will be set at runtime */ 213 .mmc = 0, /* will be set at runtime */
213 }, 214 },
214 { 215 {
215 .mmc = 0, /* will be set at runtime */ 216 .mmc = 0, /* will be set at runtime */
216 }, 217 },
217 {} /* Terminator */ 218 {} /* Terminator */
218 }; 219 };
219 220
220 221
221 #ifdef CONFIG_OMAP_MUX 222 #ifdef CONFIG_OMAP_MUX
222 static struct omap_board_mux board_mux[] __initdata = { 223 static struct omap_board_mux board_mux[] __initdata = {
223 AM33XX_MUX(I2C0_SDA, OMAP_MUX_MODE0 | AM33XX_SLEWCTRL_SLOW | 224 AM33XX_MUX(I2C0_SDA, OMAP_MUX_MODE0 | AM33XX_SLEWCTRL_SLOW |
224 AM33XX_INPUT_EN | AM33XX_PIN_OUTPUT), 225 AM33XX_INPUT_EN | AM33XX_PIN_OUTPUT),
225 AM33XX_MUX(I2C0_SCL, OMAP_MUX_MODE0 | AM33XX_SLEWCTRL_SLOW | 226 AM33XX_MUX(I2C0_SCL, OMAP_MUX_MODE0 | AM33XX_SLEWCTRL_SLOW |
226 AM33XX_INPUT_EN | AM33XX_PIN_OUTPUT), 227 AM33XX_INPUT_EN | AM33XX_PIN_OUTPUT),
227 { .reg_offset = OMAP_MUX_TERMINATOR }, 228 { .reg_offset = OMAP_MUX_TERMINATOR },
228 }; 229 };
229 #else 230 #else
230 #define board_mux NULL 231 #define board_mux NULL
231 #endif 232 #endif
232 233
233 /* module pin mux structure */ 234 /* module pin mux structure */
234 struct pinmux_config { 235 struct pinmux_config {
235 const char *string_name; /* signal name format */ 236 const char *string_name; /* signal name format */
236 int val; /* Options for the mux register value */ 237 int val; /* Options for the mux register value */
237 }; 238 };
238 239
239 struct evm_dev_cfg { 240 struct evm_dev_cfg {
240 void (*device_init)(int evm_id, int profile); 241 void (*device_init)(int evm_id, int profile);
241 242
242 /* 243 /*
243 * If the device is required on both baseboard & daughter board (ex i2c), 244 * If the device is required on both baseboard & daughter board (ex i2c),
244 * specify DEV_ON_BASEBOARD 245 * specify DEV_ON_BASEBOARD
245 */ 246 */
246 #define DEV_ON_BASEBOARD 0 247 #define DEV_ON_BASEBOARD 0
247 #define DEV_ON_DGHTR_BRD 1 248 #define DEV_ON_DGHTR_BRD 1
248 u32 device_on; 249 u32 device_on;
249 250
250 u32 profile; /* Profiles (0-7) in which the module is present */ 251 u32 profile; /* Profiles (0-7) in which the module is present */
251 }; 252 };
252 253
253 /* AM335X - CPLD Register Offsets */ 254 /* AM335X - CPLD Register Offsets */
254 #define CPLD_DEVICE_HDR 0x00 /* CPLD Header */ 255 #define CPLD_DEVICE_HDR 0x00 /* CPLD Header */
255 #define CPLD_DEVICE_ID 0x04 /* CPLD identification */ 256 #define CPLD_DEVICE_ID 0x04 /* CPLD identification */
256 #define CPLD_DEVICE_REV 0x0C /* Revision of the CPLD code */ 257 #define CPLD_DEVICE_REV 0x0C /* Revision of the CPLD code */
257 #define CPLD_CFG_REG 0x10 /* Configuration Register */ 258 #define CPLD_CFG_REG 0x10 /* Configuration Register */
258 259
259 static struct i2c_client *cpld_client; 260 static struct i2c_client *cpld_client;
260 261
261 static u32 am335x_evm_id; 262 static u32 am335x_evm_id;
262 263
263 static struct omap_board_config_kernel am335x_evm_config[] __initdata = { 264 static struct omap_board_config_kernel am335x_evm_config[] __initdata = {
264 }; 265 };
265 266
266 /* 267 /*
267 * EVM Config held in On-Board eeprom device. 268 * EVM Config held in On-Board eeprom device.
268 * 269 *
269 * Header Format 270 * Header Format
270 * 271 *
271 * Name Size Contents 272 * Name Size Contents
272 * (Bytes) 273 * (Bytes)
273 *------------------------------------------------------------- 274 *-------------------------------------------------------------
274 * Header 4 0xAA, 0x55, 0x33, 0xEE 275 * Header 4 0xAA, 0x55, 0x33, 0xEE
275 * 276 *
276 * Board Name 8 Name for board in ASCII. 277 * Board Name 8 Name for board in ASCII.
277 * example "A33515BB" = "AM335X 278 * example "A33515BB" = "AM335X
278 Low Cost EVM board" 279 Low Cost EVM board"
279 * 280 *
280 * Version 4 Hardware version code for board in 281 * Version 4 Hardware version code for board in
281 * in ASCII. "1.0A" = rev.01.0A 282 * in ASCII. "1.0A" = rev.01.0A
282 * 283 *
283 * Serial Number 12 Serial number of the board. This is a 12 284 * Serial Number 12 Serial number of the board. This is a 12
284 * character string which is WWYY4P16nnnn, where 285 * character string which is WWYY4P16nnnn, where
285 * WW = 2 digit week of the year of production 286 * WW = 2 digit week of the year of production
286 * YY = 2 digit year of production 287 * YY = 2 digit year of production
287 * nnnn = incrementing board number 288 * nnnn = incrementing board number
288 * 289 *
289 * Configuration option 32 Codes(TBD) to show the configuration 290 * Configuration option 32 Codes(TBD) to show the configuration
290 * setup on this board. 291 * setup on this board.
291 * 292 *
292 * Available 32720 Available space for other non-volatile 293 * Available 32720 Available space for other non-volatile
293 * data. 294 * data.
294 */ 295 */
295 struct am335x_evm_eeprom_config { 296 struct am335x_evm_eeprom_config {
296 u32 header; 297 u32 header;
297 u8 name[8]; 298 u8 name[8];
298 char version[4]; 299 char version[4];
299 u8 serial[12]; 300 u8 serial[12];
300 u8 opt[32]; 301 u8 opt[32];
301 }; 302 };
302 303
303 static struct am335x_evm_eeprom_config config; 304 static struct am335x_evm_eeprom_config config;
304 static bool daughter_brd_detected; 305 static bool daughter_brd_detected;
305 306
306 #define GP_EVM_REV_IS_1_0 0x1 307 #define GP_EVM_REV_IS_1_0 0x1
307 #define GP_EVM_REV_IS_1_1A 0x2 308 #define GP_EVM_REV_IS_1_1A 0x2
308 #define GP_EVM_REV_IS_UNKNOWN 0xFF 309 #define GP_EVM_REV_IS_UNKNOWN 0xFF
309 static unsigned int gp_evm_revision = GP_EVM_REV_IS_UNKNOWN; 310 static unsigned int gp_evm_revision = GP_EVM_REV_IS_UNKNOWN;
310 unsigned int gigabit_enable = 1; 311 unsigned int gigabit_enable = 1;
311 312
312 #define EEPROM_MAC_ADDRESS_OFFSET 60 /* 4+8+4+12+32 */ 313 #define EEPROM_MAC_ADDRESS_OFFSET 60 /* 4+8+4+12+32 */
313 #define EEPROM_NO_OF_MAC_ADDR 3 314 #define EEPROM_NO_OF_MAC_ADDR 3
314 static char am335x_mac_addr[EEPROM_NO_OF_MAC_ADDR][ETH_ALEN]; 315 static char am335x_mac_addr[EEPROM_NO_OF_MAC_ADDR][ETH_ALEN];
315 316
316 #define AM335X_EEPROM_HEADER 0xEE3355AA 317 #define AM335X_EEPROM_HEADER 0xEE3355AA
317 318
318 /* current profile if exists else PROFILE_0 on error */ 319 /* current profile if exists else PROFILE_0 on error */
319 static u32 am335x_get_profile_selection(void) 320 static u32 am335x_get_profile_selection(void)
320 { 321 {
321 int val = 0; 322 int val = 0;
322 323
323 if (!cpld_client) 324 if (!cpld_client)
324 /* error checking is not done in func's calling this routine. 325 /* error checking is not done in func's calling this routine.
325 so return profile 0 on error */ 326 so return profile 0 on error */
326 return 0; 327 return 0;
327 328
328 val = i2c_smbus_read_word_data(cpld_client, CPLD_CFG_REG); 329 val = i2c_smbus_read_word_data(cpld_client, CPLD_CFG_REG);
329 if (val < 0) 330 if (val < 0)
330 return 0; /* default to Profile 0 on Error */ 331 return 0; /* default to Profile 0 on Error */
331 else 332 else
332 return val & 0x7; 333 return val & 0x7;
333 } 334 }
334 335
335 /* Module pin mux for LCDC */ 336 /* Module pin mux for LCDC */
336 static struct pinmux_config lcdc_pin_mux[] = { 337 static struct pinmux_config lcdc_pin_mux[] = {
337 {"lcd_data0.lcd_data0", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT 338 {"lcd_data0.lcd_data0", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
338 | AM33XX_PULL_DISA}, 339 | AM33XX_PULL_DISA},
339 {"lcd_data1.lcd_data1", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT 340 {"lcd_data1.lcd_data1", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
340 | AM33XX_PULL_DISA}, 341 | AM33XX_PULL_DISA},
341 {"lcd_data2.lcd_data2", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT 342 {"lcd_data2.lcd_data2", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
342 | AM33XX_PULL_DISA}, 343 | AM33XX_PULL_DISA},
343 {"lcd_data3.lcd_data3", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT 344 {"lcd_data3.lcd_data3", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
344 | AM33XX_PULL_DISA}, 345 | AM33XX_PULL_DISA},
345 {"lcd_data4.lcd_data4", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT 346 {"lcd_data4.lcd_data4", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
346 | AM33XX_PULL_DISA}, 347 | AM33XX_PULL_DISA},
347 {"lcd_data5.lcd_data5", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT 348 {"lcd_data5.lcd_data5", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
348 | AM33XX_PULL_DISA}, 349 | AM33XX_PULL_DISA},
349 {"lcd_data6.lcd_data6", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT 350 {"lcd_data6.lcd_data6", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
350 | AM33XX_PULL_DISA}, 351 | AM33XX_PULL_DISA},
351 {"lcd_data7.lcd_data7", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT 352 {"lcd_data7.lcd_data7", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
352 | AM33XX_PULL_DISA}, 353 | AM33XX_PULL_DISA},
353 {"lcd_data8.lcd_data8", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT 354 {"lcd_data8.lcd_data8", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
354 | AM33XX_PULL_DISA}, 355 | AM33XX_PULL_DISA},
355 {"lcd_data9.lcd_data9", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT 356 {"lcd_data9.lcd_data9", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
356 | AM33XX_PULL_DISA}, 357 | AM33XX_PULL_DISA},
357 {"lcd_data10.lcd_data10", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT 358 {"lcd_data10.lcd_data10", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
358 | AM33XX_PULL_DISA}, 359 | AM33XX_PULL_DISA},
359 {"lcd_data11.lcd_data11", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT 360 {"lcd_data11.lcd_data11", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
360 | AM33XX_PULL_DISA}, 361 | AM33XX_PULL_DISA},
361 {"lcd_data12.lcd_data12", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT 362 {"lcd_data12.lcd_data12", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
362 | AM33XX_PULL_DISA}, 363 | AM33XX_PULL_DISA},
363 {"lcd_data13.lcd_data13", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT 364 {"lcd_data13.lcd_data13", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
364 | AM33XX_PULL_DISA}, 365 | AM33XX_PULL_DISA},
365 {"lcd_data14.lcd_data14", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT 366 {"lcd_data14.lcd_data14", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
366 | AM33XX_PULL_DISA}, 367 | AM33XX_PULL_DISA},
367 {"lcd_data15.lcd_data15", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT 368 {"lcd_data15.lcd_data15", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT
368 | AM33XX_PULL_DISA}, 369 | AM33XX_PULL_DISA},
369 {"gpmc_ad8.lcd_data16", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT}, 370 {"gpmc_ad8.lcd_data16", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
370 {"gpmc_ad9.lcd_data17", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT}, 371 {"gpmc_ad9.lcd_data17", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
371 {"gpmc_ad10.lcd_data18", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT}, 372 {"gpmc_ad10.lcd_data18", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
372 {"gpmc_ad11.lcd_data19", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT}, 373 {"gpmc_ad11.lcd_data19", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
373 {"gpmc_ad12.lcd_data20", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT}, 374 {"gpmc_ad12.lcd_data20", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
374 {"gpmc_ad13.lcd_data21", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT}, 375 {"gpmc_ad13.lcd_data21", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
375 {"gpmc_ad14.lcd_data22", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT}, 376 {"gpmc_ad14.lcd_data22", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
376 {"gpmc_ad15.lcd_data23", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT}, 377 {"gpmc_ad15.lcd_data23", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
377 {"lcd_vsync.lcd_vsync", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT}, 378 {"lcd_vsync.lcd_vsync", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
378 {"lcd_hsync.lcd_hsync", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT}, 379 {"lcd_hsync.lcd_hsync", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
379 {"lcd_pclk.lcd_pclk", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT}, 380 {"lcd_pclk.lcd_pclk", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
380 {"lcd_ac_bias_en.lcd_ac_bias_en", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT}, 381 {"lcd_ac_bias_en.lcd_ac_bias_en", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
381 {NULL, 0}, 382 {NULL, 0},
382 }; 383 };
383 384
384 static struct pinmux_config tsc_pin_mux[] = { 385 static struct pinmux_config tsc_pin_mux[] = {
385 {"ain0.ain0", OMAP_MUX_MODE0 | AM33XX_INPUT_EN}, 386 {"ain0.ain0", OMAP_MUX_MODE0 | AM33XX_INPUT_EN},
386 {"ain1.ain1", OMAP_MUX_MODE0 | AM33XX_INPUT_EN}, 387 {"ain1.ain1", OMAP_MUX_MODE0 | AM33XX_INPUT_EN},
387 {"ain2.ain2", OMAP_MUX_MODE0 | AM33XX_INPUT_EN}, 388 {"ain2.ain2", OMAP_MUX_MODE0 | AM33XX_INPUT_EN},
388 {"ain3.ain3", OMAP_MUX_MODE0 | AM33XX_INPUT_EN}, 389 {"ain3.ain3", OMAP_MUX_MODE0 | AM33XX_INPUT_EN},
389 {"vrefp.vrefp", OMAP_MUX_MODE0 | AM33XX_INPUT_EN}, 390 {"vrefp.vrefp", OMAP_MUX_MODE0 | AM33XX_INPUT_EN},
390 {"vrefn.vrefn", OMAP_MUX_MODE0 | AM33XX_INPUT_EN}, 391 {"vrefn.vrefn", OMAP_MUX_MODE0 | AM33XX_INPUT_EN},
391 {NULL, 0}, 392 {NULL, 0},
392 }; 393 };
393 394
394 /* Pin mux for nand flash module */ 395 /* Pin mux for nand flash module */
395 static struct pinmux_config nand_pin_mux[] = { 396 static struct pinmux_config nand_pin_mux[] = {
396 {"gpmc_ad0.gpmc_ad0", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}, 397 {"gpmc_ad0.gpmc_ad0", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
397 {"gpmc_ad1.gpmc_ad1", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}, 398 {"gpmc_ad1.gpmc_ad1", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
398 {"gpmc_ad2.gpmc_ad2", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}, 399 {"gpmc_ad2.gpmc_ad2", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
399 {"gpmc_ad3.gpmc_ad3", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}, 400 {"gpmc_ad3.gpmc_ad3", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
400 {"gpmc_ad4.gpmc_ad4", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}, 401 {"gpmc_ad4.gpmc_ad4", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
401 {"gpmc_ad5.gpmc_ad5", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}, 402 {"gpmc_ad5.gpmc_ad5", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
402 {"gpmc_ad6.gpmc_ad6", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}, 403 {"gpmc_ad6.gpmc_ad6", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
403 {"gpmc_ad7.gpmc_ad7", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}, 404 {"gpmc_ad7.gpmc_ad7", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
404 {"gpmc_wait0.gpmc_wait0", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}, 405 {"gpmc_wait0.gpmc_wait0", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
405 {"gpmc_wpn.gpmc_wpn", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLUP}, 406 {"gpmc_wpn.gpmc_wpn", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLUP},
406 {"gpmc_csn0.gpmc_csn0", OMAP_MUX_MODE0 | AM33XX_PULL_DISA}, 407 {"gpmc_csn0.gpmc_csn0", OMAP_MUX_MODE0 | AM33XX_PULL_DISA},
407 {"gpmc_advn_ale.gpmc_advn_ale", OMAP_MUX_MODE0 | AM33XX_PULL_DISA}, 408 {"gpmc_advn_ale.gpmc_advn_ale", OMAP_MUX_MODE0 | AM33XX_PULL_DISA},
408 {"gpmc_oen_ren.gpmc_oen_ren", OMAP_MUX_MODE0 | AM33XX_PULL_DISA}, 409 {"gpmc_oen_ren.gpmc_oen_ren", OMAP_MUX_MODE0 | AM33XX_PULL_DISA},
409 {"gpmc_wen.gpmc_wen", OMAP_MUX_MODE0 | AM33XX_PULL_DISA}, 410 {"gpmc_wen.gpmc_wen", OMAP_MUX_MODE0 | AM33XX_PULL_DISA},
410 {"gpmc_ben0_cle.gpmc_ben0_cle", OMAP_MUX_MODE0 | AM33XX_PULL_DISA}, 411 {"gpmc_ben0_cle.gpmc_ben0_cle", OMAP_MUX_MODE0 | AM33XX_PULL_DISA},
411 {NULL, 0}, 412 {NULL, 0},
412 }; 413 };
413 414
414 /* Module pin mux for SPI fash */ 415 /* Module pin mux for SPI fash */
415 static struct pinmux_config spi0_pin_mux[] = { 416 static struct pinmux_config spi0_pin_mux[] = {
416 {"spi0_sclk.spi0_sclk", OMAP_MUX_MODE0 | AM33XX_PULL_ENBL 417 {"spi0_sclk.spi0_sclk", OMAP_MUX_MODE0 | AM33XX_PULL_ENBL
417 | AM33XX_INPUT_EN}, 418 | AM33XX_INPUT_EN},
418 {"spi0_d0.spi0_d0", OMAP_MUX_MODE0 | AM33XX_PULL_ENBL | AM33XX_PULL_UP 419 {"spi0_d0.spi0_d0", OMAP_MUX_MODE0 | AM33XX_PULL_ENBL | AM33XX_PULL_UP
419 | AM33XX_INPUT_EN}, 420 | AM33XX_INPUT_EN},
420 {"spi0_d1.spi0_d1", OMAP_MUX_MODE0 | AM33XX_PULL_ENBL 421 {"spi0_d1.spi0_d1", OMAP_MUX_MODE0 | AM33XX_PULL_ENBL
421 | AM33XX_INPUT_EN}, 422 | AM33XX_INPUT_EN},
422 {"spi0_cs0.spi0_cs0", OMAP_MUX_MODE0 | AM33XX_PULL_ENBL | AM33XX_PULL_UP 423 {"spi0_cs0.spi0_cs0", OMAP_MUX_MODE0 | AM33XX_PULL_ENBL | AM33XX_PULL_UP
423 | AM33XX_INPUT_EN}, 424 | AM33XX_INPUT_EN},
424 {NULL, 0}, 425 {NULL, 0},
425 }; 426 };
426 427
427 /* Module pin mux for SPI flash */ 428 /* Module pin mux for SPI flash */
428 static struct pinmux_config spi1_pin_mux[] = { 429 static struct pinmux_config spi1_pin_mux[] = {
429 {"mcasp0_aclkx.spi1_sclk", OMAP_MUX_MODE3 | AM33XX_PULL_ENBL 430 {"mcasp0_aclkx.spi1_sclk", OMAP_MUX_MODE3 | AM33XX_PULL_ENBL
430 | AM33XX_INPUT_EN}, 431 | AM33XX_INPUT_EN},
431 {"mcasp0_fsx.spi1_d0", OMAP_MUX_MODE3 | AM33XX_PULL_ENBL 432 {"mcasp0_fsx.spi1_d0", OMAP_MUX_MODE3 | AM33XX_PULL_ENBL
432 | AM33XX_PULL_UP | AM33XX_INPUT_EN}, 433 | AM33XX_PULL_UP | AM33XX_INPUT_EN},
433 {"mcasp0_axr0.spi1_d1", OMAP_MUX_MODE3 | AM33XX_PULL_ENBL 434 {"mcasp0_axr0.spi1_d1", OMAP_MUX_MODE3 | AM33XX_PULL_ENBL
434 | AM33XX_INPUT_EN}, 435 | AM33XX_INPUT_EN},
435 {"mcasp0_ahclkr.spi1_cs0", OMAP_MUX_MODE3 | AM33XX_PULL_ENBL 436 {"mcasp0_ahclkr.spi1_cs0", OMAP_MUX_MODE3 | AM33XX_PULL_ENBL
436 | AM33XX_PULL_UP | AM33XX_INPUT_EN}, 437 | AM33XX_PULL_UP | AM33XX_INPUT_EN},
437 {NULL, 0}, 438 {NULL, 0},
438 }; 439 };
439 440
440 /* Module pin mux for rgmii1 */ 441 /* Module pin mux for rgmii1 */
441 static struct pinmux_config rgmii1_pin_mux[] = { 442 static struct pinmux_config rgmii1_pin_mux[] = {
442 {"mii1_txen.rgmii1_tctl", OMAP_MUX_MODE2 | AM33XX_PIN_OUTPUT}, 443 {"mii1_txen.rgmii1_tctl", OMAP_MUX_MODE2 | AM33XX_PIN_OUTPUT},
443 {"mii1_rxdv.rgmii1_rctl", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN}, 444 {"mii1_rxdv.rgmii1_rctl", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN},
444 {"mii1_txd3.rgmii1_td3", OMAP_MUX_MODE2 | AM33XX_PIN_OUTPUT}, 445 {"mii1_txd3.rgmii1_td3", OMAP_MUX_MODE2 | AM33XX_PIN_OUTPUT},
445 {"mii1_txd2.rgmii1_td2", OMAP_MUX_MODE2 | AM33XX_PIN_OUTPUT}, 446 {"mii1_txd2.rgmii1_td2", OMAP_MUX_MODE2 | AM33XX_PIN_OUTPUT},
446 {"mii1_txd1.rgmii1_td1", OMAP_MUX_MODE2 | AM33XX_PIN_OUTPUT}, 447 {"mii1_txd1.rgmii1_td1", OMAP_MUX_MODE2 | AM33XX_PIN_OUTPUT},
447 {"mii1_txd0.rgmii1_td0", OMAP_MUX_MODE2 | AM33XX_PIN_OUTPUT}, 448 {"mii1_txd0.rgmii1_td0", OMAP_MUX_MODE2 | AM33XX_PIN_OUTPUT},
448 {"mii1_txclk.rgmii1_tclk", OMAP_MUX_MODE2 | AM33XX_PIN_OUTPUT}, 449 {"mii1_txclk.rgmii1_tclk", OMAP_MUX_MODE2 | AM33XX_PIN_OUTPUT},
449 {"mii1_rxclk.rgmii1_rclk", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN}, 450 {"mii1_rxclk.rgmii1_rclk", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN},
450 {"mii1_rxd3.rgmii1_rd3", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN}, 451 {"mii1_rxd3.rgmii1_rd3", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN},
451 {"mii1_rxd2.rgmii1_rd2", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN}, 452 {"mii1_rxd2.rgmii1_rd2", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN},
452 {"mii1_rxd1.rgmii1_rd1", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN}, 453 {"mii1_rxd1.rgmii1_rd1", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN},
453 {"mii1_rxd0.rgmii1_rd0", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN}, 454 {"mii1_rxd0.rgmii1_rd0", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN},
454 {"mdio_data.mdio_data", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}, 455 {"mdio_data.mdio_data", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
455 {"mdio_clk.mdio_clk", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT_PULLUP}, 456 {"mdio_clk.mdio_clk", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT_PULLUP},
456 {NULL, 0}, 457 {NULL, 0},
457 }; 458 };
458 459
459 /* Module pin mux for rgmii2 */ 460 /* Module pin mux for rgmii2 */
460 static struct pinmux_config rgmii2_pin_mux[] = { 461 static struct pinmux_config rgmii2_pin_mux[] = {
461 {"gpmc_a0.rgmii2_tctl", OMAP_MUX_MODE2 | AM33XX_PIN_OUTPUT}, 462 {"gpmc_a0.rgmii2_tctl", OMAP_MUX_MODE2 | AM33XX_PIN_OUTPUT},
462 {"gpmc_a1.rgmii2_rctl", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN}, 463 {"gpmc_a1.rgmii2_rctl", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN},
463 {"gpmc_a2.rgmii2_td3", OMAP_MUX_MODE2 | AM33XX_PIN_OUTPUT}, 464 {"gpmc_a2.rgmii2_td3", OMAP_MUX_MODE2 | AM33XX_PIN_OUTPUT},
464 {"gpmc_a3.rgmii2_td2", OMAP_MUX_MODE2 | AM33XX_PIN_OUTPUT}, 465 {"gpmc_a3.rgmii2_td2", OMAP_MUX_MODE2 | AM33XX_PIN_OUTPUT},
465 {"gpmc_a4.rgmii2_td1", OMAP_MUX_MODE2 | AM33XX_PIN_OUTPUT}, 466 {"gpmc_a4.rgmii2_td1", OMAP_MUX_MODE2 | AM33XX_PIN_OUTPUT},
466 {"gpmc_a5.rgmii2_td0", OMAP_MUX_MODE2 | AM33XX_PIN_OUTPUT}, 467 {"gpmc_a5.rgmii2_td0", OMAP_MUX_MODE2 | AM33XX_PIN_OUTPUT},
467 {"gpmc_a6.rgmii2_tclk", OMAP_MUX_MODE2 | AM33XX_PIN_OUTPUT}, 468 {"gpmc_a6.rgmii2_tclk", OMAP_MUX_MODE2 | AM33XX_PIN_OUTPUT},
468 {"gpmc_a7.rgmii2_rclk", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN}, 469 {"gpmc_a7.rgmii2_rclk", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN},
469 {"gpmc_a8.rgmii2_rd3", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN}, 470 {"gpmc_a8.rgmii2_rd3", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN},
470 {"gpmc_a9.rgmii2_rd2", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN}, 471 {"gpmc_a9.rgmii2_rd2", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN},
471 {"gpmc_a10.rgmii2_rd1", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN}, 472 {"gpmc_a10.rgmii2_rd1", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN},
472 {"gpmc_a11.rgmii2_rd0", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN}, 473 {"gpmc_a11.rgmii2_rd0", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLDOWN},
473 {"mdio_data.mdio_data", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}, 474 {"mdio_data.mdio_data", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
474 {"mdio_clk.mdio_clk", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT_PULLUP}, 475 {"mdio_clk.mdio_clk", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT_PULLUP},
475 {NULL, 0}, 476 {NULL, 0},
476 }; 477 };
477 478
478 /* Module pin mux for mii1 */ 479 /* Module pin mux for mii1 */
479 static struct pinmux_config mii1_pin_mux[] = { 480 static struct pinmux_config mii1_pin_mux[] = {
480 {"mii1_rxerr.mii1_rxerr", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN}, 481 {"mii1_rxerr.mii1_rxerr", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN},
481 {"mii1_txen.mii1_txen", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT}, 482 {"mii1_txen.mii1_txen", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
482 {"mii1_rxdv.mii1_rxdv", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN}, 483 {"mii1_rxdv.mii1_rxdv", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN},
483 {"mii1_txd3.mii1_txd3", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT}, 484 {"mii1_txd3.mii1_txd3", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
484 {"mii1_txd2.mii1_txd2", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT}, 485 {"mii1_txd2.mii1_txd2", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
485 {"mii1_txd1.mii1_txd1", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT}, 486 {"mii1_txd1.mii1_txd1", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
486 {"mii1_txd0.mii1_txd0", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT}, 487 {"mii1_txd0.mii1_txd0", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
487 {"mii1_txclk.mii1_txclk", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN}, 488 {"mii1_txclk.mii1_txclk", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN},
488 {"mii1_rxclk.mii1_rxclk", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN}, 489 {"mii1_rxclk.mii1_rxclk", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN},
489 {"mii1_rxd3.mii1_rxd3", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN}, 490 {"mii1_rxd3.mii1_rxd3", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN},
490 {"mii1_rxd2.mii1_rxd2", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN}, 491 {"mii1_rxd2.mii1_rxd2", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN},
491 {"mii1_rxd1.mii1_rxd1", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN}, 492 {"mii1_rxd1.mii1_rxd1", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN},
492 {"mii1_rxd0.mii1_rxd0", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN}, 493 {"mii1_rxd0.mii1_rxd0", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN},
493 {"mdio_data.mdio_data", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}, 494 {"mdio_data.mdio_data", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
494 {"mdio_clk.mdio_clk", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT_PULLUP}, 495 {"mdio_clk.mdio_clk", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT_PULLUP},
495 {NULL, 0}, 496 {NULL, 0},
496 }; 497 };
497 498
498 /* Module pin mux for rmii1 */ 499 /* Module pin mux for rmii1 */
499 static struct pinmux_config rmii1_pin_mux[] = { 500 static struct pinmux_config rmii1_pin_mux[] = {
500 {"mii1_crs.rmii1_crs_dv", OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLDOWN}, 501 {"mii1_crs.rmii1_crs_dv", OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLDOWN},
501 {"mii1_rxerr.mii1_rxerr", OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLDOWN}, 502 {"mii1_rxerr.mii1_rxerr", OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLDOWN},
502 {"mii1_txen.mii1_txen", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT}, 503 {"mii1_txen.mii1_txen", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
503 {"mii1_txd1.mii1_txd1", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT}, 504 {"mii1_txd1.mii1_txd1", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
504 {"mii1_txd0.mii1_txd0", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT}, 505 {"mii1_txd0.mii1_txd0", OMAP_MUX_MODE1 | AM33XX_PIN_OUTPUT},
505 {"mii1_rxd1.mii1_rxd1", OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLDOWN}, 506 {"mii1_rxd1.mii1_rxd1", OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLDOWN},
506 {"mii1_rxd0.mii1_rxd0", OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLDOWN}, 507 {"mii1_rxd0.mii1_rxd0", OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLDOWN},
507 {"rmii1_refclk.rmii1_refclk", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN}, 508 {"rmii1_refclk.rmii1_refclk", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLDOWN},
508 {"mdio_data.mdio_data", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}, 509 {"mdio_data.mdio_data", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
509 {"mdio_clk.mdio_clk", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT_PULLUP}, 510 {"mdio_clk.mdio_clk", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT_PULLUP},
510 {NULL, 0}, 511 {NULL, 0},
511 }; 512 };
512 513
513 static struct pinmux_config i2c1_pin_mux[] = { 514 static struct pinmux_config i2c1_pin_mux[] = {
514 {"spi0_d1.i2c1_sda", OMAP_MUX_MODE2 | AM33XX_SLEWCTRL_SLOW | 515 {"spi0_d1.i2c1_sda", OMAP_MUX_MODE2 | AM33XX_SLEWCTRL_SLOW |
515 AM33XX_PULL_ENBL | AM33XX_INPUT_EN}, 516 AM33XX_PULL_ENBL | AM33XX_INPUT_EN},
516 {"spi0_cs0.i2c1_scl", OMAP_MUX_MODE2 | AM33XX_SLEWCTRL_SLOW | 517 {"spi0_cs0.i2c1_scl", OMAP_MUX_MODE2 | AM33XX_SLEWCTRL_SLOW |
517 AM33XX_PULL_ENBL | AM33XX_INPUT_EN}, 518 AM33XX_PULL_ENBL | AM33XX_INPUT_EN},
518 {NULL, 0}, 519 {NULL, 0},
519 }; 520 };
520 521
521 /* Module pin mux for mcasp1 */ 522 /* Module pin mux for mcasp1 */
522 static struct pinmux_config mcasp1_pin_mux[] = { 523 static struct pinmux_config mcasp1_pin_mux[] = {
523 {"mii1_crs.mcasp1_aclkx", OMAP_MUX_MODE4 | AM33XX_PIN_INPUT_PULLDOWN}, 524 {"mii1_crs.mcasp1_aclkx", OMAP_MUX_MODE4 | AM33XX_PIN_INPUT_PULLDOWN},
524 {"mii1_rxerr.mcasp1_fsx", OMAP_MUX_MODE4 | AM33XX_PIN_INPUT_PULLDOWN}, 525 {"mii1_rxerr.mcasp1_fsx", OMAP_MUX_MODE4 | AM33XX_PIN_INPUT_PULLDOWN},
525 {"mii1_col.mcasp1_axr2", OMAP_MUX_MODE4 | AM33XX_PIN_INPUT_PULLDOWN}, 526 {"mii1_col.mcasp1_axr2", OMAP_MUX_MODE4 | AM33XX_PIN_INPUT_PULLDOWN},
526 {"rmii1_refclk.mcasp1_axr3", OMAP_MUX_MODE4 | 527 {"rmii1_refclk.mcasp1_axr3", OMAP_MUX_MODE4 |
527 AM33XX_PIN_INPUT_PULLDOWN}, 528 AM33XX_PIN_INPUT_PULLDOWN},
528 {NULL, 0}, 529 {NULL, 0},
529 }; 530 };
530 531
531 532
532 /* Module pin mux for mmc0 */ 533 /* Module pin mux for mmc0 */
533 static struct pinmux_config mmc0_pin_mux[] = { 534 static struct pinmux_config mmc0_pin_mux[] = {
534 {"mmc0_dat3.mmc0_dat3", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}, 535 {"mmc0_dat3.mmc0_dat3", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
535 {"mmc0_dat2.mmc0_dat2", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}, 536 {"mmc0_dat2.mmc0_dat2", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
536 {"mmc0_dat1.mmc0_dat1", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}, 537 {"mmc0_dat1.mmc0_dat1", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
537 {"mmc0_dat0.mmc0_dat0", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}, 538 {"mmc0_dat0.mmc0_dat0", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
538 {"mmc0_clk.mmc0_clk", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}, 539 {"mmc0_clk.mmc0_clk", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
539 {"mmc0_cmd.mmc0_cmd", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}, 540 {"mmc0_cmd.mmc0_cmd", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
540 {"mcasp0_aclkr.mmc0_sdwp", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLUP}, 541 {"mcasp0_aclkr.mmc0_sdwp", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLUP},
541 {"spi0_cs1.mmc0_sdcd", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLUP}, 542 {"spi0_cs1.mmc0_sdcd", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLUP},
542 {NULL, 0}, 543 {NULL, 0},
543 }; 544 };
544 545
545 static struct pinmux_config mmc0_no_cd_pin_mux[] = { 546 static struct pinmux_config mmc0_no_cd_pin_mux[] = {
546 {"mmc0_dat3.mmc0_dat3", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}, 547 {"mmc0_dat3.mmc0_dat3", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
547 {"mmc0_dat2.mmc0_dat2", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}, 548 {"mmc0_dat2.mmc0_dat2", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
548 {"mmc0_dat1.mmc0_dat1", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}, 549 {"mmc0_dat1.mmc0_dat1", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
549 {"mmc0_dat0.mmc0_dat0", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}, 550 {"mmc0_dat0.mmc0_dat0", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
550 {"mmc0_clk.mmc0_clk", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}, 551 {"mmc0_clk.mmc0_clk", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
551 {"mmc0_cmd.mmc0_cmd", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}, 552 {"mmc0_cmd.mmc0_cmd", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
552 {"mcasp0_aclkr.mmc0_sdwp", OMAP_MUX_MODE4 | AM33XX_PIN_INPUT_PULLDOWN}, 553 {"mcasp0_aclkr.mmc0_sdwp", OMAP_MUX_MODE4 | AM33XX_PIN_INPUT_PULLDOWN},
553 {NULL, 0}, 554 {NULL, 0},
554 }; 555 };
555 556
556 /* Module pin mux for mmc1 */ 557 /* Module pin mux for mmc1 */
557 static struct pinmux_config mmc1_pin_mux[] = { 558 static struct pinmux_config mmc1_pin_mux[] = {
558 {"gpmc_ad7.mmc1_dat7", OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLUP}, 559 {"gpmc_ad7.mmc1_dat7", OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLUP},
559 {"gpmc_ad6.mmc1_dat6", OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLUP}, 560 {"gpmc_ad6.mmc1_dat6", OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLUP},
560 {"gpmc_ad5.mmc1_dat5", OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLUP}, 561 {"gpmc_ad5.mmc1_dat5", OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLUP},
561 {"gpmc_ad4.mmc1_dat4", OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLUP}, 562 {"gpmc_ad4.mmc1_dat4", OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLUP},
562 {"gpmc_ad3.mmc1_dat3", OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLUP}, 563 {"gpmc_ad3.mmc1_dat3", OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLUP},
563 {"gpmc_ad2.mmc1_dat2", OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLUP}, 564 {"gpmc_ad2.mmc1_dat2", OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLUP},
564 {"gpmc_ad1.mmc1_dat1", OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLUP}, 565 {"gpmc_ad1.mmc1_dat1", OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLUP},
565 {"gpmc_ad0.mmc1_dat0", OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLUP}, 566 {"gpmc_ad0.mmc1_dat0", OMAP_MUX_MODE1 | AM33XX_PIN_INPUT_PULLUP},
566 {"gpmc_csn1.mmc1_clk", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLUP}, 567 {"gpmc_csn1.mmc1_clk", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLUP},
567 {"gpmc_csn2.mmc1_cmd", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLUP}, 568 {"gpmc_csn2.mmc1_cmd", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLUP},
568 {"gpmc_csn0.mmc1_sdwp", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLUP}, 569 {"gpmc_csn0.mmc1_sdwp", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLUP},
569 {"gpmc_advn_ale.mmc1_sdcd", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLUP}, 570 {"gpmc_advn_ale.mmc1_sdcd", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT_PULLUP},
570 {NULL, 0}, 571 {NULL, 0},
571 }; 572 };
572 573
573 /* Module pin mux for uart3 */ 574 /* Module pin mux for uart3 */
574 static struct pinmux_config uart3_pin_mux[] = { 575 static struct pinmux_config uart3_pin_mux[] = {
575 {"spi0_cs1.uart3_rxd", AM33XX_PIN_INPUT_PULLUP}, 576 {"spi0_cs1.uart3_rxd", AM33XX_PIN_INPUT_PULLUP},
576 {"ecap0_in_pwm0_out.uart3_txd", AM33XX_PULL_ENBL}, 577 {"ecap0_in_pwm0_out.uart3_txd", AM33XX_PULL_ENBL},
577 {NULL, 0}, 578 {NULL, 0},
578 }; 579 };
579 580
580 static struct pinmux_config d_can_gp_pin_mux[] = { 581 static struct pinmux_config d_can_gp_pin_mux[] = {
581 {"uart0_ctsn.d_can1_tx", OMAP_MUX_MODE2 | AM33XX_PULL_ENBL}, 582 {"uart0_ctsn.d_can1_tx", OMAP_MUX_MODE2 | AM33XX_PULL_ENBL},
582 {"uart0_rtsn.d_can1_rx", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLUP}, 583 {"uart0_rtsn.d_can1_rx", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLUP},
583 {NULL, 0}, 584 {NULL, 0},
584 }; 585 };
585 586
586 static struct pinmux_config d_can_ia_pin_mux[] = { 587 static struct pinmux_config d_can_ia_pin_mux[] = {
587 {"uart0_rxd.d_can0_tx", OMAP_MUX_MODE2 | AM33XX_PULL_ENBL}, 588 {"uart0_rxd.d_can0_tx", OMAP_MUX_MODE2 | AM33XX_PULL_ENBL},
588 {"uart0_txd.d_can0_rx", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLUP}, 589 {"uart0_txd.d_can0_rx", OMAP_MUX_MODE2 | AM33XX_PIN_INPUT_PULLUP},
589 {NULL, 0}, 590 {NULL, 0},
590 }; 591 };
591 592
592 /* 593 /*
593 * @pin_mux - single module pin-mux structure which defines pin-mux 594 * @pin_mux - single module pin-mux structure which defines pin-mux
594 * details for all its pins. 595 * details for all its pins.
595 */ 596 */
596 static void setup_pin_mux(struct pinmux_config *pin_mux) 597 static void setup_pin_mux(struct pinmux_config *pin_mux)
597 { 598 {
598 int i; 599 int i;
599 600
600 for (i = 0; pin_mux->string_name != NULL; pin_mux++) 601 for (i = 0; pin_mux->string_name != NULL; pin_mux++)
601 omap_mux_init_signal(pin_mux->string_name, pin_mux->val); 602 omap_mux_init_signal(pin_mux->string_name, pin_mux->val);
602 603
603 } 604 }
604 605
605 /* Matrix GPIO Keypad Support for profile-0 only: TODO */ 606 /* Matrix GPIO Keypad Support for profile-0 only: TODO */
606 #ifdef CONFIG_KEYBOARD_MATRIX 607 #ifdef CONFIG_KEYBOARD_MATRIX
607 608
608 /* pinmux for keypad device */ 609 /* pinmux for keypad device */
609 static struct pinmux_config matrix_keypad_pin_mux[] = { 610 static struct pinmux_config matrix_keypad_pin_mux[] = {
610 {"gpmc_a5.gpio1_21", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, 611 {"gpmc_a5.gpio1_21", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT},
611 {"gpmc_a8.gpio1_24", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, 612 {"gpmc_a8.gpio1_24", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT},
612 {"gpmc_a9.gpio1_25", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT}, 613 {"gpmc_a9.gpio1_25", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
613 {"gpmc_a10.gpio1_26", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT}, 614 {"gpmc_a10.gpio1_26", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
614 {"gpmc_a11.gpio1_27", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT}, 615 {"gpmc_a11.gpio1_27", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
615 {NULL, 0}, 616 {NULL, 0},
616 }; 617 };
617 618
618 /* Keys mapping */ 619 /* Keys mapping */
619 static const uint32_t am335x_evm_matrix_keys[] = { 620 static const uint32_t am335x_evm_matrix_keys[] = {
620 KEY(0, 0, KEY_MENU), 621 KEY(0, 0, KEY_MENU),
621 KEY(1, 0, KEY_BACK), 622 KEY(1, 0, KEY_BACK),
622 KEY(2, 0, KEY_LEFT), 623 KEY(2, 0, KEY_LEFT),
623 624
624 KEY(0, 1, KEY_RIGHT), 625 KEY(0, 1, KEY_RIGHT),
625 KEY(1, 1, KEY_ENTER), 626 KEY(1, 1, KEY_ENTER),
626 KEY(2, 1, KEY_DOWN), 627 KEY(2, 1, KEY_DOWN),
627 }; 628 };
628 629
629 const struct matrix_keymap_data am335x_evm_keymap_data = { 630 const struct matrix_keymap_data am335x_evm_keymap_data = {
630 .keymap = am335x_evm_matrix_keys, 631 .keymap = am335x_evm_matrix_keys,
631 .keymap_size = ARRAY_SIZE(am335x_evm_matrix_keys), 632 .keymap_size = ARRAY_SIZE(am335x_evm_matrix_keys),
632 }; 633 };
633 634
634 static const unsigned int am335x_evm_keypad_row_gpios[] = { 635 static const unsigned int am335x_evm_keypad_row_gpios[] = {
635 GPIO_TO_PIN(1, 25), GPIO_TO_PIN(1, 26), GPIO_TO_PIN(1, 27) 636 GPIO_TO_PIN(1, 25), GPIO_TO_PIN(1, 26), GPIO_TO_PIN(1, 27)
636 }; 637 };
637 638
638 static const unsigned int am335x_evm_keypad_col_gpios[] = { 639 static const unsigned int am335x_evm_keypad_col_gpios[] = {
639 GPIO_TO_PIN(1, 21), GPIO_TO_PIN(1, 24) 640 GPIO_TO_PIN(1, 21), GPIO_TO_PIN(1, 24)
640 }; 641 };
641 642
642 static struct matrix_keypad_platform_data am335x_evm_keypad_platform_data = { 643 static struct matrix_keypad_platform_data am335x_evm_keypad_platform_data = {
643 .keymap_data = &am335x_evm_keymap_data, 644 .keymap_data = &am335x_evm_keymap_data,
644 .row_gpios = am335x_evm_keypad_row_gpios, 645 .row_gpios = am335x_evm_keypad_row_gpios,
645 .num_row_gpios = ARRAY_SIZE(am335x_evm_keypad_row_gpios), 646 .num_row_gpios = ARRAY_SIZE(am335x_evm_keypad_row_gpios),
646 .col_gpios = am335x_evm_keypad_col_gpios, 647 .col_gpios = am335x_evm_keypad_col_gpios,
647 .num_col_gpios = ARRAY_SIZE(am335x_evm_keypad_col_gpios), 648 .num_col_gpios = ARRAY_SIZE(am335x_evm_keypad_col_gpios),
648 .active_low = false, 649 .active_low = false,
649 .debounce_ms = 5, 650 .debounce_ms = 5,
650 .col_scan_delay_us = 2, 651 .col_scan_delay_us = 2,
651 }; 652 };
652 653
653 static struct platform_device am335x_evm_keyboard = { 654 static struct platform_device am335x_evm_keyboard = {
654 .name = "matrix-keypad", 655 .name = "matrix-keypad",
655 .id = -1, 656 .id = -1,
656 .dev = { 657 .dev = {
657 .platform_data = &am335x_evm_keypad_platform_data, 658 .platform_data = &am335x_evm_keypad_platform_data,
658 }, 659 },
659 }; 660 };
660 661
661 static void matrix_keypad_init(int evm_id, int profile) 662 static void matrix_keypad_init(int evm_id, int profile)
662 { 663 {
663 int err; 664 int err;
664 665
665 setup_pin_mux(matrix_keypad_pin_mux); 666 setup_pin_mux(matrix_keypad_pin_mux);
666 err = platform_device_register(&am335x_evm_keyboard); 667 err = platform_device_register(&am335x_evm_keyboard);
667 if (err) { 668 if (err) {
668 pr_err("failed to register matrix keypad (2x3) device\n"); 669 pr_err("failed to register matrix keypad (2x3) device\n");
669 } 670 }
670 } 671 }
671 #endif 672 #endif
672 673
673 674
674 #ifdef CONFIG_KEYBOARD_GPIO 675 #ifdef CONFIG_KEYBOARD_GPIO
675 /* pinmux for keypad device */ 676 /* pinmux for keypad device */
676 static struct pinmux_config volume_keys_pin_mux[] = { 677 static struct pinmux_config volume_keys_pin_mux[] = {
677 {"spi0_sclk.gpio0_2", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT}, 678 {"spi0_sclk.gpio0_2", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
678 {"spi0_d0.gpio0_3", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT}, 679 {"spi0_d0.gpio0_3", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
679 {NULL, 0}, 680 {NULL, 0},
680 }; 681 };
681 682
682 /* Configure GPIOs for Volume Keys */ 683 /* Configure GPIOs for Volume Keys */
683 static struct gpio_keys_button am335x_evm_volume_gpio_buttons[] = { 684 static struct gpio_keys_button am335x_evm_volume_gpio_buttons[] = {
684 { 685 {
685 .code = KEY_VOLUMEUP, 686 .code = KEY_VOLUMEUP,
686 .gpio = GPIO_TO_PIN(0, 2), 687 .gpio = GPIO_TO_PIN(0, 2),
687 .active_low = true, 688 .active_low = true,
688 .desc = "volume-up", 689 .desc = "volume-up",
689 .type = EV_KEY, 690 .type = EV_KEY,
690 .wakeup = 1, 691 .wakeup = 1,
691 }, 692 },
692 { 693 {
693 .code = KEY_VOLUMEDOWN, 694 .code = KEY_VOLUMEDOWN,
694 .gpio = GPIO_TO_PIN(0, 3), 695 .gpio = GPIO_TO_PIN(0, 3),
695 .active_low = true, 696 .active_low = true,
696 .desc = "volume-down", 697 .desc = "volume-down",
697 .type = EV_KEY, 698 .type = EV_KEY,
698 .wakeup = 1, 699 .wakeup = 1,
699 }, 700 },
700 }; 701 };
701 702
702 static struct gpio_keys_platform_data am335x_evm_volume_gpio_key_info = { 703 static struct gpio_keys_platform_data am335x_evm_volume_gpio_key_info = {
703 .buttons = am335x_evm_volume_gpio_buttons, 704 .buttons = am335x_evm_volume_gpio_buttons,
704 .nbuttons = ARRAY_SIZE(am335x_evm_volume_gpio_buttons), 705 .nbuttons = ARRAY_SIZE(am335x_evm_volume_gpio_buttons),
705 }; 706 };
706 707
707 static struct platform_device am335x_evm_volume_keys = { 708 static struct platform_device am335x_evm_volume_keys = {
708 .name = "gpio-keys", 709 .name = "gpio-keys",
709 .id = -1, 710 .id = -1,
710 .dev = { 711 .dev = {
711 .platform_data = &am335x_evm_volume_gpio_key_info, 712 .platform_data = &am335x_evm_volume_gpio_key_info,
712 }, 713 },
713 }; 714 };
714 715
715 static void volume_keys_init(int evm_id, int profile) 716 static void volume_keys_init(int evm_id, int profile)
716 { 717 {
717 int err; 718 int err;
718 719
719 setup_pin_mux(volume_keys_pin_mux); 720 setup_pin_mux(volume_keys_pin_mux);
720 err = platform_device_register(&am335x_evm_volume_keys); 721 err = platform_device_register(&am335x_evm_volume_keys);
721 if (err) 722 if (err)
722 pr_err("failed to register matrix keypad (2x3) device\n"); 723 pr_err("failed to register matrix keypad (2x3) device\n");
723 } 724 }
724 #endif 725 #endif
725 726
726 /* 727 /*
727 * @evm_id - evm id which needs to be configured 728 * @evm_id - evm id which needs to be configured
728 * @dev_cfg - single evm structure which includes 729 * @dev_cfg - single evm structure which includes
729 * all module inits, pin-mux defines 730 * all module inits, pin-mux defines
730 * @profile - if present, else PROFILE_NONE 731 * @profile - if present, else PROFILE_NONE
731 * @dghtr_brd_flg - Whether Daughter board is present or not 732 * @dghtr_brd_flg - Whether Daughter board is present or not
732 */ 733 */
733 static void _configure_device(int evm_id, struct evm_dev_cfg *dev_cfg, 734 static void _configure_device(int evm_id, struct evm_dev_cfg *dev_cfg,
734 int profile) 735 int profile)
735 { 736 {
736 int i; 737 int i;
737 738
738 /* 739 /*
739 * Only General Purpose & Industrial Auto Motro Control 740 * Only General Purpose & Industrial Auto Motro Control
740 * EVM has profiles. So check if this evm has profile. 741 * EVM has profiles. So check if this evm has profile.
741 * If not, ignore the profile comparison 742 * If not, ignore the profile comparison
742 */ 743 */
743 744
744 /* 745 /*
745 * If the device is on baseboard, directly configure it. Else (device on 746 * If the device is on baseboard, directly configure it. Else (device on
746 * Daughter board), check if the daughter card is detected. 747 * Daughter board), check if the daughter card is detected.
747 */ 748 */
748 if (profile == PROFILE_NONE) { 749 if (profile == PROFILE_NONE) {
749 for (i = 0; dev_cfg->device_init != NULL; dev_cfg++) { 750 for (i = 0; dev_cfg->device_init != NULL; dev_cfg++) {
750 if (dev_cfg->device_on == DEV_ON_BASEBOARD) 751 if (dev_cfg->device_on == DEV_ON_BASEBOARD)
751 dev_cfg->device_init(evm_id, profile); 752 dev_cfg->device_init(evm_id, profile);
752 else if (daughter_brd_detected == true) 753 else if (daughter_brd_detected == true)
753 dev_cfg->device_init(evm_id, profile); 754 dev_cfg->device_init(evm_id, profile);
754 } 755 }
755 } else { 756 } else {
756 for (i = 0; dev_cfg->device_init != NULL; dev_cfg++) { 757 for (i = 0; dev_cfg->device_init != NULL; dev_cfg++) {
757 if (dev_cfg->profile & profile) { 758 if (dev_cfg->profile & profile) {
758 if (dev_cfg->device_on == DEV_ON_BASEBOARD) 759 if (dev_cfg->device_on == DEV_ON_BASEBOARD)
759 dev_cfg->device_init(evm_id, profile); 760 dev_cfg->device_init(evm_id, profile);
760 else if (daughter_brd_detected == true) 761 else if (daughter_brd_detected == true)
761 dev_cfg->device_init(evm_id, profile); 762 dev_cfg->device_init(evm_id, profile);
762 } 763 }
763 } 764 }
764 } 765 }
765 } 766 }
766 767
767 #define AM335X_LCD_BL_PIN GPIO_TO_PIN(0, 7) 768 #define AM335X_LCD_BL_PIN GPIO_TO_PIN(0, 7)
768 769
769 /* pinmux for usb0 drvvbus */ 770 /* pinmux for usb0 drvvbus */
770 static struct pinmux_config usb0_pin_mux[] = { 771 static struct pinmux_config usb0_pin_mux[] = {
771 {"usb0_drvvbus.usb0_drvvbus", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT}, 772 {"usb0_drvvbus.usb0_drvvbus", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
772 {NULL, 0}, 773 {NULL, 0},
773 }; 774 };
774 775
775 /* pinmux for usb1 drvvbus */ 776 /* pinmux for usb1 drvvbus */
776 static struct pinmux_config usb1_pin_mux[] = { 777 static struct pinmux_config usb1_pin_mux[] = {
777 {"usb1_drvvbus.usb1_drvvbus", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT}, 778 {"usb1_drvvbus.usb1_drvvbus", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
778 {NULL, 0}, 779 {NULL, 0},
779 }; 780 };
780 781
781 /* pinmux for profibus */ 782 /* pinmux for profibus */
782 static struct pinmux_config profibus_pin_mux[] = { 783 static struct pinmux_config profibus_pin_mux[] = {
783 {"uart1_rxd.pr1_uart0_rxd_mux1", OMAP_MUX_MODE5 | AM33XX_PIN_INPUT}, 784 {"uart1_rxd.pr1_uart0_rxd_mux1", OMAP_MUX_MODE5 | AM33XX_PIN_INPUT},
784 {"uart1_txd.pr1_uart0_txd_mux1", OMAP_MUX_MODE5 | AM33XX_PIN_OUTPUT}, 785 {"uart1_txd.pr1_uart0_txd_mux1", OMAP_MUX_MODE5 | AM33XX_PIN_OUTPUT},
785 {"mcasp0_fsr.pr1_pru0_pru_r30_5", OMAP_MUX_MODE5 | AM33XX_PIN_OUTPUT}, 786 {"mcasp0_fsr.pr1_pru0_pru_r30_5", OMAP_MUX_MODE5 | AM33XX_PIN_OUTPUT},
786 {NULL, 0}, 787 {NULL, 0},
787 }; 788 };
788 789
789 /* Module pin mux for eCAP0 */ 790 /* Module pin mux for eCAP0 */
790 static struct pinmux_config ecap0_pin_mux[] = { 791 static struct pinmux_config ecap0_pin_mux[] = {
791 {"ecap0_in_pwm0_out.gpio0_7", AM33XX_PIN_OUTPUT}, 792 {"ecap0_in_pwm0_out.gpio0_7", AM33XX_PIN_OUTPUT},
792 {NULL, 0}, 793 {NULL, 0},
793 }; 794 };
794 795
795 #define AM335XEVM_WLAN_IRQ_GPIO GPIO_TO_PIN(3, 17) 796 #define AM335XEVM_WLAN_IRQ_GPIO GPIO_TO_PIN(3, 17)
796 797
797 struct wl12xx_platform_data am335xevm_wlan_data = { 798 struct wl12xx_platform_data am335xevm_wlan_data = {
798 .irq = OMAP_GPIO_IRQ(AM335XEVM_WLAN_IRQ_GPIO), 799 .irq = OMAP_GPIO_IRQ(AM335XEVM_WLAN_IRQ_GPIO),
799 .board_ref_clock = WL12XX_REFCLOCK_38_XTAL, /* 38.4Mhz */ 800 .board_ref_clock = WL12XX_REFCLOCK_38_XTAL, /* 38.4Mhz */
800 }; 801 };
801 802
802 /* Module pin mux for wlan and bluetooth */ 803 /* Module pin mux for wlan and bluetooth */
803 static struct pinmux_config mmc2_wl12xx_pin_mux[] = { 804 static struct pinmux_config mmc2_wl12xx_pin_mux[] = {
804 {"gpmc_a1.mmc2_dat0", OMAP_MUX_MODE3 | AM33XX_PIN_INPUT_PULLUP}, 805 {"gpmc_a1.mmc2_dat0", OMAP_MUX_MODE3 | AM33XX_PIN_INPUT_PULLUP},
805 {"gpmc_a2.mmc2_dat1", OMAP_MUX_MODE3 | AM33XX_PIN_INPUT_PULLUP}, 806 {"gpmc_a2.mmc2_dat1", OMAP_MUX_MODE3 | AM33XX_PIN_INPUT_PULLUP},
806 {"gpmc_a3.mmc2_dat2", OMAP_MUX_MODE3 | AM33XX_PIN_INPUT_PULLUP}, 807 {"gpmc_a3.mmc2_dat2", OMAP_MUX_MODE3 | AM33XX_PIN_INPUT_PULLUP},
807 {"gpmc_ben1.mmc2_dat3", OMAP_MUX_MODE3 | AM33XX_PIN_INPUT_PULLUP}, 808 {"gpmc_ben1.mmc2_dat3", OMAP_MUX_MODE3 | AM33XX_PIN_INPUT_PULLUP},
808 {"gpmc_csn3.mmc2_cmd", OMAP_MUX_MODE3 | AM33XX_PIN_INPUT_PULLUP}, 809 {"gpmc_csn3.mmc2_cmd", OMAP_MUX_MODE3 | AM33XX_PIN_INPUT_PULLUP},
809 {"gpmc_clk.mmc2_clk", OMAP_MUX_MODE3 | AM33XX_PIN_INPUT_PULLUP}, 810 {"gpmc_clk.mmc2_clk", OMAP_MUX_MODE3 | AM33XX_PIN_INPUT_PULLUP},
810 {NULL, 0}, 811 {NULL, 0},
811 }; 812 };
812 813
813 static struct pinmux_config uart1_wl12xx_pin_mux[] = { 814 static struct pinmux_config uart1_wl12xx_pin_mux[] = {
814 {"uart1_ctsn.uart1_ctsn", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT}, 815 {"uart1_ctsn.uart1_ctsn", OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT},
815 {"uart1_rtsn.uart1_rtsn", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT}, 816 {"uart1_rtsn.uart1_rtsn", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT},
816 {"uart1_rxd.uart1_rxd", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP}, 817 {"uart1_rxd.uart1_rxd", OMAP_MUX_MODE0 | AM33XX_PIN_INPUT_PULLUP},
817 {"uart1_txd.uart1_txd", OMAP_MUX_MODE0 | AM33XX_PULL_ENBL}, 818 {"uart1_txd.uart1_txd", OMAP_MUX_MODE0 | AM33XX_PULL_ENBL},
818 {NULL, 0}, 819 {NULL, 0},
819 }; 820 };
820 821
821 static struct pinmux_config wl12xx_pin_mux_evm_rev1_1a[] = { 822 static struct pinmux_config wl12xx_pin_mux_evm_rev1_1a[] = {
822 {"gpmc_a0.gpio1_16", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, 823 {"gpmc_a0.gpio1_16", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT},
823 {"mcasp0_ahclkr.gpio3_17", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT}, 824 {"mcasp0_ahclkr.gpio3_17", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
824 {"mcasp0_ahclkx.gpio3_21", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, 825 {"mcasp0_ahclkx.gpio3_21", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT},
825 {NULL, 0}, 826 {NULL, 0},
826 }; 827 };
827 828
828 static struct pinmux_config wl12xx_pin_mux_evm_rev1_0[] = { 829 static struct pinmux_config wl12xx_pin_mux_evm_rev1_0[] = {
829 {"gpmc_csn1.gpio1_30", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, 830 {"gpmc_csn1.gpio1_30", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT},
830 {"mcasp0_ahclkr.gpio3_17", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT}, 831 {"mcasp0_ahclkr.gpio3_17", OMAP_MUX_MODE7 | AM33XX_PIN_INPUT},
831 {"gpmc_csn2.gpio1_31", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT}, 832 {"gpmc_csn2.gpio1_31", OMAP_MUX_MODE7 | AM33XX_PIN_OUTPUT},
832 {NULL, 0}, 833 {NULL, 0},
833 }; 834 };
834 835
835 static int backlight_enable = false; 836 static int backlight_enable = false;
836 837
837 static void enable_ecap0(int evm_id, int profile) 838 static void enable_ecap0(int evm_id, int profile)
838 { 839 {
839 backlight_enable = true; 840 backlight_enable = true;
840 } 841 }
841 842
842 static int __init ecap0_init(void) 843 static int __init ecap0_init(void)
843 { 844 {
844 int status = 0; 845 int status = 0;
845 846
846 if (backlight_enable) { 847 if (backlight_enable) {
847 setup_pin_mux(ecap0_pin_mux); 848 setup_pin_mux(ecap0_pin_mux);
848 849
849 status = gpio_request(AM335X_LCD_BL_PIN, "lcd bl\n"); 850 status = gpio_request(AM335X_LCD_BL_PIN, "lcd bl\n");
850 if (status < 0) 851 if (status < 0)
851 pr_warn("Failed to request gpio for LCD backlight\n"); 852 pr_warn("Failed to request gpio for LCD backlight\n");
852 853
853 gpio_direction_output(AM335X_LCD_BL_PIN, 1); 854 gpio_direction_output(AM335X_LCD_BL_PIN, 1);
854 } 855 }
855 return status; 856 return status;
856 } 857 }
857 late_initcall(ecap0_init); 858 late_initcall(ecap0_init);
858 859
859 static int __init conf_disp_pll(int rate) 860 static int __init conf_disp_pll(int rate)
860 { 861 {
861 struct clk *disp_pll; 862 struct clk *disp_pll;
862 int ret = -EINVAL; 863 int ret = -EINVAL;
863 864
864 disp_pll = clk_get(NULL, "dpll_disp_ck"); 865 disp_pll = clk_get(NULL, "dpll_disp_ck");
865 if (IS_ERR(disp_pll)) { 866 if (IS_ERR(disp_pll)) {
866 pr_err("Cannot clk_get disp_pll\n"); 867 pr_err("Cannot clk_get disp_pll\n");
867 goto out; 868 goto out;
868 } 869 }
869 870
870 ret = clk_set_rate(disp_pll, rate); 871 ret = clk_set_rate(disp_pll, rate);
871 clk_put(disp_pll); 872 clk_put(disp_pll);
872 out: 873 out:
873 return ret; 874 return ret;
874 } 875 }
875 876
876 static void lcdc_init(int evm_id, int profile) 877 static void lcdc_init(int evm_id, int profile)
877 { 878 {
878 879
879 setup_pin_mux(lcdc_pin_mux); 880 setup_pin_mux(lcdc_pin_mux);
880 881
881 if (conf_disp_pll(300000000)) { 882 if (conf_disp_pll(300000000)) {
882 pr_info("Failed configure display PLL, not attempting to" 883 pr_info("Failed configure display PLL, not attempting to"
883 "register LCDC\n"); 884 "register LCDC\n");
884 return; 885 return;
885 } 886 }
886 887
887 if (am33xx_register_lcdc(&TFC_S9700RTWV35TR_01B_pdata)) 888 if (am33xx_register_lcdc(&TFC_S9700RTWV35TR_01B_pdata))
888 pr_info("Failed to register LCDC device\n"); 889 pr_info("Failed to register LCDC device\n");
889 return; 890 return;
890 } 891 }
891 892
892 static void tsc_init(int evm_id, int profile) 893 static void tsc_init(int evm_id, int profile)
893 { 894 {
894 int err; 895 int err;
895 896
896 if (gp_evm_revision == GP_EVM_REV_IS_1_1A) { 897 if (gp_evm_revision == GP_EVM_REV_IS_1_1A) {
897 am335x_touchscreen_data.analog_input = 1; 898 am335x_touchscreen_data.analog_input = 1;
898 pr_info("TSC connected to beta GP EVM\n"); 899 pr_info("TSC connected to beta GP EVM\n");
899 } else { 900 } else {
900 am335x_touchscreen_data.analog_input = 0; 901 am335x_touchscreen_data.analog_input = 0;
901 pr_info("TSC connected to alpha GP EVM\n"); 902 pr_info("TSC connected to alpha GP EVM\n");
902 } 903 }
903 setup_pin_mux(tsc_pin_mux); 904 setup_pin_mux(tsc_pin_mux);
904 err = platform_device_register(&tsc_device); 905 err = platform_device_register(&tsc_device);
905 if (err) 906 if (err)
906 pr_err("failed to register touchscreen device\n"); 907 pr_err("failed to register touchscreen device\n");
907 } 908 }
908 909
909 static void rgmii1_init(int evm_id, int profile) 910 static void rgmii1_init(int evm_id, int profile)
910 { 911 {
911 setup_pin_mux(rgmii1_pin_mux); 912 setup_pin_mux(rgmii1_pin_mux);
912 return; 913 return;
913 } 914 }
914 915
915 static void rgmii2_init(int evm_id, int profile) 916 static void rgmii2_init(int evm_id, int profile)
916 { 917 {
917 setup_pin_mux(rgmii2_pin_mux); 918 setup_pin_mux(rgmii2_pin_mux);
918 return; 919 return;
919 } 920 }
920 921
921 static void mii1_init(int evm_id, int profile) 922 static void mii1_init(int evm_id, int profile)
922 { 923 {
923 setup_pin_mux(mii1_pin_mux); 924 setup_pin_mux(mii1_pin_mux);
924 return; 925 return;
925 } 926 }
926 927
927 static void rmii1_init(int evm_id, int profile) 928 static void rmii1_init(int evm_id, int profile)
928 { 929 {
929 setup_pin_mux(rmii1_pin_mux); 930 setup_pin_mux(rmii1_pin_mux);
930 return; 931 return;
931 } 932 }
932 933
933 static void usb0_init(int evm_id, int profile) 934 static void usb0_init(int evm_id, int profile)
934 { 935 {
935 setup_pin_mux(usb0_pin_mux); 936 setup_pin_mux(usb0_pin_mux);
936 return; 937 return;
937 } 938 }
938 939
939 static void usb1_init(int evm_id, int profile) 940 static void usb1_init(int evm_id, int profile)
940 { 941 {
941 setup_pin_mux(usb1_pin_mux); 942 setup_pin_mux(usb1_pin_mux);
942 return; 943 return;
943 } 944 }
944 945
945 /* setup uart3 */ 946 /* setup uart3 */
946 static void uart3_init(int evm_id, int profile) 947 static void uart3_init(int evm_id, int profile)
947 { 948 {
948 setup_pin_mux(uart3_pin_mux); 949 setup_pin_mux(uart3_pin_mux);
949 return; 950 return;
950 } 951 }
951 952
952 /* NAND partition information */ 953 /* NAND partition information */
953 static struct mtd_partition am335x_nand_partitions[] = { 954 static struct mtd_partition am335x_nand_partitions[] = {
954 /* All the partition sizes are listed in terms of NAND block size */ 955 /* All the partition sizes are listed in terms of NAND block size */
955 { 956 {
956 .name = "SPL", 957 .name = "SPL",
957 .offset = 0, /* Offset = 0x0 */ 958 .offset = 0, /* Offset = 0x0 */
958 .size = SZ_128K, 959 .size = SZ_128K,
959 }, 960 },
960 { 961 {
961 .name = "SPL.backup1", 962 .name = "SPL.backup1",
962 .offset = MTDPART_OFS_APPEND, /* Offset = 0x20000 */ 963 .offset = MTDPART_OFS_APPEND, /* Offset = 0x20000 */
963 .size = SZ_128K, 964 .size = SZ_128K,
964 }, 965 },
965 { 966 {
966 .name = "SPL.backup2", 967 .name = "SPL.backup2",
967 .offset = MTDPART_OFS_APPEND, /* Offset = 0x40000 */ 968 .offset = MTDPART_OFS_APPEND, /* Offset = 0x40000 */
968 .size = SZ_128K, 969 .size = SZ_128K,
969 }, 970 },
970 { 971 {
971 .name = "SPL.backup3", 972 .name = "SPL.backup3",
972 .offset = MTDPART_OFS_APPEND, /* Offset = 0x60000 */ 973 .offset = MTDPART_OFS_APPEND, /* Offset = 0x60000 */
973 .size = SZ_128K, 974 .size = SZ_128K,
974 }, 975 },
975 { 976 {
976 .name = "U-Boot", 977 .name = "U-Boot",
977 .offset = MTDPART_OFS_APPEND, /* Offset = 0x80000 */ 978 .offset = MTDPART_OFS_APPEND, /* Offset = 0x80000 */
978 .size = 15 * SZ_128K, 979 .size = 15 * SZ_128K,
979 }, 980 },
980 { 981 {
981 .name = "U-Boot Env", 982 .name = "U-Boot Env",
982 .offset = MTDPART_OFS_APPEND, /* Offset = 0x260000 */ 983 .offset = MTDPART_OFS_APPEND, /* Offset = 0x260000 */
983 .size = 1 * SZ_128K, 984 .size = 1 * SZ_128K,
984 }, 985 },
985 { 986 {
986 .name = "Kernel", 987 .name = "Kernel",
987 .offset = MTDPART_OFS_APPEND, /* Offset = 0x280000 */ 988 .offset = MTDPART_OFS_APPEND, /* Offset = 0x280000 */
988 .size = 40 * SZ_128K, 989 .size = 40 * SZ_128K,
989 }, 990 },
990 { 991 {
991 .name = "File System", 992 .name = "File System",
992 .offset = MTDPART_OFS_APPEND, /* Offset = 0x780000 */ 993 .offset = MTDPART_OFS_APPEND, /* Offset = 0x780000 */
993 .size = MTDPART_SIZ_FULL, 994 .size = MTDPART_SIZ_FULL,
994 }, 995 },
995 }; 996 };
996 997
997 /* SPI 0/1 Platform Data */ 998 /* SPI 0/1 Platform Data */
998 /* SPI flash information */ 999 /* SPI flash information */
999 static struct mtd_partition am335x_spi_partitions[] = { 1000 static struct mtd_partition am335x_spi_partitions[] = {
1000 /* All the partition sizes are listed in terms of erase size */ 1001 /* All the partition sizes are listed in terms of erase size */
1001 { 1002 {
1002 .name = "U-Boot-min", 1003 .name = "U-Boot-min",
1003 .offset = 0, 1004 .offset = 0,
1004 .size = SZ_128K, 1005 .size = SZ_128K,
1005 .mask_flags = MTD_WRITEABLE, /* force read-only */ 1006 .mask_flags = MTD_WRITEABLE, /* force read-only */
1006 }, 1007 },
1007 { 1008 {
1008 .name = "U-Boot", 1009 .name = "U-Boot",
1009 .offset = MTDPART_OFS_APPEND, 1010 .offset = MTDPART_OFS_APPEND,
1010 .size = 2 * SZ_128K, 1011 .size = 2 * SZ_128K,
1011 .mask_flags = MTD_WRITEABLE, /* force read-only */ 1012 .mask_flags = MTD_WRITEABLE, /* force read-only */
1012 }, 1013 },
1013 { 1014 {
1014 .name = "U-Boot Env", 1015 .name = "U-Boot Env",
1015 .offset = MTDPART_OFS_APPEND, 1016 .offset = MTDPART_OFS_APPEND,
1016 .size = 2 * SZ_4K, 1017 .size = 2 * SZ_4K,
1017 }, 1018 },
1018 { 1019 {
1019 .name = "Kernel", 1020 .name = "Kernel",
1020 .offset = MTDPART_OFS_APPEND, 1021 .offset = MTDPART_OFS_APPEND,
1021 .size = 28 * SZ_128K, 1022 .size = 28 * SZ_128K,
1022 }, 1023 },
1023 { 1024 {
1024 .name = "File System", 1025 .name = "File System",
1025 .offset = MTDPART_OFS_APPEND, 1026 .offset = MTDPART_OFS_APPEND,
1026 .size = MTDPART_SIZ_FULL, /* size ~= 1.1 MiB */ 1027 .size = MTDPART_SIZ_FULL, /* size ~= 1.1 MiB */
1027 } 1028 }
1028 }; 1029 };
1029 1030
1030 static const struct flash_platform_data am335x_spi_flash = { 1031 static const struct flash_platform_data am335x_spi_flash = {
1031 .type = "w25q64", 1032 .type = "w25q64",
1032 .name = "spi_flash", 1033 .name = "spi_flash",
1033 .parts = am335x_spi_partitions, 1034 .parts = am335x_spi_partitions,
1034 .nr_parts = ARRAY_SIZE(am335x_spi_partitions), 1035 .nr_parts = ARRAY_SIZE(am335x_spi_partitions),
1035 }; 1036 };
1036 1037
1037 /* 1038 /*
1038 * SPI Flash works at 80Mhz however SPI Controller works at 48MHz. 1039 * SPI Flash works at 80Mhz however SPI Controller works at 48MHz.
1039 * So setup Max speed to be less than that of Controller speed 1040 * So setup Max speed to be less than that of Controller speed
1040 */ 1041 */
1041 static struct spi_board_info am335x_spi0_slave_info[] = { 1042 static struct spi_board_info am335x_spi0_slave_info[] = {
1042 { 1043 {
1043 .modalias = "m25p80", 1044 .modalias = "m25p80",
1044 .platform_data = &am335x_spi_flash, 1045 .platform_data = &am335x_spi_flash,
1045 .irq = -1, 1046 .irq = -1,
1046 .max_speed_hz = 24000000, 1047 .max_speed_hz = 24000000,
1047 .bus_num = 1, 1048 .bus_num = 1,
1048 .chip_select = 0, 1049 .chip_select = 0,
1049 }, 1050 },
1050 }; 1051 };
1051 1052
1052 static struct spi_board_info am335x_spi1_slave_info[] = { 1053 static struct spi_board_info am335x_spi1_slave_info[] = {
1053 { 1054 {
1054 .modalias = "m25p80", 1055 .modalias = "m25p80",
1055 .platform_data = &am335x_spi_flash, 1056 .platform_data = &am335x_spi_flash,
1056 .irq = -1, 1057 .irq = -1,
1057 .max_speed_hz = 12000000, 1058 .max_speed_hz = 12000000,
1058 .bus_num = 2, 1059 .bus_num = 2,
1059 .chip_select = 0, 1060 .chip_select = 0,
1060 }, 1061 },
1061 }; 1062 };
1062 1063
1063 static void evm_nand_init(int evm_id, int profile) 1064 static void evm_nand_init(int evm_id, int profile)
1064 { 1065 {
1065 setup_pin_mux(nand_pin_mux); 1066 setup_pin_mux(nand_pin_mux);
1066 board_nand_init(am335x_nand_partitions, 1067 board_nand_init(am335x_nand_partitions,
1067 ARRAY_SIZE(am335x_nand_partitions), 0, 0); 1068 ARRAY_SIZE(am335x_nand_partitions), 0, 0);
1068 } 1069 }
1069 1070
1070 static struct lis3lv02d_platform_data lis331dlh_pdata = { 1071 static struct lis3lv02d_platform_data lis331dlh_pdata = {
1071 .click_flags = LIS3_CLICK_SINGLE_X | 1072 .click_flags = LIS3_CLICK_SINGLE_X |
1072 LIS3_CLICK_SINGLE_Y | 1073 LIS3_CLICK_SINGLE_Y |
1073 LIS3_CLICK_SINGLE_Z, 1074 LIS3_CLICK_SINGLE_Z,
1074 .wakeup_flags = LIS3_WAKEUP_X_LO | LIS3_WAKEUP_X_HI | 1075 .wakeup_flags = LIS3_WAKEUP_X_LO | LIS3_WAKEUP_X_HI |
1075 LIS3_WAKEUP_Y_LO | LIS3_WAKEUP_Y_HI | 1076 LIS3_WAKEUP_Y_LO | LIS3_WAKEUP_Y_HI |
1076 LIS3_WAKEUP_Z_LO | LIS3_WAKEUP_Z_HI, 1077 LIS3_WAKEUP_Z_LO | LIS3_WAKEUP_Z_HI,
1077 .irq_cfg = LIS3_IRQ1_CLICK | LIS3_IRQ2_CLICK, 1078 .irq_cfg = LIS3_IRQ1_CLICK | LIS3_IRQ2_CLICK,
1078 .wakeup_thresh = 10, 1079 .wakeup_thresh = 10,
1079 .click_thresh_x = 10, 1080 .click_thresh_x = 10,
1080 .click_thresh_y = 10, 1081 .click_thresh_y = 10,
1081 .click_thresh_z = 10, 1082 .click_thresh_z = 10,
1082 .g_range = 2, 1083 .g_range = 2,
1083 .st_min_limits[0] = 120, 1084 .st_min_limits[0] = 120,
1084 .st_min_limits[1] = 120, 1085 .st_min_limits[1] = 120,
1085 .st_min_limits[2] = 140, 1086 .st_min_limits[2] = 140,
1086 .st_max_limits[0] = 550, 1087 .st_max_limits[0] = 550,
1087 .st_max_limits[1] = 550, 1088 .st_max_limits[1] = 550,
1088 .st_max_limits[2] = 750, 1089 .st_max_limits[2] = 750,
1089 }; 1090 };
1090 1091
1091 static struct i2c_board_info am335x_i2c_boardinfo1[] = { 1092 static struct i2c_board_info am335x_i2c_boardinfo1[] = {
1092 { 1093 {
1093 I2C_BOARD_INFO("tlv320aic3x", 0x1b), 1094 I2C_BOARD_INFO("tlv320aic3x", 0x1b),
1094 }, 1095 },
1095 { 1096 {
1096 I2C_BOARD_INFO("lis331dlh", 0x18), 1097 I2C_BOARD_INFO("lis331dlh", 0x18),
1097 .platform_data = &lis331dlh_pdata, 1098 .platform_data = &lis331dlh_pdata,
1098 }, 1099 },
1099 { 1100 {
1100 I2C_BOARD_INFO("tsl2550", 0x39), 1101 I2C_BOARD_INFO("tsl2550", 0x39),
1101 }, 1102 },
1102 { 1103 {
1103 I2C_BOARD_INFO("tmp275", 0x48), 1104 I2C_BOARD_INFO("tmp275", 0x48),
1104 }, 1105 },
1105 }; 1106 };
1106 1107
1107 static void i2c1_init(int evm_id, int profile) 1108 static void i2c1_init(int evm_id, int profile)
1108 { 1109 {
1109 setup_pin_mux(i2c1_pin_mux); 1110 setup_pin_mux(i2c1_pin_mux);
1110 omap_register_i2c_bus(2, 100, am335x_i2c_boardinfo1, 1111 omap_register_i2c_bus(2, 100, am335x_i2c_boardinfo1,
1111 ARRAY_SIZE(am335x_i2c_boardinfo1)); 1112 ARRAY_SIZE(am335x_i2c_boardinfo1));
1112 return; 1113 return;
1113 } 1114 }
1114 1115
1115 /* Setup McASP 1 */ 1116 /* Setup McASP 1 */
1116 static void mcasp1_init(int evm_id, int profile) 1117 static void mcasp1_init(int evm_id, int profile)
1117 { 1118 {
1118 /* Configure McASP */ 1119 /* Configure McASP */
1119 setup_pin_mux(mcasp1_pin_mux); 1120 setup_pin_mux(mcasp1_pin_mux);
1120 am335x_register_mcasp1(&am335x_evm_snd_data1); 1121 am335x_register_mcasp1(&am335x_evm_snd_data1);
1121 return; 1122 return;
1122 } 1123 }
1123 1124
1124 static void mmc1_init(int evm_id, int profile) 1125 static void mmc1_init(int evm_id, int profile)
1125 { 1126 {
1126 setup_pin_mux(mmc1_pin_mux); 1127 setup_pin_mux(mmc1_pin_mux);
1127 1128
1128 am335x_mmc[1].mmc = 2; 1129 am335x_mmc[1].mmc = 2;
1129 am335x_mmc[1].caps = MMC_CAP_4_BIT_DATA; 1130 am335x_mmc[1].caps = MMC_CAP_4_BIT_DATA;
1130 am335x_mmc[1].gpio_cd = GPIO_TO_PIN(3, 15); 1131 am335x_mmc[1].gpio_cd = GPIO_TO_PIN(3, 15);
1131 am335x_mmc[1].gpio_wp = GPIO_TO_PIN(0, 14); 1132 am335x_mmc[1].gpio_wp = GPIO_TO_PIN(0, 14);
1132 am335x_mmc[1].ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34; /* 3V3 */ 1133 am335x_mmc[1].ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34; /* 3V3 */
1133 1134
1134 /* mmc will be initialized when mmc0_init is called */ 1135 /* mmc will be initialized when mmc0_init is called */
1135 return; 1136 return;
1136 } 1137 }
1137 1138
1138 static void mmc2_wl12xx_init(int evm_id, int profile) 1139 static void mmc2_wl12xx_init(int evm_id, int profile)
1139 { 1140 {
1140 setup_pin_mux(mmc2_wl12xx_pin_mux); 1141 setup_pin_mux(mmc2_wl12xx_pin_mux);
1141 1142
1142 am335x_mmc[1].mmc = 3; 1143 am335x_mmc[1].mmc = 3;
1143 am335x_mmc[1].name = "wl1271"; 1144 am335x_mmc[1].name = "wl1271";
1144 am335x_mmc[1].caps = MMC_CAP_4_BIT_DATA | MMC_CAP_POWER_OFF_CARD 1145 am335x_mmc[1].caps = MMC_CAP_4_BIT_DATA | MMC_CAP_POWER_OFF_CARD
1145 | MMC_PM_KEEP_POWER; 1146 | MMC_PM_KEEP_POWER;
1146 am335x_mmc[1].nonremovable = true; 1147 am335x_mmc[1].nonremovable = true;
1147 am335x_mmc[1].gpio_cd = -EINVAL; 1148 am335x_mmc[1].gpio_cd = -EINVAL;
1148 am335x_mmc[1].gpio_wp = -EINVAL; 1149 am335x_mmc[1].gpio_wp = -EINVAL;
1149 am335x_mmc[1].ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34; /* 3V3 */ 1150 am335x_mmc[1].ocr_mask = MMC_VDD_32_33 | MMC_VDD_33_34; /* 3V3 */
1150 1151
1151 /* mmc will be initialized when mmc0_init is called */ 1152 /* mmc will be initialized when mmc0_init is called */
1152 return; 1153 return;
1153 } 1154 }
1154 1155
1155 static void uart1_wl12xx_init(int evm_id, int profile) 1156 static void uart1_wl12xx_init(int evm_id, int profile)
1156 { 1157 {
1157 setup_pin_mux(uart1_wl12xx_pin_mux); 1158 setup_pin_mux(uart1_wl12xx_pin_mux);
1158 } 1159 }
1159 1160
1160 static void wl12xx_bluetooth_enable(void) 1161 static void wl12xx_bluetooth_enable(void)
1161 { 1162 {
1162 int status = gpio_request(am335xevm_wlan_data.bt_enable_gpio, 1163 int status = gpio_request(am335xevm_wlan_data.bt_enable_gpio,
1163 "bt_en\n"); 1164 "bt_en\n");
1164 if (status < 0) 1165 if (status < 0)
1165 pr_err("Failed to request gpio for bt_enable"); 1166 pr_err("Failed to request gpio for bt_enable");
1166 1167
1167 pr_info("Configure Bluetooth Enable pin...\n"); 1168 pr_info("Configure Bluetooth Enable pin...\n");
1168 gpio_direction_output(am335xevm_wlan_data.bt_enable_gpio, 0); 1169 gpio_direction_output(am335xevm_wlan_data.bt_enable_gpio, 0);
1169 } 1170 }
1170 1171
1171 static int wl12xx_set_power(struct device *dev, int slot, int on, int vdd) 1172 static int wl12xx_set_power(struct device *dev, int slot, int on, int vdd)
1172 { 1173 {
1173 if (on) { 1174 if (on) {
1174 gpio_set_value(am335xevm_wlan_data.wlan_enable_gpio, 1); 1175 gpio_set_value(am335xevm_wlan_data.wlan_enable_gpio, 1);
1175 mdelay(70); 1176 mdelay(70);
1176 } 1177 }
1177 else 1178 else
1178 gpio_set_value(am335xevm_wlan_data.wlan_enable_gpio, 0); 1179 gpio_set_value(am335xevm_wlan_data.wlan_enable_gpio, 0);
1179 1180
1180 return 0; 1181 return 0;
1181 } 1182 }
1182 1183
1183 static void wl12xx_init(int evm_id, int profile) 1184 static void wl12xx_init(int evm_id, int profile)
1184 { 1185 {
1185 struct device *dev; 1186 struct device *dev;
1186 struct omap_mmc_platform_data *pdata; 1187 struct omap_mmc_platform_data *pdata;
1187 int ret; 1188 int ret;
1188 1189
1189 /* Register WLAN and BT enable pins based on the evm board revision */ 1190 /* Register WLAN and BT enable pins based on the evm board revision */
1190 if (gp_evm_revision == GP_EVM_REV_IS_1_1A) { 1191 if (gp_evm_revision == GP_EVM_REV_IS_1_1A) {
1191 am335xevm_wlan_data.wlan_enable_gpio = GPIO_TO_PIN(1, 16); 1192 am335xevm_wlan_data.wlan_enable_gpio = GPIO_TO_PIN(1, 16);
1192 am335xevm_wlan_data.bt_enable_gpio = GPIO_TO_PIN(3, 21); 1193 am335xevm_wlan_data.bt_enable_gpio = GPIO_TO_PIN(3, 21);
1193 } 1194 }
1194 else { 1195 else {
1195 am335xevm_wlan_data.wlan_enable_gpio = GPIO_TO_PIN(1, 30); 1196 am335xevm_wlan_data.wlan_enable_gpio = GPIO_TO_PIN(1, 30);
1196 am335xevm_wlan_data.bt_enable_gpio = GPIO_TO_PIN(1, 31); 1197 am335xevm_wlan_data.bt_enable_gpio = GPIO_TO_PIN(1, 31);
1197 } 1198 }
1198 1199
1199 wl12xx_bluetooth_enable(); 1200 wl12xx_bluetooth_enable();
1200 1201
1201 if (wl12xx_set_platform_data(&am335xevm_wlan_data)) 1202 if (wl12xx_set_platform_data(&am335xevm_wlan_data))
1202 pr_err("error setting wl12xx data\n"); 1203 pr_err("error setting wl12xx data\n");
1203 1204
1204 dev = am335x_mmc[1].dev; 1205 dev = am335x_mmc[1].dev;
1205 if (!dev) { 1206 if (!dev) {
1206 pr_err("wl12xx mmc device initialization failed\n"); 1207 pr_err("wl12xx mmc device initialization failed\n");
1207 goto out; 1208 goto out;
1208 } 1209 }
1209 1210
1210 pdata = dev->platform_data; 1211 pdata = dev->platform_data;
1211 if (!pdata) { 1212 if (!pdata) {
1212 pr_err("Platfrom data of wl12xx device not set\n"); 1213 pr_err("Platfrom data of wl12xx device not set\n");
1213 goto out; 1214 goto out;
1214 } 1215 }
1215 1216
1216 ret = gpio_request_one(am335xevm_wlan_data.wlan_enable_gpio, 1217 ret = gpio_request_one(am335xevm_wlan_data.wlan_enable_gpio,
1217 GPIOF_OUT_INIT_LOW, "wlan_en"); 1218 GPIOF_OUT_INIT_LOW, "wlan_en");
1218 if (ret) { 1219 if (ret) {
1219 pr_err("Error requesting wlan enable gpio: %d\n", ret); 1220 pr_err("Error requesting wlan enable gpio: %d\n", ret);
1220 goto out; 1221 goto out;
1221 } 1222 }
1222 1223
1223 if (gp_evm_revision == GP_EVM_REV_IS_1_1A) 1224 if (gp_evm_revision == GP_EVM_REV_IS_1_1A)
1224 setup_pin_mux(wl12xx_pin_mux_evm_rev1_1a); 1225 setup_pin_mux(wl12xx_pin_mux_evm_rev1_1a);
1225 else 1226 else
1226 setup_pin_mux(wl12xx_pin_mux_evm_rev1_0); 1227 setup_pin_mux(wl12xx_pin_mux_evm_rev1_0);
1227 1228
1228 pdata->slots[0].set_power = wl12xx_set_power; 1229 pdata->slots[0].set_power = wl12xx_set_power;
1229 out: 1230 out:
1230 return; 1231 return;
1231 } 1232 }
1232 1233
1233 static void d_can_init(int evm_id, int profile) 1234 static void d_can_init(int evm_id, int profile)
1234 { 1235 {
1235 switch (evm_id) { 1236 switch (evm_id) {
1236 case IND_AUT_MTR_EVM: 1237 case IND_AUT_MTR_EVM:
1237 if ((profile == PROFILE_0) || (profile == PROFILE_1)) { 1238 if ((profile == PROFILE_0) || (profile == PROFILE_1)) {
1238 setup_pin_mux(d_can_ia_pin_mux); 1239 setup_pin_mux(d_can_ia_pin_mux);
1239 /* Instance Zero */ 1240 /* Instance Zero */
1240 am33xx_d_can_init(0); 1241 am33xx_d_can_init(0);
1241 } 1242 }
1242 break; 1243 break;
1243 case GEN_PURP_EVM: 1244 case GEN_PURP_EVM:
1244 if (profile == PROFILE_1) { 1245 if (profile == PROFILE_1) {
1245 setup_pin_mux(d_can_gp_pin_mux); 1246 setup_pin_mux(d_can_gp_pin_mux);
1246 /* Instance One */ 1247 /* Instance One */
1247 am33xx_d_can_init(1); 1248 am33xx_d_can_init(1);
1248 } 1249 }
1249 break; 1250 break;
1250 default: 1251 default:
1251 break; 1252 break;
1252 } 1253 }
1253 } 1254 }
1254 1255
1255 static void mmc0_init(int evm_id, int profile) 1256 static void mmc0_init(int evm_id, int profile)
1256 { 1257 {
1257 setup_pin_mux(mmc0_pin_mux); 1258 setup_pin_mux(mmc0_pin_mux);
1258 1259
1259 omap2_hsmmc_init(am335x_mmc); 1260 omap2_hsmmc_init(am335x_mmc);
1260 return; 1261 return;
1261 } 1262 }
1262 1263
1263 static void mmc0_no_cd_init(int evm_id, int profile) 1264 static void mmc0_no_cd_init(int evm_id, int profile)
1264 { 1265 {
1265 setup_pin_mux(mmc0_no_cd_pin_mux); 1266 setup_pin_mux(mmc0_no_cd_pin_mux);
1266 1267
1267 omap2_hsmmc_init(am335x_mmc); 1268 omap2_hsmmc_init(am335x_mmc);
1268 return; 1269 return;
1269 } 1270 }
1270 1271
1271 1272
1272 /* setup spi0 */ 1273 /* setup spi0 */
1273 static void spi0_init(int evm_id, int profile) 1274 static void spi0_init(int evm_id, int profile)
1274 { 1275 {
1275 setup_pin_mux(spi0_pin_mux); 1276 setup_pin_mux(spi0_pin_mux);
1276 spi_register_board_info(am335x_spi0_slave_info, 1277 spi_register_board_info(am335x_spi0_slave_info,
1277 ARRAY_SIZE(am335x_spi0_slave_info)); 1278 ARRAY_SIZE(am335x_spi0_slave_info));
1278 return; 1279 return;
1279 } 1280 }
1280 1281
1281 /* setup spi1 */ 1282 /* setup spi1 */
1282 static void spi1_init(int evm_id, int profile) 1283 static void spi1_init(int evm_id, int profile)
1283 { 1284 {
1284 setup_pin_mux(spi1_pin_mux); 1285 setup_pin_mux(spi1_pin_mux);
1285 spi_register_board_info(am335x_spi1_slave_info, 1286 spi_register_board_info(am335x_spi1_slave_info,
1286 ARRAY_SIZE(am335x_spi1_slave_info)); 1287 ARRAY_SIZE(am335x_spi1_slave_info));
1287 return; 1288 return;
1288 } 1289 }
1289 1290
1290 1291
1291 static int beaglebone_phy_fixup(struct phy_device *phydev) 1292 static int beaglebone_phy_fixup(struct phy_device *phydev)
1292 { 1293 {
1293 phydev->supported &= ~(SUPPORTED_100baseT_Half | 1294 phydev->supported &= ~(SUPPORTED_100baseT_Half |
1294 SUPPORTED_100baseT_Full); 1295 SUPPORTED_100baseT_Full);
1295 1296
1296 return 0; 1297 return 0;
1297 } 1298 }
1298 1299
1299 #ifdef CONFIG_TLK110_WORKAROUND 1300 #ifdef CONFIG_TLK110_WORKAROUND
1300 static int am335x_tlk110_phy_fixup(struct phy_device *phydev) 1301 static int am335x_tlk110_phy_fixup(struct phy_device *phydev)
1301 { 1302 {
1302 unsigned int val; 1303 unsigned int val;
1303 1304
1304 /* This is done as a workaround to support TLK110 rev1.0 phy */ 1305 /* This is done as a workaround to support TLK110 rev1.0 phy */
1305 val = phy_read(phydev, TLK110_COARSEGAIN_REG); 1306 val = phy_read(phydev, TLK110_COARSEGAIN_REG);
1306 phy_write(phydev, TLK110_COARSEGAIN_REG, (val | TLK110_COARSEGAIN_VAL)); 1307 phy_write(phydev, TLK110_COARSEGAIN_REG, (val | TLK110_COARSEGAIN_VAL));
1307 1308
1308 val = phy_read(phydev, TLK110_LPFHPF_REG); 1309 val = phy_read(phydev, TLK110_LPFHPF_REG);
1309 phy_write(phydev, TLK110_LPFHPF_REG, (val | TLK110_LPFHPF_VAL)); 1310 phy_write(phydev, TLK110_LPFHPF_REG, (val | TLK110_LPFHPF_VAL));
1310 1311
1311 val = phy_read(phydev, TLK110_SPAREANALOG_REG); 1312 val = phy_read(phydev, TLK110_SPAREANALOG_REG);
1312 phy_write(phydev, TLK110_SPAREANALOG_REG, (val | TLK110_SPANALOG_VAL)); 1313 phy_write(phydev, TLK110_SPAREANALOG_REG, (val | TLK110_SPANALOG_VAL));
1313 1314
1314 val = phy_read(phydev, TLK110_VRCR_REG); 1315 val = phy_read(phydev, TLK110_VRCR_REG);
1315 phy_write(phydev, TLK110_VRCR_REG, (val | TLK110_VRCR_VAL)); 1316 phy_write(phydev, TLK110_VRCR_REG, (val | TLK110_VRCR_VAL));
1316 1317
1317 val = phy_read(phydev, TLK110_SETFFE_REG); 1318 val = phy_read(phydev, TLK110_SETFFE_REG);
1318 phy_write(phydev, TLK110_SETFFE_REG, (val | TLK110_SETFFE_VAL)); 1319 phy_write(phydev, TLK110_SETFFE_REG, (val | TLK110_SETFFE_VAL));
1319 1320
1320 val = phy_read(phydev, TLK110_FTSP_REG); 1321 val = phy_read(phydev, TLK110_FTSP_REG);
1321 phy_write(phydev, TLK110_FTSP_REG, (val | TLK110_FTSP_VAL)); 1322 phy_write(phydev, TLK110_FTSP_REG, (val | TLK110_FTSP_VAL));
1322 1323
1323 val = phy_read(phydev, TLK110_ALFATPIDL_REG); 1324 val = phy_read(phydev, TLK110_ALFATPIDL_REG);
1324 phy_write(phydev, TLK110_ALFATPIDL_REG, (val | TLK110_ALFATPIDL_VAL)); 1325 phy_write(phydev, TLK110_ALFATPIDL_REG, (val | TLK110_ALFATPIDL_VAL));
1325 1326
1326 val = phy_read(phydev, TLK110_PSCOEF21_REG); 1327 val = phy_read(phydev, TLK110_PSCOEF21_REG);
1327 phy_write(phydev, TLK110_PSCOEF21_REG, (val | TLK110_PSCOEF21_VAL)); 1328 phy_write(phydev, TLK110_PSCOEF21_REG, (val | TLK110_PSCOEF21_VAL));
1328 1329
1329 val = phy_read(phydev, TLK110_PSCOEF3_REG); 1330 val = phy_read(phydev, TLK110_PSCOEF3_REG);
1330 phy_write(phydev, TLK110_PSCOEF3_REG, (val | TLK110_PSCOEF3_VAL)); 1331 phy_write(phydev, TLK110_PSCOEF3_REG, (val | TLK110_PSCOEF3_VAL));
1331 1332
1332 val = phy_read(phydev, TLK110_ALFAFACTOR1_REG); 1333 val = phy_read(phydev, TLK110_ALFAFACTOR1_REG);
1333 phy_write(phydev, TLK110_ALFAFACTOR1_REG, (val | TLK110_ALFACTOR1_VAL)); 1334 phy_write(phydev, TLK110_ALFAFACTOR1_REG, (val | TLK110_ALFACTOR1_VAL));
1334 1335
1335 val = phy_read(phydev, TLK110_ALFAFACTOR2_REG); 1336 val = phy_read(phydev, TLK110_ALFAFACTOR2_REG);
1336 phy_write(phydev, TLK110_ALFAFACTOR2_REG, (val | TLK110_ALFACTOR2_VAL)); 1337 phy_write(phydev, TLK110_ALFAFACTOR2_REG, (val | TLK110_ALFACTOR2_VAL));
1337 1338
1338 val = phy_read(phydev, TLK110_CFGPS_REG); 1339 val = phy_read(phydev, TLK110_CFGPS_REG);
1339 phy_write(phydev, TLK110_CFGPS_REG, (val | TLK110_CFGPS_VAL)); 1340 phy_write(phydev, TLK110_CFGPS_REG, (val | TLK110_CFGPS_VAL));
1340 1341
1341 val = phy_read(phydev, TLK110_FTSPTXGAIN_REG); 1342 val = phy_read(phydev, TLK110_FTSPTXGAIN_REG);
1342 phy_write(phydev, TLK110_FTSPTXGAIN_REG, (val | TLK110_FTSPTXGAIN_VAL)); 1343 phy_write(phydev, TLK110_FTSPTXGAIN_REG, (val | TLK110_FTSPTXGAIN_VAL));
1343 1344
1344 val = phy_read(phydev, TLK110_SWSCR3_REG); 1345 val = phy_read(phydev, TLK110_SWSCR3_REG);
1345 phy_write(phydev, TLK110_SWSCR3_REG, (val | TLK110_SWSCR3_VAL)); 1346 phy_write(phydev, TLK110_SWSCR3_REG, (val | TLK110_SWSCR3_VAL));
1346 1347
1347 val = phy_read(phydev, TLK110_SCFALLBACK_REG); 1348 val = phy_read(phydev, TLK110_SCFALLBACK_REG);
1348 phy_write(phydev, TLK110_SCFALLBACK_REG, (val | TLK110_SCFALLBACK_VAL)); 1349 phy_write(phydev, TLK110_SCFALLBACK_REG, (val | TLK110_SCFALLBACK_VAL));
1349 1350
1350 val = phy_read(phydev, TLK110_PHYRCR_REG); 1351 val = phy_read(phydev, TLK110_PHYRCR_REG);
1351 phy_write(phydev, TLK110_PHYRCR_REG, (val | TLK110_PHYRCR_VAL)); 1352 phy_write(phydev, TLK110_PHYRCR_REG, (val | TLK110_PHYRCR_VAL));
1352 1353
1353 return 0; 1354 return 0;
1354 } 1355 }
1355 #endif 1356 #endif
1356 1357
1357 static void profibus_init(int evm_id, int profile) 1358 static void profibus_init(int evm_id, int profile)
1358 { 1359 {
1359 setup_pin_mux(profibus_pin_mux); 1360 setup_pin_mux(profibus_pin_mux);
1360 return; 1361 return;
1361 } 1362 }
1362 1363
1363 /* Low-Cost EVM */ 1364 /* Low-Cost EVM */
1364 static struct evm_dev_cfg low_cost_evm_dev_cfg[] = { 1365 static struct evm_dev_cfg low_cost_evm_dev_cfg[] = {
1365 {rgmii1_init, DEV_ON_BASEBOARD, PROFILE_NONE}, 1366 {rgmii1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
1366 {usb0_init, DEV_ON_BASEBOARD, PROFILE_NONE}, 1367 {usb0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
1367 {usb1_init, DEV_ON_BASEBOARD, PROFILE_NONE}, 1368 {usb1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
1368 {evm_nand_init, DEV_ON_BASEBOARD, PROFILE_NONE}, 1369 {evm_nand_init, DEV_ON_BASEBOARD, PROFILE_NONE},
1369 {NULL, 0, 0}, 1370 {NULL, 0, 0},
1370 }; 1371 };
1371 1372
1372 /* General Purpose EVM */ 1373 /* General Purpose EVM */
1373 static struct evm_dev_cfg gen_purp_evm_dev_cfg[] = { 1374 static struct evm_dev_cfg gen_purp_evm_dev_cfg[] = {
1374 {enable_ecap0, DEV_ON_DGHTR_BRD, (PROFILE_0 | PROFILE_1 | 1375 {enable_ecap0, DEV_ON_DGHTR_BRD, (PROFILE_0 | PROFILE_1 |
1375 PROFILE_2 | PROFILE_7) }, 1376 PROFILE_2 | PROFILE_7) },
1376 {lcdc_init, DEV_ON_DGHTR_BRD, (PROFILE_0 | PROFILE_1 | 1377 {lcdc_init, DEV_ON_DGHTR_BRD, (PROFILE_0 | PROFILE_1 |
1377 PROFILE_2 | PROFILE_7) }, 1378 PROFILE_2 | PROFILE_7) },
1378 {tsc_init, DEV_ON_DGHTR_BRD, (PROFILE_0 | PROFILE_1 | 1379 {tsc_init, DEV_ON_DGHTR_BRD, (PROFILE_0 | PROFILE_1 |
1379 PROFILE_2 | PROFILE_7) }, 1380 PROFILE_2 | PROFILE_7) },
1380 {rgmii1_init, DEV_ON_BASEBOARD, PROFILE_ALL}, 1381 {rgmii1_init, DEV_ON_BASEBOARD, PROFILE_ALL},
1381 {rgmii2_init, DEV_ON_DGHTR_BRD, (PROFILE_1 | PROFILE_2 | 1382 {rgmii2_init, DEV_ON_DGHTR_BRD, (PROFILE_1 | PROFILE_2 |
1382 PROFILE_4 | PROFILE_6) }, 1383 PROFILE_4 | PROFILE_6) },
1383 {usb0_init, DEV_ON_BASEBOARD, PROFILE_ALL}, 1384 {usb0_init, DEV_ON_BASEBOARD, PROFILE_ALL},
1384 {usb1_init, DEV_ON_BASEBOARD, PROFILE_ALL}, 1385 {usb1_init, DEV_ON_BASEBOARD, PROFILE_ALL},
1385 {evm_nand_init, DEV_ON_DGHTR_BRD, 1386 {evm_nand_init, DEV_ON_DGHTR_BRD,
1386 (PROFILE_ALL & ~PROFILE_2 & ~PROFILE_3)}, 1387 (PROFILE_ALL & ~PROFILE_2 & ~PROFILE_3)},
1387 {i2c1_init, DEV_ON_DGHTR_BRD, (PROFILE_ALL & ~PROFILE_2)}, 1388 {i2c1_init, DEV_ON_DGHTR_BRD, (PROFILE_ALL & ~PROFILE_2)},
1388 {mcasp1_init, DEV_ON_DGHTR_BRD, (PROFILE_0 | PROFILE_3 | PROFILE_7) }, 1389 {mcasp1_init, DEV_ON_DGHTR_BRD, (PROFILE_0 | PROFILE_3 | PROFILE_7) },
1389 {mmc1_init, DEV_ON_DGHTR_BRD, PROFILE_2}, 1390 {mmc1_init, DEV_ON_DGHTR_BRD, PROFILE_2},
1390 {mmc2_wl12xx_init, DEV_ON_BASEBOARD, (PROFILE_0 | PROFILE_3 | 1391 {mmc2_wl12xx_init, DEV_ON_BASEBOARD, (PROFILE_0 | PROFILE_3 |
1391 PROFILE_5)}, 1392 PROFILE_5)},
1392 {mmc0_init, DEV_ON_BASEBOARD, (PROFILE_ALL & ~PROFILE_5)}, 1393 {mmc0_init, DEV_ON_BASEBOARD, (PROFILE_ALL & ~PROFILE_5)},
1393 {mmc0_no_cd_init, DEV_ON_BASEBOARD, PROFILE_5}, 1394 {mmc0_no_cd_init, DEV_ON_BASEBOARD, PROFILE_5},
1394 {spi0_init, DEV_ON_DGHTR_BRD, PROFILE_2}, 1395 {spi0_init, DEV_ON_DGHTR_BRD, PROFILE_2},
1395 {uart1_wl12xx_init, DEV_ON_BASEBOARD, (PROFILE_0 | PROFILE_3 | 1396 {uart1_wl12xx_init, DEV_ON_BASEBOARD, (PROFILE_0 | PROFILE_3 |
1396 PROFILE_5)}, 1397 PROFILE_5)},
1397 {wl12xx_init, DEV_ON_BASEBOARD, (PROFILE_0 | PROFILE_3 | PROFILE_5)}, 1398 {wl12xx_init, DEV_ON_BASEBOARD, (PROFILE_0 | PROFILE_3 | PROFILE_5)},
1398 {d_can_init, DEV_ON_DGHTR_BRD, PROFILE_1}, 1399 {d_can_init, DEV_ON_DGHTR_BRD, PROFILE_1},
1399 #ifdef CONFIG_KEYBOARD_MATRIX 1400 #ifdef CONFIG_KEYBOARD_MATRIX
1400 {matrix_keypad_init, DEV_ON_DGHTR_BRD, PROFILE_0}, 1401 {matrix_keypad_init, DEV_ON_DGHTR_BRD, PROFILE_0},
1401 #endif 1402 #endif
1402 #ifdef CONFIG_KEYBOARD_GPIO 1403 #ifdef CONFIG_KEYBOARD_GPIO
1403 {volume_keys_init, DEV_ON_DGHTR_BRD, PROFILE_0}, 1404 {volume_keys_init, DEV_ON_DGHTR_BRD, PROFILE_0},
1404 #endif 1405 #endif
1405 {NULL, 0, 0}, 1406 {NULL, 0, 0},
1406 }; 1407 };
1407 1408
1408 /* Industrial Auto Motor Control EVM */ 1409 /* Industrial Auto Motor Control EVM */
1409 static struct evm_dev_cfg ind_auto_mtrl_evm_dev_cfg[] = { 1410 static struct evm_dev_cfg ind_auto_mtrl_evm_dev_cfg[] = {
1410 {mii1_init, DEV_ON_DGHTR_BRD, PROFILE_ALL}, 1411 {mii1_init, DEV_ON_DGHTR_BRD, PROFILE_ALL},
1411 {usb0_init, DEV_ON_BASEBOARD, PROFILE_ALL}, 1412 {usb0_init, DEV_ON_BASEBOARD, PROFILE_ALL},
1412 {usb1_init, DEV_ON_BASEBOARD, PROFILE_ALL}, 1413 {usb1_init, DEV_ON_BASEBOARD, PROFILE_ALL},
1413 {profibus_init, DEV_ON_DGHTR_BRD, PROFILE_ALL}, 1414 {profibus_init, DEV_ON_DGHTR_BRD, PROFILE_ALL},
1414 {evm_nand_init, DEV_ON_DGHTR_BRD, PROFILE_ALL}, 1415 {evm_nand_init, DEV_ON_DGHTR_BRD, PROFILE_ALL},
1415 {spi1_init, DEV_ON_DGHTR_BRD, PROFILE_ALL}, 1416 {spi1_init, DEV_ON_DGHTR_BRD, PROFILE_ALL},
1416 {uart3_init, DEV_ON_DGHTR_BRD, PROFILE_ALL}, 1417 {uart3_init, DEV_ON_DGHTR_BRD, PROFILE_ALL},
1417 {i2c1_init, DEV_ON_BASEBOARD, PROFILE_ALL}, 1418 {i2c1_init, DEV_ON_BASEBOARD, PROFILE_ALL},
1418 {mmc0_no_cd_init, DEV_ON_BASEBOARD, PROFILE_ALL}, 1419 {mmc0_no_cd_init, DEV_ON_BASEBOARD, PROFILE_ALL},
1419 {NULL, 0, 0}, 1420 {NULL, 0, 0},
1420 }; 1421 };
1421 1422
1422 /* IP-Phone EVM */ 1423 /* IP-Phone EVM */
1423 static struct evm_dev_cfg ip_phn_evm_dev_cfg[] = { 1424 static struct evm_dev_cfg ip_phn_evm_dev_cfg[] = {
1424 {enable_ecap0, DEV_ON_DGHTR_BRD, PROFILE_NONE}, 1425 {enable_ecap0, DEV_ON_DGHTR_BRD, PROFILE_NONE},
1425 {lcdc_init, DEV_ON_DGHTR_BRD, PROFILE_NONE}, 1426 {lcdc_init, DEV_ON_DGHTR_BRD, PROFILE_NONE},
1426 {tsc_init, DEV_ON_DGHTR_BRD, PROFILE_NONE}, 1427 {tsc_init, DEV_ON_DGHTR_BRD, PROFILE_NONE},
1427 {rgmii1_init, DEV_ON_BASEBOARD, PROFILE_NONE}, 1428 {rgmii1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
1428 {rgmii2_init, DEV_ON_DGHTR_BRD, PROFILE_NONE}, 1429 {rgmii2_init, DEV_ON_DGHTR_BRD, PROFILE_NONE},
1429 {usb0_init, DEV_ON_BASEBOARD, PROFILE_NONE}, 1430 {usb0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
1430 {usb1_init, DEV_ON_BASEBOARD, PROFILE_NONE}, 1431 {usb1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
1431 {evm_nand_init, DEV_ON_DGHTR_BRD, PROFILE_NONE}, 1432 {evm_nand_init, DEV_ON_DGHTR_BRD, PROFILE_NONE},
1432 {i2c1_init, DEV_ON_BASEBOARD, PROFILE_NONE}, 1433 {i2c1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
1433 {mcasp1_init, DEV_ON_DGHTR_BRD, PROFILE_NONE}, 1434 {mcasp1_init, DEV_ON_DGHTR_BRD, PROFILE_NONE},
1434 {mmc0_init, DEV_ON_BASEBOARD, PROFILE_NONE}, 1435 {mmc0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
1435 {NULL, 0, 0}, 1436 {NULL, 0, 0},
1436 }; 1437 };
1437 1438
1438 /* Beaglebone < Rev A3 */ 1439 /* Beaglebone < Rev A3 */
1439 static struct evm_dev_cfg beaglebone_old_dev_cfg[] = { 1440 static struct evm_dev_cfg beaglebone_old_dev_cfg[] = {
1440 {rmii1_init, DEV_ON_BASEBOARD, PROFILE_NONE}, 1441 {rmii1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
1441 {usb0_init, DEV_ON_BASEBOARD, PROFILE_NONE}, 1442 {usb0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
1442 {usb1_init, DEV_ON_BASEBOARD, PROFILE_NONE}, 1443 {usb1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
1443 {mmc0_init, DEV_ON_BASEBOARD, PROFILE_NONE}, 1444 {mmc0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
1444 {NULL, 0, 0}, 1445 {NULL, 0, 0},
1445 }; 1446 };
1446 1447
1447 /* Beaglebone Rev A3 and after */ 1448 /* Beaglebone Rev A3 and after */
1448 static struct evm_dev_cfg beaglebone_dev_cfg[] = { 1449 static struct evm_dev_cfg beaglebone_dev_cfg[] = {
1449 {mii1_init, DEV_ON_BASEBOARD, PROFILE_NONE}, 1450 {mii1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
1450 {usb0_init, DEV_ON_BASEBOARD, PROFILE_NONE}, 1451 {usb0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
1451 {usb1_init, DEV_ON_BASEBOARD, PROFILE_NONE}, 1452 {usb1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
1452 {mmc0_init, DEV_ON_BASEBOARD, PROFILE_NONE}, 1453 {mmc0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
1453 {NULL, 0, 0}, 1454 {NULL, 0, 0},
1454 }; 1455 };
1455 1456
1456 static void setup_low_cost_evm(void) 1457 static void setup_low_cost_evm(void)
1457 { 1458 {
1458 pr_info("The board is a AM335x Low Cost EVM.\n"); 1459 pr_info("The board is a AM335x Low Cost EVM.\n");
1459 1460
1460 _configure_device(LOW_COST_EVM, low_cost_evm_dev_cfg, PROFILE_NONE); 1461 _configure_device(LOW_COST_EVM, low_cost_evm_dev_cfg, PROFILE_NONE);
1461 } 1462 }
1462 1463
1463 static void setup_general_purpose_evm(void) 1464 static void setup_general_purpose_evm(void)
1464 { 1465 {
1465 u32 prof_sel = am335x_get_profile_selection(); 1466 u32 prof_sel = am335x_get_profile_selection();
1466 pr_info("The board is general purpose EVM in profile %d\n", prof_sel); 1467 pr_info("The board is general purpose EVM in profile %d\n", prof_sel);
1467 1468
1468 if (!strncmp("1.1A", config.version, 4)) { 1469 if (!strncmp("1.1A", config.version, 4)) {
1469 gp_evm_revision = GP_EVM_REV_IS_1_1A; 1470 gp_evm_revision = GP_EVM_REV_IS_1_1A;
1470 } else if (!strncmp("1.0", config.version, 3)) { 1471 } else if (!strncmp("1.0", config.version, 3)) {
1471 gp_evm_revision = GP_EVM_REV_IS_1_0; 1472 gp_evm_revision = GP_EVM_REV_IS_1_0;
1472 } else { 1473 } else {
1473 pr_err("Found invalid GP EVM revision, falling back to Rev1.1A"); 1474 pr_err("Found invalid GP EVM revision, falling back to Rev1.1A");
1474 gp_evm_revision = GP_EVM_REV_IS_1_1A; 1475 gp_evm_revision = GP_EVM_REV_IS_1_1A;
1475 } 1476 }
1476 1477
1477 if (gp_evm_revision == GP_EVM_REV_IS_1_0) 1478 if (gp_evm_revision == GP_EVM_REV_IS_1_0)
1478 gigabit_enable = 0; 1479 gigabit_enable = 0;
1479 else if (gp_evm_revision == GP_EVM_REV_IS_1_1A) 1480 else if (gp_evm_revision == GP_EVM_REV_IS_1_1A)
1480 gigabit_enable = 1; 1481 gigabit_enable = 1;
1481 1482
1482 _configure_device(GEN_PURP_EVM, gen_purp_evm_dev_cfg, (1L << prof_sel)); 1483 _configure_device(GEN_PURP_EVM, gen_purp_evm_dev_cfg, (1L << prof_sel));
1483 } 1484 }
1484 1485
1485 static void setup_ind_auto_motor_ctrl_evm(void) 1486 static void setup_ind_auto_motor_ctrl_evm(void)
1486 { 1487 {
1487 u32 prof_sel = am335x_get_profile_selection(); 1488 u32 prof_sel = am335x_get_profile_selection();
1488 1489
1489 pr_info("The board is an industrial automation EVM in profile %d\n", 1490 pr_info("The board is an industrial automation EVM in profile %d\n",
1490 prof_sel); 1491 prof_sel);
1491 1492
1492 /* Only Profile 0 is supported */ 1493 /* Only Profile 0 is supported */
1493 if ((1L << prof_sel) != PROFILE_0) { 1494 if ((1L << prof_sel) != PROFILE_0) {
1494 pr_err("AM335X: Only Profile 0 is supported\n"); 1495 pr_err("AM335X: Only Profile 0 is supported\n");
1495 pr_err("Assuming profile 0 & continuing\n"); 1496 pr_err("Assuming profile 0 & continuing\n");
1496 prof_sel = PROFILE_0; 1497 prof_sel = PROFILE_0;
1497 } 1498 }
1498 1499
1499 _configure_device(IND_AUT_MTR_EVM, ind_auto_mtrl_evm_dev_cfg, 1500 _configure_device(IND_AUT_MTR_EVM, ind_auto_mtrl_evm_dev_cfg,
1500 PROFILE_0); 1501 PROFILE_0);
1501 1502
1502 /* Fillup global evmid */ 1503 /* Fillup global evmid */
1503 am33xx_evmid_fillup(IND_AUT_MTR_EVM); 1504 am33xx_evmid_fillup(IND_AUT_MTR_EVM);
1504 1505
1505 /* Initialize TLK110 PHY registers for phy version 1.0 */ 1506 /* Initialize TLK110 PHY registers for phy version 1.0 */
1506 am335x_tlk110_phy_init(); 1507 am335x_tlk110_phy_init();
1507 1508
1508 1509
1509 } 1510 }
1510 1511
1511 static void setup_ip_phone_evm(void) 1512 static void setup_ip_phone_evm(void)
1512 { 1513 {
1513 pr_info("The board is an IP phone EVM\n"); 1514 pr_info("The board is an IP phone EVM\n");
1514 1515
1515 _configure_device(IP_PHN_EVM, ip_phn_evm_dev_cfg, PROFILE_NONE); 1516 _configure_device(IP_PHN_EVM, ip_phn_evm_dev_cfg, PROFILE_NONE);
1516 } 1517 }
1517 1518
1518 /* BeagleBone < Rev A3 */ 1519 /* BeagleBone < Rev A3 */
1519 static void setup_beaglebone_old(void) 1520 static void setup_beaglebone_old(void)
1520 { 1521 {
1521 pr_info("The board is a AM335x Beaglebone < Rev A3.\n"); 1522 pr_info("The board is a AM335x Beaglebone < Rev A3.\n");
1522 1523
1523 /* Beagle Bone has Micro-SD slot which doesn't have Write Protect pin */ 1524 /* Beagle Bone has Micro-SD slot which doesn't have Write Protect pin */
1524 am335x_mmc[0].gpio_wp = -EINVAL; 1525 am335x_mmc[0].gpio_wp = -EINVAL;
1525 1526
1526 _configure_device(LOW_COST_EVM, beaglebone_old_dev_cfg, PROFILE_NONE); 1527 _configure_device(LOW_COST_EVM, beaglebone_old_dev_cfg, PROFILE_NONE);
1527 1528
1528 phy_register_fixup_for_uid(BBB_PHY_ID, BBB_PHY_MASK, 1529 phy_register_fixup_for_uid(BBB_PHY_ID, BBB_PHY_MASK,
1529 beaglebone_phy_fixup); 1530 beaglebone_phy_fixup);
1530 } 1531 }
1531 1532
1532 /* BeagleBone after Rev A3 */ 1533 /* BeagleBone after Rev A3 */
1533 static void setup_beaglebone(void) 1534 static void setup_beaglebone(void)
1534 { 1535 {
1535 pr_info("The board is a AM335x Beaglebone.\n"); 1536 pr_info("The board is a AM335x Beaglebone.\n");
1536 1537
1537 /* Beagle Bone has Micro-SD slot which doesn't have Write Protect pin */ 1538 /* Beagle Bone has Micro-SD slot which doesn't have Write Protect pin */
1538 am335x_mmc[0].gpio_wp = -EINVAL; 1539 am335x_mmc[0].gpio_wp = -EINVAL;
1539 1540
1540 _configure_device(LOW_COST_EVM, beaglebone_dev_cfg, PROFILE_NONE); 1541 _configure_device(LOW_COST_EVM, beaglebone_dev_cfg, PROFILE_NONE);
1541 } 1542 }
1542 1543
1543 1544
1544 static void am335x_setup_daughter_board(struct memory_accessor *m, void *c) 1545 static void am335x_setup_daughter_board(struct memory_accessor *m, void *c)
1545 { 1546 {
1546 u8 tmp; 1547 u8 tmp;
1547 int ret; 1548 int ret;
1548 1549
1549 /* 1550 /*
1550 * try reading a byte from the EEPROM to see if it is 1551 * try reading a byte from the EEPROM to see if it is
1551 * present. We could read a lot more, but that would 1552 * present. We could read a lot more, but that would
1552 * just slow the boot process and we have all the information 1553 * just slow the boot process and we have all the information
1553 * we need from the EEPROM on the base board anyway. 1554 * we need from the EEPROM on the base board anyway.
1554 */ 1555 */
1555 ret = m->read(m, &tmp, 0, sizeof(u8)); 1556 ret = m->read(m, &tmp, 0, sizeof(u8));
1556 if (ret == sizeof(u8)) { 1557 if (ret == sizeof(u8)) {
1557 pr_info("Detected a daughter card on AM335x EVM.."); 1558 pr_info("Detected a daughter card on AM335x EVM..");
1558 daughter_brd_detected = true; 1559 daughter_brd_detected = true;
1559 } else { 1560 } else {
1560 pr_info("No daughter card found\n"); 1561 pr_info("No daughter card found\n");
1561 daughter_brd_detected = false; 1562 daughter_brd_detected = false;
1562 } 1563 }
1563 } 1564 }
1564 1565
1565 static void am335x_evm_setup(struct memory_accessor *mem_acc, void *context) 1566 static void am335x_evm_setup(struct memory_accessor *mem_acc, void *context)
1566 { 1567 {
1567 int ret; 1568 int ret;
1568 char tmp[10]; 1569 char tmp[10];
1569 1570
1570 /* 1st get the MAC address from EEPROM */ 1571 /* 1st get the MAC address from EEPROM */
1571 ret = mem_acc->read(mem_acc, (char *)&am335x_mac_addr, 1572 ret = mem_acc->read(mem_acc, (char *)&am335x_mac_addr,
1572 EEPROM_MAC_ADDRESS_OFFSET, sizeof(am335x_mac_addr)); 1573 EEPROM_MAC_ADDRESS_OFFSET, sizeof(am335x_mac_addr));
1573 1574
1574 if (ret != sizeof(am335x_mac_addr)) { 1575 if (ret != sizeof(am335x_mac_addr)) {
1575 pr_warning("AM335X: EVM Config read fail: %d\n", ret); 1576 pr_warning("AM335X: EVM Config read fail: %d\n", ret);
1576 return; 1577 return;
1577 } 1578 }
1578 1579
1579 /* Fillup global mac id */ 1580 /* Fillup global mac id */
1580 am33xx_cpsw_macidfillup(&am335x_mac_addr[0][0], 1581 am33xx_cpsw_macidfillup(&am335x_mac_addr[0][0],
1581 &am335x_mac_addr[1][0]); 1582 &am335x_mac_addr[1][0]);
1582 1583
1583 /* get board specific data */ 1584 /* get board specific data */
1584 ret = mem_acc->read(mem_acc, (char *)&config, 0, sizeof(config)); 1585 ret = mem_acc->read(mem_acc, (char *)&config, 0, sizeof(config));
1585 if (ret != sizeof(config)) { 1586 if (ret != sizeof(config)) {
1586 pr_warning("AM335X EVM config read fail, read %d bytes\n", ret); 1587 pr_warning("AM335X EVM config read fail, read %d bytes\n", ret);
1587 return; 1588 return;
1588 } 1589 }
1589 1590
1590 if (config.header != AM335X_EEPROM_HEADER) { 1591 if (config.header != AM335X_EEPROM_HEADER) {
1591 pr_warning("AM335X: wrong header 0x%x, expected 0x%x\n", 1592 pr_warning("AM335X: wrong header 0x%x, expected 0x%x\n",
1592 config.header, AM335X_EEPROM_HEADER); 1593 config.header, AM335X_EEPROM_HEADER);
1593 goto out; 1594 goto out;
1594 } 1595 }
1595 1596
1596 if (strncmp("A335", config.name, 4)) { 1597 if (strncmp("A335", config.name, 4)) {
1597 pr_err("Board %s doesn't look like an AM335x board\n", 1598 pr_err("Board %s doesn't look like an AM335x board\n",
1598 config.name); 1599 config.name);
1599 goto out; 1600 goto out;
1600 } 1601 }
1601 1602
1602 snprintf(tmp, sizeof(config.name) + 1, "%s", config.name); 1603 snprintf(tmp, sizeof(config.name) + 1, "%s", config.name);
1603 pr_info("Board name: %s\n", tmp); 1604 pr_info("Board name: %s\n", tmp);
1604 snprintf(tmp, sizeof(config.version) + 1, "%s", config.version); 1605 snprintf(tmp, sizeof(config.version) + 1, "%s", config.version);
1605 pr_info("Board version: %s\n", tmp); 1606 pr_info("Board version: %s\n", tmp);
1606 1607
1607 if (!strncmp("A335BONE", config.name, 8)) { 1608 if (!strncmp("A335BONE", config.name, 8)) {
1608 daughter_brd_detected = false; 1609 daughter_brd_detected = false;
1609 if(!strncmp("00A1", config.version, 4) || 1610 if(!strncmp("00A1", config.version, 4) ||
1610 !strncmp("00A2", config.version, 4)) 1611 !strncmp("00A2", config.version, 4))
1611 setup_beaglebone_old(); 1612 setup_beaglebone_old();
1612 else 1613 else
1613 setup_beaglebone(); 1614 setup_beaglebone();
1614 } else { 1615 } else {
1615 /* only 6 characters of options string used for now */ 1616 /* only 6 characters of options string used for now */
1616 snprintf(tmp, 7, "%s", config.opt); 1617 snprintf(tmp, 7, "%s", config.opt);
1617 pr_info("SKU: %s\n", tmp); 1618 pr_info("SKU: %s\n", tmp);
1618 1619
1619 if (!strncmp("SKU#00", config.opt, 6)) 1620 if (!strncmp("SKU#00", config.opt, 6))
1620 setup_low_cost_evm(); 1621 setup_low_cost_evm();
1621 else if (!strncmp("SKU#01", config.opt, 6)) 1622 else if (!strncmp("SKU#01", config.opt, 6))
1622 setup_general_purpose_evm(); 1623 setup_general_purpose_evm();
1623 else if (!strncmp("SKU#02", config.opt, 6)) 1624 else if (!strncmp("SKU#02", config.opt, 6))
1624 setup_ind_auto_motor_ctrl_evm(); 1625 setup_ind_auto_motor_ctrl_evm();
1625 else if (!strncmp("SKU#03", config.opt, 6)) 1626 else if (!strncmp("SKU#03", config.opt, 6))
1626 setup_ip_phone_evm(); 1627 setup_ip_phone_evm();
1627 else 1628 else
1628 goto out; 1629 goto out;
1629 } 1630 }
1630 /* Initialize cpsw after board detection is completed as board 1631 /* Initialize cpsw after board detection is completed as board
1631 * information is required for configuring phy address and hence 1632 * information is required for configuring phy address and hence
1632 * should be call only after board detection 1633 * should be call only after board detection
1633 */ 1634 */
1634 am33xx_cpsw_init(gigabit_enable); 1635 am33xx_cpsw_init(gigabit_enable);
1635 1636
1636 return; 1637 return;
1637 out: 1638 out:
1638 /* 1639 /*
1639 * If the EEPROM hasn't been programed or an incorrect header 1640 * If the EEPROM hasn't been programed or an incorrect header
1640 * or board name are read, assume this is an old beaglebone board 1641 * or board name are read, assume this is an old beaglebone board
1641 * (< Rev A3) 1642 * (< Rev A3)
1642 */ 1643 */
1643 pr_err("Could not detect any board, falling back to: " 1644 pr_err("Could not detect any board, falling back to: "
1644 "Beaglebone (< Rev A3) with no daughter card connected\n"); 1645 "Beaglebone (< Rev A3) with no daughter card connected\n");
1645 daughter_brd_detected = false; 1646 daughter_brd_detected = false;
1646 setup_beaglebone_old(); 1647 setup_beaglebone_old();
1647 1648
1648 /* Initialize cpsw after board detection is completed as board 1649 /* Initialize cpsw after board detection is completed as board
1649 * information is required for configuring phy address and hence 1650 * information is required for configuring phy address and hence
1650 * should be call only after board detection 1651 * should be call only after board detection
1651 */ 1652 */
1652 1653
1653 am33xx_cpsw_init(gigabit_enable); 1654 am33xx_cpsw_init(gigabit_enable);
1654 } 1655 }
1655 1656
1656 static struct at24_platform_data am335x_daughter_board_eeprom_info = { 1657 static struct at24_platform_data am335x_daughter_board_eeprom_info = {
1657 .byte_len = (256*1024) / 8, 1658 .byte_len = (256*1024) / 8,
1658 .page_size = 64, 1659 .page_size = 64,
1659 .flags = AT24_FLAG_ADDR16, 1660 .flags = AT24_FLAG_ADDR16,
1660 .setup = am335x_setup_daughter_board, 1661 .setup = am335x_setup_daughter_board,
1661 .context = (void *)NULL, 1662 .context = (void *)NULL,
1662 }; 1663 };
1663 1664
1664 static struct at24_platform_data am335x_baseboard_eeprom_info = { 1665 static struct at24_platform_data am335x_baseboard_eeprom_info = {
1665 .byte_len = (256*1024) / 8, 1666 .byte_len = (256*1024) / 8,
1666 .page_size = 64, 1667 .page_size = 64,
1667 .flags = AT24_FLAG_ADDR16, 1668 .flags = AT24_FLAG_ADDR16,
1668 .setup = am335x_evm_setup, 1669 .setup = am335x_evm_setup,
1669 .context = (void *)NULL, 1670 .context = (void *)NULL,
1670 }; 1671 };
1671 1672
1672 static struct regulator_init_data am335x_dummy; 1673 static struct regulator_init_data am335x_dummy;
1673 1674
1674 static struct regulator_consumer_supply am335x_vdd1_supply[] = { 1675 static struct regulator_consumer_supply am335x_vdd1_supply[] = {
1675 REGULATOR_SUPPLY("mpu", "mpu.0"), 1676 REGULATOR_SUPPLY("mpu", "mpu.0"),
1676 }; 1677 };
1677 1678
1678 static struct regulator_init_data am335x_vdd1 = { 1679 static struct regulator_init_data am335x_vdd1 = {
1679 .constraints = { 1680 .constraints = {
1680 .min_uV = 600000, 1681 .min_uV = 600000,
1681 .max_uV = 1500000, 1682 .max_uV = 1500000,
1682 .valid_modes_mask = REGULATOR_MODE_NORMAL, 1683 .valid_modes_mask = REGULATOR_MODE_NORMAL,
1683 .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE, 1684 .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,
1684 .always_on = 1, 1685 .always_on = 1,
1685 }, 1686 },
1686 .num_consumer_supplies = ARRAY_SIZE(am335x_vdd1_supply), 1687 .num_consumer_supplies = ARRAY_SIZE(am335x_vdd1_supply),
1687 .consumer_supplies = am335x_vdd1_supply, 1688 .consumer_supplies = am335x_vdd1_supply,
1688 }; 1689 };
1689 1690
1690 static struct tps65910_board am335x_tps65910_info = { 1691 static struct tps65910_board am335x_tps65910_info = {
1691 .tps65910_pmic_init_data[TPS65910_REG_VRTC] = &am335x_dummy, 1692 .tps65910_pmic_init_data[TPS65910_REG_VRTC] = &am335x_dummy,
1692 .tps65910_pmic_init_data[TPS65910_REG_VIO] = &am335x_dummy, 1693 .tps65910_pmic_init_data[TPS65910_REG_VIO] = &am335x_dummy,
1693 .tps65910_pmic_init_data[TPS65910_REG_VDD1] = &am335x_vdd1, 1694 .tps65910_pmic_init_data[TPS65910_REG_VDD1] = &am335x_vdd1,
1694 .tps65910_pmic_init_data[TPS65910_REG_VDD2] = &am335x_dummy, 1695 .tps65910_pmic_init_data[TPS65910_REG_VDD2] = &am335x_dummy,
1695 .tps65910_pmic_init_data[TPS65910_REG_VDD3] = &am335x_dummy, 1696 .tps65910_pmic_init_data[TPS65910_REG_VDD3] = &am335x_dummy,
1696 .tps65910_pmic_init_data[TPS65910_REG_VDIG1] = &am335x_dummy, 1697 .tps65910_pmic_init_data[TPS65910_REG_VDIG1] = &am335x_dummy,
1697 .tps65910_pmic_init_data[TPS65910_REG_VDIG2] = &am335x_dummy, 1698 .tps65910_pmic_init_data[TPS65910_REG_VDIG2] = &am335x_dummy,
1698 .tps65910_pmic_init_data[TPS65910_REG_VPLL] = &am335x_dummy, 1699 .tps65910_pmic_init_data[TPS65910_REG_VPLL] = &am335x_dummy,
1699 .tps65910_pmic_init_data[TPS65910_REG_VDAC] = &am335x_dummy, 1700 .tps65910_pmic_init_data[TPS65910_REG_VDAC] = &am335x_dummy,
1700 .tps65910_pmic_init_data[TPS65910_REG_VAUX1] = &am335x_dummy, 1701 .tps65910_pmic_init_data[TPS65910_REG_VAUX1] = &am335x_dummy,
1701 .tps65910_pmic_init_data[TPS65910_REG_VAUX2] = &am335x_dummy, 1702 .tps65910_pmic_init_data[TPS65910_REG_VAUX2] = &am335x_dummy,
1702 .tps65910_pmic_init_data[TPS65910_REG_VAUX33] = &am335x_dummy, 1703 .tps65910_pmic_init_data[TPS65910_REG_VAUX33] = &am335x_dummy,
1703 .tps65910_pmic_init_data[TPS65910_REG_VMMC] = &am335x_dummy, 1704 .tps65910_pmic_init_data[TPS65910_REG_VMMC] = &am335x_dummy,
1704 }; 1705 };
1705 1706
1706 /* 1707 /*
1707 * Daughter board Detection. 1708 * Daughter board Detection.
1708 * Every board has a ID memory (EEPROM) on board. We probe these devices at 1709 * Every board has a ID memory (EEPROM) on board. We probe these devices at
1709 * machine init, starting from daughter board and ending with baseboard. 1710 * machine init, starting from daughter board and ending with baseboard.
1710 * Assumptions : 1711 * Assumptions :
1711 * 1. probe for i2c devices are called in the order they are included in 1712 * 1. probe for i2c devices are called in the order they are included in
1712 * the below struct. Daughter boards eeprom are probed 1st. Baseboard 1713 * the below struct. Daughter boards eeprom are probed 1st. Baseboard
1713 * eeprom probe is called last. 1714 * eeprom probe is called last.
1714 */ 1715 */
1715 static struct i2c_board_info __initdata am335x_i2c_boardinfo[] = { 1716 static struct i2c_board_info __initdata am335x_i2c_boardinfo[] = {
1716 { 1717 {
1717 /* Daughter Board EEPROM */ 1718 /* Daughter Board EEPROM */
1718 I2C_BOARD_INFO("24c256", DAUG_BOARD_I2C_ADDR), 1719 I2C_BOARD_INFO("24c256", DAUG_BOARD_I2C_ADDR),
1719 .platform_data = &am335x_daughter_board_eeprom_info, 1720 .platform_data = &am335x_daughter_board_eeprom_info,
1720 }, 1721 },
1721 { 1722 {
1722 /* Baseboard board EEPROM */ 1723 /* Baseboard board EEPROM */
1723 I2C_BOARD_INFO("24c256", BASEBOARD_I2C_ADDR), 1724 I2C_BOARD_INFO("24c256", BASEBOARD_I2C_ADDR),
1724 .platform_data = &am335x_baseboard_eeprom_info, 1725 .platform_data = &am335x_baseboard_eeprom_info,
1725 }, 1726 },
1726 { 1727 {
1727 I2C_BOARD_INFO("cpld_reg", 0x35), 1728 I2C_BOARD_INFO("cpld_reg", 0x35),
1728 }, 1729 },
1729 { 1730 {
1730 I2C_BOARD_INFO("tlc59108", 0x40), 1731 I2C_BOARD_INFO("tlc59108", 0x40),
1731 }, 1732 },
1732 { 1733 {
1733 I2C_BOARD_INFO("tps65910", TPS65910_I2C_ID1), 1734 I2C_BOARD_INFO("tps65910", TPS65910_I2C_ID1),
1734 .platform_data = &am335x_tps65910_info, 1735 .platform_data = &am335x_tps65910_info,
1735 }, 1736 },
1736 1737
1737 }; 1738 };
1738 1739
1739 static struct omap_musb_board_data musb_board_data = { 1740 static struct omap_musb_board_data musb_board_data = {
1740 .interface_type = MUSB_INTERFACE_ULPI, 1741 .interface_type = MUSB_INTERFACE_ULPI,
1741 .mode = MUSB_OTG, 1742 .mode = MUSB_OTG,
1742 .power = 500, 1743 .power = 500,
1743 .instances = 1, 1744 .instances = 1,
1744 }; 1745 };
1745 1746
1746 static int cpld_reg_probe(struct i2c_client *client, 1747 static int cpld_reg_probe(struct i2c_client *client,
1747 const struct i2c_device_id *id) 1748 const struct i2c_device_id *id)
1748 { 1749 {
1749 cpld_client = client; 1750 cpld_client = client;
1750 return 0; 1751 return 0;
1751 } 1752 }
1752 1753
1753 static int __devexit cpld_reg_remove(struct i2c_client *client) 1754 static int __devexit cpld_reg_remove(struct i2c_client *client)
1754 { 1755 {
1755 cpld_client = NULL; 1756 cpld_client = NULL;
1756 return 0; 1757 return 0;
1757 } 1758 }
1758 1759
1759 static const struct i2c_device_id cpld_reg_id[] = { 1760 static const struct i2c_device_id cpld_reg_id[] = {
1760 { "cpld_reg", 0 }, 1761 { "cpld_reg", 0 },
1761 { } 1762 { }
1762 }; 1763 };
1763 1764
1764 static struct i2c_driver cpld_reg_driver = { 1765 static struct i2c_driver cpld_reg_driver = {
1765 .driver = { 1766 .driver = {
1766 .name = "cpld_reg", 1767 .name = "cpld_reg",
1767 }, 1768 },
1768 .probe = cpld_reg_probe, 1769 .probe = cpld_reg_probe,
1769 .remove = cpld_reg_remove, 1770 .remove = cpld_reg_remove,
1770 .id_table = cpld_reg_id, 1771 .id_table = cpld_reg_id,
1771 }; 1772 };
1772 1773
1773 static void evm_init_cpld(void) 1774 static void evm_init_cpld(void)
1774 { 1775 {
1775 i2c_add_driver(&cpld_reg_driver); 1776 i2c_add_driver(&cpld_reg_driver);
1776 } 1777 }
1777 1778
1778 static void __init am335x_evm_i2c_init(void) 1779 static void __init am335x_evm_i2c_init(void)
1779 { 1780 {
1780 /* Initially assume Low Cost EVM Config */ 1781 /* Initially assume Low Cost EVM Config */
1781 am335x_evm_id = LOW_COST_EVM; 1782 am335x_evm_id = LOW_COST_EVM;
1782 1783
1783 evm_init_cpld(); 1784 evm_init_cpld();
1784 1785
1785 omap_register_i2c_bus(1, 100, am335x_i2c_boardinfo, 1786 omap_register_i2c_bus(1, 100, am335x_i2c_boardinfo,
1786 ARRAY_SIZE(am335x_i2c_boardinfo)); 1787 ARRAY_SIZE(am335x_i2c_boardinfo));
1787 } 1788 }
1788 1789
1789 static struct resource am335x_rtc_resources[] = { 1790 static struct resource am335x_rtc_resources[] = {
1790 { 1791 {
1791 .start = AM33XX_RTC_BASE, 1792 .start = AM33XX_RTC_BASE,
1792 .end = AM33XX_RTC_BASE + SZ_4K - 1, 1793 .end = AM33XX_RTC_BASE + SZ_4K - 1,
1793 .flags = IORESOURCE_MEM, 1794 .flags = IORESOURCE_MEM,
1794 }, 1795 },
1795 { /* timer irq */ 1796 { /* timer irq */
1796 .start = AM33XX_IRQ_RTC_TIMER, 1797 .start = AM33XX_IRQ_RTC_TIMER,
1797 .end = AM33XX_IRQ_RTC_TIMER, 1798 .end = AM33XX_IRQ_RTC_TIMER,
1798 .flags = IORESOURCE_IRQ, 1799 .flags = IORESOURCE_IRQ,
1799 }, 1800 },
1800 { /* alarm irq */ 1801 { /* alarm irq */
1801 .start = AM33XX_IRQ_RTC_ALARM, 1802 .start = AM33XX_IRQ_RTC_ALARM,
1802 .end = AM33XX_IRQ_RTC_ALARM, 1803 .end = AM33XX_IRQ_RTC_ALARM,
1803 .flags = IORESOURCE_IRQ, 1804 .flags = IORESOURCE_IRQ,
1804 }, 1805 },
1805 }; 1806 };
1806 1807
1807 static struct platform_device am335x_rtc_device = { 1808 static struct platform_device am335x_rtc_device = {
1808 .name = "omap_rtc", 1809 .name = "omap_rtc",
1809 .id = -1, 1810 .id = -1,
1810 .num_resources = ARRAY_SIZE(am335x_rtc_resources), 1811 .num_resources = ARRAY_SIZE(am335x_rtc_resources),
1811 .resource = am335x_rtc_resources, 1812 .resource = am335x_rtc_resources,
1812 }; 1813 };
1813 1814
1814 static int am335x_rtc_init(void) 1815 static int am335x_rtc_init(void)
1815 { 1816 {
1816 void __iomem *base; 1817 void __iomem *base;
1817 struct clk *clk; 1818 struct clk *clk;
1818 1819
1819 clk = clk_get(NULL, "rtc_fck"); 1820 clk = clk_get(NULL, "rtc_fck");
1820 if (IS_ERR(clk)) { 1821 if (IS_ERR(clk)) {
1821 pr_err("rtc : Failed to get RTC clock\n"); 1822 pr_err("rtc : Failed to get RTC clock\n");
1822 return -1; 1823 return -1;
1823 } 1824 }
1824 1825
1825 if (clk_enable(clk)) { 1826 if (clk_enable(clk)) {
1826 pr_err("rtc: Clock Enable Failed\n"); 1827 pr_err("rtc: Clock Enable Failed\n");
1827 return -1; 1828 return -1;
1828 } 1829 }
1829 1830
1830 base = ioremap(AM33XX_RTC_BASE, SZ_4K); 1831 base = ioremap(AM33XX_RTC_BASE, SZ_4K);
1831 1832
1832 if (WARN_ON(!base)) 1833 if (WARN_ON(!base))
1833 return -ENOMEM; 1834 return -ENOMEM;
1834 1835
1835 /* Unlock the rtc's registers */ 1836 /* Unlock the rtc's registers */
1836 __raw_writel(0x83e70b13, base + 0x6c); 1837 __raw_writel(0x83e70b13, base + 0x6c);
1837 __raw_writel(0x95a4f1e0, base + 0x70); 1838 __raw_writel(0x95a4f1e0, base + 0x70);
1838 1839
1839 /* 1840 /*
1840 * Enable the 32K OSc 1841 * Enable the 32K OSc
1841 * TODO: Need a better way to handle this 1842 * TODO: Need a better way to handle this
1842 * Since we want the clock to be running before mmc init 1843 * Since we want the clock to be running before mmc init
1843 * we need to do it before the rtc probe happens 1844 * we need to do it before the rtc probe happens
1844 */ 1845 */
1845 __raw_writel(0x48, base + 0x54); 1846 __raw_writel(0x48, base + 0x54);
1846 1847
1847 iounmap(base); 1848 iounmap(base);
1848 1849
1849 return platform_device_register(&am335x_rtc_device); 1850 return platform_device_register(&am335x_rtc_device);
1850 } 1851 }
1851 1852
1852 /* Enable clkout2 */ 1853 /* Enable clkout2 */
1853 static struct pinmux_config clkout2_pin_mux[] = { 1854 static struct pinmux_config clkout2_pin_mux[] = {
1854 {"xdma_event_intr1.clkout2", OMAP_MUX_MODE3 | AM33XX_PIN_OUTPUT}, 1855 {"xdma_event_intr1.clkout2", OMAP_MUX_MODE3 | AM33XX_PIN_OUTPUT},
1855 {NULL, 0}, 1856 {NULL, 0},
1856 }; 1857 };
1857 1858
1858 static void __init clkout2_enable(void) 1859 static void __init clkout2_enable(void)
1859 { 1860 {
1860 struct clk *ck_32; 1861 struct clk *ck_32;
1861 1862
1862 ck_32 = clk_get(NULL, "clkout2_ck"); 1863 ck_32 = clk_get(NULL, "clkout2_ck");
1863 if (IS_ERR(ck_32)) { 1864 if (IS_ERR(ck_32)) {
1864 pr_err("Cannot clk_get ck_32\n"); 1865 pr_err("Cannot clk_get ck_32\n");
1865 return; 1866 return;
1866 } 1867 }
1867 1868
1868 clk_enable(ck_32); 1869 clk_enable(ck_32);
1869 1870
1870 setup_pin_mux(clkout2_pin_mux); 1871 setup_pin_mux(clkout2_pin_mux);
1871 } 1872 }
1872 1873
1874 void __iomem * __init am33xx_get_mem_ctlr(void)
1875 {
1876 void __iomem *am33xx_emif_base;
1877
1878 am33xx_emif_base = ioremap(AM33XX_EMIF0_BASE, SZ_32K);
1879
1880 if (!am33xx_emif_base)
1881 pr_warning("%s: Unable to map DDR2 controller", __func__);
1882
1883 return am33xx_emif_base;
1884 }
1885
1886 static struct resource am33xx_cpuidle_resources[] = {
1887 {
1888 .start = AM33XX_EMIF0_BASE,
1889 .end = AM33XX_EMIF0_BASE + SZ_32K - 1,
1890 .flags = IORESOURCE_MEM,
1891 },
1892 };
1893
1894 /* AM33XX devices support DDR2 power down */
1895 static struct am33xx_cpuidle_config am33xx_cpuidle_pdata = {
1896 .ddr2_pdown = 1,
1897 };
1898
1899 static struct platform_device am33xx_cpuidle_device = {
1900 .name = "cpuidle-am33xx",
1901 .num_resources = ARRAY_SIZE(am33xx_cpuidle_resources),
1902 .resource = am33xx_cpuidle_resources,
1903 .dev = {
1904 .platform_data = &am33xx_cpuidle_pdata,
1905 },
1906 };
1907
1908 static void __init am33xx_cpuidle_init(void)
1909 {
1910 int ret;
1911
1912 am33xx_cpuidle_pdata.emif_base = am33xx_get_mem_ctlr();
1913
1914 ret = platform_device_register(&am33xx_cpuidle_device);
1915
1916 if (ret)
1917 pr_warning("AM33XX cpuidle registration failed\n");
1918
1919 }
1920
1873 static void __init am335x_evm_init(void) 1921 static void __init am335x_evm_init(void)
1874 { 1922 {
1923 am33xx_cpuidle_init();
1875 am33xx_mux_init(board_mux); 1924 am33xx_mux_init(board_mux);
1876 omap_serial_init(); 1925 omap_serial_init();
1877 am335x_rtc_init(); 1926 am335x_rtc_init();
1878 clkout2_enable(); 1927 clkout2_enable();
1879 am335x_evm_i2c_init(); 1928 am335x_evm_i2c_init();
1880 omap_sdrc_init(NULL, NULL); 1929 omap_sdrc_init(NULL, NULL);
1881 usb_musb_init(&musb_board_data); 1930 usb_musb_init(&musb_board_data);
1882 omap_board_config = am335x_evm_config; 1931 omap_board_config = am335x_evm_config;
1883 omap_board_config_size = ARRAY_SIZE(am335x_evm_config); 1932 omap_board_config_size = ARRAY_SIZE(am335x_evm_config);
1884 /* Create an alias for icss clock */ 1933 /* Create an alias for icss clock */
1885 if (clk_add_alias("pruss", NULL, "icss_uart_gclk", NULL)) 1934 if (clk_add_alias("pruss", NULL, "icss_uart_gclk", NULL))
1886 pr_err("failed to create an alias: icss_uart_gclk --> pruss\n"); 1935 pr_err("failed to create an alias: icss_uart_gclk --> pruss\n");
1887 /* Create an alias for gfx/sgx clock */ 1936 /* Create an alias for gfx/sgx clock */
1888 if (clk_add_alias("sgx_ck", NULL, "gfx_fclk", NULL)) 1937 if (clk_add_alias("sgx_ck", NULL, "gfx_fclk", NULL))
1889 pr_err("failed to create an alias: gfx_fclk --> sgx_ck\n"); 1938 pr_err("failed to create an alias: gfx_fclk --> sgx_ck\n");
1890 } 1939 }
1891 1940
1892 static void __init am335x_evm_map_io(void) 1941 static void __init am335x_evm_map_io(void)
1893 { 1942 {
1894 omap2_set_globals_am33xx(); 1943 omap2_set_globals_am33xx();
1895 omapam33xx_map_common_io(); 1944 omapam33xx_map_common_io();
1896 } 1945 }
1897 1946
1898 MACHINE_START(AM335XEVM, "am335xevm") 1947 MACHINE_START(AM335XEVM, "am335xevm")
1899 /* Maintainer: Texas Instruments */ 1948 /* Maintainer: Texas Instruments */
1900 .atag_offset = 0x100, 1949 .atag_offset = 0x100,
1901 .map_io = am335x_evm_map_io, 1950 .map_io = am335x_evm_map_io,
1902 .init_irq = ti816x_init_irq, 1951 .init_irq = ti816x_init_irq,
1903 .init_early = am335x_init_early, 1952 .init_early = am335x_init_early,
1904 .timer = &omap3_am33xx_timer, 1953 .timer = &omap3_am33xx_timer,
1905 .init_machine = am335x_evm_init, 1954 .init_machine = am335x_evm_init,
1906 MACHINE_END 1955 MACHINE_END
1907 1956
1908 MACHINE_START(AM335XIAEVM, "am335xiaevm") 1957 MACHINE_START(AM335XIAEVM, "am335xiaevm")
1909 /* Maintainer: Texas Instruments */ 1958 /* Maintainer: Texas Instruments */
1910 .atag_offset = 0x100, 1959 .atag_offset = 0x100,
1911 .map_io = am335x_evm_map_io, 1960 .map_io = am335x_evm_map_io,
1912 .init_irq = ti816x_init_irq, 1961 .init_irq = ti816x_init_irq,
1913 .init_early = am335x_init_early, 1962 .init_early = am335x_init_early,
1914 .timer = &omap3_am33xx_timer, 1963 .timer = &omap3_am33xx_timer,
1915 .init_machine = am335x_evm_init, 1964 .init_machine = am335x_evm_init,
1916 MACHINE_END 1965 MACHINE_END
1917 1966