summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/board-colibri_t20.c
diff options
context:
space:
mode:
authorMarcel Ziswiler <marcel.ziswiler@toradex.com>2014-05-09 14:43:07 +0200
committerMarcel Ziswiler <marcel.ziswiler@toradex.com>2014-05-09 14:43:07 +0200
commit277321a36fcc2fde4baa61568b3b116e42a188e9 (patch)
treed698ccb02673843b8b2c542b1be742d580d9cd0b /arch/arm/mach-tegra/board-colibri_t20.c
parent059383eea2120cf0cb3fd5e15dc0f09b38ad5bc1 (diff)
colibri t20/t30: add spi controller platform data for hw cs
Add SPI controller platform data required for use of hardware chip selects. While at it pull-up SPI chip select pin due to NVIDIA's designers taking the term chip select a little too personal: they indeed only select a chip otherwise all the chip select pins are just left floating!
Diffstat (limited to 'arch/arm/mach-tegra/board-colibri_t20.c')
-rw-r--r--arch/arm/mach-tegra/board-colibri_t20.c28
1 files changed, 19 insertions, 9 deletions
diff --git a/arch/arm/mach-tegra/board-colibri_t20.c b/arch/arm/mach-tegra/board-colibri_t20.c
index cb160adb4f17..35e483e79653 100644
--- a/arch/arm/mach-tegra/board-colibri_t20.c
+++ b/arch/arm/mach-tegra/board-colibri_t20.c
@@ -29,6 +29,7 @@
#include <linux/platform_device.h>
#include <linux/reboot.h>
#include <linux/serial_8250.h>
+#include <linux/spi-tegra.h>
#include <linux/spi/spi.h>
#if defined(CONFIG_SPI_GPIO) || defined(CONFIG_SPI_GPIO_MODULE)
#include <linux/spi/spi_gpio.h>
@@ -292,6 +293,8 @@ static int __init colibri_t20_mcp2515_setup(struct spi_device *spi)
return 0;
}
+static struct tegra_spi_device_controller_data spi_controller_data;
+
static struct mcp251x_platform_data mcp251x_pdata = {
.board_specific_setup = colibri_t20_mcp2515_setup,
.oscillator_frequency = 16000000,
@@ -310,7 +313,7 @@ static struct spi_board_info mcp251x_board_info[] = {
#ifdef MECS_TELLURIUM_XPOD2
.controller_data = (void *) CAN_CS_GPIO,
#else
-// .controller_data = ,
+ .controller_data = &spi_controller_data,
#endif
.max_speed_hz = 10000000,
.modalias = "mcp2515",
@@ -952,19 +955,26 @@ static struct platform_device xpod2_spi_device = {
#endif /* CONFIG_SPI_GPIO | CONFIG_SPI_GPIO_MODULE */
#if defined(CONFIG_SPI_TEGRA) && defined(CONFIG_SPI_SPIDEV)
+static struct tegra_spi_device_controller_data spi_controller_data = {
+ .cs_hold_clk_count = 1,
+ .cs_setup_clk_count = 1,
+ .is_hw_based_cs = 1,
+};
+
static struct spi_board_info tegra_spi_devices[] __initdata = {
{
- .bus_num = 3, /* SPI4: Colibri SSP */
+ .bus_num = 3, /* SPI4: Colibri SSP */
#if !defined(CONFIG_CAN_MCP251X) && !defined(CONFIG_CAN_MCP251X_MODULE)
- .chip_select = 0,
+ .chip_select = 0,
#else /* !CONFIG_CAN_MCP251X & !CONFIG_CAN_MCP251X_MODULE */
- .chip_select = 1,
+ .chip_select = 1,
#endif /* !CONFIG_CAN_MCP251X & !CONFIG_CAN_MCP251X_MODULE */
- .irq = 0,
- .max_speed_hz = 50000000,
- .modalias = "spidev",
- .mode = SPI_MODE_0,
- .platform_data = NULL,
+ .controller_data = &spi_controller_data,
+ .irq = 0,
+ .max_speed_hz = 50000000,
+ .modalias = "spidev",
+ .mode = SPI_MODE_0,
+ .platform_data = NULL,
},
};