38
39
#define MX53_LOCO_UI1 IMX_GPIO_NR(2, 14)
39
40
#define MX53_LOCO_UI2 IMX_GPIO_NR(2, 15)
40
41
#define LOCO_FEC_PHY_RST IMX_GPIO_NR(7, 6)
42
#define LOCO_LED IMX_GPIO_NR(7, 7)
43
#define LOCO_SD3_CD IMX_GPIO_NR(3, 11)
44
#define LOCO_SD3_WP IMX_GPIO_NR(3, 12)
45
#define LOCO_SD1_CD IMX_GPIO_NR(3, 13)
46
#define LOCO_ACCEL_EN IMX_GPIO_NR(6, 14)
42
48
static iomux_v3_cfg_t mx53_loco_pads[] = {
60
66
MX53_PAD_KEY_ROW0__AUDMUX_AUD5_TXD,
61
67
MX53_PAD_KEY_COL1__AUDMUX_AUD5_TXFS,
62
68
MX53_PAD_KEY_ROW1__AUDMUX_AUD5_RXD,
70
MX53_PAD_CSI0_DAT8__I2C1_SDA,
71
MX53_PAD_CSI0_DAT9__I2C1_SCL,
72
MX53_PAD_NANDF_CS1__GPIO6_14, /* Accelerometer Enable */
64
74
MX53_PAD_KEY_COL3__I2C2_SCL,
65
75
MX53_PAD_KEY_ROW3__I2C2_SDA,
70
80
MX53_PAD_SD1_DATA1__ESDHC1_DAT1,
71
81
MX53_PAD_SD1_DATA2__ESDHC1_DAT2,
72
82
MX53_PAD_SD1_DATA3__ESDHC1_DAT3,
84
MX53_PAD_EIM_DA13__GPIO3_13,
74
86
MX53_PAD_PATA_DATA8__ESDHC3_DAT0,
75
87
MX53_PAD_PATA_DATA9__ESDHC3_DAT1,
163
175
MX53_PAD_GPIO_7__SPDIF_PLOCK,
164
176
MX53_PAD_GPIO_17__SPDIF_OUT1,
166
MX53_PAD_PATA_DA_1__GPIO7_7,
178
MX53_PAD_PATA_DA_1__GPIO7_7, /* LED */
167
179
MX53_PAD_PATA_DA_2__GPIO7_8,
168
180
MX53_PAD_PATA_DATA5__GPIO2_5,
169
181
MX53_PAD_PATA_DATA6__GPIO2_6,
202
214
.nbuttons = ARRAY_SIZE(loco_buttons),
217
static const struct esdhc_platform_data mx53_loco_sd1_data __initconst = {
218
.cd_gpio = LOCO_SD1_CD,
219
.cd_type = ESDHC_CD_GPIO,
220
.wp_type = ESDHC_WP_NONE,
223
static const struct esdhc_platform_data mx53_loco_sd3_data __initconst = {
224
.cd_gpio = LOCO_SD3_CD,
225
.wp_gpio = LOCO_SD3_WP,
226
.cd_type = ESDHC_CD_GPIO,
227
.wp_type = ESDHC_WP_GPIO,
205
230
static inline void mx53_loco_fec_reset(void)
217
242
gpio_set_value(LOCO_FEC_PHY_RST, 1);
220
static struct fec_platform_data mx53_loco_fec_data = {
245
static const struct fec_platform_data mx53_loco_fec_data __initconst = {
221
246
.phy = PHY_INTERFACE_MODE_RMII,
225
250
.bitrate = 100000,
253
static const struct gpio_led mx53loco_leds[] __initconst = {
256
.default_trigger = "heartbeat",
261
static const struct gpio_led_platform_data mx53loco_leds_data __initconst = {
262
.leds = mx53loco_leds,
263
.num_leds = ARRAY_SIZE(mx53loco_leds),
266
void __init imx53_qsb_common_init(void)
268
mxc_iomux_v3_setup_multiple_pads(mx53_loco_pads,
269
ARRAY_SIZE(mx53_loco_pads));
272
static struct i2c_board_info mx53loco_i2c_devices[] = {
274
I2C_BOARD_INFO("mma8450", 0x1C),
228
278
static void __init mx53_loco_board_init(void)
230
mxc_iomux_v3_setup_multiple_pads(mx53_loco_pads,
231
ARRAY_SIZE(mx53_loco_pads));
282
imx53_qsb_common_init();
232
284
imx53_add_imx_uart(0, NULL);
233
285
mx53_loco_fec_reset();
234
286
imx53_add_fec(&mx53_loco_fec_data);
235
287
imx53_add_imx2_wdt(0, NULL);
289
ret = gpio_request_one(LOCO_ACCEL_EN, GPIOF_OUT_INIT_HIGH, "accel_en");
291
pr_err("Cannot request ACCEL_EN pin: %d\n", ret);
293
i2c_register_board_info(0, mx53loco_i2c_devices,
294
ARRAY_SIZE(mx53loco_i2c_devices));
236
295
imx53_add_imx_i2c(0, &mx53_loco_i2c_data);
237
296
imx53_add_imx_i2c(1, &mx53_loco_i2c_data);
238
imx53_add_sdhci_esdhc_imx(0, NULL);
239
imx53_add_sdhci_esdhc_imx(2, NULL);
297
imx53_add_sdhci_esdhc_imx(0, &mx53_loco_sd1_data);
298
imx53_add_sdhci_esdhc_imx(2, &mx53_loco_sd3_data);
240
299
imx_add_gpio_keys(&loco_button_data);
300
gpio_led_register_device(-1, &mx53loco_leds_data);
301
imx53_add_ahci_imx();
243
304
static void __init mx53_loco_timer_init(void)
253
314
.map_io = mx53_map_io,
254
315
.init_early = imx53_init_early,
255
316
.init_irq = mx53_init_irq,
317
.handle_irq = imx53_handle_irq,
256
318
.timer = &mx53_loco_timer,
257
319
.init_machine = mx53_loco_board_init,