I'm trying to access the pwm sysfs on my vocore2. In the default image, there is no pwm sysfs interface. However, I managed to configure support for it through kernel config and building my own image:
- Code: Select all
diff --git a/target/linux/ramips/mt7628/config-3.18 b/target/linux/ramips/mt7628/config-3.18
index aca70ca..ef52bac 100644
--- a/target/linux/ramips/mt7628/config-3.18
+++ b/target/linux/ramips/mt7628/config-3.18
@@ -159,6 +159,15 @@ CONFIG_PHYLIB=y
CONFIG_PHY_RALINK_USB=y
CONFIG_PINCTRL=y
CONFIG_PINCTRL_RT2880=y
+#### velo
+## taken from target/linux/ramips/mt7688/config-3.18
+
+CONFIG_PWM=y
+# CONFIG_PWM_FSL_FTM is not set
+CONFIG_PWM_MEDIATEK=y
+CONFIG_PWM_SYSFS=y
+
+#### konrad
# CONFIG_PINCTRL_SINGLE is not set
# CONFIG_PREEMPT_RCU is not set
CONFIG_RALINK=y
with this image, there is a pwm node in /sys/class/pwm. But it is missing all interfaces.
- Code: Select all
root@vocore2:/sys/class/pwm# ls -alh
drwxr-xr-x 2 root root 0 Jan 1 1970 .
drwxr-xr-x 27 root root 0 Jan 1 1970 ..
I have no clue what to do from here. But I have a couple of observations, that may give hints:
1) with my custom image a lot of GPIOs are exported by default:
- Code: Select all
root@vocore2:/sys/class/gpio# ls
export gpio20 gpio37 gpio39 gpio41 gpiochip0 gpiochip64
gpio19 gpio21 gpio38 gpio40 gpio42 gpiochip32 unexport
2) in dmesg there is a lot of chatter from pinctrl:
- Code: Select all
[ 0.070000] pinctrl core: initialized pinctrl subsystem
[ 0.080000] NET: Registered protocol family 16
[ 0.090000] rt2880-pinmux pinctrl: try to register 47 pins ...
[ 0.090000] pinctrl core: registered pin 0 (io0) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 1 (io1) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 2 (io2) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 3 (io3) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 4 (io4) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 5 (io5) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 6 (io6) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 7 (io7) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 8 (io8) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 9 (io9) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 10 (io10) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 11 (io11) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 12 (io12) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 13 (io13) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 14 (io14) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 15 (io15) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 16 (io16) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 17 (io17) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 18 (io18) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 19 (io19) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 20 (io20) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 21 (io21) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 22 (io22) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 23 (io23) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 24 (io24) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 25 (io25) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 26 (io26) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 27 (io27) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 28 (io28) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 29 (io29) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 30 (io30) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 31 (io31) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 32 (io32) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 33 (io33) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 34 (io34) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 35 (io35) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 36 (io36) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 37 (io37) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 38 (io38) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 39 (io39) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 40 (io40) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 41 (io41) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 42 (io42) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 43 (io43) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 44 (io44) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 45 (io45) on rt2880-pinmux
[ 0.090000] pinctrl core: registered pin 46 (io46) on rt2880-pinmux
[ 0.090000] pinctrl core: add 14 pinmux maps
[ 0.090000] rt2880-pinmux pinctrl: found group selector 14 for gpio
[ 0.090000] rt2880-pinmux pinctrl: found group selector 4 for i2c
[ 0.090000] rt2880-pinmux pinctrl: found group selector 11 for i2s
[ 0.090000] rt2880-pinmux pinctrl: found group selector 0 for pwm1
[ 0.090000] rt2880-pinmux pinctrl: found group selector 2 for uart2
[ 0.090000] rt2880-pinmux pinctrl: found group selector 9 for sdmode
[ 0.090000] rt2880-pinmux pinctrl: found group selector 7 for wdt
[ 0.090000] rt2880-pinmux pinctrl: found group selector 5 for refclk
[ 0.090000] rt2880-pinmux pinctrl: found group selector 27 for agpio
[ 0.090000] rt2880-pinmux pinctrl: found group selector 20 for p4led_an
[ 0.090000] rt2880-pinmux pinctrl: found group selector 19 for p3led_an
[ 0.090000] rt2880-pinmux pinctrl: found group selector 18 for p2led_an
[ 0.090000] rt2880-pinmux pinctrl: found group selector 17 for p1led_an
[ 0.090000] rt2880-pinmux pinctrl: found group selector 16 for p0led_an
[ 0.090000] rt2880-pinmux pinctrl: request pin 11 (io11) for pinctrl
[ 0.090000] rt2880-pinmux pinctrl: request pin 4 (io4) for pinctrl
[ 0.090000] rt2880-pinmux pinctrl: request pin 5 (io5) for pinctrl
[ 0.090000] rt2880-pinmux pinctrl: request pin 0 (io0) for pinctrl
[ 0.090000] rt2880-pinmux pinctrl: request pin 1 (io1) for pinctrl
[ 0.090000] rt2880-pinmux pinctrl: request pin 2 (io2) for pinctrl
[ 0.090000] rt2880-pinmux pinctrl: request pin 3 (io3) for pinctrl
[ 0.090000] rt2880-pinmux pinctrl: request pin 19 (io19) for pinctrl
[ 0.090000] rt2880-pinmux pinctrl: request pin 20 (io20) for pinctrl
[ 0.090000] rt2880-pinmux pinctrl: request pin 21 (io21) for pinctrl
[ 0.090000] rt2880-pinmux pinctrl: request pin 22 (io22) for pinctrl
[ 0.090000] rt2880-pinmux pinctrl: request pin 23 (io23) for pinctrl
[ 0.090000] rt2880-pinmux pinctrl: request pin 24 (io24) for pinctrl
[ 0.090000] rt2880-pinmux pinctrl: request pin 25 (io25) for pinctrl
[ 0.090000] rt2880-pinmux pinctrl: request pin 26 (io26) for pinctrl
[ 0.090000] rt2880-pinmux pinctrl: request pin 27 (io27) for pinctrl
[ 0.090000] rt2880-pinmux pinctrl: request pin 28 (io28) for pinctrl
[ 0.090000] rt2880-pinmux pinctrl: request pin 29 (io29) for pinctrl
[ 0.090000] rt2880-pinmux pinctrl: request pin 38 (io38) for pinctrl
[ 0.090000] rt2880-pinmux pinctrl: request pin 36 (io36) for pinctrl
[ 0.090000] rt2880-pinmux pinctrl: request pin 39 (io39) for pinctrl
[ 0.090000] rt2880-pinmux pinctrl: request pin 40 (io40) for pinctrl
[ 0.090000] rt2880-pinmux pinctrl: request pin 41 (io41) for pinctrl
[ 0.090000] rt2880-pinmux pinctrl: request pin 42 (io42) for pinctrl
[ 0.090000] rt2880-pinmux pinctrl: request pin 43 (io43) for pinctrl
[ 0.090000] rt2880-pinmux pinctrl: failed to lookup the sleep state
[ 0.100000] mt7621_gpio 10000600.gpio: registering 32 gpios
[ 0.110000] mt7621_gpio 10000600.gpio: registering 32 gpios
[ 0.110000] mt7621_gpio 10000600.gpio: registering 32 gpios
I have a hunch that I may be only missing an adjustment to pinctrl, but I have no idea what to do or what I may be missing. Any hints?
Any help is greatly appreciated!
Thanks, velo