我正在使用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/

10-12 03:49
查看更多