This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

spi_gpio上怎样挂spi device

Other Parts Discussed in Thread: AM1810

我用的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,哪地方没配置好?