linux - linux内核加载后如何让linux驱动程序检测和使用设备?
问题描述
我在 i2c-0 总线上的地址 0x3f 使用系统监视器设备。该设备在设备树中配置了 pmbus 驱动程序。
问题是,加载 linux 内核时,这个“Sysmon”设备没有通电。因此,当我在总线 0 上执行 i2cdetect 时,我们会在 0x3f 处看到“--”,这是预期的。现在,当我使用我的 UI 为 Sysmon 供电时,该设备由 linux 添加,我们在运行 i2cdetect 时看到“3f”。
现在,我希望 pmbus 驱动程序检测到该设备并将其更改为“UU”,以便我可以在 sysfs 中查看所有 pmbus 属性。
我可以从用户空间做到这一点吗?怎么做?如果没有,你能建议我如何解决这个问题。
如果我强制使用硬件为设备供电,然后加载 linux,pmbus 驱动程序会检测到该设备并保留它。但我不允许强制为设备供电。
设备树:
i2c@ff020000
{
compatible = "cdns,i2c-r1p14", "cdns,i2c-r1p10";
status = "okay";
interrupt-parent = <0x4>;
interrupts = <0x0 0x11 0x4>;
reg = <0x0 0xff020000 0x0 0x1000>;
#address-cells = <0x1>;
#size-cells = <0x0>;
power-domains = <0x15>;
clocks = <0x3 0x3d>;
clock-frequency = <0x186a0>;
pinctrl-names = "default", "gpio";
pinctrl-0 = <0x16>;
pinctrl-1 = <0x17>;
scl-gpios = <0x18 0x4a 0x0>;
sda-gpios = <0x18 0x4b 0x0>;
fpga1sysmon0@3f {
compatible = "general,pmbus";
reg = <0x3f>;
};
PS:我是初学者,这是我在 Stack Overflow 上的第一个问题。请容忍我犯的任何错误。
解决方案
/etc/init.d/rcS
在(假设您使用的是busybox init)或 systemd中启用 sysmon 怎么样/etc/rc.local
?
以下将 在 I2C 总线 #1 上的地址0x60处加载LTC2978的驱动程序:
$ modprobe pmbus
$ echo ltc2978 0x60 > /sys/bus/i2c/devices/i2c-1/new_device
你可以把它放进去
/etc/init.d/rcS
或者/etc/rc.local
推荐阅读
- swift - 命名实体和协议
- python - 这是将 Apache Beam PCollection 写入多个接收器的正确方法吗?
- php - 使用 Sanctum 和 multiguard auth 获取用户配置文件时出现 401 错误
- java - 为什么 Jackson 不能使用 RequiredArgsConstructor 反序列化单个字段类?
- node.js - Sequelize - 在关联表上选择
- gdb - 使用 Clion 连接到微软虚拟机并使用 GDB 调试 xv6
- javascript - 是否可以使用 javascript 将一组 html 附加到 html 页面?
- python-3.x - 是否可以将 Python matplotlib.pyplot.hist 中的 X 轴从 bin 边缘切换为精确值?
- python - 如何通过带有 tqdm 状态栏的 python 套接字下载文件?
- python - 如何添加函数以从 .txt 列表中获取数据?