mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
regmap: Add bulk read/write callbacks into regmap_config
Currently the regmap_config structure only allows the user to implement single element register read/write using .reg_read/.reg_write callbacks. The regmap_bus already implements bulk counterparts of both, and is being misused as a workaround for the missing bulk read/write callbacks in regmap_config by a couple of drivers. To stop this misuse, add the bulk read/write callbacks to regmap_config and call them from the regmap core code. Signed-off-by: Marek Vasut <marex@denx.de> Cc: Jagan Teki <jagan@amarulasolutions.com> Cc: Mark Brown <broonie@kernel.org> Cc: Maxime Ripard <maxime@cerno.tech> Cc: Robert Foss <robert.foss@linaro.org> Cc: Sam Ravnborg <sam@ravnborg.org> Cc: Thomas Zimmermann <tzimmermann@suse.de> To: dri-devel@lists.freedesktop.org Link: https://lore.kernel.org/r/20220430025145.640305-1-marex@denx.de Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
3123109284
commit
d77e745613
3 changed files with 56 additions and 36 deletions
|
@ -299,6 +299,12 @@ typedef void (*regmap_unlock)(void *);
|
|||
* if the function require special handling with lock and reg
|
||||
* handling and the operation cannot be represented as a simple
|
||||
* update_bits operation on a bus such as SPI, I2C, etc.
|
||||
* @read: Optional callback that if filled will be used to perform all the
|
||||
* bulk reads from the registers. Data is returned in the buffer used
|
||||
* to transmit data.
|
||||
* @write: Same as above for writing.
|
||||
* @max_raw_read: Max raw read size that can be used on the device.
|
||||
* @max_raw_write: Max raw write size that can be used on the device.
|
||||
* @fast_io: Register IO is fast. Use a spinlock instead of a mutex
|
||||
* to perform locking. This field is ignored if custom lock/unlock
|
||||
* functions are used (see fields lock/unlock of struct regmap_config).
|
||||
|
@ -385,6 +391,12 @@ struct regmap_config {
|
|||
int (*reg_write)(void *context, unsigned int reg, unsigned int val);
|
||||
int (*reg_update_bits)(void *context, unsigned int reg,
|
||||
unsigned int mask, unsigned int val);
|
||||
/* Bulk read/write */
|
||||
int (*read)(void *context, const void *reg_buf, size_t reg_size,
|
||||
void *val_buf, size_t val_size);
|
||||
int (*write)(void *context, const void *data, size_t count);
|
||||
size_t max_raw_read;
|
||||
size_t max_raw_write;
|
||||
|
||||
bool fast_io;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue