我用的AM1810,linux 2.6.37, 两路spi已被占用,现在用gpio模拟spi, 挂mcp2515 CAN控制器。想先用spidev测试下gpio模拟spi的效果,也就是先在spi_gpo总线上挂"spidev". linux启动后,/sys/bus/platform/devices:发现spi_gpio.0,/sys/bus/platform/drivers:发现spi_gpio,/sys/bus/spi/drivers:发现spidev,但在/sys/bus/spi/devices:没有"spidev"相关的。
/arch/arm/mach-davinci/board-da850-evm.c:如下配置
static struct spi_gpio_platform_data spi_gpio_pdata = {
.sck = GPIO_SPI_CLK,
.mosi = GPIO_SPI_MOSI,
.miso = GPIO_SPI_MISO,
.num_chipselect = 1,
};
static struct platform_device can_spi_gpio = {
.name = "spi_gpio",
.id = 0
.dev = {
.platform_data = &spi_gpio_pdata,
},
};
static struct spi_board_info can_spi_board_info[] = {
[0] = {
.modalias = "spidev", //先用spidev测试,后面改mcp2515
.max_speed_hz = 2*1000*1000,
.bus_num = 0,
.chip_select = 0,
.mode = SPI_MODE_0,
//.platform_data = &mcp251x_info,
.controller_data = (void *)GPIO_MCP2515_CS,
},
};
da850_init(void)已经加入下面2句
spi_register_board_info(can_spi_board_info, ARRAY_SIZE(can_spi_board_info));
platform_device_register(&can_spi_gpio);
跟踪运行看,执行spi_register_board_info时,在spi.c spi_setup()函数运行到下面
status = spi->master->setup(spi); 返回-16
出错信息:spi_gpio spi_gpio.0: can't setup spi0.0, status -16
所以"spidev"挂载spi_gpio没有成功。
请论坛高手们看看spi_gpio怎样挂载spi device,哪地方没配置好?