当前位置: 技术问答>linux和unix
内核添加spi驱动的问题!急~~~~~~求助
来源: 互联网 发布时间:2017-05-11
本文导语: 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 ...
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呢?要怎么修改呢?求助
{
.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函数,还需要挂到同样的总线上
你要确认这几个问题,设备成功添加没,驱动成功添加没,是否都在同一总线上?
你要确认这几个问题,设备成功添加没,驱动成功添加没,是否都在同一总线上?