INIT_LIST_HEAD(&map->async_free);
        init_waitqueue_head(&map->async_waitq);
 
-       if (config->read_flag_mask || config->write_flag_mask) {
+       if (config->read_flag_mask ||
+           config->write_flag_mask ||
+           config->zero_flag_mask) {
                map->read_flag_mask = config->read_flag_mask;
                map->write_flag_mask = config->write_flag_mask;
        } else if (bus) {
 
  *                  a read.
  * @write_flag_mask: Mask to be set in the top bytes of the register when doing
  *                   a write. If both read_flag_mask and write_flag_mask are
- *                   empty the regmap_bus default masks are used.
+ *                   empty and zero_flag_mask is not set the regmap_bus default
+ *                   masks are used.
+ * @zero_flag_mask: If set, read_flag_mask and write_flag_mask are used even
+ *                   if they are both empty.
  * @use_single_rw: If set, converts the bulk read and write operations into
  *                 a series of single read and write operations. This is useful
  *                 for device that does not support bulk read and write.
 
        unsigned long read_flag_mask;
        unsigned long write_flag_mask;
+       bool zero_flag_mask;
 
        bool use_single_rw;
        bool can_multi_write;