From 145c1e997fec52bc63fc10716dbc7f84e4b99f20 Mon Sep 17 00:00:00 2001 From: Max Krummenacher Date: Wed, 12 Mar 2014 19:34:30 +0100 Subject: board-apalis_imx6: add spidev platform data --- arch/arm/mach-mx6/board-apalis_imx6.c | 41 ++++++++++++++++++++++++++++++----- arch/arm/mach-mx6/pads-apalis_imx6.h | 4 ++-- 2 files changed, 37 insertions(+), 8 deletions(-) diff --git a/arch/arm/mach-mx6/board-apalis_imx6.c b/arch/arm/mach-mx6/board-apalis_imx6.c index 8c18c99f093a..e86e16502ecd 100644 --- a/arch/arm/mach-mx6/board-apalis_imx6.c +++ b/arch/arm/mach-mx6/board-apalis_imx6.c @@ -84,7 +84,8 @@ #define GP_SD1_WP (-1) #define GP_SD2_CD IMX_GPIO_NR(6, 14) /* Apalis SD1 */ #define GP_SD2_WP (-1) -#define GP_ECSPI1_CS1 IMX_GPIO_NR(5, 25) /* TODO muxing uses not GPIO!*/ +#define GP_ECSPI1_CS1 IMX_GPIO_NR(5, 25) /* TODO use SPI HW CS instead of GPIOs?*/ +#define GP_ECSPI2_CS1 IMX_GPIO_NR(2, 26) #define GP_USB_OTG_PWR IMX_GPIO_NR(3, 22) #define GP_PEX_PERST APALIS_GPIO7 /* PCIe RESET */ #define GP_USB_PEN IMX_GPIO_NR(1, 0) /* USBH_EN */ @@ -308,16 +309,14 @@ static const struct spi_imx_master spi_data __initconst = { .num_chipselect = ARRAY_SIZE(spi_cs), }; -#ifdef ONE_WIRE static int ecspi2_cs[] = { - IMX_GPIO_NR(5, 12), + GP_ECSPI2_CS1, }; static const struct spi_imx_master ecspi2_data __initconst = { .chipselect = ecspi2_cs, .num_chipselect = ARRAY_SIZE(ecspi2_cs), }; -#endif #if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE) static struct mtd_partition spi_nor_partitions[] = { @@ -358,8 +357,40 @@ static struct spi_board_info spi_nor_device[] __initdata = { #endif }; +#if defined(CONFIG_SPI_IMX) && defined(CONFIG_SPI_SPIDEV) +static struct spi_board_info imx6_spi_devices[] __initdata = { + { + .bus_num = 0, /* ECSPI1: Apalis SPI1 */ + .chip_select = 0, + .irq = 0, + .max_speed_hz = 50000000, + .modalias = "spidev", + .mode = SPI_MODE_0, + .platform_data = NULL, + }, + { + .bus_num = 1, /* ECSPI2: Apalis SPI2 */ + .chip_select = 0, + .irq = 0, + .max_speed_hz = 50000000, + .modalias = "spidev", + .mode = SPI_MODE_0, + .platform_data = NULL, + }, +}; + +static void __init apalis_t30_register_spidev(void) +{ + spi_register_board_info(imx6_spi_devices, + ARRAY_SIZE(imx6_spi_devices)); +} +#else /* CONFIG_SPI_TEGRA && CONFIG_SPI_SPIDEV */ +#define apalis_t30_register_spidev() do {} while (0) +#endif /* CONFIG_SPI_TEGRA && CONFIG_SPI_SPIDEV */ + static void spi_device_init(void) { + apalis_t30_register_spidev(); spi_register_board_info(spi_nor_device, ARRAY_SIZE(spi_nor_device)); } @@ -1467,9 +1498,7 @@ static void __init board_init(void) /* SPI */ imx6q_add_ecspi(0, &spi_data); -#ifdef ONE_WIRE imx6q_add_ecspi(1, &ecspi2_data); -#endif spi_device_init(); imx6q_add_mxc_hdmi(&hdmi_data); diff --git a/arch/arm/mach-mx6/pads-apalis_imx6.h b/arch/arm/mach-mx6/pads-apalis_imx6.h index efc7ccfc3f75..db826be33a5c 100644 --- a/arch/arm/mach-mx6/pads-apalis_imx6.h +++ b/arch/arm/mach-mx6/pads-apalis_imx6.h @@ -71,13 +71,13 @@ static iomux_v3_cfg_t MX6NAME(common_pads)[] = { MX6PAD(CSI0_DAT6__ECSPI1_MISO), MX6PAD(CSI0_DAT5__ECSPI1_MOSI), MX6PAD(CSI0_DAT4__ECSPI1_SCLK), - MX6PAD(CSI0_DAT7__ECSPI1_SS0), + MX6PAD(CSI0_DAT7__GPIO_5_25), /* Apalis SPI2, ECSPI2 */ MX6PAD(EIM_CS1__ECSPI2_MOSI), MX6PAD(EIM_CS0__ECSPI2_SCLK), MX6PAD(EIM_OE__ECSPI2_MISO), - MX6PAD(EIM_RW__ECSPI2_SS0), + MX6PAD(EIM_RW__GPIO_2_26), /* ENET */ MX6PAD(ENET_MDIO__ENET_MDIO), -- cgit v1.2.3