【问题标题】:Linux driver: device tree and old-style driver instantiationLinux 驱动程序:设备树和旧式驱动程序实例化
【发布时间】:2015-08-26 11:12:51
【问题描述】:

我目前正在使用 Linux(基于 Freescale i.MX6)开发嵌入式设备。我的平台支持 DT(即所有设备实例化都来自扁平设备树,而不是板初始化源文件)。

在这种情况下,我需要实例化一个设备,该设备使用尚未移植到 DT 的驱动程序......这可能吗?我的意思是:是否可以混合通过设备树实例化的设备和以旧方式实例化的设备(例如,通过 i2c_register_board_info 用于 I2C 设备)?

如果是这样,是否也可以使用通常的方式将平台数据传递给旧式驱动程序(例如,通过 struct i2c_board_info 用于 I2C 设备)?或者,作为基于 DT 的平台,那么 struct i2c_board_info 中的 .platform_data 字段将始终为 NULL

您知道网络上的一些示例吗?

谢谢。

【问题讨论】:

标签: linux driver embedded-linux device-tree


【解决方案1】:

我认为您希望以传统方式实例化平台驱动程序,而不是与设备树绑定。

你应该参考下面这个函数和内核中的用法。

static inline struct platform_device *platform_device_register_data(
        struct device *parent, const char *name, int id,
        const void *data, size_t size)

参考:https://elixir.bootlin.com/linux/latest/source/include/linux/platform_device.h#L160

可以调用此函数来注册任何平台驱动程序,并且可以将平台数据从父驱动程序传递给该驱动程序,该父驱动程序是从设备树 (DT) 探测的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-26
    • 1970-01-01
    • 1970-01-01
    • 2013-07-08
    • 2013-04-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多