probe()函数的参数来自何处?

时间:2016-05-09 08:01:19

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

我正在学习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'来自。

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

2 个答案:

答案 0 :(得分:1)

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

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

中找到

答案 1 :(得分:0)

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