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.

Linux/AM3354: PWM enable error

Part Number: AM3354


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

  • Hi Thejeswarareddy,

    Are you pay attention on the caution about sequence of steps necessary before enabling the module:
    CAUTION
    Before enabling the module, the module needs to be configured using below configuration attributes. Else proper operation is not assured.

    BR
    Tsvetolin Shulev

  • Hi Tsvetolin Shulev, root@am335x-evm:~# echo 1000000000 > /sys/class/pwm/pwmchip0/pwm0/period [ 119.899874] ehrpwm 48300200.pwm: _od_fail_runtime_resume: FIXME: missing hwmod/omap_dev info [ 119.908554] Unhandled fault: external abort on non-linefetch (0x1028) at 0xfa300200 [ 119.916263] pgd = db760000 [ 119.918993] [fa300200] *pgd=48211452(bad) [ 119.923071] Internal error: : 1028 [#1] PREEMPT ARM [ 119.927983] Modules linked in: bc_example(O) usb_f_acm u_serial usb_f_ecm musb_dsps musb_hdrc usbcore phy_am335x phy_am335x_contr) [ 119.987505] CPU: 0 PID: 850 Comm: sh Tainted: G O 4.9.59-ga75d8e9305 #59 [ 119.995382] Hardware name: Generic AM33XX (Flattened Device Tree) [ 120.001516] task: db45ac00 task.stack: db6da000 [ 120.006117] PC is at ehrpwm_pwm_config+0x1a8/0x2e8 [ 120.010952] LR is at __schedule+0x284/0x5d4 [ 120.015172] pc : [] lr : [] psr: 60010013 [ 120.015172] sp : db6dbdd0 ip : db6dbcc0 fp : db6dbe04 [ 120.026716] r10: fa300200 r9 : dc245d80 r8 : dc245d10 [ 120.031977] r7 : 00001f00 r6 : 00000600 r5 : 00000080 r4 : 05f5e100 [ 120.038545] r3 : 00000000 r2 : 00000001 r1 : 00000000 r0 : ffffffed [ 120.045117] Flags: nZCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment none [ 120.052298] Control: 10c5387d Table: 9b760019 DAC: 00000051 [ 120.058083] Process sh (pid: 850, stack limit = 0xdb6da208) [ 120.063691] Stack: (0xdb6dbdd0 to 0xdb6dc000) [ 120.068089] bdc0: 00000000 00000000 db6dbe0c db6dbe38 [ 120.076331] bde0: dc245d80 c0406eb8 dc245da0 00000000 00000000 00000000 db6dbe2c db6dbe08 [ 120.084573] be00: c0405be0 c0406ec4 00000000 db06538c dc245d80 0000000b 00000000 00000000 [ 120.092815] be20: db6dbe64 db6dbe30 c0406274 c0405ad4 c0990aa0 3b9aca00 3b9aca00 00000000 [ 120.101057] be40: 00000000 00000000 c040620c 0000000b db6dbf78 db697e80 db6dbe7c db6dbe68 [ 120.109297] be60: c04ec960 c0406218 c04ec940 0000000b db6dbe94 db6dbe80 c0281e4c c04ec94c [ 120.117538] be80: db1b93c0 0000000b db6dbed4 db6dbe98 c02815b4 c0281e10 00000000 00000000 [ 120.125779] bea0: c02230d4 db1b93cc dc571e10 db102780 c02814bc db6dbf78 0000000b 00000000 [ 120.134019] bec0: 0000000b 00000000 db6dbf44 db6dbed8 c02120dc c02814c8 00000000 0000000a [ 120.142261] bee0: dc034300 db60d040 0000000a 00000400 00000000 dc5e4cc0 00000000 dc5e4cc0 [ 120.150503] bf00: db6dbf2c db6dbf10 c0210378 c0214a08 00000001 dc034300 dc5e4cc0 00000200 [ 120.158744] bf20: 0000000b db102780 000de898 db6dbf78 00000000 0000000b db6dbf74 db6dbf48 [ 120.166986] bf40: c0212fb0 c02120b4 db6dbf74 db6dbf58 db102780 db102780 00000000 00000000 [ 120.175228] bf60: 000de898 0000000b db6dbfa4 db6dbf78 c0213db0 c0212f10 00000000 00000000 [ 120.183470] bf80: 0000000b 000de898 b6e96d58 00000004 c0107e44 db6da000 00000000 db6dbfa8 [ 120.191710] bfa0: c0107c80 c0213d78 0000000b 000de898 00000001 000de898 0000000b 00000000 [ 120.199950] bfc0: 0000000b 000de898 b6e96d58 00000004 00000000 000a85d4 00000001 00000000 [ 120.208191] bfe0: 00000000 bee81a0c b6dfa6c9 b6e36006 00010030 00000001 00000000 00000000 [ 120.216408] Backtrace: [ 120.218916] [] (ehrpwm_pwm_config) from [] (pwm_apply_state+0x118/0x1bc) [ 120.227423] r10:00000000 r9:00000000 r8:00000000 r7:dc245da0 r6:c0406eb8 r5:dc245d80 [ 120.235299] r4:db6dbe38 [ 120.237875] [] (pwm_apply_state) from [] (period_store+0x68/0x88) [ 120.245768] r9:00000000 r8:00000000 r7:0000000b r6:dc245d80 r5:db06538c r4:00000000 [ 120.253590] [] (period_store) from [] (dev_attr_store+0x20/0x2c) [ 120.261388] r7:db697e80 r6:db6dbf78 r5:0000000b r4:c040620c [ 120.267116] [] (dev_attr_store) from [] (sysfs_kf_write+0x48/0x4c) [ 120.275084] r5:0000000b r4:c04ec940 [ 120.278705] [] (sysfs_kf_write) from [] (kernfs_fop_write+0xf8/0x1f8) [ 120.286934] r5:0000000b r4:db1b93c0 [ 120.290554] [] (kernfs_fop_write) from [] (__vfs_write+0x34/0x120) [ 120.298534] r10:00000000 r9:0000000b r8:00000000 r7:0000000b r6:db6dbf78 r5:c02814bc [ 120.306409] r4:db102780 [ 120.308975] [] (__vfs_write) from [] (vfs_write+0xac/0x170) [ 120.316343] r9:0000000b r8:00000000 r7:db6dbf78 r6:000de898 r5:db102780 r4:0000000b [ 120.324145] [] (vfs_write) from [] (SyS_write+0x44/0x98) [ 120.331250] r9:0000000b r8:000de898 r7:00000000 r6:00000000 r5:db102780 r4:db102780 [ 120.339067] [] (SyS_write) from [] (ret_fast_syscall+0x0/0x3c) [ 120.346698] r9:db6da000 r8:c0107e44 r7:00000004 r6:b6e96d58 r5:000de898 r4:0000000b [ 120.354501] Code: e183e50e e6ff707e eb03d67f e598a02c (e1da30b0) [ 120.360642] ---[ end trace 3c402c8fae345aff ]--- After this system is hanging..