4 # I/O Ports versus Memory Mapped Devices
6 * Separate I/O space in x86 architecture
7 * Other architectures emulate this I/O space access
11 * Different drivers must not conflict when using device resources, like I/O
13 * They must request these resources and release them
18 * request\\_region(port, num, name)
19 * release\\_region(port, num)
35 # Memory Region Allocation
37 * request\\_mem\\_region(start, len, name)
38 * release\\_mem\\_region(start, len)
42 * ioremap(phys\\_addr, size)
43 * iounmap(virt\\_addr)
51 * iowrite16(val, addr)
52 * iowrite32(val, addr)
53 * memset\\_io(addr, val, cnt)
54 * memcpy\\_fromio(dst, src, cnt)
55 * memcpy\\_toio(dst, src, cnt)
57 # Mapping I/O Ports to Memory
59 * ioport\\_map(port, cnt)
60 * ioport\\_unmap(addr)