Here is my tdx-info output
root@zepto-gmr-imx8-26:~# ./tdx-info
Software summary
------------------------------------------------------------
Bootloader: U-Boot
Kernel version: 5.4.193-5.7.4-devel+git.61d265bd311b #1 SMP PREEMPT Tue Nov 14 12:41:56 UTC 2023
Kernel command line: root=PARTUUID=f5773f52-02 ro rootwait video=imxdpufb5:off video=imxdpufb6:off video=imxdpufb7:off
Distro name: NAME="TDX Wayland with XWayland"
Distro version: VERSION_ID=5.7.4-devel-20251124203524-build.0
Distro variant: -
Hostname: zepto-gmr-imx8-26
------------------------------------------------------------
Hardware info
------------------------------------------------------------
HW model: Toradex Colibri iMX8QXP on Colibri Evaluation Board V3
Toradex version: 0038 V1.0D
Serial number: 06800820
Processor arch: aarch64
Available block devices:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
mmcblk0 179:0 0 7.1G 0 disk
mmcblk0p1 179:1 0 48M 0 part /boot
mmcblk0p2 179:2 0 7G 0 part /
mmcblk0boot0 179:32 0 16M 1 disk
mmcblk0boot1 179:64 0 16M 1 disk
------------------------------------------------------------
On the Toradex Colibri IMX8X I am trying to enabled PWM for pins 63 (PWM_H - ADMA.FTM.CH2, Column heater 1), 61 (PWM3/PWM_E - LSIO.PWM3.OUT, Column heater 2) and 67 (PWM2/PWM_D - LSIO.PWM2.OUT, sample heater). I got pins 67 and 61 working just find but I am having some issues with pin 63. below I have some code snippets showing the device tree changes I am trying to make as well as the output on the SOM. Let me know if you need more information or it looks like I am doing things incorrectly. Thanks for the help!
I made sure that CONFIG_PWM_FSL_FTM is enabled
$ root@zepto-gmr-imx8-26:~# zcat /proc/config.gz | grep CONFIG_PWM_FSL_FTM $ CONFIG_PWM_FSL_FTM=y
Here are my relevant device tree changes
imx8x-colibri.dtsi
…
&iomuxc {
colibri-imx8qxp {
…
// /* Colibri optional CAN on PS2 /
// pinctrl_flexcan2: flexcan1grp {
// fsl,pins = <
// IMX8QXP_FLEXCAN1_TX_ADMA_FLEXCAN1_TX 0x21 / SODIMM 55 /
// IMX8QXP_FLEXCAN1_RX_ADMA_FLEXCAN1_RX 0x21 / SODIMM 63 /
// >;
// };
…
/ PWM Pin for Sample Thermistor Heater (PWMD) /
pinctrl_pwm_d: pwmd {
fsl,pins = <
IMX8QXP_UART1_RTS_B_LSIO_PWM2_OUT 0x60 / SODIMM 67 */
>;
};
/* PWM Pin for Column 2 Thermistor Heater (PWME) */
pinctrl_pwm_e: pwme {
fsl,pins = <
IMX8QXP_UART1_CTS_B_LSIO_PWM3_OUT 0x60 /* SODIMM 61 */
>;
};
/* PWM Pin for Column 1 Thermistor Heater (PWMH) */
pinctrl_pwm_h: pwmh {
fsl,pins = <
IMX8QXP_FLEXCAN1_RX_ADMA_FTM_CH2 0x60 /* SODIMM 63 */
>;
};
}
}
…
imx8x-colibri-eval-v3.dtsi
…
/* Enable PWM for the Sample thermister */
&pwm2 {
pinctrl-names = “default”;
pinctrl-0 = <&pinctrl_pwm_d>;
status = “okay”;
};
&adma_pwm {
pinctrl-names = “default”;
pinctrl-0 = <&pinctrl_pwm_h>; /* Use PWM_H instead of PWM_A */
status = “okay”;
};
/* Enable PWM for the Column 2 heater */
&pwm3 {
pinctrl-names = “default”;
pinctrl-0 = <&pinctrl_pwm_e>;
status = “okay”;
};
/ {
leds {
compatible = “pwm-leds”;
/*
* Column 1 Heater (PWM_H / &pwm_adma)
* Maps to SODIMM 63
*/
col1_heater {
label = "col1_heater";
pwms = <&adma_pwm 0 1000000 0>; /* 1kHz, normal polarity */
max-brightness = <255>;
default-brightness-level = <0>; /* Use this for default-off */
};
/*
* Sample Heater (PWM_D / &pwm2)
* Maps to SODIMM 67
*/
sample_heater {
label = "sample_heater";
pwms = <&pwm2 0 1000000 0>; /* 1kHz, normal polarity */
max-brightness = <255>;
default-brightness-level = <0>; /* Use this for default-off */
};
/*
* Column 2 Heater (PWM_E / &pwm3)
* Maps to SODIMM 61
*/
col2_heater {
label = "col2_heater";
pwms = <&pwm3 0 1000000 0>; /* 1kHz, normal polarity */
max-brightness = <255>;
default-brightness-level = <0>; /* Use this for default-off */
};
};
};
&backlight {
status = “disabled”;
/delete-property/ pwms; /* Remove the PWM reference entirely */
};
&flexcan1 {
status = “disabled”;
/delete-property/ pinctrl-names;
/delete-property/ pinctrl-0;
/delete-property/ xceiver-supply;
};
On the SOM it looks like each heater is being set properly but I don’t get any pwm signal on pin 63 (I do get pwm signals on pins 61 and 67)
root@zepto-gmr-imx8-26:~# cat /sys/kernel/debug/pwm
platform/5d030000.pwm, 1 PWM devicepwm-0 (col2_heater ): requested period: 1000000 ns duty: 0 ns polarity: normal
platform/5d020000.pwm, 1 PWM devicepwm-0 (sample_heater ): requested period: 1000000 ns duty: 0 ns polarity: normal
platform/5a190000.pwm, 1 PWM devicepwm-0 (col1_heater ): requested period: 1000000 ns duty: 0 ns polarity: normal
root@zepto-gmr-imx8-26:~# echo 255 > /sys/class/leds/col1_heater/brightness
root@zepto-gmr-imx8-26:~# echo 255 > /sys/class/leds/col2_heater/brightness
root@zepto-gmr-imx8-26:~# echo 255 > /sys/class/leds/sample_heater/brightness
root@zepto-gmr-imx8-26:~# cat /sys/kernel/debug/pwm
platform/5d030000.pwm, 1 PWM devicepwm-0 (col2_heater ): requested enabled period: 1000000 ns duty: 1000000 ns polarity: normal
platform/5d020000.pwm, 1 PWM devicepwm-0 (sample_heater ): requested enabled period: 1000000 ns duty: 1000000 ns polarity: normal
platform/5a190000.pwm, 1 PWM devicepwm-0 (col1_heater ): requested enabled period: 1000000 ns duty: 1000000 ns polarity: normal
root@zepto-gmr-imx8-26:~# echo 0 > /sys/class/leds/sample_heater/brightness
root@zepto-gmr-imx8-26:~# echo 0 > /sys/class/leds/col2_heater/brightness
root@zepto-gmr-imx8-26:~# echo 0 > /sys/class/leds/col1_heater/brightness
root@zepto-gmr-imx8-26:~# cat /sys/kernel/debug/pwm
platform/5d030000.pwm, 1 PWM devicepwm-0 (col2_heater ): requested period: 1000000 ns duty: 0 ns polarity: normal
platform/5d020000.pwm, 1 PWM devicepwm-0 (sample_heater ): requested period: 1000000 ns duty: 0 ns polarity: normal
platform/5a190000.pwm, 1 PWM devicepwm-0 (col1_heater ): requested period: 1000000 ns duty: 0 ns polarity: normal
