Hi Lars, Mark
The reason why we factored out the dmaengine DMA stuff is because there is a standard API that hides the implementation details and is supposed to behave the same for each system. For PIO you do not have such a abstraction layer that hides the details, so I'm not sure how similar PIO between different platforms will actually be.
I keep thinking that there ought to be *some* commonality between the platforms that use FIQs if only in the timer stuff at least. Part of the reason that doesn't get factored out is that it's normally just a temporary bodge until DMA is working of course, though Qualcomm do it because their DMA for the DSP doesn't fit well with dmaengine and the i.MX AC'97 needs it since the hardware doesn't fully understand AC'97.
Yes, there is no pioengine (never created :) I'm not sure detail of non-Renesas platform driver whether it is supporting PIO. But at least my driver (= FSI/rcar) has PIO support, and I think these can share same method/function. So, I create pcm_pio.c under ${LINUX}/sound/soc/sh for Renesas chip with pcm_dmaengine similar style (as much as possible). And, use common ${LINUX}/sound/core/pcm_dmaengine.c for DMA. How about this ?