1. Send sysevents ( 0-63 ) from userspace to PRU throughr driver.
2. Configure sysevent->channel and channel->host map though firmware resource table. Very easy to use method.
3. Expose driver interrupts ( ie EVTOUT from PRU->ARM ) for userspace.
4. Interrupt handling in driver, while user is notified about interrupt. User can wait for specified interrupt from PRU (indefinitely or timeout).
5. User can give callback function along with wait. ( Ex. pruss_wait_for_interrupt ( EVTOUT1, mycallback ). mycallback is written by user
It receives the EVTOUT number as argument if the interrupt was successfully received.
1. poll function was posing trouble. It requires a dummy read on the file descriptor before polling to work correctly.
2.Considerable amount of time goes in to find the best possible way to implement something which agrees to driver coding practices. Lots of resources scattered over internet. Collecting all important links along the way. Will write a blog post on issues faced and how they were resolved.
3. Some time to figure out resource tables of PRU firmware.
1. Complete work on DDR memory circular buffer.
2. Allow for custom modules to plug into remoteproc (so that advanced PRU users can use low level functions provided by pruss_remoteproc to utilize PRU more effectively as compared to user land implementation. This might take some time.