I'm trying to decipher how the Adafruit_BBIO Python library does PWM, in preparation for supporting kernels 4.1+. The library currently loads a cape file of the name "bone_pwm_P9_21" or whatever pin number. I've looked in the /lib/firmware folder and there is no such .dtbo file.
The elinux wiki page on the topic (http://elinux.org/Capemgr) says that the capemgr checks in arch/arm/boot/dts/am335x-bone-common.dtsi for a corresponding .dtbo file, or /lib/firmware. My question is: how can I read that .dtsi file to know where it's getting the corresponding .dtbo?
I’ll propose a different approach. First, use universal IO to mux your pins for PWM. Then just use the PWM sysfs file system to deal with the rest.
So, I have not done this personally yet, but I know it’s possible, as I’ve seen blog posts on it in the past. The universal io part I would probably need help from Charles as I’ve not that done with universal io either. But I suspect it’s very simple.
If you have further question on the subject I can help guide you. As I’d really lie to see people getting away from Adafruits BBIO whihc seems to be abandon ware now days
Here is one such good link that even discusses using universal io. https://briancode.wordpress.com/2015/01/06/working-with-pwm-on-a-beaglebone-black/
Just be aware that this blog post was written with kernel 3.8.x in mind. Some file paths have changed since then but is something that can be accounted for.