Commit 3b1abcf1 authored by Jakub Kicinski's avatar Jakub Kicinski
Browse files

Merge tag 'regmap-no-bus-update-bits' of...

Merge tag 'regmap-no-bus-update-bits' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap

Mark Brown says:

===================
regmap: Allow regmap_update_bits() to be offloaded with no bus

Some hardware can do this so let's use that capability.
===================

Link: https://lore.kernel.org/all/YZWDOidBOssP10yS@sirena.org.uk/


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parents 50fc2494 02d6fdec
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -876,6 +876,7 @@ struct regmap *__regmap_init(struct device *dev,
	if (!bus) {
		map->reg_read  = config->reg_read;
		map->reg_write = config->reg_write;
		map->reg_update_bits = config->reg_update_bits;

		map->defer_caching = false;
		goto skip_format_initialization;
+7 −0
Original line number Diff line number Diff line
@@ -290,6 +290,11 @@ typedef void (*regmap_unlock)(void *);
 *		  read operation on a bus such as SPI, I2C, etc. Most of the
 *		  devices do not need this.
 * @reg_write:	  Same as above for writing.
 * @reg_update_bits: Optional callback that if filled will be used to perform
 *		     all the update_bits(rmw) operation. Should only be provided
 *		     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.
 * @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).
@@ -372,6 +377,8 @@ struct regmap_config {

	int (*reg_read)(void *context, unsigned int reg, unsigned int *val);
	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);

	bool fast_io;