diff options
author | Mark Brown <broonie@kernel.org> | 2015-10-12 14:24:30 -0400 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2015-10-12 14:24:30 -0400 |
commit | b3961e8703cbacf45116aea44f0c1cdaf8c8b40c (patch) | |
tree | 60affcbdc811a4c6af887659012aa95982e1b9e7 /include/linux/regmap.h | |
parent | ba5890a0c7576776ada71a21d95833a2281695e2 (diff) | |
parent | 77792b11409c9270d98e604b4314b85ce886ac7d (diff) |
Merge tag 'regmap-offload-update-bits' into regmap-next
regmap: Allow buses to provide a custom update_bits() operation
Some buses provide a native _update_bits() operation which for uncached
registers is faster than doing a read/modify/write cycle as it is a
single bus transaction. Add support for implementing this to regmap.
# gpg: Signature made Tue 06 Oct 2015 16:21:47 BST using RSA key ID 5D5487D0
# gpg: Oops: keyid_from_fingerprint: no pubkey
# gpg: Oops: keyid_from_fingerprint: no pubkey
# gpg: key 00000000 occurs more than once in the trustdb
# gpg: key 16005C11: no public key for trusted key - skipped
# gpg: key 16005C11 marked as ultimately trusted
# gpg: Good signature from "Mark Brown <broonie@sirena.org.uk>"
# gpg: aka "Mark Brown <broonie@debian.org>"
# gpg: aka "Mark Brown <broonie@kernel.org>"
# gpg: aka "Mark Brown <broonie@tardis.ed.ac.uk>"
# gpg: aka "Mark Brown <broonie@linaro.org>"
# gpg: aka "Mark Brown <Mark.Brown@linaro.org>"
Diffstat (limited to 'include/linux/regmap.h')
-rw-r--r-- | include/linux/regmap.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/include/linux/regmap.h b/include/linux/regmap.h index f36c9f96d32d..413e5ccce759 100644 --- a/include/linux/regmap.h +++ b/include/linux/regmap.h | |||
@@ -296,6 +296,8 @@ typedef int (*regmap_hw_reg_read)(void *context, unsigned int reg, | |||
296 | unsigned int *val); | 296 | unsigned int *val); |
297 | typedef int (*regmap_hw_reg_write)(void *context, unsigned int reg, | 297 | typedef int (*regmap_hw_reg_write)(void *context, unsigned int reg, |
298 | unsigned int val); | 298 | unsigned int val); |
299 | typedef int (*regmap_hw_reg_update_bits)(void *context, unsigned int reg, | ||
300 | unsigned int mask, unsigned int val); | ||
299 | typedef struct regmap_async *(*regmap_hw_async_alloc)(void); | 301 | typedef struct regmap_async *(*regmap_hw_async_alloc)(void); |
300 | typedef void (*regmap_hw_free_context)(void *context); | 302 | typedef void (*regmap_hw_free_context)(void *context); |
301 | 303 | ||
@@ -335,6 +337,7 @@ struct regmap_bus { | |||
335 | regmap_hw_gather_write gather_write; | 337 | regmap_hw_gather_write gather_write; |
336 | regmap_hw_async_write async_write; | 338 | regmap_hw_async_write async_write; |
337 | regmap_hw_reg_write reg_write; | 339 | regmap_hw_reg_write reg_write; |
340 | regmap_hw_reg_update_bits reg_update_bits; | ||
338 | regmap_hw_read read; | 341 | regmap_hw_read read; |
339 | regmap_hw_reg_read reg_read; | 342 | regmap_hw_reg_read reg_read; |
340 | regmap_hw_free_context free_context; | 343 | regmap_hw_free_context free_context; |