【发布时间】:2020-09-09 14:51:05
【问题描述】:
您好,我正在使用 2.22.19 版本自定义 linux 内核,它不支持设备树。所以我必须使用板初始化代码来描述外围设备。我已经检查了板初始化代码中的“spi 节点”,如下所示:
static struct resource c300v2evm_spi0_resources[] = {
{
.start = COMCERTO_SPI0_BASE,
.end = COMCERTO_SPI0_BASE + SZ_4K - 1,
.flags = IORESOURCE_MEM,
},
{
.start = IRQ_SPI0,
.flags = IORESOURCE_IRQ,
},
};
static struct platform_device c300v2evm_spi0 = {
.name = "comcerto_spi",
.id = 0,
.num_resources = ARRAY_SIZE(c300v2evm_spi0_resources),
.resource = c300v2evm_spi0_resources,
};
且spi总线与控制器驱动匹配:
static int __init comcerto_spi_probe(struct platform_device *pdev)
{
...// probe function code
}
static struct platform_driver comcerto_spi_driver = {
.driver = {
.name = "comcerto_spi",
.owner = THIS_MODULE,
},
.probe = comcerto_spi_probe,
.remove = __devexit_p(comcerto_spi_remove),
};
现在我有了设备的协议驱动程序(spi 总线上的 eeprom):
static int at25_probe(struct spi_device *spi)
{
... // probe function code
}
static struct spi_driver at25_driver = {
.driver = {
.name = "at25",
.owner = THIS_MODULE,
},
.probe = at25_probe,
.remove = __devexit_p(at25_remove),
};
static int __init at25_init(void)
{
return spi_register_driver(&at25_driver);
}
我检查了日志,发现协议已通过 init 函数加载到内核,但我不知道如何在板卡初始化代码中添加节点以匹配协议驱动程序探测函数。
【问题讨论】:
-
我不禁觉得这不是这个问题的正确论坛。我还怀疑您不会找到一个论坛,人们会在这样一个古老的 Linux 内核上帮助您解决问题(除了可能,如果您愿意付钱给他们,并且付给他们很多钱) .
标签: c linux kernel driver porting