On Sat, Aug 12, 2023 at 06:13:59AM +1000, John Watts wrote:
First, I split up channel-dins and channel-slots. This is mainly because I implemented one first but both of them only make sense together. The registers themselves use a format of a byte per channel with the upper nibble being the din and the lower being the slot. Perhaps this is a better format to copy?
I think this is fine.
Third, channel-slots is available on all sun4i-i2s controllers, but I only have it implemented on the R329 variant for now when there are multiple din pins. I could add support for this on older controllers but there's not really a use case for manual configuration as there's no DIN and I don't have hardware to test it on.
It's fine to leave this for someone who cares about that hardware to implement, might be nice to add a warning if the properties are set but not supported but it's not essential.
Fourth, I don't limit the readable channels to the channels listed. Reading more channels than you have currently results in the controller assuming you want to use TDM, but that's not the case here and you can have strange duplicate channels show up.
It would be better to have constraints which prevent userspace doing the wrong thing here.
Fifth, it might be a good idea to increase the maximum channels from 8 to 16, especially if people are going to be running multiple TDM streams on one controller.
If there's no reason not to...