template <typename Config, IoRegisterType IoType>

class BasicIoProvider

The IoProvider is a template class parameterized by UartDriver::config_type,

i.e. the zbi_dcfg_*_t type for the ZBI item's format. This class is responsible

for supplying pointers to be passed to hwreg types' ReadFrom and WriteTo.

The

```

IoProvider(UartDriver::config_type, uint16_t pio_size, volatile void* base)

```

constructor initializes the object with the provided virtual base address

(in the case of MMIO), while the constructor that omits the address

initializes things for PIO or identity-mapped MMIO. Then IoProvider::io()

is called to yield the pointer to pass to hwreg calls.