]> git.proxmox.com Git - mirror_ubuntu-eoan-kernel.git/commit - include/asm-generic/io.h
asm-generic/io.h: Implement generic {read,write}s*()
authorThierry Reding <treding@nvidia.com>
Fri, 4 Jul 2014 11:07:57 +0000 (13:07 +0200)
committerThierry Reding <treding@nvidia.com>
Mon, 10 Nov 2014 14:59:22 +0000 (15:59 +0100)
commit9ab3a7a0d2b417773e8e8a880fc3a69f7fc1f57a
tree2be088f766848130e1a6f38d8ba7ef4c9486df81
parent9216efafc52ff99e9351ef60de5fcafc2bc8adb6
asm-generic/io.h: Implement generic {read,write}s*()

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: Thierry Reding <treding@nvidia.com>
include/asm-generic/io.h