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.

[参考译文] AM5748:pwmchip0名称冲突?

Guru**** 1129500 points
Other Parts Discussed in Thread: AM5748, LP3943
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/951607/am5748-pwmchip0-name-clash

器件型号:AM5748
主题中讨论的其他器件:LP3943

你(们)好

我使用的是 TI Linux RT SDK 6.3。

我在器件树中使用两个 PWM 节点:

1:AM5748内部 PWM ehrpwm2 或 LCD 背光:

LCD_BL:背光{

兼容="PWM 背光";
PWM =<&ehrpwm2 0 50000 0>;
亮度等级=<0 51 53 56 62 75 101 152 255>;
default-brightse-level =<8>;
};

(笑声)

epwms2{(&E)

状态="正常";
};

ehrpwm2{(&E)
状态="正常";
};

2:TI lp3943 LED 控制器:  

GPIO_SFP_Ctrl:GPIO_SFP_CONTROL@64{
兼容="ti,lp3943";
reg =<0x64>;

gpioex:gpio{
兼容="ti、lp3943-GPIO";
GPIO 控制器;
#GPIO-cells =<2>;
};

pwm3943:PWM{
兼容="ti、lp3943-pwm"
#PWM-Cells =<2>;
ti、pwm0 =<0 1 2>;
};
};

两者都尝试在/sys/class/pwm.下分配"pwmchip0" 由于 ehrpwm2是第一个、因此我将得到 pwm3943的值:

[2.626063] lp3943-PWM:lp3943-PWM 的探测失败,错误-17

-17表示"文件存在"

在这里、我们看到 pwmchip0确实是 ehrpwm2:

LS /sys/class/pwm
pwmchip0

CAT /sys/class/pwm/pwmchip0/device/of_node/compatible

TI、dra746-ehrpwmti、am3352-ehrpwm

root@CPM:~# cat /sys/kernel/debug/pwm
Platform/48442200.PWM、2个 PWM 器件
PWM-0 (背光):请求的启用周期:50000 ns 占空比:50000 ns 极性:正常
PWM-1 ((空)):周期:0ns 占空比:0ns 极性:正常

如何确保安装两个 PWM 并避免名称冲突。

此致、Chris

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

    Chris、

    我们已收到您的帖子、我将很快在这里跟进。

    此致、

    Dave

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

    Chris、

    这似乎是因为在添加 pwmchip_add 时 PWM-lp39343始终请求 pwm0。
    PWM 芯片基址应设置为-1、以便内核层分配 PWM ID。
    您能否尝试以下差异:

    diff --git a/drivers/pwm-lp3943.c b/drivers/pwm/pwm-lp3943.c 索引7551253ada32..bf3f14fb5f24 100644
    -- a/drivers/pwm/wm-lp3943.c
    ++ b/drivers/pwm/wm-lp3943.c
    @@-275、6 +275、7 @@静态 int lp3943_PWM_probe (struct platform_device *pdev)
    lp3943_PWM->chip.dev =&pdev->dev;
    lp3943_PWM->chip.ops =&lp3943_PWM_ops;
    lp3943_PWM->chip.npwm = LP3943_NUM_PWM;
    + lp3943_pwm->chip.base =-1;

    platform_set_drvdata (pdev、lp3943_PWM);

    此致、

    Dave