【问题标题】:Where the probe() function's argument comes from?probe() 函数的参数从何而来?
【发布时间】:2016-05-10 13:21:14
【问题描述】:

我正在研究 linux 设备驱动程序。目前,我大致了解设备驱动程序的流程,但我不知道 probe() 函数如何获取它的参数。

例如,这是我的代码,它基于内核 3.10。

static int gpio_led_probe(struct platform_device *pdev) {
       struct gpio_led_platform_data *pdata = pdev->dev.platform_data;
       struct gpio_leds_priv *priv;
       ....
       priv = gpio_leds_create_of(pdev);
       ....
}

像这样,参数“pdev”用于各种源点。当probe() 调用时我理解它的作用,但我找不到数据'pdev' 的来源。

感谢阅读我的帖子,很抱歉我的英语不好。

【问题讨论】:

    标签: linux linux-kernel linux-device-driver


    【解决方案1】:

    探测时的平台设备特定数据来自平台设置代码或设备树。 您可以在 arch/arm/borad/device 文件中找到相关代码 struct platform_device 嵌入了 platform_data 结构,您可以在其中将平台相关数据传递给驱动程序。

    在现代内核中,平台数据通过设备树传递给设备驱动程序。设备树可以在 /arch/arm/boot/dts/your_device

    中找到

    【讨论】:

      【解决方案2】:

      您可以通过填写platform_device结构来提供平台设备信息,或者您必须在设备树中提供您的设备信息,在系统启动期间,platform_device结构会根据设备树信息填充。在最新的内核中,我们通常使用设备树获取设备信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-10-13
        • 1970-01-01
        • 2020-12-23
        • 1970-01-01
        • 2018-09-09
        • 2015-11-09
        • 1970-01-01
        相关资源
        最近更新 更多