summaryrefslogtreecommitdiffstats
path: root/include/linux/regmap.h
diff options
context:
space:
mode:
authorKuninori Morimoto2013-09-02 05:30:50 +0200
committerMark Brown2013-09-17 14:46:57 +0200
commita0102375ee82db1e08324b1a21484854cf2c1677 (patch)
treec24bd05318c5bb9211c0b38867dfa9d0eb99bd8d /include/linux/regmap.h
parentregmap: add regmap_field_update_bits() (diff)
downloadkernel-qcow2-linux-a0102375ee82db1e08324b1a21484854cf2c1677.tar.gz
kernel-qcow2-linux-a0102375ee82db1e08324b1a21484854cf2c1677.tar.xz
kernel-qcow2-linux-a0102375ee82db1e08324b1a21484854cf2c1677.zip
regmap: Add regmap_fields APIs
Current Linux kernel is supporting regmap_field method and it is very useful feature. It needs one regmap_filed for one register access. OTOH, there is multi port device which has many same registers in the market. The difference for each register access is only its address offset. Current API needs many regmap_field for such device, but it is not good. This patch adds new regmap_fileds API which can care about multi port/offset access via regmap. Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Mark Brown <broonie@linaro.org>
Diffstat (limited to 'include/linux/regmap.h')
-rw-r--r--include/linux/regmap.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/include/linux/regmap.h b/include/linux/regmap.h
index 4c8c20a7a75d..a12bea07f79e 100644
--- a/include/linux/regmap.h
+++ b/include/linux/regmap.h
@@ -425,11 +425,15 @@ bool regmap_reg_in_ranges(unsigned int reg,
* @reg: Offset of the register within the regmap bank
* @lsb: lsb of the register field.
* @reg: msb of the register field.
+ * @id_size: port size if it has some ports
+ * @id_offset: address offset for each ports
*/
struct reg_field {
unsigned int reg;
unsigned int lsb;
unsigned int msb;
+ unsigned int id_size;
+ unsigned int id_offset;
};
#define REG_FIELD(_reg, _lsb, _msb) { \
@@ -451,6 +455,13 @@ int regmap_field_write(struct regmap_field *field, unsigned int val);
int regmap_field_update_bits(struct regmap_field *field,
unsigned int mask, unsigned int val);
+int regmap_fields_write(struct regmap_field *field, unsigned int id,
+ unsigned int val);
+int regmap_fields_read(struct regmap_field *field, unsigned int id,
+ unsigned int *val);
+int regmap_fields_update_bits(struct regmap_field *field, unsigned int id,
+ unsigned int mask, unsigned int val);
+
/**
* Description of an IRQ for the generic regmap irq_chip.
*