I need to use at least 3 SPI ports on Colibri T30 in Linux. How can I enable them? In Linux it’s only enabled 1 port by default, which can be accessed via path /dev/spidev0.0.
I then tried modifying kernel file board-colibri_t30.c from this:
...
static struct spi_board_info tegra_spi_devices[] __initdata = {
{
.bus_num = 0, /* SPI1: Colibri SSP */
#if !defined(CONFIG_CAN_MCP251X) && !defined(CONFIG_CAN_MCP251X_MODULE)
.chip_select = 0,
#else /* !CONFIG_CAN_MCP251X & !CONFIG_CAN_MCP251X_MODULE */
.chip_select = 1,
#endif /* !CONFIG_CAN_MCP251X & !CONFIG_CAN_MCP251X_MODULE */
.controller_data = &spidev_controller_data,
.irq = 0,
.max_speed_hz = 50000000,
.modalias = "spidev",
.mode = SPI_MODE_0,
.platform_data = NULL,
}
};
...
static struct platform_device *colibri_t30_spi_devices[] __initdata = {
&tegra_spi_device1
};
...
into this:
...
static struct spi_board_info tegra_spi_devices[] __initdata = {
{
.bus_num = 0, /* SPI1: Colibri SSP */
//#if !defined(CONFIG_CAN_MCP251X) && !defined(CONFIG_CAN_MCP251X_MODULE)
.chip_select = 0,
//#else /* !CONFIG_CAN_MCP251X & !CONFIG_CAN_MCP251X_MODULE */
// .chip_select = 1,
//#endif /* !CONFIG_CAN_MCP251X & !CONFIG_CAN_MCP251X_MODULE */
.controller_data = &spidev_controller_data,
.irq = 0,
.max_speed_hz = 50000000,
.modalias = "spidev",
.mode = SPI_MODE_0,
.platform_data = NULL,
},
{
.bus_num = 1, /* SPI1: Colibri SSP */
.chip_select = 0,
.controller_data = &spidev_controller_data,
.irq = 0,
.max_speed_hz = 50000000,
.modalias = "spidev",
.mode = SPI_MODE_0,
.platform_data = NULL,
},
{
.bus_num = 2, /* SPI1: Colibri SSP */
.chip_select = 0,
.controller_data = &spidev_controller_data,
.irq = 0,
.max_speed_hz = 50000000,
.modalias = "spidev",
.mode = SPI_MODE_0,
.platform_data = NULL,
}
};
...
static struct platform_device *colibri_t30_spi_devices[] __initdata = {
&tegra_spi_device1,
&tegra_spi_device2,
&tegra_spi_device3
};
...
I configured the kernel with CAN MCP251X disabled and SPI enabled. It compiled and flashed successfully and I can get the dev paths shown: /dev/spidev0.0, /dev/spidev1.0, /dev/spidev2.0. But when I tested it with the spidev_test it would crash for the paths other than spidev0.0.
How to make it work? Thanks