__init вызывается и платформа_driver_register выполняется в init. но зонд не вызывается - PullRequest
0 голосов
/ 16 апреля 2020

Я поднимаю графику во встроенной системе linux. Я включил простой драйвер панели в Linux Ядро. Я вижу, что вызывается __init panel_simple_init, а также успешно работает platform_driver_register. Но функция зонда "panel_simple_platform_probe" не вызывается.

Ниже приведен фрагмент кода драйверов / gpu / drm / panel / panel-simple. c

static struct platform_driver panel_simple_platform_driver = {
    .driver = {
        .name = "panel-simple",
        .of_match_table = platform_of_match,
    },
    .probe = panel_simple_platform_probe,
    .remove = panel_simple_platform_remove,
    .shutdown = panel_simple_platform_shutdown,
};

static int panel_simple_platform_probe(struct platform_device *pdev)
{
    const struct of_device_id *id;
    printk(KERN_ALERT "%s %d\n",__FUNCTION__,__LINE__);

    id = of_match_node(platform_of_match, pdev->dev.of_node);
    if (!id)
        return -ENODEV;

    return panel_simple_probe(&pdev->dev, id->data);
}

static int __init panel_simple_init(void)
{
    int err;
    printk(KERN_ALERT "%s %d\n",__FUNCTION__,__LINE__);

    err = platform_driver_register(&panel_simple_platform_driver);
    if (err < 0){
        printk(KERN_ALERT "%s %d\n",__FUNCTION__,__LINE__);
        return err;
    }
    if (IS_ENABLED(CONFIG_DRM_MIPI_DSI)) {
        err = mipi_dsi_driver_register(&panel_simple_dsi_driver);
        if (err < 0){
            printk(KERN_ALERT "%s %d\n",__FUNCTION__,__LINE__);
            return err;
        }
    }

    printk(KERN_ALERT "%s %d\n",__FUNCTION__,__LINE__);
    return 0;
}

Может кто-нибудь сообщить мне, почему зонд не вызывается?

...