我有一个运行linux 3.0.101的嵌入式系统,其中显示驱动程序应该通过spi向小型微控制器发送请求,以启动显示模块和背光升压转换器。
这应该发生在每个恢复周期。
我的问题是显示恢复功能的调用早于调用SPI恢复。在SPI简历中,我们需要向这个涉及电源管理的小型微处理器发送一些初始化代码。只有在此之后,所有其他设备才能发送微功率请求。
我不想更改我已经拥有的驱动程序的init类型(如early_init或类似),而是我想在我的显示器和SPI总线之间创建一个依赖关系,以便恢复显示只有在SPI恢复之后。
显示驱动程序如下所示:
static struct amba_driver clcd_driver = {
.drv = {
.name = "clcd-pl11x",
.owner = THIS_MODULE,
},
.probe = clcdfb_probe,
.remove = __devexit_p(clcdfb_remove),
.suspend = clcdfb_suspend,
.resume = clcdfb_resume,
.id_table = clcdfb_id_table,
};
static int __init amba_clcdfb_init(void)
{
...
return amba_driver_register(&clcd_driver);
}
module_init(amba_clcdfb_init);
module_exit(amba_clcdfb_exit);
对于SPI,我们有:
static struct spi_driver mymicro_spi_driver = {
.driver = {
.name = "mymicro",
.bus = &spi_bus_type,
.owner = THIS_MODULE,
},
.probe = mymicro_spi_probe,
.remove = __devexit_p(mymicro_spi_remove),
.suspend = mymicro_suspend,
.resume = mymicro_resume,
};
int _leap_driver_insmod(int majorNum)
{
...
return spi_register_driver(&mymicro_spi_driver);
}
所以,我的问题是:这至少可以创建这种依赖关系,如果是的话,怎么样?也许是一些宏?
谢谢你, 西巴
系统说明: 电源管理微控制器(PMM)通过SPI连接到应用处理器(AP) PMM控制到AP,显示器和系统中其他模块的电源线 有一条“永远在线”的电源线为PMM供电 AP连接到显示器。它有内部TFT控制器 AP有外部SDRAM
在低功耗模式下,只有PMM有电源和SDRAM,后者处于自刷新模式。 PMM接收外部中断,ant从HALT返回到运行状态。检查条件并开始AP上电序列。 AP恢复内核,因为在SDRAM中已经存在(正在自刷新)。
直到现在,一切都按预期进行。
背景故事:PMM有一些我们怀疑在其中的错误,即SPI内部控制器上的硬件。所以,他收到的第一个字节是乱码。在内核SPI驱动程序的AP中,我们有一个解决方法。如果在其他驱动器之前未触发SPI恢复,则当显示驱动器恢复时,它将通过SPI向PMM请求为TFT和背光供电,它将失效。
这就是为什么我们必须让SPI在需要与PMM通信的其他驱动程序之前恢复。
对于移动,飞机之间的电汇更新感到抱歉