我正在使用i2c-0总线上地址0x3f处的系统监视器设备。此设备在设备树中配置了pmbus驱动程序。
问题是,这个“Sysmon”设备在加载linux内核时没有通电。因此,当我在总线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>;
};
我是个初学者,这是我第一个关于堆栈溢出的问题。请容忍我犯的任何错误。
最佳答案
在/etc/init.d/rcS
中(假设使用busybox init)或在systemd/etc/rc.local
中启用sysmon怎么样。
下面将在地址0x60加载LTC2978的驱动程序
在I2C总线1上:
$ modprobe pmbus
$ echo ltc2978 0x60 > /sys/bus/i2c/devices/i2c-1/new_device
你可以放进去
/etc/init.d/rcS
或/etc/rc.local
另见
https://www.kernel.org/doc/Documentation/hwmon/pmbus
关于linux - linux内核已加载后,如何使linux驱动程序检测并使用设备?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56484873/