Linux 驱动程序 : device tree and old-style driver instantiation

标签 linux driver embedded-linux device-tree

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

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

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

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

谢谢。

最佳答案

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

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

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) 探测到的父驱动程序传递给此驱动程序。

关于Linux 驱动程序 : device tree and old-style driver instantiation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32225100/

相关文章:

linux - 在两个 Linux 设备驱动程序中拆分映射调用

c - 需要一个内核模式 API 来找到用户模式 ​​Win32 Dll 的基地址

linux-kernel - 如何将文件操作附加到平台驱动程序中的 sysfs 属性?

embedded-linux - Yocto 对 Chromium Embedded Framework 的支持是什么?

linux - 了解 BSD 界面

linux - 在 R 中,使用 Ubuntu,尝试根据 GMP C lib 安装一个 lib,它找不到 GMP,但我安装了 GMP

linux - 难道没有linux系统调用或者glibc函数来复制文件吗?

linux - 如何使用 Linux 获取触摸屏原始数据的坐标

linux - 2个进程和2个线程在设备文件(节点文件)的使用上下文中的区别

linux - 应用处理器内存映射