struct spi_board_info __initdata ti8148_spi_slave_info[] = {
{
.modalias = "m25p80",
.platform_data = &ti8148_spi_flash,
.irq = -1,
.max_speed_hz = 75000000,
.bus_num = 1,
.chip_select = 0,
},
#if 1//这个是我增加的spi的设备信息!
{
.modalias = "spidev",
.irq = -1,
.max_speed_hz = 48000000,
.bus_num = 4,
.chip_select = 0,
.mode = SPI_MODE_0,
},
#endif
};
void __init ti8148_spi_init(void)
{
spi_register_board_info(ti8148_spi_slave_info,
ARRAY_SIZE(ti8148_spi_slave_info));
}
内核运行起来之后调用spi_match_device函数中匹配的名字spi->modalias: m25p80,drv->name:spidev所以永远都匹配不了,也就不会调用probe。为什么spi_board_info信息里面已经添加了spidev信息结构体了,为什么不调用,而是一直调用m25p80呢?要怎么修改呢?
设备和驱动要匹配,除了要满足match函数,还需要挂到同样的总线上
你要确认这几个问题,设备成功添加没,驱动成功添加没,是否都在同一总线上?