我目前正在使用Linux(基于Freescale i.MX6)的嵌入式设备。我的平台启用了DT(即所有设备实例化都来自扁平化设备树,而不是来自电路板初始化源文件)。
在这种情况下,我需要实例化一个使用尚未移植到DT的驱动程序的设备......是否可能?我的意思是:是否可以混合通过设备树实例化的设备和以旧方式实例化的设备(例如,通过i2c_register_board_info
用于I2C设备)?
如果是这样,是否也可以使用常规方式将平台数据传递给旧式驱动程序(例如,通过struct i2c_board_info
用于I2C设备)?或者,作为基于DT的平台,.platform_data
中的struct i2c_board_info
字段始终为NULL
?
您是否了解网络上提供的一些示例?
感谢。
答案 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)中进行探测的。