Linux驱动程序:设备树和旧式驱动程序实例化

时间:2015-08-26 11:12:51

标签: linux driver embedded-linux device-tree

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

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

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

您是否了解网络上提供的一些示例?

感谢。

1 个答案:

答案 0 :(得分:0)

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

您应该在下面参考此功能以及内核中的用法。

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)中进行探测的。

相关问题