Russell King wrote:
I would like to return to the port type vs. iotype stuff once again.
From what you wrote I seem to understand that the iotype is not just
a method of accessing device registers, but also the primary means of
discrimination between different h/w implementations, and hence every
code to support a nonstandard device must define an iotype of its own,
even though one of the existing iotypes would work just fine?
iotype is all about the access method used to access the registers of
the device, be it by byte or word, and it also takes account of any
variance in the addressing of the registers.
It does not refer to features or bugs in any particular implementation.
Well, the introduction of the UPIO_TSI case seems to contradict this --
it's exactly about the bugs in the particular UART implementation (otherwise
well described by UPIO_MEM). Its only function was to mask 2 hardware issues.
And the UUE bit workaround seems like an abuse to me. The driver could just
skip the UUE test altogether based on iotype == UPIO_TSI (or at least not to
ignore writes with UUE set completely like it does but just mask off UUE bit).
With no provision to pass the implicit UART type for platform devices (and
skip the autoconfiguation), the introduction of UPIO_TSI seems again the
necessary evil. Otherwise, we could have this handled with a distinct TSI UART