On Wed, Sep 21, 2022 at 09:10:54AM +0200, Alexander Stein wrote: > Having no cache defaults is not a mistake, especially for devices > which do have some kind of strapping values which can't be provided > statically. For this case a warning is the wrong log level, the initial > cache values do need to be read form hardware. Reduce level to info. > if (!map->reg_defaults_raw) { > bool cache_bypass = map->cache_bypass; > - dev_warn(map->dev, "No cache defaults, reading back from HW\n"); > + dev_info(map->dev, "No cache defaults, reading back from HW\n"); This is a warning which is only generated in the case where we have a non-sparse cache where we won't read from the hardware in the csae of missing values and will instead just substitute zero as a default value. It's warning that we might end up changing values for the device unexpectedly in the case of a read/modify/write cycle that doesn't actually check what the device currently has set. In this case if you can't use a rbtree cache I would recommend bootstrapping by initially reading without a cache first to get the default values, then replacing the regmap with one that uses the defaults you just read. You'll need some care over suspend/resume though.