summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Krummenacher <max.krummenacher@toradex.com>2014-03-12 19:34:30 +0100
committerMax Krummenacher <max.krummenacher@toradex.com>2014-03-12 19:34:30 +0100
commit145c1e997fec52bc63fc10716dbc7f84e4b99f20 (patch)
treea0e8970ddc34d8f4dde91b6532cec44bfb7afaa8
parent40c95373f48589ecfdc9fd2ec38ad947bd096a91 (diff)
board-apalis_imx6: add spidev platform data
-rw-r--r--arch/arm/mach-mx6/board-apalis_imx6.c41
-rw-r--r--arch/arm/mach-mx6/pads-apalis_imx6.h4
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),