A few more or less miscellaneous points remain on PIO that you as a driver author should take note of:
- Just like MMIO provides the repeating I/O routines (recall the ioread|iowrite[8|16|32|64]_rep() helpers), PMIO (or PIO) provides somewhat similar repeating functionality for those cases where you'd like to read or write the same I/O port multiple times. These are the so-called string versions of the regular port helper routines; they have an s in their name to remind you of this. The kernel source contains a comment that neatly sums this up:
// include/asm-generic/io.h
/*
* {in,out}s{b,w,l}{,_p}() are variants of the above that repeatedly access a
* single I/O port multiple times.
*/
we don't show the complete code below, just the 'signature' as such
void insb(unsigned long addr, void *buffer, unsigned int count);
void insw(unsigned long addr, void *buffer, unsigned int count);
void insl(unsigned long addr,...