One thing I do not understand myself Mark. Is how these drivers get loaded from a device tree file. It could be possible that your drivers can somehow be "hooked" by setting up a proper device tree file, and using the existing sysfs pwm API. How exactly though . . . yeah I have a hard time imaging where to start.
On Mon, Aug 1, 2016 at 1:58 PM, William Hermans <[email protected]> wrote: > http://lxr.free-electrons.com/source/drivers/pwm/sysfs.c > https://www.kernel.org/doc/Documentation/pwm.txt > https://lwn.net/Articles/553755/ > > On Mon, Aug 1, 2016 at 1:50 PM, Mark A. Yoder <[email protected]> > wrote: > >> I have a question about building a kernel driver for my PRU software pwm >> that mimics the hardware pwm sysfs interface. >> *Background:* >> I have a simple kernel driver[1] now working with my PRU based pwd code. >> Once you have the code running on the PRU you can: >> bone$ *insmod pwm.ko channel=1* >> bone$ *cd /sys/kernel/pwm/pwm1* >> bone$ *ls* >> *duty_cycle enable period* >> bone$ *echo 2000 > period* >> bone$ *echo 1000 > duty_cycle* >> >> Now you have a pwm signal on channel 1 with a period of 2000ns and an on >> time of 1000 ns. >> >> The hardware pwms appear in /sys/class/pwm. You can use them via: >> bone$ *cd /sys/class/pwm/pwmchip0* >> bone$ *echo 0 > export* >> bone$ *cd pwm0* >> bone$ *echo 2000 > period* >> bone$ *echo 1000 > duty_cycle* >> >> *The question:* >> How do I build a kernel module so my software pwms will appear along with >> the hardware pwms? That is, I want my software pwms to appear as >> *pwmchipX* and then you could: >> bone$ *cd /sys/class/pwm/pwmchipX* >> bone$ *echo 0 > export* >> bone$ *cd pwm0* >> bone$ *echo 2000 > period* >> bone$ *echo 1000 > duty_cycle* >> To run the PRU pwms. >> >> Does anyone have pointers to kernel tutorials to do this? >> >> Thanks... >> >> --Mark >> [1] >> https://github.com/MarkAYoder/BeagleBoard-exercises/tree/master/pru/examples/pwm/kernel >> >> -- >> For more options, visit http://beagleboard.org/discuss >> --- >> You received this message because you are subscribed to the Google Groups >> "BeagleBoard" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/beagleboard/b8ef1af3-914f-48cd-b555-22b47dee072f%40googlegroups.com >> <https://groups.google.com/d/msgid/beagleboard/b8ef1af3-914f-48cd-b555-22b47dee072f%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> For more options, visit https://groups.google.com/d/optout. >> > > -- For more options, visit http://beagleboard.org/discuss --- You received this message because you are subscribed to the Google Groups "BeagleBoard" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/beagleboard/CALHSORqkJxSMBczwtwQp%3DfCXnrDgJbygfkTWO2qhOO4pn7zmWQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
