backlight function link pwm5@32c0000 a沒有任何輸出
在tegra234-p3768-0000.dtsi 加入 以下的backlight,OS 可以調變brightness,但使用示波器量PWM5(soc_gpio21_ph0) pin 無任何輸出變化,一直在high 輸出
backlight: backlight {
compatible = “pwm-backlight”;
pwms = <&pwm5 0 50000>;
brightness-levels = <40 1023>;
num-interpolated-steps = <1023>;
default-brightness-level = <576>;
enable-active-high;
#cooling-cells = <2>;
status = "okay";
};
display@13800000 {
backlight = <&backlight>;
status = "okay";
};
cat /sys/kernel/debug/pwm
platform/32c0000.pwm, 1 PWM device
pwm-0 (backlight ): requested period: 50000 ns duty: 0 ns polarity: normal
platform/32a0000.pwm, 1 PWM device
pwm-0 (pwm-fan ): requested enabled period: 45334 ns duty: 29689 ns polarity: normal
=====================================
將backlight dts 拿掉,改成fan1 dts,並與pwm5 link
fan1: pwm-fan1 {
compatible = “pwm-fan”;
cooling-levels = <0 88 187 255>;
pwms = <&pwm5 0 45334>;
#cooling-cells = <2>;
};
echo 100 > /sys/devices/platform/pwm-fan1/hwmon/hwmon1/pwm1
cat /sys/kernel/debug/pwm
platform/32c0000.pwm, 1 PWM device
pwm-0 (pwm-fan1 ): requested enabled period: 45334 ns duty: 17778 ns polarity: normal
platform/32a0000.pwm, 1 PWM device
pwm-0 (pwm-fan ): requested enabled period: 45334 ns duty: 17423 ns polarity: normal
OS 的pwm-fan1 數值有變化,使用示波器量GPIO13(soc_gpio21_ph0)輸出一直在high 無任何波型變畫,
請問是須修改甚麼設定才能讓pwm5有輸出變化
Hi frank_weng,
Are you using the devkit or custom board for Orin Nano?
What’s the Jetpack version in use?
Do you mean the configurations in device tree working but you can’t get PWM signal output from scope?
How did you configure the pinmux for this pin in pinmux spreadsheet?
1:公司開發的板子
2:jetpack 6.1
3:ph.00 設定為pwm5 mode,修改tegra234-mb1-bct-pinmux-p3767-dp-a03.dtsi
對照fan 設定方式
4:在OS 看ph0 pin 參數到狀態,與在bootloader 設定有所不一樣(pr4/pr5/px6/px7,都將nvidia,io-reset = <TEGRA_PIN_DISABLE>;,但與os看到都不一樣),
cmd: cat /sys/kernel/debug/pinctrl/2430000.pinmux/pinconf-groups | grep -A 20 -i ph0 (pr4/px3/px6)
看到ph0 (pr4/px3/px6)的參數結果,但一直無法將ph0 參數設定與px3 一樣
5:cat brightness/max_brightness and /sys/kernel/debug/pwm
請你們協助,謝謝
We would suggest configuring them in pinmux spreadsheet instead of modifying pinmux dtsi directly in case you missed something.
Column AG to AL in pinmux spreadsheet would show those information.
Or you could refer to the steps in Unable to generate PWM with Nvidia Jetson AGX Orin Development Kit - #6 by KevinFFF to verify PWM.
HI Kevin
1:PWM5的設定是依照Jetson_Orin_NX_and_Orin_Nano_series_Pinmux_Config_Template.xlsm所產生
Orin-jetson orin nano&nx pinmux dp-pinmux.dtsi
修改tegra234-mb1-bct-pinmux-p3767-dp-a03.dtsi
2:專案板子是搭配panel,須要控制panel 的背光,使用OS來調整panel 的亮度,一定必須使用你所提供的方式才能控制pwm5嗎?無法使用自行寫的driver或pwm_bl driver控制pwm5嗎?
3:pwm5按照公板的dts設定,手動下CMD ,但為何無任何輸出!
a:cat /sys/kernel/debug/pwm ,確認PWM5 disable
platform/32c0000.pwm, 1 PWM device
pwm-0 ((null) ): period: 0 ns duty: 0 ns polarity: normal
b:cd /sys/bus/platform/devices/32c0000.pwm/pwm/pwmchip1
c:echo 0 > expor
d:echo 50000 > pwm0/period
e:echo 25000 > pwm0/duty_cycle
f:echo 1 > pwm0/enable
e:cat /sys/kernel/debug/pwm ,確認PWM5 已enable,但示波器量測ph0 pin 一直為high,無任何變動
platform/32c0000.pwm, 1 PWM device
pwm-0 (sysfs ): requested enabled period: 50000 ns duty: 25000 ns polarity: normal
請協助,謝謝
The steps shared from us is to verify if pwm5 can work as expected.
If it can work, then it means that you’ve configured it correctly and you should check with your custom driver.
Is there any error from dmesg at this moment?
1:在不變動code的設定狀況下,在按照提供Unable to generate PWM with Nvidia Jetson AGX Orin Development Kit - #6 by KevinFFF 的方式,安裝好jetson-gpio tool 之後,在手動去設定(步驟如下,跟前面詢問的操作一樣) ,ph0(pwm5) pin 就會有波形輸出。為什麼一定使用jetson-gpio tool ph0(pwm5) 才會有波形輸出??
a:cat /sys/kernel/debug/pwm ,確認PWM5 disable
platform/32c0000.pwm, 1 PWM device
pwm-0 ((null) ): period: 0 ns duty: 0 ns polarity: normal
b:cd /sys/bus/platform/devices/32c0000.pwm/pwm/pwmchip1
c:echo 0 > expor
d:echo 50000 > pwm0/period
e:echo 25000 > pwm0/duty_cycle
f:echo 1 > pwm0/enable
e:cat /sys/kernel/debug/pwm
platform/32c0000.pwm, 1 PWM device
pwm-0 (sysfs ): requested enabled period: 50000 ns duty: 25000 ns polarity: normall
2:dmesg 並不管有無安裝jetson-gpio tool ,都無看到錯誤!
3:安裝jetson-gpio 看ph0 pin 參數( cat /sys/kernel/debug/pinctrl/2430000.pinmux/pinconf-groups | grep -A 20 -i ph0 ) ,發現 SOC_gpio21_ph0中的gpio-mode =1 ,沒有安裝jetson-gpio tool 的ph0 參數gpio-mode =0,請問gpio-mode 的參數是否會影響ph0 可以輸出pwm 波型嗎?
4:為何從dts 修改pin 中 nvidia,gpio-mode/nvidia,io-reset and 其他參數,怎麼修改dts 中的soc_gpio21_ph0 定義都改不動,與在 /sys/kernel/debug/pinctrl/2430000.pinmux/pinconf-groups 看到都不一樣??
5: 有須要我提供怎麼樣的資訊給你,才能詳細協助我
請協助,謝謝
Dear @KevinFFF
發現pwm5 能正常否輸出並能調整duty,與gpio-mode參數有關
A:將"TEGRA234_MAIN_GPIO(H, 0)" 從 bootloader\tegra234-mb1-bct-gpio-p3767-dp-a03.dtsi 的gpio-output-high 中刪除,
1、進到OS pwm5 就會有pwm 輸出,
2、確造成無法看到開機選單及logo,直到進login 畫面才看的到。
3、OS下確認soc_gpio21_ph0的gpio-mode=1
B:將"TEGRA234_MAIN_GPIO(H, 0)" 加入 bootloader\tegra234-mb1-bct-gpio-p3767-dp-a03.dtsi 的gpio-output-high
1、PWM5 不會有pwm 的變化
2、可以看到開機選單及logo
3、OS下確認soc_gpio21_ph0的gpio-mode=0
由於開機要看到選單and logo 的畫面,
因此必須將TEGRA234_MAIN_GPIO(H, 0)加入 bootloader\tegra234-mb1-bct-gpio-p3767-dp-a03.dtsi 的gpio-output-high ,
但確無法讓PWM5正常輸出pwm,除了你所建議的方式,能否從kernel dts 設定soc_gpio21_ph0的gpio-mode 等於1,來啟動pwm function。
frank_weng:
與gpio-mode參數有關
It seems you are talking about SFIO bit(bit 10).
Please share the result of the following command in both Case-A(gpio-mode=1) and Case-B(gpio-mode=0).
$ sudo busybox devmem 0x02434040
If you want to use this pin as PWM output, you should remove it from gpio-output-high in gpio dtsi.
We recommend using pinmux spreadsheet to configure for your use case.
I’m curious why it would cause boot logo missing issue.
Please share the full serial console log at this moment. (Case-A)
謝謝你提供的方式,
先確認可以輸出pwm狀態下0x02434040位置數植
“TEGRA234_MAIN_GPIO(H, 0)” 無須從 bootloader\tegra234-mb1-bct-gpio-p3767-dp-a03.dtsi 的gpio-output-high 中刪除,開機也可以看到logo及選單
進入OS之後下busybox devmem 0x02434040 32 0x00000409
這樣pwm就會有輸出
修 pwm_bl driver 直接對0x02434040 mem 位置寫入0x00000409,pwm 就能控制。
有疑問為何無法經kernel 的dts 來作相關的設定及變更pin 參數??
感謝你的協助
Please note that pinmux/gpio dtsi are loaded in early boot(MB1) rather than kernel.
If you want to configure pinmux in kernel during boot, it should be handled by pinctrl-tegra driver.
Please try to create an overlay device tree as following:
fragment@0 {
target = <0xffffffff>;
__overlay__ {
pinctrl-names = "default";
pinctrl-0 = <0x01>;
exp-header-pinmux {
phandle = <0x01>;
hdr40-pin33 {
nvidia,gpio-mode = <0x01>;
nvidia,pins = "soc_gpio21_ph0";
nvidia,function = "gp";
nvidia,tristate = <0x00>;
nvidia,enable-input = <0x00>;
};
};
};
};
If you have the devkit, you can also use jetson-io tool to configure them.