Handling Regmap initialization
As we said earlier, the Regmap API supports SPI, I2C, and memory-mapped register access. Their respective support can be enabled in the kernel thanks to the CONFIG_REGMAP_SPI
, CONFIG_REGMAP_I2C
, and CONFIG_REGMAP_MMIO
kernel configuration options. It can go far beyond that and managing IRQs as well, but this is out of the scope of this book. Depending on the memory access method you need to support in the driver, you will have to call either devm_regmap_init_i2c()
, devm_regmap_init_spi()
, or devm_ regmap_init_mmio()
in the probe function. To write generic drivers, Regmap is the best choice you can make.
The Regmap API is generic and homogenous, and initialization only changes between bus types. Other functions are the same. It is a good practice to always initialize the register map in the probe function, and you must always fill the regmap_config
elements prior to initializing the register map using one of the following APIs:
struct regmap *devm_regmap_init_spi...