我在dragonboard410c工作具有內核模塊wcn36xx哪些寄存器是這樣的:中斷處理程序未註冊
static const struct of_device_id wcn36xx_of_match[] = {
{ .compatible = "qcom,wcnss-wlan" },
{}
};
MODULE_DEVICE_TABLE(of, wcn36xx_of_match);
static struct platform_driver wcn36xx_driver = {
.probe = wcn36xx_probe,
.remove = wcn36xx_remove,
.driver = {
.name = "wcn36xx",
.of_match_table = wcn36xx_of_match,
},
};
module_platform_driver(wcn36xx_driver);
我想寫我自己的內核模塊,也註冊到同一個設備,我的代碼:
static const struct of_device_id my_interrupt_of_match[] = {
{ .compatible = "qcom,wcnss-wlan" },
{}
};
MODULE_DEVICE_TABLE(of, lab2_interrupt_of_match);
static struct platform_driver my_driver = {
.driver= {
.name = "my_interrupt",
.of_match_table = my_interrupt_of_match,
},
.probe = my_probe,
.remove = my_remove,
};
在初始化函數註冊我的司機:
int err = platform_driver_register(&my_driver);
但我的探測功能沒有被調用。 我的模塊在啓動時自動加載,並調用init函數。
我建立我的模塊中的目錄外的內核代碼,我把lab2_interrupt.ko在黑板上的相同目錄wcn36xx.ko:
/lib/modules/4.4.23-linaro-lt -qcom/kernel/drivers/net/wireless/ath/wcn36xx/
它可以像你寫的那樣工作。當wcn36xx沒有註冊時,我的模塊可以註冊並且它的探測功能被調用。那麼總是可以只註冊一個設備的驅動程序? – dafnahaktana
@dafnahaktana您可以註冊一個設備的多個驅動程序,但只有一個會「贏」。可以覆蓋平臺設備的驅動程序,然後解除綁定並重新探測。請參閱https://www.redhat.com/archives/libvir-list/2014-April/msg00382.html –