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_t30.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_t30.c')
-rw-r--r-- | arch/arm/mach-tegra/board-colibri_t30.c | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/arch/arm/mach-tegra/board-colibri_t30.c b/arch/arm/mach-tegra/board-colibri_t30.c index bd1f63b7c3ef..39f0b7c7d8a0 100644 --- a/arch/arm/mach-tegra/board-colibri_t30.c +++ b/arch/arm/mach-tegra/board-colibri_t30.c @@ -26,8 +26,8 @@ #include <linux/platform_data/tegra_usb.h> #include <linux/platform_device.h> #include <linux/serial_8250.h> -#include <linux/spi/spi.h> #include <linux/spi-tegra.h> +#include <linux/spi/spi.h> #include <linux/tegra_uart.h> #include <mach/io_dpd.h> @@ -260,6 +260,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, @@ -271,6 +273,7 @@ static struct spi_board_info mcp251x_board_info[] = { { .bus_num = 0, .chip_select = 0, + .controller_data = &spi_controller_data, .max_speed_hz = 10000000, .modalias = "mcp2515", .platform_data = &mcp251x_pdata, @@ -776,19 +779,26 @@ static struct platform_device tegra_rtc_device = { /* SPI */ #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 = 0, /* SPI1: Colibri SSP */ + .bus_num = 0, /* SPI1: 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, }, }; |