aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/regmap.h
diff options
context:
space:
mode:
authorLars-Peter Clausen <lars@metafoo.de>2011-09-05 14:46:32 -0400
committerMark Brown <broonie@opensource.wolfsonmicro.com>2011-09-05 17:55:57 -0400
commit6f306441e97f8f9d27c43a536360fe221f675a71 (patch)
tree2b7b74cef26e9e5e4de46dad0862998ac896993f /include/linux/regmap.h
parentd813ae9a105219255c07d382059de831186c10d0 (diff)
regmap: Add support for device specific write and read flag masks.
Some buses like SPI have no standard notation of read or write operations. The general scheme here is to set or clear specific bits in the register address to indicate whether the operation is a read or write. We already support having a read flag mask per bus, but as there is no standard the bits which need to be set or cleared differ between devices and vendors, thus we need a mechanism to specify them per device. This patch adds two new entries to the regmap_config struct, read_flag_mask and write_flag_mask. These will be or'ed onto the top byte when doing a read or write operation. If both masks are empty the device will fallback to the regmap_bus masks. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Diffstat (limited to 'include/linux/regmap.h')
-rw-r--r--include/linux/regmap.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/include/linux/regmap.h b/include/linux/regmap.h
index 9438a89e1573..18d4afaac166 100644
--- a/include/linux/regmap.h
+++ b/include/linux/regmap.h
@@ -53,6 +53,12 @@ struct reg_default {
53 * @reg_defaults: Power on reset values for registers (for use with 53 * @reg_defaults: Power on reset values for registers (for use with
54 * register cache support). 54 * register cache support).
55 * @num_reg_defaults: Number of elements in reg_defaults. 55 * @num_reg_defaults: Number of elements in reg_defaults.
56 *
57 * @read_flag_mask: Mask to be set in the top byte of the register when doing
58 * a read.
59 * @write_flag_mask: Mask to be set in the top byte of the register when doing
60 * a write. If both read_flag_mask and write_flag_mask are
61 * empty the regmap_bus default masks are used.
56 */ 62 */
57struct regmap_config { 63struct regmap_config {
58 int reg_bits; 64 int reg_bits;
@@ -66,6 +72,9 @@ struct regmap_config {
66 unsigned int max_register; 72 unsigned int max_register;
67 struct reg_default *reg_defaults; 73 struct reg_default *reg_defaults;
68 int num_reg_defaults; 74 int num_reg_defaults;
75
76 u8 read_flag_mask;
77 u8 write_flag_mask;
69}; 78};
70 79
71typedef int (*regmap_hw_write)(struct device *dev, const void *data, 80typedef int (*regmap_hw_write)(struct device *dev, const void *data,