summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/board-colibri_t30.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_t30.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_t30.c')
-rw-r--r--arch/arm/mach-tegra/board-colibri_t30.c28
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,
},
};