This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM625:LP5521驱动程序加载失败、错误为-22

Guru**** 2458880 points
Other Parts Discussed in Thread: AM625, LP5521

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1477632/am625-lp5521-driver-failed-to-load-with-error--22

器件型号:AM625
Thread 中讨论的其他器件: LP5521

工具与软件:

我们正在尝试在 AM625中为 RGB 指示器配置 LED 驱动器

我们已将 RGB 引脚配置为 GPIO、并配置了 I2C_2与其通信。 我们构建了 LP5521驱动程序作为模块、并在系统手动启动后加载。

以下是我的更改:

SOM 数据表 https://www.variscite.com/wp-content/uploads/2023/01/VAR-SOM-AM62_Datasheet.pdf

2)器件树 :- https://github.com/varigit/ti-linux-kernel/blob/ti-linux-6.1.y_09.02.01.10_var01/arch/arm64/boot/dts/ti/k3-am625-var-som-symphony.dts

arch/arm/dts/k3-am625-var-som-symphony.dts

 

&main_pmx0 {
    /* RGB Health Indicator */
    lp5521_pins_default: lp5521-default-pins {
     pinctrl-single,pins = <
        AM62X_IOPAD(0x0020, PIN_OUTPUT, 7) /* (J25) OSPI0_D5.GPIO0_8 */
     >;
    };



    rgb_health_i2c2_pins_default: rgb-health-i2c2-pins-default {
     pinctrl-single,pins = <
        AM62X_IOPAD(0x00b0, PIN_INPUT_PULLUP, 1) /* (K22) GPMC0_CSn2.I2C2_SCL */
        AM62X_IOPAD(0x00b4, PIN_INPUT_PULLUP, 1) /* (K24) GPMC0_CSn3.I2C2_SDA */
     >;
    };
};



&main_i2c2 {
    pinctrl-names = "default";
    pinctrl-0 = <&rgb_health_i2c2_pins_default>;
    clock-frequency = <100000>;
    status = "okay";



    /* RGB health indicator @32 */
    lp5521: led-controller@32 {
     compatible = "ti,lp5521";
     reg = <0x32>;
     status = "okay";
     pinctrl-names = "default";
     label = "lp5521_pri";
     pinctrl-0 = <&lp5521_pins_default>;
     enable-gpios = <&main_gpio0 8 GPIO_ACTIVE_HIGH>;
     // reset-gpio = <&main_gpio0 10 GPIO_ACTIVE_HIGH>;



     // Define LED channels with default brightness
     led@0 {
        label = "lp5521:red";
        reg = <0>; // Channel 0
        default-state = "on";   // Can be "on", "off", or "keep"
        max-brightness = <0x5f>; // Maximum value
        brightness = <0x2f>;    // Default brightness
     };



     led@1 {
        label = "lp5521:green";
        reg = <1>;
        default-state = "on";
        max-brightness = <0x5f>;
        brightness = <0x2f>;
     };



     led@2 {
        label = "lp5521:blue";
        reg = <2>;
        default-state = "on";
        max-brightness = <0x5f>;
        brightness = <0x2f>;
     };
    };
};

 

arch/arm64/configs/am62x_var_defconfig

CONFIG_LEDS_CLASS_MULTICOLOR=y
CONFIG_LEDS_LP55XX_COMMON=y
CONFIG_LEDS_LP5521=m // Also try with 'y' option
CONFIG_I2C=y
CONFIG_I2C_CHARDEV=y

控制台输出

将 GPIO0_8设置为高电平后、LP5521器件会在 I2C 2总线上检测到(如上所示)、但当我们尝试加载驱动器时、系统会显示以下错误消息:
 lp5521:2-0032的探测器出现故障、错误为-22

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我还尝试了较旧的语法来在设备树中定义 lp5521设备节点:

    lp5521: lp5521@32 {   // device address
            compatible = "national,lp5521";
            reg = <0x32>;
            label = "lp5521_led";
            clock-mode = /bits/ 8 <1>;   // 0: automode, 1: internal clock, 2: external clock
            enable-gpio = <&gpio0 8 GPIO_ACTIVE_HIGH>;  // GPIO bank, pin and active level - adjust according to your setup
    
            chan0 {
                led-cur = /bits/ 8 <0x2f>;  // LED channel current setting (mA x10, 0 if LED not connected)
                max-cur = /bits/ 8 <0x5f>;  // Maximum LED channel current 
                linux,default-trigger = "none";
            };
            chan1 {
                led-cur = /bits/ 8 <0x2f>;
                max-cur = /bits/ 8 <0x5f>;
                linux,default-trigger = "none";
            };
            chan2 {
                led-cur = /bits/ 8 <0x2f>;
                max-cur = /bits/ 8 <0x5f>;
                linux,default-trigger = "none";
            };
        };

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    将 debug 语句添加到错误代码中后、返回以下位置:
    https://github.com/varigit/ti-linux-kernel/blob/ti-linux-6.1.y_09.02.01.10_var01/drivers/leds/leds-lp5521.c

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    您使用的是哪个 Linux SDK 版本?

    由于该 LED 驱动器不是 TI EVM、因此该产品尚未验证是否可与 TI 处理器结合使用。 这意味着可能需要进行一些试验。

    通过快速搜索、可以看到一个使用 LP5521的示例、但 DTS 不是来自 TI 产品、因此 TI 尚未对其进行测试: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm/boot/dts/st/ste-href.dtsi?h=ti-linux-6.6.y#n83

    以下包括语句是否已添加到 DTS 中?

    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/leds/common.h>
    


    此致、

    Anshu