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.

[参考译文] LP5562:有关固件加载的错误

Guru**** 2511945 points
Other Parts Discussed in Thread: LP5562

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/893392/lp5562-the-error-about-firmware-load

器件型号:LP5562

您好!

我在 Linux 上使用以下命令来使用 LP5562 LED:

/bin/echo 0 >/sys/bus/i2c/devices/0-0032/run_engine
/bin/echo 3 >/sys/bus/i2c/devices/0-0032/select_engine
/bin/echo "RGB">/sys/bus/i2c/devices/0-0032/engine_mux
/bin/echo 1 >/sys/bus/i2c/devices/0-0032/firmware/lp5562/loading
/bin/echo "4063D00000000000">/sys/bus/i2c/devices/0-0032/firmware/lp5562/data
/bin/echo 0 >/sys/bus/i2c/devices/0-0032/firmware/lp5562/loading
/bin/echo 1 >/sys/class/i2c-dev/i2c-0/device/0-0032/run_engine

虽然可以正常工作、但我发现在使用"echo 3 >/sys/bus/i2c/devices/0-0032/select_engine 命令后、出现错误:
[4281.157687] lp5562 0-0032:lp5562的直接固件加载失败,错误-2
[4281.164988] lp5562 0-0032:返回到用户帮助程序

这是正常的吗? 如果没有、如何解决?

谢谢

Marten

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

    您好、 Marten、

    您能否共享源驱动程序代码?

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

    您好、Hardy、

    当然、请参阅以下内容:

    /*
    * LP5562 LED 驱动器
    *
    版权所有(C) 2013德州仪器
    (TI)*
    作者:Milo (Woodyom) Kim 
    *
    *本程序是免费软件;您可以根据
    
    免费软件基金会*发布的 GNU 通用公共许可证版本2的条款重新分发和/或修改*。
    */
    
    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    
    #include "LED-lp55xx-common.h"
    
    #define LP5562_program_length32
    #define LP5562_MAX_LED4
    
    /*启用寄存器00h */
    #define LP5562_REG_ENABLE0x00
    #define LP5562_ENG1_M0x30
    #define LP5562_EXEC_ENABLE_RATIM#define
    0x62_LP5562*
    
    #define LP5562_LEV/
    #define LP5562_RAPWM_LEVENABLE_LOADDRESD*#define #define 0x62*#define #define 0x62_LE_LED_ENABLE_#define LP5562_LAUND_ 0x62_LET_LEVEND*#define LP5562_LEM#define LP5562_LEADDRESD* 0x62
    
    
    (LP5562_MASTER_ENABLE | LP5562_对 数_PWM)
    #define LP5562_ENABLE_RUN 程序\
    (LP5562_ENABLE_DEFAULT | LP5562_EXEC_RUN)
    
    /* OPMODE 寄存器01h *
    #define LP5562_REG_OP_MODE0x01
    #define LP5562_ENABLE_L5562_RUN #0x62_INGUL5562_MODE
    
    
    
    
    
    
    
    
    0x62 #define LP5562_INGUL5562_L5562_LP2_RUN #define LP5562_MODE 0x62_INGUL5562_L5562_L5562_LP2_LP2_LP2_RUN #ENDLE_LOAD012_MODE 0x62 #define LP5562_L5562_MODE 0x62 #define LP5562_INGUE 0x62_L5562_L5562_L5562_L5562_L5562_L5562_DE_L5562_LP2_DE_RUN #define LP5562_MODE 0x62 #define LP5562_ENGL0_
    == LP5562_LOAD_ENGL1)
    #define LP5562_ENG2_IS 加载(MODE)\
    ((MODE & LP5562_MODE_ENG2_M)=LP5562_LOAD_ENG2)
    #define LP5562_Eng3_IS 加载(MODE)\
    (MODE & LP5562_MODE_ONG2_ENG2)=LP5562_ONG3_ONG3)
    
    /*亮度寄存器*/
    #define LP5562_REG_R_PWM0x04
    #define LP5562_REG_G_G_G_G_G_PWM0x03
    #define LP5562_REG_B_PWM0x02
    #define LP5562_W_PWM0x0E
    
    //
    #define LP5562_REG_R5562_R5562_LP5562_R0.08_R5562_RLD_R5562*#define LP5562_R5562_R5562_R0.08_R0.08_RLD_R5562_R5562_R0.08_R#define LPM_R5562_R5562_R5562_R5562*#define LPM_R5562_R5562_R5562_R5562_R5562_RLD_R0.08_R0.05_R0.05_R#define LPM
    
    
    
    
    
    
    
    
    内部时钟*/
    #define LP5562_DEFAULT_CFG(LP5562_PWM_HF | LP5562_PWRSAVE_EN)
    
    /*复位寄存器0Dh */
    #define LP5562_REG_RESET0x0D
    #define LP5562_RESET0xFF
    
    //程序引擎寄存器*/
    #define LP5562_REG_PROG_MEM_ENG10x10
    #define LP5562_REG_PROG_MCU_ENG 0x7062_RING_LP5562_ING_LP556_ENG_LE_R_RNG0_R=
    
    
    0x70621_LE_LE_R_R_RING_ENG #define LP5562_ENGL5562_R_R_ENGL556_R_R_R_LE_ENG_ENG_ENGL556_R_R_R_ENGL556_R_R_ENGL0_LE_R_ENGL556_R_R_ENGL556_R_R
    
    
    
    b:Eng3 */
    #define LP5562_ENG_for_W_M0xC0
    #define LP5562_ENG1_for_W0x40// W:ENGL1 */
    #define LP5562_ENG2_for_W0x80//* W:ENGL62_ENGL62_W/#define
    LP5562_LD_LOW/
    
    
    
    LD_LD_LOW/ LD_CL5562*#define LP5562_LOW/ LD_LD_LOW/ LD_CL5562 #define LOW/ LD_MODE/ LD_CL5562 #define LP5562_LOW/ LD_LD_LOW/
    #define CL5562_LD_CL0*#LD_CL5562_LOW/ LD_LD_CLPON_MODE/#define LOW/ LD_CL0_CL5562_LD_CL0*#define CL
    
    
    
    
    
    更改需要长于153us */
    usleep_range (200、300);
    }
    
    静态内联 void lp5562_wait_enable_done (void)
    {
    //更新启用寄存器需要488us 以上*
    / usleep_range (500、600);
    }
    
    静态 void lp5562_set_led_current (lpt 55xx_led、ulead、r_rlead、lp5562_r_r_current
    
    、r_r_r_r_rp 5562[LP5562_r_r_r_r_r_r_r_rg_rg_static、}
    
    
    
    
    
    
    LED_CURRENT = LED_CURRENT;
    lp55xx_write (LED_>chip、addr[LED_>CHAN_nr]、led_CURRENT);
    }
    
    静态空 lp5562_load_engine (struct lp55xx_chip)
    {
    lp55xx_engine_index = chip->engine_idx;}静态空 lp5562_load_engine = LP5562_engine_modine =[LP5562_en_engine
    
    
    
    
    
    
    
    
    
    = LP553_engine_enuel_enuEP552][LP5523_engine_enuel_enuEP552_engine_enuEP552_engine_enuEP552]= LP552_enuEP552_engine_enuEP552_enuEP552_enuxx、LP552_engine_enuEP552_engine_enuEP552_enuEP552[LP552_engine_en档[LP552_engine_en档[LP552_engine_en档[LP552_
    
    
    lp55xx_update_bits (芯片、 LP5562_REG_OP_MODE、MASK[idx]、val[idx]);
    
    lp5562_wait_opmode_done ();
    }
    
    静态空 lp5562_stop_engine (struct lp55xx_chip)
    {
    lp55xx_write (chip、LP5562_REG_OP_mode、LP5562_stop
    
    
    
    
    
    
    
    
    
    
    );lp5562_disable_task (lp5562_disable);lp5562_stit_stu_run (lp5562_disc);lp5562_disable lp55xx_stit_disc (_run);lp5562_disp_stit_run (lp5562_disc);lp5562_disc (_disp5562_disp_state_state_disc);lp5562_disable lp5562_state_stit_state_stit_state_enchart (lp5562_disc)
    
    
    
    lp55xx_write (chip、LP5562_REG_ENG_SEL、LP5562_ENG_SEL_PWM);
    lp55xx_write (chip、LP5562_REG_OP_MODE、 LP5562_CMD_Direct);
    lp5562_wait_opmode_done ();
    return;
    }
    
    //*
    要运行引擎
    ,*操作模式和启用寄存器应同时更新
    */
    
    ret = lp55xx_read (chip、LP5562_REG_OP_mode、&mode);
    if (ret)
    return;
    
    ret= lp55xx_read (lpchip、lpmode) LP5562_REG_ENABLE、&exec);
    if (RET)
    return;
    
    //将操作模式更改为仅在每个引擎加载时运行*/
    if (LP5562_ENG1_IS 加载(MODE)){
    MODE =(MODE &~LP5562_MODE_ENG1_M)| LP5562_RUN_ENG1;
    = LP5562_EONG2_RUN =
    
    
    (LP5562_EONG2_MODE
    )| LP5562_RUN_MODE (LP5562_EONG2_RUN)| LP5562_EONG62 ~~ENGL556_MODE (LP556_EONG2_RUN)| L5562_RUN + ENGL556_MODE (LP556_ENGL556_MODE + ENGL556_MODE
    EXEC =(exec &~LP5562_EXEC_ENG2_M)| LP5562_RUN_ENG2;
    }
    
    IF (LP5562_Eng3_is_LOADing (MODE)){
    MODE =(MODE &~LP5562_MODE_Eng3_M)| LP5562_RUN_ENGL3;
    exec =(
    
    
    REG &~LP5562_RUN_MODE_ENDE-M)| LP5562_EN5562_MODE_ENP5562_N =(RE_ENP5562_MODE_N)
    
    
    lp55xx_update_bits (chip、LP5562_REG_ENABLE、LP5562_EXEC_M、exec);
    lp5562_WAIT_ENABLE_DONE ();
    }
    
    static int lp5562_update_firmware (struct lp55xx_chip *芯片、
    const u8 *数据、size_t size)
    {
    enum lp55xx_engine_index idx = chip->enginer_idx;
    u8 pattern[LP5562_program_length]={0};
    static const u8 addr[]={[LP5562_engine_en_en_ench_en_en_ench_en_enu_enu_enu_enu_enu_enu_enu_enu_enu_enu_enu_enu_enu= LP5562_enu_enu_enu_enu_enu_enu_enu_enu_enu_enu_enu_enu_
    
    
    
    
    
    char c[3];
    int program_size;
    int nrchars;
    int offset = 0;
    int ret;
    int i;
    
    //在更新*之前清除程序存储器
    (i = 0;i < LP5562_program_length;i++)
    lp55xx_write (chip、addr[idx]+ i、0);
    
    I = 0;
    while ((offset < size - 1)&&(I < LP5562_program_length)){
    //单独 sscanfs、因为长度仅适用于%s */
    ret = sscanf (data + offset、"%2s%n "、c、&nrchars);
    if (!= 1)
    goto err;
    
    = 2 (scandr、"%f);c、&cmd)
    如果(ret!= 1)
    转至错误;
    
    pattern[i]=(u8) cmd;
    offset += nrchars;
    i++;
    }
    
    //每个指令的长度为16位。 检查长度是否为偶数*/
    if (i % 2)
    goto err;
    
    program_size = i;
    for (i = 0;i < program_size;i++)
    lp55xx_write (chip、addr[idx]+ i、pattern[i]);
    
    返回0;
    
    错误:
    dev_err (&chip->cl->dev、"错误的模式格式\n");
    返回-EINVAL;
    }
    
    静态空 lp5562_firmware_loaded (struct lp55xx_chip *chip)
    {
    const struct firmware *固件= chip->FW;
    
    if (fw->size > LP5562_program_loaded)
    、err->size (structure *固件溢出);{\fl&s\cls\cl&suls->firmware";{\fild&s&sum_overflows\cl
    
    
    
    
    /*
    *程序存储器序列
    * 1)将引擎模式设置为"加载"
    * 2)将固件数据写入程序存储器
    */
    
    lp5562_load_engine (chip);
    lp5562_update_firmware (chip、fw->data、fw->size);
    }
    
    static int lp5562_post_init_device (struct lp55xx_chip *默认值)
    =
    LP558_cfg
    ;
    
    /*将所有 PWM 设置为直接控制模式*/
    ret = lp55xx_write (chip、LP5562_REG_OP_MODE、LP5562_CMD_Direct);
    if (ret)
    return;
    
    lp5562_wait_opmode_done ();
    
    //更新时钟设置的配置*/
    if (!cl55xx_is_ret_ret_ret_cl5562
    
    
    );lp5562_ret_ret_ret_ret_cl55xx (cl5562_ret_ret_cl=cfg);lp5562_ret_ret_ret_ret_ret_ret_ret_ret_cl55xx (
    if);lp5562_cl5562_cl5562_
    
    
    /*将所有通道 PWM 初始化为零-> LED 关闭*/
    lp55xx_write (chip、LP5562_REG_R_PWM、0);
    lp55xx_write (chip、LP5562_REG_G_G_G_PWM、 0);
    lp55xx_write (chip、LP5562_REG_B_PWM、0);
    lp55xx_write (chip、 LP5562_REG_W_PWM、0);
    
    //默认情况下将 LED 映射设置为寄存器 PWM */
    lp55xx_write (chip、LP5562_REG_ENG_SEL、LP5562_ENG_SEL_PWM);
    
    return 0;
    }
    
    static int lp5562_led_brightness (structure t LP5562_ENG_ENG_LED_PWM)
    {
    struct
    = LP5562_REG_8_r_r_r_r_rg_rwm
    
    
    
    
    }* lp5562_r_r_r_r_r_r_r_r_r_r_rwm = lp5562[LP5562_r_r_r_r_r_r_r_lp5562];lp5562_lp
    int ret;
    
    mutex_lock (&chip->lock);
    ret = lp55xx_write (chip、addr[led->cha_nr]、led->brightness);
    mutex_unlock (&chip->lock);
    
    return ret;
    }
    
    static void lp5562_write_program_memory (struct lp55xx_chip *芯片、
    u8 base、const u8 * rgb、int size)
    {
    int i;
    
    if (!rgb || size <= 0)
    return;
    
    for (i = 0;i < size;i++)
    、i + rgb (i + write *+ rgb)+(rb + i)(rgb + i)+ i (rbit + i)
    
    lp55xx_write (chip、base + i、0);
    lp55xx_write (chip、base + i + 1、0);
    }
    
    //检查程序计数的大小*/
    静态内联 bool _is _pc_overflow (struct lp55xx_predef_pattern * ptn)
    {
    return ptn->size_r >= LP5562_program_length ||
    ptn->size_g >= LP5562_program_length ||
    ptn->size_b >= LP5562_program_length;
    }
    
    static int lp5562_run_predef_led_pattern (struct lp55xx_chip *芯片,int 模式)
    {
    struct lp55xx_predef_pattern * ptn;
    int i;
    
    if (mode == LP5562_chip _off){&pt62_run_spect}
    
    
    
    
    
    ;ptn_return (pbt +
    
    
    
    
    tin);t punifor_return (pbt p5562_cr);(= pbt + tin)+ tin + tin + tin + tin + tin);(punif_return)(pt pt + tin + tin)(pt pbt pbt + tin);(pv-+ tin + tin + tin);(p
    
    /*将 LED 映射设置为 RGB */lp55xx_write
    (chip、LP5562_REG_ENG_SEL、LP5562_ENG_SEL_RGB);
    
    //对于
    (i = LP55XX_ENGINER_1;i <= LP55XX_ENGIN引擎3;i++){chip->enger_idx
    = I;lp5562_ENG1_PROCESS_PRECT_REG_1*
    
    
    
    LP55xx (lp55xx + PRO55xx、LP556_CHINT_REG_1;lp64_LET_REG_CHIP)+ PRO55xx PRO55xx (lp64_LET_REG_LET_REG_LET + PRO55xx + PRECT_REG_REG_REG_REG_REG_REG_REG_LER)
    
    0);
    lp55xx_write (chip、LP5562_REG_PROG_MEM_ENG2、0);
    lp55xx_write (chip、 LP5562_REG_PROG_MEM_ENG2 + 1、0);
    lp55xx_write (chip、LP5562_REG_PROG_MEM_Eng3、0);
    lp55xx_write (chip、LP5562_REG_PROG_MEM_Eng3 + 1、0);
    
    //程序引擎*
    / lp5562_write_program_memory (chip、LP5562_REG_PROG_MEM_ENGL1、
    ptn->r、ptn->size_r);
    lp5562_write_program_memory (chip、lp5562_program_memory) LP5562_REG_PROG_MEM_ENG2、
    ptn->g、ptn->size_g);
    lp5562_write_program_memory (chip、LP5562_REG_PROG_MEM_Eng3、
    ptn->b、ptn->size_b);
    
    //运行引擎*/
    lp5562_run_engine (chip、true);
    
    返回0;
    }
    
    static ssize_t lp5562_store_pattern (struct device *dev、
    struct device_attribute *attr、
    const clientchar *buf、size_t len)
    {strategic size_led_t_det->p55xx->tid_model (structure device *dev、structure = p55xx_t_dixx->t
    )
    
    
    
    ;tid_tri = p55xx_tri = tid_model *ategel *ates_di55xx->p55xx->t + tid_t + tid_tri n_di20c (t_t)
    
    
    RET = kstrtoul (buf、0、 mode&mode);
    if (ret)
    return ret;
    
    if (mode > num_patterns ||!ptn)
    return -EINVAL;
    
    mutex_lock (&chip->lock);
    ret = lp5562_run_predef_led_pattern (chip、mode);
    mutex_unlock (&chip->lock);
    
    如果(ret)
    返回 ret;
    
    返回 len;
    }
    
    static ssize_t lp5562_store_enger_mux (struct device *dev、
    struct device_attribute *属性、
    const char * buf、size_t len)
    {
    struct lp55xx_led * led = i2c_get_clientdata (to_i2c_client (dev));
    struct lp55xx_chip *芯片= led->chip;
    u8 mask;
    u8 val;
    
    /* LED map
    * R... 发动机1 (固定)
    * G... 发动机2 (固定)
    * B... 发动机3 (固定)
    * W ... 引擎1或2或3
    *
    
    if (sysfs_streq (buf、"rgb")){
    mask = LP5562_eng_for_rgb_M;
    val = LP5562_eng_SEL_RGB;
    }否则(sysfs_streq (buf、"W"))){
    p555562_eng_index_id = LP5562_eng_brom_en_en_en_en_en_en_en_en_b_en_en_en_en_b_1;
    
    
    对于 LP55xx_eng_eng_en_eng_en_en_en_en_en_en_eng_en_enu_enu_enu_enu_enu_enu_enu_enu_enu_1;对于 LP552_enu_enu_eng_enu_
    
    
    
    
    
    
    
    Val = LP5562_Eng3_for_W;
    break;
    default:
    return -EINVAL;
    }
    
    else{
    DEV_err (dev、"Choose RGB or W\n");
    return -EINVAL;
    }
    
    mutex_lock (&chip->lock);
    lp55xx_update_bits (chip、LP5562_REG_ENG_SEL、 mask、val);
    mutex_unlock (&chip->lock);
    
    return len;
    }
    
    static LP55XX_dev_attr_wo (led_pattern、 lp5562_store_pattern);
    静态 LP55XX_dev_attr_wo (enginer_mux、lp5562_store_engine_mux);
    
    静态结构属性* lp5562_attributes[]={
    &dev_attr_led_pattern.attr、
    /dev/attr_engine_mux.attr、
    NULL、
    };
    
    静态属性= lp5562
    =静态组属性= lp5562;lp5562
    
    
    /*特定于芯片的配置*/
    静态结构 lp55xx_device_config lp5562_cfg ={
    .max_channel = LP5562_MAX_LED、
    .reset ={
    .addr = LP5562_REG_RESET、
    .val = LP5562_reset、
    }
    .enable ={
    .addr = LP5562_REG_ENABLE、
    .led_device_set
    = LP5562_init_current、lp5562_set}.lp5562_device_set
    
    
    brightn_fn = lp5562_led_brightness、
    .run_engine = lp5562_run_engine、
    .firmware_CB = lp5562_firmware_loaded、
    .dev_attr_group = lp5562_group
    、};
    
    static int lp5562_probe (struct i2c_client *客户端、
    const struct i2c_device_id * id)
    {
    int ret;
    struct lp55xx_chip *芯片;
    struct lp55xx_led *;
    struct lp55xx_platform_data * pdata = dev_get_get_plat_dipt
    
    
    
    
    (
    if
    
    );(p55xx_client = pnp);(p_data);(如果为 pnp、则为 p_date_date_dateerp);(pnp);(如果为 pnp、则为 pnp);(如果为)、则为 pnp、则为 p_data =);(p_data =);(如果为);(pnp、则为);(p_ 否则{
    DEV_ERR(&CLIENT_>DEV、"无平台数据\n");
    return -EINVAL;
    }
    
    
    chip = devm_kzalloc (&client->dev、sizeof (lpchip)、GFP_kernel);
    if (!chip)
    return -ENOMLoc
    
    
    
    
    
    
    
    
    ;led = devm_kzem (&client->sizeof (&client->lpchip);cfg_rtex = potr&crit = palloc;&cr = ped&cri&cri&cr = ped&cri&cri&cri&cri&cr = v->cri&cri&cr = ped&cri&cr = pot->cr = pot_cl&cri&cri&cri&cri&c
    
    
    
    i2C_SET_clientdata (client、led);
    
    ret = lp55xx_init_device (chip);
    if (ret)
    goto err_init;
    
    ret = lp55xx_register_LEDs (led、chip);
    if (ret)
    goto err_register_LEDs;
    
    
    
    
    
    
    
    
    
    
    err = 55xx_register_sysfs (chip);if (&){led_register_sysfs (led_retn);register 0_sysfs 失败;err_sysfs (retn) 芯片);
    err_register_LEDs:
    lp55xx_deinit_device (chip);
    err_init:
    return;
    }
    
    static int lp5562_remove (struct i2c_client *客户端)
    {
    struct unregister 55xx_led * led = i2c_get_clientdata (client);
    struct lp55xx_chip = led->chip_strift unregister;
    
    lp55xx (lp55xx)
    
    
    ;lp55xx_strift lp_stop_lp55xx (clientt lpcle);lp5562_strift (lp_strift + lp55xx (device_strift);
    lp55xx_deinit_device (chip);
    
    return 0;
    }
    
    静态常量结构 i2c_device_id lp5562_id[]={
    "lp5562"、0}、
    {}
    };
    module_device_table (i2c、lp5562_id);
    
    #ifdef CONFIG_of
    static const struct of _device_id of _lp5562_LED_match[]={
    {.compatible ="ti、lp5562"、}、
    {}、
    };
    
    module_device_table (of、 of _lp5562_LEDS_match);
    #endif
    
    static struct i2c_driver lp5562_driver ={
    .driver ={
    .name="lp5562"、
    .of _match_table = of _match_ptr (of _lp5562_LEDS_match)、
    }、
    .probe= lp5562_probe、
    .remove= lp5562_remove、
    id_table= lp5562_id、
    };
    
    module_i2c_driver (lp5562_driver);
    
    module_description ("Texas Instruments LP5562 LED Driver");
    module_Author ("Milo Kim");
    module_license ("GPL");
    

    谢谢

    Marten

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

    您好、 Marten、

    很抱歉、我们找不到该代码的原始工程师。 我们已经掌握了 Linux 方面的知识、因为我们都是硬件工程师、所以支持将会受到限制。

    我在 以下函数中找不到 SELECT_ENGINE。 是否有任何遗漏的代码?

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

    您好、Hardy、

    比较后、我使用的驱动程序代码与以下链接相同:

    https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/leds/leds-lp55xx-common.h

    https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/leds/leds-lp55xx-common.c

    https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/leds/leds-lp5562.c

    谢谢

    Marten

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

    您好、 Marten、

    很抱歉、我们没有 Linux 测试环境、无法提供帮助。