|
@@ -1716,6 +1716,38 @@ int regmap_field_update_bits_base(struct regmap_field *field,
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(regmap_field_update_bits_base);
|
|
|
|
|
|
+/**
|
|
|
+ * regmap_fields_update_bits_base():
|
|
|
+ * Perform a read/modify/write cycle on the register field
|
|
|
+ * with change, async, force option
|
|
|
+ *
|
|
|
+ * @field: Register field to write to
|
|
|
+ * @id: port ID
|
|
|
+ * @mask: Bitmask to change
|
|
|
+ * @val: Value to be written
|
|
|
+ * @change: Boolean indicating if a write was done
|
|
|
+ * @async: Boolean indicating asynchronously
|
|
|
+ * @force: Boolean indicating use force update
|
|
|
+ *
|
|
|
+ * A value of zero will be returned on success, a negative errno will
|
|
|
+ * be returned in error cases.
|
|
|
+ */
|
|
|
+int regmap_fields_update_bits_base(struct regmap_field *field, unsigned int id,
|
|
|
+ unsigned int mask, unsigned int val,
|
|
|
+ bool *change, bool async, bool force)
|
|
|
+{
|
|
|
+ if (id >= field->id_size)
|
|
|
+ return -EINVAL;
|
|
|
+
|
|
|
+ mask = (mask << field->shift) & field->mask;
|
|
|
+
|
|
|
+ return regmap_update_bits_base(field->regmap,
|
|
|
+ field->reg + (field->id_offset * id),
|
|
|
+ mask, val << field->shift,
|
|
|
+ change, async, force);
|
|
|
+}
|
|
|
+EXPORT_SYMBOL_GPL(regmap_fields_update_bits_base);
|
|
|
+
|
|
|
/**
|
|
|
* regmap_fields_write(): Write a value to a single register field with port ID
|
|
|
*
|