diff options
author | Marcel Ziswiler <marcel.ziswiler@toradex.com> | 2014-05-09 14:43:07 +0200 |
---|---|---|
committer | Marcel Ziswiler <marcel.ziswiler@toradex.com> | 2014-05-09 14:43:07 +0200 |
commit | 277321a36fcc2fde4baa61568b3b116e42a188e9 (patch) | |
tree | d698ccb02673843b8b2c542b1be742d580d9cd0b /arch/arm/mach-tegra/board-colibri_t20.c | |
parent | 059383eea2120cf0cb3fd5e15dc0f09b38ad5bc1 (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.c | 28 |
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, }, }; |