• Thierry Reding's avatar
    asm-generic/io.h: Implement generic {read,write}s*() · 9ab3a7a0
    Thierry Reding authored
    Currently driver writers need to use io{read,write}{8,16,32}_rep() when
    accessing FIFO registers portably. This is bad for two reasons: it is
    inconsistent with how other registers are accessed using the standard
    {read,write}{b,w,l}() functions, which can lead to confusion. On some
    architectures the io{read,write}*() functions also need to perform some
    extra checks to determine whether an address is memory-mapped or refers
    to I/O space. Drivers which can be expected to never use I/O can safely
    use the {read,write}s{b,w,l,q}(), just like they use their non-string
    variants and there's no need for these extra checks.
    
    This patch implements generic versions of readsb(), readsw(), readsl(),
    readsq(), writesb(), writesw(), writesl() and writesq(). Variants of
    these string functions for I/O accesses (ins*() and outs*() as well as
    ioread*_rep() and iowrite*_rep()) are now implemented in terms of the
    new functions.
    
    Going forward, {read,write}{,s}{b,w,l,q}() should be used consistently
    by drivers for devices that will only ever be memory-mapped and hence
    don't need to access I/O space, whereas io{read,write}{8,16,32}_rep()
    should be used by drivers for devices that can be either memory-mapped
    or I/O-mapped.
    Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
    9ab3a7a0
io.h 16.3 KB