Tool/software: Linux
PWM ecap0 enable on am335x:
DTS file looks like below:
&epwmss0 {
status = "okay";
ecap0: ecap@48300100 {
status = "disabled";
pinctrl-names = "default";
compatible = "ti,am33xx-ecap";
#pwm-cells = <3>;
reg = <0x48300100 0x80>;
interrupts = <31>;
interrupt-names = "ecap0";
ti,hwmods = "ecap0";
pinctrl-0 = <&ecap0_pins>;
};
ehrpwm0: pwm@48300200 {
status = "okay";
ti,hwmods = "ehrpwm0";
pinctrl-0 = <&ehrpwm0_pins>;
};
};
ehrpwm0_pins: backlight_pins {
pinctrl-single,pins = <
AM33XX_IOPAD(0x964, MUX_MODE0)
>;
};
ecap0_pins: backlight_ecap0_pins{
pinctrl-single,pins = <
// AM33XX_IOPAD(0x964, MUX_MODE0)
>;
};
Used guide lines link:
http://processors.wiki.ti.com/index.php/Linux_Core_PWM_User%27s_Guide
In terminal user level:
Request the Device:
root@am335x-evm:~# echo 0 > /sys/class/pwm/pwmchip0/export
Enable/disable the PWM channel
root@am335x-evm:~# echo 1 > /sys/class/pwm/pwmchip0/pwm0/enable
-sh: echo: write error: Invalid argument
if the period is 1 sec , enter
root@am335x-evm:~# echo 1000000000 > /sys /class/pwm/pwmchip0/pwm0/period
[ 190.492234] ehrpwm 48300200.pwm: _od_fail_runtime_resume: FIXME: missing hwmod/omap_dev info
[ 190.501048] Unhandled fault: external abort on non-linefetch (0x1028) at 0xfa300200
[ 190.508758] pgd = da938000
[ 190.511488] [fa300200] *pgd=48211452(bad)
[ 190.515565] Internal error: : 1028 [#1] PREEMPT ARM
[ 190.520475] Modules linked in: bc_example(O) sd_mod usb_storage scsi_mod usb_f_acm u_serial usb_f_ecm musb_dsps musb_hdrc usbcore)
[ 190.582465] CPU: 0 PID: 820 Comm: sh Tainted: G O 4.9.59-ga75d8e9305 #53
[ 190.590341] Hardware name: Generic AM33XX (Flattened Device Tree)
[ 190.596475] task: dc698000 task.stack: dacea000
[ 190.601075] PC is at ehrpwm_pwm_config+0x1a8/0x2e8
[ 190.605907] LR is at __schedule+0x284/0x5d4
[ 190.610126] pc : [<c0407060>] lr : [<c07a3608>] psr: 60010013
[ 190.610126] sp : dacebdd0 ip : dacebcc0 fp : dacebe04
[ 190.621672] r10: fa300200 r9 : dc245d80 r8 : dc245d10
[ 190.626932] r7 : 00001f00 r6 : 00000600 r5 : 00000080 r4 : 05f5e100
[ 190.633500] r3 : 00000000 r2 : 00000001 r1 : 00000000 r0 : ffffffed
[ 190.640074] Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none
[ 190.647255] Control: 10c5387d Table: 9a938019 DAC: 00000051
[ 190.653040] Process sh (pid: 820, stack limit = 0xdacea208)
[ 190.658650] Stack: (0xdacebdd0 to 0xdacec000)
[ 190.663048] bdc0: 00000000 00000000 dacebe0c dacebe38
[ 190.671291] bde0: dc245d80 c0406eb8 dc245da0 00000000 00000000 00000000 dacebe2c dacebe08
[ 190.679532] be00: c0405be0 c0406ec4 00000000 da92038c dc245d80 0000000b 00000000 00000000
[ 190.687774] be20: dacebe64 dacebe30 c0406274 c0405ad4 c0990aa0 3b9aca00 3b9aca00 00000000
[ 190.696015] be40: 00000000 00000000 c040620c 0000000b dacebf78 d71d0a00 dacebe7c dacebe68
[ 190.704257] be60: c04ec960 c0406218 c04ec940 0000000b dacebe94 dacebe80 c0281e4c c04ec94c
[ 190.712498] be80: d71d0d80 0000000b dacebed4 dacebe98 c02815b4 c0281e10 00000000 00000000
[ 190.720739] bea0: c02230d4 d71d0d8c dc571d10 da90a3c0 c02814bc dacebf78 0000000b 00000000
[ 190.728979] bec0: 0000000b 00000000 dacebf44 dacebed8 c02120dc c02814c8 00000000 0000000a
[ 190.737220] bee0: dabdb900 daf65040 0000000a 00000400 00000000 da8e9840 00000000 da8e9840
[ 190.745462] bf00: dacebf2c dacebf10 c0210378 c0214a08 00000001 dabdb900 da8e9840 00000200
[ 190.753703] bf20: 0000000b da90a3c0 000ded10 dacebf78 00000000 0000000b dacebf74 dacebf48
[ 190.761944] bf40: c0212fb0 c02120b4 dacebf74 dacebf58 da90a3c0 da90a3c0 00000000 00000000
[ 190.770185] bf60: 000ded10 0000000b dacebfa4 dacebf78 c0213db0 c0212f10 00000000 00000000