1  /* SPDX-License-Identifier: GPL-2.0-only */
2  #ifndef __LINUX_REGMAP_H
3  #define __LINUX_REGMAP_H
4  
5  /*
6   * Register map access API
7   *
8   * Copyright 2011 Wolfson Microelectronics plc
9   *
10   * Author: Mark Brown <broonie@opensource.wolfsonmicro.com>
11   */
12  
13  #include <linux/list.h>
14  #include <linux/rbtree.h>
15  #include <linux/ktime.h>
16  #include <linux/delay.h>
17  #include <linux/err.h>
18  #include <linux/bug.h>
19  #include <linux/lockdep.h>
20  #include <linux/iopoll.h>
21  #include <linux/fwnode.h>
22  
23  struct module;
24  struct clk;
25  struct device;
26  struct device_node;
27  struct fsi_device;
28  struct i2c_client;
29  struct i3c_device;
30  struct irq_domain;
31  struct mdio_device;
32  struct slim_device;
33  struct spi_device;
34  struct spmi_device;
35  struct regmap;
36  struct regmap_range_cfg;
37  struct regmap_field;
38  struct snd_ac97;
39  struct sdw_slave;
40  
41  /*
42   * regmap_mdio address encoding. IEEE 802.3ae clause 45 addresses consist of a
43   * device address and a register address.
44   */
45  #define REGMAP_MDIO_C45_DEVAD_SHIFT	16
46  #define REGMAP_MDIO_C45_DEVAD_MASK	GENMASK(20, 16)
47  #define REGMAP_MDIO_C45_REGNUM_MASK	GENMASK(15, 0)
48  
49  /*
50   * regmap.reg_shift indicates by how much we must shift registers prior to
51   * performing any operation. It's a signed value, positive numbers means
52   * downshifting the register's address, while negative numbers means upshifting.
53   */
54  #define REGMAP_UPSHIFT(s)	(-(s))
55  #define REGMAP_DOWNSHIFT(s)	(s)
56  
57  /* An enum of all the supported cache types */
58  enum regcache_type {
59  	REGCACHE_NONE,
60  	REGCACHE_RBTREE,
61  	REGCACHE_FLAT,
62  	REGCACHE_MAPLE,
63  };
64  
65  /**
66   * struct reg_default - Default value for a register.
67   *
68   * @reg: Register address.
69   * @def: Register default value.
70   *
71   * We use an array of structs rather than a simple array as many modern devices
72   * have very sparse register maps.
73   */
74  struct reg_default {
75  	unsigned int reg;
76  	unsigned int def;
77  };
78  
79  /**
80   * struct reg_sequence - An individual write from a sequence of writes.
81   *
82   * @reg: Register address.
83   * @def: Register value.
84   * @delay_us: Delay to be applied after the register write in microseconds
85   *
86   * Register/value pairs for sequences of writes with an optional delay in
87   * microseconds to be applied after each write.
88   */
89  struct reg_sequence {
90  	unsigned int reg;
91  	unsigned int def;
92  	unsigned int delay_us;
93  };
94  
95  #define REG_SEQ(_reg, _def, _delay_us) {		\
96  				.reg = _reg,		\
97  				.def = _def,		\
98  				.delay_us = _delay_us,	\
99  				}
100  #define REG_SEQ0(_reg, _def)	REG_SEQ(_reg, _def, 0)
101  
102  /**
103   * regmap_read_poll_timeout - Poll until a condition is met or a timeout occurs
104   *
105   * @map: Regmap to read from
106   * @addr: Address to poll
107   * @val: Unsigned integer variable to read the value into
108   * @cond: Break condition (usually involving @val)
109   * @sleep_us: Maximum time to sleep between reads in us (0
110   *            tight-loops).  Should be less than ~20ms since usleep_range
111   *            is used (see Documentation/timers/timers-howto.rst).
112   * @timeout_us: Timeout in us, 0 means never timeout
113   *
114   * Returns 0 on success and -ETIMEDOUT upon a timeout or the regmap_read
115   * error return value in case of a error read. In the two former cases,
116   * the last read value at @addr is stored in @val. Must not be called
117   * from atomic context if sleep_us or timeout_us are used.
118   *
119   * This is modelled after the readx_poll_timeout macros in linux/iopoll.h.
120   */
121  #define regmap_read_poll_timeout(map, addr, val, cond, sleep_us, timeout_us) \
122  ({ \
123  	int __ret, __tmp; \
124  	__tmp = read_poll_timeout(regmap_read, __ret, __ret || (cond), \
125  			sleep_us, timeout_us, false, (map), (addr), &(val)); \
126  	__ret ?: __tmp; \
127  })
128  
129  /**
130   * regmap_read_poll_timeout_atomic - Poll until a condition is met or a timeout occurs
131   *
132   * @map: Regmap to read from
133   * @addr: Address to poll
134   * @val: Unsigned integer variable to read the value into
135   * @cond: Break condition (usually involving @val)
136   * @delay_us: Time to udelay between reads in us (0 tight-loops).
137   *            Should be less than ~10us since udelay is used
138   *            (see Documentation/timers/timers-howto.rst).
139   * @timeout_us: Timeout in us, 0 means never timeout
140   *
141   * Returns 0 on success and -ETIMEDOUT upon a timeout or the regmap_read
142   * error return value in case of a error read. In the two former cases,
143   * the last read value at @addr is stored in @val.
144   *
145   * This is modelled after the readx_poll_timeout_atomic macros in linux/iopoll.h.
146   *
147   * Note: In general regmap cannot be used in atomic context. If you want to use
148   * this macro then first setup your regmap for atomic use (flat or no cache
149   * and MMIO regmap).
150   */
151  #define regmap_read_poll_timeout_atomic(map, addr, val, cond, delay_us, timeout_us) \
152  ({ \
153  	u64 __timeout_us = (timeout_us); \
154  	unsigned long __delay_us = (delay_us); \
155  	ktime_t __timeout = ktime_add_us(ktime_get(), __timeout_us); \
156  	int __ret; \
157  	for (;;) { \
158  		__ret = regmap_read((map), (addr), &(val)); \
159  		if (__ret) \
160  			break; \
161  		if (cond) \
162  			break; \
163  		if ((__timeout_us) && \
164  		    ktime_compare(ktime_get(), __timeout) > 0) { \
165  			__ret = regmap_read((map), (addr), &(val)); \
166  			break; \
167  		} \
168  		if (__delay_us) \
169  			udelay(__delay_us); \
170  	} \
171  	__ret ?: ((cond) ? 0 : -ETIMEDOUT); \
172  })
173  
174  /**
175   * regmap_field_read_poll_timeout - Poll until a condition is met or timeout
176   *
177   * @field: Regmap field to read from
178   * @val: Unsigned integer variable to read the value into
179   * @cond: Break condition (usually involving @val)
180   * @sleep_us: Maximum time to sleep between reads in us (0
181   *            tight-loops).  Should be less than ~20ms since usleep_range
182   *            is used (see Documentation/timers/timers-howto.rst).
183   * @timeout_us: Timeout in us, 0 means never timeout
184   *
185   * Returns 0 on success and -ETIMEDOUT upon a timeout or the regmap_field_read
186   * error return value in case of a error read. In the two former cases,
187   * the last read value at @addr is stored in @val. Must not be called
188   * from atomic context if sleep_us or timeout_us are used.
189   *
190   * This is modelled after the readx_poll_timeout macros in linux/iopoll.h.
191   */
192  #define regmap_field_read_poll_timeout(field, val, cond, sleep_us, timeout_us) \
193  ({ \
194  	int __ret, __tmp; \
195  	__tmp = read_poll_timeout(regmap_field_read, __ret, __ret || (cond), \
196  			sleep_us, timeout_us, false, (field), &(val)); \
197  	__ret ?: __tmp; \
198  })
199  
200  #ifdef CONFIG_REGMAP
201  
202  enum regmap_endian {
203  	/* Unspecified -> 0 -> Backwards compatible default */
204  	REGMAP_ENDIAN_DEFAULT = 0,
205  	REGMAP_ENDIAN_BIG,
206  	REGMAP_ENDIAN_LITTLE,
207  	REGMAP_ENDIAN_NATIVE,
208  };
209  
210  /**
211   * struct regmap_range - A register range, used for access related checks
212   *                       (readable/writeable/volatile/precious checks)
213   *
214   * @range_min: address of first register
215   * @range_max: address of last register
216   */
217  struct regmap_range {
218  	unsigned int range_min;
219  	unsigned int range_max;
220  };
221  
222  #define regmap_reg_range(low, high) { .range_min = low, .range_max = high, }
223  
224  /**
225   * struct regmap_access_table - A table of register ranges for access checks
226   *
227   * @yes_ranges : pointer to an array of regmap ranges used as "yes ranges"
228   * @n_yes_ranges: size of the above array
229   * @no_ranges: pointer to an array of regmap ranges used as "no ranges"
230   * @n_no_ranges: size of the above array
231   *
232   * A table of ranges including some yes ranges and some no ranges.
233   * If a register belongs to a no_range, the corresponding check function
234   * will return false. If a register belongs to a yes range, the corresponding
235   * check function will return true. "no_ranges" are searched first.
236   */
237  struct regmap_access_table {
238  	const struct regmap_range *yes_ranges;
239  	unsigned int n_yes_ranges;
240  	const struct regmap_range *no_ranges;
241  	unsigned int n_no_ranges;
242  };
243  
244  typedef void (*regmap_lock)(void *);
245  typedef void (*regmap_unlock)(void *);
246  
247  /**
248   * struct regmap_config - Configuration for the register map of a device.
249   *
250   * @name: Optional name of the regmap. Useful when a device has multiple
251   *        register regions.
252   *
253   * @reg_bits: Number of bits in a register address, mandatory.
254   * @reg_stride: The register address stride. Valid register addresses are a
255   *              multiple of this value. If set to 0, a value of 1 will be
256   *              used.
257   * @reg_shift: The number of bits to shift the register before performing any
258   *	       operations. Any positive number will be downshifted, and negative
259   *	       values will be upshifted
260   * @reg_base: Value to be added to every register address before performing any
261   *	      operation.
262   * @pad_bits: Number of bits of padding between register and value.
263   * @val_bits: Number of bits in a register value, mandatory.
264   *
265   * @writeable_reg: Optional callback returning true if the register
266   *		   can be written to. If this field is NULL but wr_table
267   *		   (see below) is not, the check is performed on such table
268   *                 (a register is writeable if it belongs to one of the ranges
269   *                  specified by wr_table).
270   * @readable_reg: Optional callback returning true if the register
271   *		  can be read from. If this field is NULL but rd_table
272   *		   (see below) is not, the check is performed on such table
273   *                 (a register is readable if it belongs to one of the ranges
274   *                  specified by rd_table).
275   * @volatile_reg: Optional callback returning true if the register
276   *		  value can't be cached. If this field is NULL but
277   *		  volatile_table (see below) is not, the check is performed on
278   *                such table (a register is volatile if it belongs to one of
279   *                the ranges specified by volatile_table).
280   * @precious_reg: Optional callback returning true if the register
281   *		  should not be read outside of a call from the driver
282   *		  (e.g., a clear on read interrupt status register). If this
283   *                field is NULL but precious_table (see below) is not, the
284   *                check is performed on such table (a register is precious if
285   *                it belongs to one of the ranges specified by precious_table).
286   * @writeable_noinc_reg: Optional callback returning true if the register
287   *			supports multiple write operations without incrementing
288   *			the register number. If this field is NULL but
289   *			wr_noinc_table (see below) is not, the check is
290   *			performed on such table (a register is no increment
291   *			writeable if it belongs to one of the ranges specified
292   *			by wr_noinc_table).
293   * @readable_noinc_reg: Optional callback returning true if the register
294   *			supports multiple read operations without incrementing
295   *			the register number. If this field is NULL but
296   *			rd_noinc_table (see below) is not, the check is
297   *			performed on such table (a register is no increment
298   *			readable if it belongs to one of the ranges specified
299   *			by rd_noinc_table).
300   * @reg_read:	  Optional callback that if filled will be used to perform
301   *           	  all the reads from the registers. Should only be provided for
302   *		  devices whose read operation cannot be represented as a simple
303   *		  read operation on a bus such as SPI, I2C, etc. Most of the
304   *		  devices do not need this.
305   * @reg_write:	  Same as above for writing.
306   * @reg_update_bits: Optional callback that if filled will be used to perform
307   *		     all the update_bits(rmw) operation. Should only be provided
308   *		     if the function require special handling with lock and reg
309   *		     handling and the operation cannot be represented as a simple
310   *		     update_bits operation on a bus such as SPI, I2C, etc.
311   * @read: Optional callback that if filled will be used to perform all the
312   *        bulk reads from the registers. Data is returned in the buffer used
313   *        to transmit data.
314   * @write: Same as above for writing.
315   * @max_raw_read: Max raw read size that can be used on the device.
316   * @max_raw_write: Max raw write size that can be used on the device.
317   * @can_sleep:	  Optional, specifies whether regmap operations can sleep.
318   * @fast_io:	  Register IO is fast. Use a spinlock instead of a mutex
319   *	     	  to perform locking. This field is ignored if custom lock/unlock
320   *	     	  functions are used (see fields lock/unlock of struct regmap_config).
321   *		  This field is a duplicate of a similar file in
322   *		  'struct regmap_bus' and serves exact same purpose.
323   *		   Use it only for "no-bus" cases.
324   * @io_port:	  Support IO port accessors. Makes sense only when MMIO vs. IO port
325   *		  access can be distinguished.
326   * @disable_locking: This regmap is either protected by external means or
327   *		     is guaranteed not to be accessed from multiple threads.
328   *		     Don't use any locking mechanisms.
329   * @lock:	  Optional lock callback (overrides regmap's default lock
330   *		  function, based on spinlock or mutex).
331   * @unlock:	  As above for unlocking.
332   * @lock_arg:	  This field is passed as the only argument of lock/unlock
333   *		  functions (ignored in case regular lock/unlock functions
334   *		  are not overridden).
335   * @max_register: Optional, specifies the maximum valid register address.
336   * @max_register_is_0: Optional, specifies that zero value in @max_register
337   *                     should be taken into account. This is a workaround to
338   *                     apply handling of @max_register for regmap that contains
339   *                     only one register.
340   * @wr_table:     Optional, points to a struct regmap_access_table specifying
341   *                valid ranges for write access.
342   * @rd_table:     As above, for read access.
343   * @volatile_table: As above, for volatile registers.
344   * @precious_table: As above, for precious registers.
345   * @wr_noinc_table: As above, for no increment writeable registers.
346   * @rd_noinc_table: As above, for no increment readable registers.
347   * @reg_defaults: Power on reset values for registers (for use with
348   *                register cache support).
349   * @num_reg_defaults: Number of elements in reg_defaults.
350   *
351   * @read_flag_mask: Mask to be set in the top bytes of the register when doing
352   *                  a read.
353   * @write_flag_mask: Mask to be set in the top bytes of the register when doing
354   *                   a write. If both read_flag_mask and write_flag_mask are
355   *                   empty and zero_flag_mask is not set the regmap_bus default
356   *                   masks are used.
357   * @zero_flag_mask: If set, read_flag_mask and write_flag_mask are used even
358   *                   if they are both empty.
359   * @use_relaxed_mmio: If set, MMIO R/W operations will not use memory barriers.
360   *                    This can avoid load on devices which don't require strict
361   *                    orderings, but drivers should carefully add any explicit
362   *                    memory barriers when they may require them.
363   * @use_single_read: If set, converts the bulk read operation into a series of
364   *                   single read operations. This is useful for a device that
365   *                   does not support  bulk read.
366   * @use_single_write: If set, converts the bulk write operation into a series of
367   *                    single write operations. This is useful for a device that
368   *                    does not support bulk write.
369   * @can_multi_write: If set, the device supports the multi write mode of bulk
370   *                   write operations, if clear multi write requests will be
371   *                   split into individual write operations
372   *
373   * @cache_type: The actual cache type.
374   * @reg_defaults_raw: Power on reset values for registers (for use with
375   *                    register cache support).
376   * @num_reg_defaults_raw: Number of elements in reg_defaults_raw.
377   * @use_hwlock: Indicate if a hardware spinlock should be used.
378   * @use_raw_spinlock: Indicate if a raw spinlock should be used.
379   * @hwlock_id: Specify the hardware spinlock id.
380   * @hwlock_mode: The hardware spinlock mode, should be HWLOCK_IRQSTATE,
381   *		 HWLOCK_IRQ or 0.
382   * @reg_format_endian: Endianness for formatted register addresses. If this is
383   *		       DEFAULT, the @reg_format_endian_default value from the
384   *		       regmap bus is used.
385   * @val_format_endian: Endianness for formatted register values. If this is
386   *		       DEFAULT, the @reg_format_endian_default value from the
387   *		       regmap bus is used.
388   *
389   * @ranges: Array of configuration entries for virtual address ranges.
390   * @num_ranges: Number of range configuration entries.
391   */
392  struct regmap_config {
393  	const char *name;
394  
395  	int reg_bits;
396  	int reg_stride;
397  	int reg_shift;
398  	unsigned int reg_base;
399  	int pad_bits;
400  	int val_bits;
401  
402  	bool (*writeable_reg)(struct device *dev, unsigned int reg);
403  	bool (*readable_reg)(struct device *dev, unsigned int reg);
404  	bool (*volatile_reg)(struct device *dev, unsigned int reg);
405  	bool (*precious_reg)(struct device *dev, unsigned int reg);
406  	bool (*writeable_noinc_reg)(struct device *dev, unsigned int reg);
407  	bool (*readable_noinc_reg)(struct device *dev, unsigned int reg);
408  
409  	int (*reg_read)(void *context, unsigned int reg, unsigned int *val);
410  	int (*reg_write)(void *context, unsigned int reg, unsigned int val);
411  	int (*reg_update_bits)(void *context, unsigned int reg,
412  			       unsigned int mask, unsigned int val);
413  	/* Bulk read/write */
414  	int (*read)(void *context, const void *reg_buf, size_t reg_size,
415  		    void *val_buf, size_t val_size);
416  	int (*write)(void *context, const void *data, size_t count);
417  	size_t max_raw_read;
418  	size_t max_raw_write;
419  
420  	bool can_sleep;
421  
422  	bool fast_io;
423  	bool io_port;
424  
425  	bool disable_locking;
426  	regmap_lock lock;
427  	regmap_unlock unlock;
428  	void *lock_arg;
429  
430  	unsigned int max_register;
431  	bool max_register_is_0;
432  	const struct regmap_access_table *wr_table;
433  	const struct regmap_access_table *rd_table;
434  	const struct regmap_access_table *volatile_table;
435  	const struct regmap_access_table *precious_table;
436  	const struct regmap_access_table *wr_noinc_table;
437  	const struct regmap_access_table *rd_noinc_table;
438  	const struct reg_default *reg_defaults;
439  	unsigned int num_reg_defaults;
440  	enum regcache_type cache_type;
441  	const void *reg_defaults_raw;
442  	unsigned int num_reg_defaults_raw;
443  
444  	unsigned long read_flag_mask;
445  	unsigned long write_flag_mask;
446  	bool zero_flag_mask;
447  
448  	bool use_single_read;
449  	bool use_single_write;
450  	bool use_relaxed_mmio;
451  	bool can_multi_write;
452  
453  	bool use_hwlock;
454  	bool use_raw_spinlock;
455  	unsigned int hwlock_id;
456  	unsigned int hwlock_mode;
457  
458  	enum regmap_endian reg_format_endian;
459  	enum regmap_endian val_format_endian;
460  
461  	const struct regmap_range_cfg *ranges;
462  	unsigned int num_ranges;
463  };
464  
465  /**
466   * struct regmap_range_cfg - Configuration for indirectly accessed or paged
467   *                           registers.
468   *
469   * @name: Descriptive name for diagnostics
470   *
471   * @range_min: Address of the lowest register address in virtual range.
472   * @range_max: Address of the highest register in virtual range.
473   *
474   * @selector_reg: Register with selector field.
475   * @selector_mask: Bit mask for selector value.
476   * @selector_shift: Bit shift for selector value.
477   *
478   * @window_start: Address of first (lowest) register in data window.
479   * @window_len: Number of registers in data window.
480   *
481   * Registers, mapped to this virtual range, are accessed in two steps:
482   *     1. page selector register update;
483   *     2. access through data window registers.
484   */
485  struct regmap_range_cfg {
486  	const char *name;
487  
488  	/* Registers of virtual address range */
489  	unsigned int range_min;
490  	unsigned int range_max;
491  
492  	/* Page selector for indirect addressing */
493  	unsigned int selector_reg;
494  	unsigned int selector_mask;
495  	int selector_shift;
496  
497  	/* Data window (per each page) */
498  	unsigned int window_start;
499  	unsigned int window_len;
500  };
501  
502  struct regmap_async;
503  
504  typedef int (*regmap_hw_write)(void *context, const void *data,
505  			       size_t count);
506  typedef int (*regmap_hw_gather_write)(void *context,
507  				      const void *reg, size_t reg_len,
508  				      const void *val, size_t val_len);
509  typedef int (*regmap_hw_async_write)(void *context,
510  				     const void *reg, size_t reg_len,
511  				     const void *val, size_t val_len,
512  				     struct regmap_async *async);
513  typedef int (*regmap_hw_read)(void *context,
514  			      const void *reg_buf, size_t reg_size,
515  			      void *val_buf, size_t val_size);
516  typedef int (*regmap_hw_reg_read)(void *context, unsigned int reg,
517  				  unsigned int *val);
518  typedef int (*regmap_hw_reg_noinc_read)(void *context, unsigned int reg,
519  					void *val, size_t val_count);
520  typedef int (*regmap_hw_reg_write)(void *context, unsigned int reg,
521  				   unsigned int val);
522  typedef int (*regmap_hw_reg_noinc_write)(void *context, unsigned int reg,
523  					 const void *val, size_t val_count);
524  typedef int (*regmap_hw_reg_update_bits)(void *context, unsigned int reg,
525  					 unsigned int mask, unsigned int val);
526  typedef struct regmap_async *(*regmap_hw_async_alloc)(void);
527  typedef void (*regmap_hw_free_context)(void *context);
528  
529  /**
530   * struct regmap_bus - Description of a hardware bus for the register map
531   *                     infrastructure.
532   *
533   * @fast_io: Register IO is fast. Use a spinlock instead of a mutex
534   *	     to perform locking. This field is ignored if custom lock/unlock
535   *	     functions are used (see fields lock/unlock of
536   *	     struct regmap_config).
537   * @free_on_exit: kfree this on exit of regmap
538   * @write: Write operation.
539   * @gather_write: Write operation with split register/value, return -ENOTSUPP
540   *                if not implemented  on a given device.
541   * @async_write: Write operation which completes asynchronously, optional and
542   *               must serialise with respect to non-async I/O.
543   * @reg_write: Write a single register value to the given register address. This
544   *             write operation has to complete when returning from the function.
545   * @reg_write_noinc: Write multiple register value to the same register. This
546   *             write operation has to complete when returning from the function.
547   * @reg_update_bits: Update bits operation to be used against volatile
548   *                   registers, intended for devices supporting some mechanism
549   *                   for setting clearing bits without having to
550   *                   read/modify/write.
551   * @read: Read operation.  Data is returned in the buffer used to transmit
552   *         data.
553   * @reg_read: Read a single register value from a given register address.
554   * @free_context: Free context.
555   * @async_alloc: Allocate a regmap_async() structure.
556   * @read_flag_mask: Mask to be set in the top byte of the register when doing
557   *                  a read.
558   * @reg_format_endian_default: Default endianness for formatted register
559   *     addresses. Used when the regmap_config specifies DEFAULT. If this is
560   *     DEFAULT, BIG is assumed.
561   * @val_format_endian_default: Default endianness for formatted register
562   *     values. Used when the regmap_config specifies DEFAULT. If this is
563   *     DEFAULT, BIG is assumed.
564   * @max_raw_read: Max raw read size that can be used on the bus.
565   * @max_raw_write: Max raw write size that can be used on the bus.
566   */
567  struct regmap_bus {
568  	bool fast_io;
569  	bool free_on_exit;
570  	regmap_hw_write write;
571  	regmap_hw_gather_write gather_write;
572  	regmap_hw_async_write async_write;
573  	regmap_hw_reg_write reg_write;
574  	regmap_hw_reg_noinc_write reg_noinc_write;
575  	regmap_hw_reg_update_bits reg_update_bits;
576  	regmap_hw_read read;
577  	regmap_hw_reg_read reg_read;
578  	regmap_hw_reg_noinc_read reg_noinc_read;
579  	regmap_hw_free_context free_context;
580  	regmap_hw_async_alloc async_alloc;
581  	u8 read_flag_mask;
582  	enum regmap_endian reg_format_endian_default;
583  	enum regmap_endian val_format_endian_default;
584  	size_t max_raw_read;
585  	size_t max_raw_write;
586  };
587  
588  /*
589   * __regmap_init functions.
590   *
591   * These functions take a lock key and name parameter, and should not be called
592   * directly. Instead, use the regmap_init macros that generate a key and name
593   * for each call.
594   */
595  struct regmap *__regmap_init(struct device *dev,
596  			     const struct regmap_bus *bus,
597  			     void *bus_context,
598  			     const struct regmap_config *config,
599  			     struct lock_class_key *lock_key,
600  			     const char *lock_name);
601  struct regmap *__regmap_init_i2c(struct i2c_client *i2c,
602  				 const struct regmap_config *config,
603  				 struct lock_class_key *lock_key,
604  				 const char *lock_name);
605  struct regmap *__regmap_init_mdio(struct mdio_device *mdio_dev,
606  				 const struct regmap_config *config,
607  				 struct lock_class_key *lock_key,
608  				 const char *lock_name);
609  struct regmap *__regmap_init_sccb(struct i2c_client *i2c,
610  				  const struct regmap_config *config,
611  				  struct lock_class_key *lock_key,
612  				  const char *lock_name);
613  struct regmap *__regmap_init_slimbus(struct slim_device *slimbus,
614  				 const struct regmap_config *config,
615  				 struct lock_class_key *lock_key,
616  				 const char *lock_name);
617  struct regmap *__regmap_init_spi(struct spi_device *dev,
618  				 const struct regmap_config *config,
619  				 struct lock_class_key *lock_key,
620  				 const char *lock_name);
621  struct regmap *__regmap_init_spmi_base(struct spmi_device *dev,
622  				       const struct regmap_config *config,
623  				       struct lock_class_key *lock_key,
624  				       const char *lock_name);
625  struct regmap *__regmap_init_spmi_ext(struct spmi_device *dev,
626  				      const struct regmap_config *config,
627  				      struct lock_class_key *lock_key,
628  				      const char *lock_name);
629  struct regmap *__regmap_init_w1(struct device *w1_dev,
630  				 const struct regmap_config *config,
631  				 struct lock_class_key *lock_key,
632  				 const char *lock_name);
633  struct regmap *__regmap_init_mmio_clk(struct device *dev, const char *clk_id,
634  				      void __iomem *regs,
635  				      const struct regmap_config *config,
636  				      struct lock_class_key *lock_key,
637  				      const char *lock_name);
638  struct regmap *__regmap_init_ac97(struct snd_ac97 *ac97,
639  				  const struct regmap_config *config,
640  				  struct lock_class_key *lock_key,
641  				  const char *lock_name);
642  struct regmap *__regmap_init_sdw(struct sdw_slave *sdw,
643  				 const struct regmap_config *config,
644  				 struct lock_class_key *lock_key,
645  				 const char *lock_name);
646  struct regmap *__regmap_init_sdw_mbq(struct sdw_slave *sdw,
647  				     const struct regmap_config *config,
648  				     struct lock_class_key *lock_key,
649  				     const char *lock_name);
650  struct regmap *__regmap_init_spi_avmm(struct spi_device *spi,
651  				      const struct regmap_config *config,
652  				      struct lock_class_key *lock_key,
653  				      const char *lock_name);
654  struct regmap *__regmap_init_fsi(struct fsi_device *fsi_dev,
655  				 const struct regmap_config *config,
656  				 struct lock_class_key *lock_key,
657  				 const char *lock_name);
658  
659  struct regmap *__devm_regmap_init(struct device *dev,
660  				  const struct regmap_bus *bus,
661  				  void *bus_context,
662  				  const struct regmap_config *config,
663  				  struct lock_class_key *lock_key,
664  				  const char *lock_name);
665  struct regmap *__devm_regmap_init_i2c(struct i2c_client *i2c,
666  				      const struct regmap_config *config,
667  				      struct lock_class_key *lock_key,
668  				      const char *lock_name);
669  struct regmap *__devm_regmap_init_mdio(struct mdio_device *mdio_dev,
670  				      const struct regmap_config *config,
671  				      struct lock_class_key *lock_key,
672  				      const char *lock_name);
673  struct regmap *__devm_regmap_init_sccb(struct i2c_client *i2c,
674  				       const struct regmap_config *config,
675  				       struct lock_class_key *lock_key,
676  				       const char *lock_name);
677  struct regmap *__devm_regmap_init_spi(struct spi_device *dev,
678  				      const struct regmap_config *config,
679  				      struct lock_class_key *lock_key,
680  				      const char *lock_name);
681  struct regmap *__devm_regmap_init_spmi_base(struct spmi_device *dev,
682  					    const struct regmap_config *config,
683  					    struct lock_class_key *lock_key,
684  					    const char *lock_name);
685  struct regmap *__devm_regmap_init_spmi_ext(struct spmi_device *dev,
686  					   const struct regmap_config *config,
687  					   struct lock_class_key *lock_key,
688  					   const char *lock_name);
689  struct regmap *__devm_regmap_init_w1(struct device *w1_dev,
690  				      const struct regmap_config *config,
691  				      struct lock_class_key *lock_key,
692  				      const char *lock_name);
693  struct regmap *__devm_regmap_init_mmio_clk(struct device *dev,
694  					   const char *clk_id,
695  					   void __iomem *regs,
696  					   const struct regmap_config *config,
697  					   struct lock_class_key *lock_key,
698  					   const char *lock_name);
699  struct regmap *__devm_regmap_init_ac97(struct snd_ac97 *ac97,
700  				       const struct regmap_config *config,
701  				       struct lock_class_key *lock_key,
702  				       const char *lock_name);
703  struct regmap *__devm_regmap_init_sdw(struct sdw_slave *sdw,
704  				 const struct regmap_config *config,
705  				 struct lock_class_key *lock_key,
706  				 const char *lock_name);
707  struct regmap *__devm_regmap_init_sdw_mbq(struct sdw_slave *sdw,
708  					  const struct regmap_config *config,
709  					  struct lock_class_key *lock_key,
710  					  const char *lock_name);
711  struct regmap *__devm_regmap_init_slimbus(struct slim_device *slimbus,
712  				 const struct regmap_config *config,
713  				 struct lock_class_key *lock_key,
714  				 const char *lock_name);
715  struct regmap *__devm_regmap_init_i3c(struct i3c_device *i3c,
716  				 const struct regmap_config *config,
717  				 struct lock_class_key *lock_key,
718  				 const char *lock_name);
719  struct regmap *__devm_regmap_init_spi_avmm(struct spi_device *spi,
720  					   const struct regmap_config *config,
721  					   struct lock_class_key *lock_key,
722  					   const char *lock_name);
723  struct regmap *__devm_regmap_init_fsi(struct fsi_device *fsi_dev,
724  				      const struct regmap_config *config,
725  				      struct lock_class_key *lock_key,
726  				      const char *lock_name);
727  
728  /*
729   * Wrapper for regmap_init macros to include a unique lockdep key and name
730   * for each call. No-op if CONFIG_LOCKDEP is not set.
731   *
732   * @fn: Real function to call (in the form __[*_]regmap_init[_*])
733   * @name: Config variable name (#config in the calling macro)
734   **/
735  #ifdef CONFIG_LOCKDEP
736  #define __regmap_lockdep_wrapper(fn, name, ...)				\
737  (									\
738  	({								\
739  		static struct lock_class_key _key;			\
740  		fn(__VA_ARGS__, &_key,					\
741  			KBUILD_BASENAME ":"				\
742  			__stringify(__LINE__) ":"			\
743  			"(" name ")->lock");				\
744  	})								\
745  )
746  #else
747  #define __regmap_lockdep_wrapper(fn, name, ...) fn(__VA_ARGS__, NULL, NULL)
748  #endif
749  
750  /**
751   * regmap_init() - Initialise register map
752   *
753   * @dev: Device that will be interacted with
754   * @bus: Bus-specific callbacks to use with device
755   * @bus_context: Data passed to bus-specific callbacks
756   * @config: Configuration for register map
757   *
758   * The return value will be an ERR_PTR() on error or a valid pointer to
759   * a struct regmap.  This function should generally not be called
760   * directly, it should be called by bus-specific init functions.
761   */
762  #define regmap_init(dev, bus, bus_context, config)			\
763  	__regmap_lockdep_wrapper(__regmap_init, #config,		\
764  				dev, bus, bus_context, config)
765  int regmap_attach_dev(struct device *dev, struct regmap *map,
766  		      const struct regmap_config *config);
767  
768  /**
769   * regmap_init_i2c() - Initialise register map
770   *
771   * @i2c: Device that will be interacted with
772   * @config: Configuration for register map
773   *
774   * The return value will be an ERR_PTR() on error or a valid pointer to
775   * a struct regmap.
776   */
777  #define regmap_init_i2c(i2c, config)					\
778  	__regmap_lockdep_wrapper(__regmap_init_i2c, #config,		\
779  				i2c, config)
780  
781  /**
782   * regmap_init_mdio() - Initialise register map
783   *
784   * @mdio_dev: Device that will be interacted with
785   * @config: Configuration for register map
786   *
787   * The return value will be an ERR_PTR() on error or a valid pointer to
788   * a struct regmap.
789   */
790  #define regmap_init_mdio(mdio_dev, config)				\
791  	__regmap_lockdep_wrapper(__regmap_init_mdio, #config,		\
792  				mdio_dev, config)
793  
794  /**
795   * regmap_init_sccb() - Initialise register map
796   *
797   * @i2c: Device that will be interacted with
798   * @config: Configuration for register map
799   *
800   * The return value will be an ERR_PTR() on error or a valid pointer to
801   * a struct regmap.
802   */
803  #define regmap_init_sccb(i2c, config)					\
804  	__regmap_lockdep_wrapper(__regmap_init_sccb, #config,		\
805  				i2c, config)
806  
807  /**
808   * regmap_init_slimbus() - Initialise register map
809   *
810   * @slimbus: Device that will be interacted with
811   * @config: Configuration for register map
812   *
813   * The return value will be an ERR_PTR() on error or a valid pointer to
814   * a struct regmap.
815   */
816  #define regmap_init_slimbus(slimbus, config)				\
817  	__regmap_lockdep_wrapper(__regmap_init_slimbus, #config,	\
818  				slimbus, config)
819  
820  /**
821   * regmap_init_spi() - Initialise register map
822   *
823   * @dev: Device that will be interacted with
824   * @config: Configuration for register map
825   *
826   * The return value will be an ERR_PTR() on error or a valid pointer to
827   * a struct regmap.
828   */
829  #define regmap_init_spi(dev, config)					\
830  	__regmap_lockdep_wrapper(__regmap_init_spi, #config,		\
831  				dev, config)
832  
833  /**
834   * regmap_init_spmi_base() - Create regmap for the Base register space
835   *
836   * @dev:	SPMI device that will be interacted with
837   * @config:	Configuration for register map
838   *
839   * The return value will be an ERR_PTR() on error or a valid pointer to
840   * a struct regmap.
841   */
842  #define regmap_init_spmi_base(dev, config)				\
843  	__regmap_lockdep_wrapper(__regmap_init_spmi_base, #config,	\
844  				dev, config)
845  
846  /**
847   * regmap_init_spmi_ext() - Create regmap for Ext register space
848   *
849   * @dev:	Device that will be interacted with
850   * @config:	Configuration for register map
851   *
852   * The return value will be an ERR_PTR() on error or a valid pointer to
853   * a struct regmap.
854   */
855  #define regmap_init_spmi_ext(dev, config)				\
856  	__regmap_lockdep_wrapper(__regmap_init_spmi_ext, #config,	\
857  				dev, config)
858  
859  /**
860   * regmap_init_w1() - Initialise register map
861   *
862   * @w1_dev: Device that will be interacted with
863   * @config: Configuration for register map
864   *
865   * The return value will be an ERR_PTR() on error or a valid pointer to
866   * a struct regmap.
867   */
868  #define regmap_init_w1(w1_dev, config)					\
869  	__regmap_lockdep_wrapper(__regmap_init_w1, #config,		\
870  				w1_dev, config)
871  
872  /**
873   * regmap_init_mmio_clk() - Initialise register map with register clock
874   *
875   * @dev: Device that will be interacted with
876   * @clk_id: register clock consumer ID
877   * @regs: Pointer to memory-mapped IO region
878   * @config: Configuration for register map
879   *
880   * The return value will be an ERR_PTR() on error or a valid pointer to
881   * a struct regmap.
882   */
883  #define regmap_init_mmio_clk(dev, clk_id, regs, config)			\
884  	__regmap_lockdep_wrapper(__regmap_init_mmio_clk, #config,	\
885  				dev, clk_id, regs, config)
886  
887  /**
888   * regmap_init_mmio() - Initialise register map
889   *
890   * @dev: Device that will be interacted with
891   * @regs: Pointer to memory-mapped IO region
892   * @config: Configuration for register map
893   *
894   * The return value will be an ERR_PTR() on error or a valid pointer to
895   * a struct regmap.
896   */
897  #define regmap_init_mmio(dev, regs, config)		\
898  	regmap_init_mmio_clk(dev, NULL, regs, config)
899  
900  /**
901   * regmap_init_ac97() - Initialise AC'97 register map
902   *
903   * @ac97: Device that will be interacted with
904   * @config: Configuration for register map
905   *
906   * The return value will be an ERR_PTR() on error or a valid pointer to
907   * a struct regmap.
908   */
909  #define regmap_init_ac97(ac97, config)					\
910  	__regmap_lockdep_wrapper(__regmap_init_ac97, #config,		\
911  				ac97, config)
912  bool regmap_ac97_default_volatile(struct device *dev, unsigned int reg);
913  
914  /**
915   * regmap_init_sdw() - Initialise register map
916   *
917   * @sdw: Device that will be interacted with
918   * @config: Configuration for register map
919   *
920   * The return value will be an ERR_PTR() on error or a valid pointer to
921   * a struct regmap.
922   */
923  #define regmap_init_sdw(sdw, config)					\
924  	__regmap_lockdep_wrapper(__regmap_init_sdw, #config,		\
925  				sdw, config)
926  
927  /**
928   * regmap_init_sdw_mbq() - Initialise register map
929   *
930   * @sdw: Device that will be interacted with
931   * @config: Configuration for register map
932   *
933   * The return value will be an ERR_PTR() on error or a valid pointer to
934   * a struct regmap.
935   */
936  #define regmap_init_sdw_mbq(sdw, config)					\
937  	__regmap_lockdep_wrapper(__regmap_init_sdw_mbq, #config,		\
938  				sdw, config)
939  
940  /**
941   * regmap_init_spi_avmm() - Initialize register map for Intel SPI Slave
942   * to AVMM Bus Bridge
943   *
944   * @spi: Device that will be interacted with
945   * @config: Configuration for register map
946   *
947   * The return value will be an ERR_PTR() on error or a valid pointer
948   * to a struct regmap.
949   */
950  #define regmap_init_spi_avmm(spi, config)					\
951  	__regmap_lockdep_wrapper(__regmap_init_spi_avmm, #config,		\
952  				 spi, config)
953  
954  /**
955   * regmap_init_fsi() - Initialise register map
956   *
957   * @fsi_dev: Device that will be interacted with
958   * @config: Configuration for register map
959   *
960   * The return value will be an ERR_PTR() on error or a valid pointer to
961   * a struct regmap.
962   */
963  #define regmap_init_fsi(fsi_dev, config)				\
964  	__regmap_lockdep_wrapper(__regmap_init_fsi, #config, fsi_dev,	\
965  				 config)
966  
967  /**
968   * devm_regmap_init() - Initialise managed register map
969   *
970   * @dev: Device that will be interacted with
971   * @bus: Bus-specific callbacks to use with device
972   * @bus_context: Data passed to bus-specific callbacks
973   * @config: Configuration for register map
974   *
975   * The return value will be an ERR_PTR() on error or a valid pointer
976   * to a struct regmap.  This function should generally not be called
977   * directly, it should be called by bus-specific init functions.  The
978   * map will be automatically freed by the device management code.
979   */
980  #define devm_regmap_init(dev, bus, bus_context, config)			\
981  	__regmap_lockdep_wrapper(__devm_regmap_init, #config,		\
982  				dev, bus, bus_context, config)
983  
984  /**
985   * devm_regmap_init_i2c() - Initialise managed register map
986   *
987   * @i2c: Device that will be interacted with
988   * @config: Configuration for register map
989   *
990   * The return value will be an ERR_PTR() on error or a valid pointer
991   * to a struct regmap.  The regmap will be automatically freed by the
992   * device management code.
993   */
994  #define devm_regmap_init_i2c(i2c, config)				\
995  	__regmap_lockdep_wrapper(__devm_regmap_init_i2c, #config,	\
996  				i2c, config)
997  
998  /**
999   * devm_regmap_init_mdio() - Initialise managed register map
1000   *
1001   * @mdio_dev: Device that will be interacted with
1002   * @config: Configuration for register map
1003   *
1004   * The return value will be an ERR_PTR() on error or a valid pointer
1005   * to a struct regmap.  The regmap will be automatically freed by the
1006   * device management code.
1007   */
1008  #define devm_regmap_init_mdio(mdio_dev, config)				\
1009  	__regmap_lockdep_wrapper(__devm_regmap_init_mdio, #config,	\
1010  				mdio_dev, config)
1011  
1012  /**
1013   * devm_regmap_init_sccb() - Initialise managed register map
1014   *
1015   * @i2c: Device that will be interacted with
1016   * @config: Configuration for register map
1017   *
1018   * The return value will be an ERR_PTR() on error or a valid pointer
1019   * to a struct regmap.  The regmap will be automatically freed by the
1020   * device management code.
1021   */
1022  #define devm_regmap_init_sccb(i2c, config)				\
1023  	__regmap_lockdep_wrapper(__devm_regmap_init_sccb, #config,	\
1024  				i2c, config)
1025  
1026  /**
1027   * devm_regmap_init_spi() - Initialise register map
1028   *
1029   * @dev: Device that will be interacted with
1030   * @config: Configuration for register map
1031   *
1032   * The return value will be an ERR_PTR() on error or a valid pointer
1033   * to a struct regmap.  The map will be automatically freed by the
1034   * device management code.
1035   */
1036  #define devm_regmap_init_spi(dev, config)				\
1037  	__regmap_lockdep_wrapper(__devm_regmap_init_spi, #config,	\
1038  				dev, config)
1039  
1040  /**
1041   * devm_regmap_init_spmi_base() - Create managed regmap for Base register space
1042   *
1043   * @dev:	SPMI device that will be interacted with
1044   * @config:	Configuration for register map
1045   *
1046   * The return value will be an ERR_PTR() on error or a valid pointer
1047   * to a struct regmap.  The regmap will be automatically freed by the
1048   * device management code.
1049   */
1050  #define devm_regmap_init_spmi_base(dev, config)				\
1051  	__regmap_lockdep_wrapper(__devm_regmap_init_spmi_base, #config,	\
1052  				dev, config)
1053  
1054  /**
1055   * devm_regmap_init_spmi_ext() - Create managed regmap for Ext register space
1056   *
1057   * @dev:	SPMI device that will be interacted with
1058   * @config:	Configuration for register map
1059   *
1060   * The return value will be an ERR_PTR() on error or a valid pointer
1061   * to a struct regmap.  The regmap will be automatically freed by the
1062   * device management code.
1063   */
1064  #define devm_regmap_init_spmi_ext(dev, config)				\
1065  	__regmap_lockdep_wrapper(__devm_regmap_init_spmi_ext, #config,	\
1066  				dev, config)
1067  
1068  /**
1069   * devm_regmap_init_w1() - Initialise managed register map
1070   *
1071   * @w1_dev: Device that will be interacted with
1072   * @config: Configuration for register map
1073   *
1074   * The return value will be an ERR_PTR() on error or a valid pointer
1075   * to a struct regmap.  The regmap will be automatically freed by the
1076   * device management code.
1077   */
1078  #define devm_regmap_init_w1(w1_dev, config)				\
1079  	__regmap_lockdep_wrapper(__devm_regmap_init_w1, #config,	\
1080  				w1_dev, config)
1081  /**
1082   * devm_regmap_init_mmio_clk() - Initialise managed register map with clock
1083   *
1084   * @dev: Device that will be interacted with
1085   * @clk_id: register clock consumer ID
1086   * @regs: Pointer to memory-mapped IO region
1087   * @config: Configuration for register map
1088   *
1089   * The return value will be an ERR_PTR() on error or a valid pointer
1090   * to a struct regmap.  The regmap will be automatically freed by the
1091   * device management code.
1092   */
1093  #define devm_regmap_init_mmio_clk(dev, clk_id, regs, config)		\
1094  	__regmap_lockdep_wrapper(__devm_regmap_init_mmio_clk, #config,	\
1095  				dev, clk_id, regs, config)
1096  
1097  /**
1098   * devm_regmap_init_mmio() - Initialise managed register map
1099   *
1100   * @dev: Device that will be interacted with
1101   * @regs: Pointer to memory-mapped IO region
1102   * @config: Configuration for register map
1103   *
1104   * The return value will be an ERR_PTR() on error or a valid pointer
1105   * to a struct regmap.  The regmap will be automatically freed by the
1106   * device management code.
1107   */
1108  #define devm_regmap_init_mmio(dev, regs, config)		\
1109  	devm_regmap_init_mmio_clk(dev, NULL, regs, config)
1110  
1111  /**
1112   * devm_regmap_init_ac97() - Initialise AC'97 register map
1113   *
1114   * @ac97: Device that will be interacted with
1115   * @config: Configuration for register map
1116   *
1117   * The return value will be an ERR_PTR() on error or a valid pointer
1118   * to a struct regmap.  The regmap will be automatically freed by the
1119   * device management code.
1120   */
1121  #define devm_regmap_init_ac97(ac97, config)				\
1122  	__regmap_lockdep_wrapper(__devm_regmap_init_ac97, #config,	\
1123  				ac97, config)
1124  
1125  /**
1126   * devm_regmap_init_sdw() - Initialise managed register map
1127   *
1128   * @sdw: Device that will be interacted with
1129   * @config: Configuration for register map
1130   *
1131   * The return value will be an ERR_PTR() on error or a valid pointer
1132   * to a struct regmap. The regmap will be automatically freed by the
1133   * device management code.
1134   */
1135  #define devm_regmap_init_sdw(sdw, config)				\
1136  	__regmap_lockdep_wrapper(__devm_regmap_init_sdw, #config,	\
1137  				sdw, config)
1138  
1139  /**
1140   * devm_regmap_init_sdw_mbq() - Initialise managed register map
1141   *
1142   * @sdw: Device that will be interacted with
1143   * @config: Configuration for register map
1144   *
1145   * The return value will be an ERR_PTR() on error or a valid pointer
1146   * to a struct regmap. The regmap will be automatically freed by the
1147   * device management code.
1148   */
1149  #define devm_regmap_init_sdw_mbq(sdw, config)			\
1150  	__regmap_lockdep_wrapper(__devm_regmap_init_sdw_mbq, #config,   \
1151  				sdw, config)
1152  
1153  /**
1154   * devm_regmap_init_slimbus() - Initialise managed register map
1155   *
1156   * @slimbus: Device that will be interacted with
1157   * @config: Configuration for register map
1158   *
1159   * The return value will be an ERR_PTR() on error or a valid pointer
1160   * to a struct regmap. The regmap will be automatically freed by the
1161   * device management code.
1162   */
1163  #define devm_regmap_init_slimbus(slimbus, config)			\
1164  	__regmap_lockdep_wrapper(__devm_regmap_init_slimbus, #config,	\
1165  				slimbus, config)
1166  
1167  /**
1168   * devm_regmap_init_i3c() - Initialise managed register map
1169   *
1170   * @i3c: Device that will be interacted with
1171   * @config: Configuration for register map
1172   *
1173   * The return value will be an ERR_PTR() on error or a valid pointer
1174   * to a struct regmap.  The regmap will be automatically freed by the
1175   * device management code.
1176   */
1177  #define devm_regmap_init_i3c(i3c, config)				\
1178  	__regmap_lockdep_wrapper(__devm_regmap_init_i3c, #config,	\
1179  				i3c, config)
1180  
1181  /**
1182   * devm_regmap_init_spi_avmm() - Initialize register map for Intel SPI Slave
1183   * to AVMM Bus Bridge
1184   *
1185   * @spi: Device that will be interacted with
1186   * @config: Configuration for register map
1187   *
1188   * The return value will be an ERR_PTR() on error or a valid pointer
1189   * to a struct regmap.  The map will be automatically freed by the
1190   * device management code.
1191   */
1192  #define devm_regmap_init_spi_avmm(spi, config)				\
1193  	__regmap_lockdep_wrapper(__devm_regmap_init_spi_avmm, #config,	\
1194  				 spi, config)
1195  
1196  /**
1197   * devm_regmap_init_fsi() - Initialise managed register map
1198   *
1199   * @fsi_dev: Device that will be interacted with
1200   * @config: Configuration for register map
1201   *
1202   * The return value will be an ERR_PTR() on error or a valid pointer
1203   * to a struct regmap.  The regmap will be automatically freed by the
1204   * device management code.
1205   */
1206  #define devm_regmap_init_fsi(fsi_dev, config)				\
1207  	__regmap_lockdep_wrapper(__devm_regmap_init_fsi, #config,	\
1208  				 fsi_dev, config)
1209  
1210  int regmap_mmio_attach_clk(struct regmap *map, struct clk *clk);
1211  void regmap_mmio_detach_clk(struct regmap *map);
1212  void regmap_exit(struct regmap *map);
1213  int regmap_reinit_cache(struct regmap *map,
1214  			const struct regmap_config *config);
1215  struct regmap *dev_get_regmap(struct device *dev, const char *name);
1216  struct device *regmap_get_device(struct regmap *map);
1217  int regmap_write(struct regmap *map, unsigned int reg, unsigned int val);
1218  int regmap_write_async(struct regmap *map, unsigned int reg, unsigned int val);
1219  int regmap_raw_write(struct regmap *map, unsigned int reg,
1220  		     const void *val, size_t val_len);
1221  int regmap_noinc_write(struct regmap *map, unsigned int reg,
1222  		     const void *val, size_t val_len);
1223  int regmap_bulk_write(struct regmap *map, unsigned int reg, const void *val,
1224  			size_t val_count);
1225  int regmap_multi_reg_write(struct regmap *map, const struct reg_sequence *regs,
1226  			int num_regs);
1227  int regmap_multi_reg_write_bypassed(struct regmap *map,
1228  				    const struct reg_sequence *regs,
1229  				    int num_regs);
1230  int regmap_raw_write_async(struct regmap *map, unsigned int reg,
1231  			   const void *val, size_t val_len);
1232  int regmap_read(struct regmap *map, unsigned int reg, unsigned int *val);
1233  int regmap_read_bypassed(struct regmap *map, unsigned int reg, unsigned int *val);
1234  int regmap_raw_read(struct regmap *map, unsigned int reg,
1235  		    void *val, size_t val_len);
1236  int regmap_noinc_read(struct regmap *map, unsigned int reg,
1237  		      void *val, size_t val_len);
1238  int regmap_bulk_read(struct regmap *map, unsigned int reg, void *val,
1239  		     size_t val_count);
1240  int regmap_multi_reg_read(struct regmap *map, unsigned int *reg, void *val,
1241  			  size_t val_count);
1242  int regmap_update_bits_base(struct regmap *map, unsigned int reg,
1243  			    unsigned int mask, unsigned int val,
1244  			    bool *change, bool async, bool force);
1245  
regmap_update_bits(struct regmap * map,unsigned int reg,unsigned int mask,unsigned int val)1246  static inline int regmap_update_bits(struct regmap *map, unsigned int reg,
1247  				     unsigned int mask, unsigned int val)
1248  {
1249  	return regmap_update_bits_base(map, reg, mask, val, NULL, false, false);
1250  }
1251  
regmap_update_bits_async(struct regmap * map,unsigned int reg,unsigned int mask,unsigned int val)1252  static inline int regmap_update_bits_async(struct regmap *map, unsigned int reg,
1253  					   unsigned int mask, unsigned int val)
1254  {
1255  	return regmap_update_bits_base(map, reg, mask, val, NULL, true, false);
1256  }
1257  
regmap_update_bits_check(struct regmap * map,unsigned int reg,unsigned int mask,unsigned int val,bool * change)1258  static inline int regmap_update_bits_check(struct regmap *map, unsigned int reg,
1259  					   unsigned int mask, unsigned int val,
1260  					   bool *change)
1261  {
1262  	return regmap_update_bits_base(map, reg, mask, val,
1263  				       change, false, false);
1264  }
1265  
1266  static inline int
regmap_update_bits_check_async(struct regmap * map,unsigned int reg,unsigned int mask,unsigned int val,bool * change)1267  regmap_update_bits_check_async(struct regmap *map, unsigned int reg,
1268  			       unsigned int mask, unsigned int val,
1269  			       bool *change)
1270  {
1271  	return regmap_update_bits_base(map, reg, mask, val,
1272  				       change, true, false);
1273  }
1274  
regmap_write_bits(struct regmap * map,unsigned int reg,unsigned int mask,unsigned int val)1275  static inline int regmap_write_bits(struct regmap *map, unsigned int reg,
1276  				    unsigned int mask, unsigned int val)
1277  {
1278  	return regmap_update_bits_base(map, reg, mask, val, NULL, false, true);
1279  }
1280  
1281  int regmap_get_val_bytes(struct regmap *map);
1282  int regmap_get_max_register(struct regmap *map);
1283  int regmap_get_reg_stride(struct regmap *map);
1284  bool regmap_might_sleep(struct regmap *map);
1285  int regmap_async_complete(struct regmap *map);
1286  bool regmap_can_raw_write(struct regmap *map);
1287  size_t regmap_get_raw_read_max(struct regmap *map);
1288  size_t regmap_get_raw_write_max(struct regmap *map);
1289  
1290  int regcache_sync(struct regmap *map);
1291  int regcache_sync_region(struct regmap *map, unsigned int min,
1292  			 unsigned int max);
1293  int regcache_drop_region(struct regmap *map, unsigned int min,
1294  			 unsigned int max);
1295  void regcache_cache_only(struct regmap *map, bool enable);
1296  void regcache_cache_bypass(struct regmap *map, bool enable);
1297  void regcache_mark_dirty(struct regmap *map);
1298  bool regcache_reg_cached(struct regmap *map, unsigned int reg);
1299  
1300  bool regmap_check_range_table(struct regmap *map, unsigned int reg,
1301  			      const struct regmap_access_table *table);
1302  
1303  int regmap_register_patch(struct regmap *map, const struct reg_sequence *regs,
1304  			  int num_regs);
1305  int regmap_parse_val(struct regmap *map, const void *buf,
1306  				unsigned int *val);
1307  
regmap_reg_in_range(unsigned int reg,const struct regmap_range * range)1308  static inline bool regmap_reg_in_range(unsigned int reg,
1309  				       const struct regmap_range *range)
1310  {
1311  	return reg >= range->range_min && reg <= range->range_max;
1312  }
1313  
1314  bool regmap_reg_in_ranges(unsigned int reg,
1315  			  const struct regmap_range *ranges,
1316  			  unsigned int nranges);
1317  
regmap_set_bits(struct regmap * map,unsigned int reg,unsigned int bits)1318  static inline int regmap_set_bits(struct regmap *map,
1319  				  unsigned int reg, unsigned int bits)
1320  {
1321  	return regmap_update_bits_base(map, reg, bits, bits,
1322  				       NULL, false, false);
1323  }
1324  
regmap_clear_bits(struct regmap * map,unsigned int reg,unsigned int bits)1325  static inline int regmap_clear_bits(struct regmap *map,
1326  				    unsigned int reg, unsigned int bits)
1327  {
1328  	return regmap_update_bits_base(map, reg, bits, 0, NULL, false, false);
1329  }
1330  
1331  int regmap_test_bits(struct regmap *map, unsigned int reg, unsigned int bits);
1332  
1333  /**
1334   * struct reg_field - Description of an register field
1335   *
1336   * @reg: Offset of the register within the regmap bank
1337   * @lsb: lsb of the register field.
1338   * @msb: msb of the register field.
1339   * @id_size: port size if it has some ports
1340   * @id_offset: address offset for each ports
1341   */
1342  struct reg_field {
1343  	unsigned int reg;
1344  	unsigned int lsb;
1345  	unsigned int msb;
1346  	unsigned int id_size;
1347  	unsigned int id_offset;
1348  };
1349  
1350  #define REG_FIELD(_reg, _lsb, _msb) {		\
1351  				.reg = _reg,	\
1352  				.lsb = _lsb,	\
1353  				.msb = _msb,	\
1354  				}
1355  
1356  #define REG_FIELD_ID(_reg, _lsb, _msb, _size, _offset) {	\
1357  				.reg = _reg,			\
1358  				.lsb = _lsb,			\
1359  				.msb = _msb,			\
1360  				.id_size = _size,		\
1361  				.id_offset = _offset,		\
1362  				}
1363  
1364  struct regmap_field *regmap_field_alloc(struct regmap *regmap,
1365  		struct reg_field reg_field);
1366  void regmap_field_free(struct regmap_field *field);
1367  
1368  struct regmap_field *devm_regmap_field_alloc(struct device *dev,
1369  		struct regmap *regmap, struct reg_field reg_field);
1370  void devm_regmap_field_free(struct device *dev,	struct regmap_field *field);
1371  
1372  int regmap_field_bulk_alloc(struct regmap *regmap,
1373  			     struct regmap_field **rm_field,
1374  			     const struct reg_field *reg_field,
1375  			     int num_fields);
1376  void regmap_field_bulk_free(struct regmap_field *field);
1377  int devm_regmap_field_bulk_alloc(struct device *dev, struct regmap *regmap,
1378  				 struct regmap_field **field,
1379  				 const struct reg_field *reg_field,
1380  				 int num_fields);
1381  void devm_regmap_field_bulk_free(struct device *dev,
1382  				 struct regmap_field *field);
1383  
1384  int regmap_field_read(struct regmap_field *field, unsigned int *val);
1385  int regmap_field_update_bits_base(struct regmap_field *field,
1386  				  unsigned int mask, unsigned int val,
1387  				  bool *change, bool async, bool force);
1388  int regmap_fields_read(struct regmap_field *field, unsigned int id,
1389  		       unsigned int *val);
1390  int regmap_fields_update_bits_base(struct regmap_field *field,  unsigned int id,
1391  				   unsigned int mask, unsigned int val,
1392  				   bool *change, bool async, bool force);
1393  
regmap_field_write(struct regmap_field * field,unsigned int val)1394  static inline int regmap_field_write(struct regmap_field *field,
1395  				     unsigned int val)
1396  {
1397  	return regmap_field_update_bits_base(field, ~0, val,
1398  					     NULL, false, false);
1399  }
1400  
regmap_field_force_write(struct regmap_field * field,unsigned int val)1401  static inline int regmap_field_force_write(struct regmap_field *field,
1402  					   unsigned int val)
1403  {
1404  	return regmap_field_update_bits_base(field, ~0, val, NULL, false, true);
1405  }
1406  
regmap_field_update_bits(struct regmap_field * field,unsigned int mask,unsigned int val)1407  static inline int regmap_field_update_bits(struct regmap_field *field,
1408  					   unsigned int mask, unsigned int val)
1409  {
1410  	return regmap_field_update_bits_base(field, mask, val,
1411  					     NULL, false, false);
1412  }
1413  
regmap_field_set_bits(struct regmap_field * field,unsigned int bits)1414  static inline int regmap_field_set_bits(struct regmap_field *field,
1415  					unsigned int bits)
1416  {
1417  	return regmap_field_update_bits_base(field, bits, bits, NULL, false,
1418  					     false);
1419  }
1420  
regmap_field_clear_bits(struct regmap_field * field,unsigned int bits)1421  static inline int regmap_field_clear_bits(struct regmap_field *field,
1422  					  unsigned int bits)
1423  {
1424  	return regmap_field_update_bits_base(field, bits, 0, NULL, false,
1425  					     false);
1426  }
1427  
1428  int regmap_field_test_bits(struct regmap_field *field, unsigned int bits);
1429  
1430  static inline int
regmap_field_force_update_bits(struct regmap_field * field,unsigned int mask,unsigned int val)1431  regmap_field_force_update_bits(struct regmap_field *field,
1432  			       unsigned int mask, unsigned int val)
1433  {
1434  	return regmap_field_update_bits_base(field, mask, val,
1435  					     NULL, false, true);
1436  }
1437  
regmap_fields_write(struct regmap_field * field,unsigned int id,unsigned int val)1438  static inline int regmap_fields_write(struct regmap_field *field,
1439  				      unsigned int id, unsigned int val)
1440  {
1441  	return regmap_fields_update_bits_base(field, id, ~0, val,
1442  					      NULL, false, false);
1443  }
1444  
regmap_fields_force_write(struct regmap_field * field,unsigned int id,unsigned int val)1445  static inline int regmap_fields_force_write(struct regmap_field *field,
1446  					    unsigned int id, unsigned int val)
1447  {
1448  	return regmap_fields_update_bits_base(field, id, ~0, val,
1449  					      NULL, false, true);
1450  }
1451  
1452  static inline int
regmap_fields_update_bits(struct regmap_field * field,unsigned int id,unsigned int mask,unsigned int val)1453  regmap_fields_update_bits(struct regmap_field *field, unsigned int id,
1454  			  unsigned int mask, unsigned int val)
1455  {
1456  	return regmap_fields_update_bits_base(field, id, mask, val,
1457  					      NULL, false, false);
1458  }
1459  
1460  static inline int
regmap_fields_force_update_bits(struct regmap_field * field,unsigned int id,unsigned int mask,unsigned int val)1461  regmap_fields_force_update_bits(struct regmap_field *field, unsigned int id,
1462  				unsigned int mask, unsigned int val)
1463  {
1464  	return regmap_fields_update_bits_base(field, id, mask, val,
1465  					      NULL, false, true);
1466  }
1467  
1468  /**
1469   * struct regmap_irq_type - IRQ type definitions.
1470   *
1471   * @type_reg_offset: Offset register for the irq type setting.
1472   * @type_rising_val: Register value to configure RISING type irq.
1473   * @type_falling_val: Register value to configure FALLING type irq.
1474   * @type_level_low_val: Register value to configure LEVEL_LOW type irq.
1475   * @type_level_high_val: Register value to configure LEVEL_HIGH type irq.
1476   * @types_supported: logical OR of IRQ_TYPE_* flags indicating supported types.
1477   */
1478  struct regmap_irq_type {
1479  	unsigned int type_reg_offset;
1480  	unsigned int type_reg_mask;
1481  	unsigned int type_rising_val;
1482  	unsigned int type_falling_val;
1483  	unsigned int type_level_low_val;
1484  	unsigned int type_level_high_val;
1485  	unsigned int types_supported;
1486  };
1487  
1488  /**
1489   * struct regmap_irq - Description of an IRQ for the generic regmap irq_chip.
1490   *
1491   * @reg_offset: Offset of the status/mask register within the bank
1492   * @mask:       Mask used to flag/control the register.
1493   * @type:	IRQ trigger type setting details if supported.
1494   */
1495  struct regmap_irq {
1496  	unsigned int reg_offset;
1497  	unsigned int mask;
1498  	struct regmap_irq_type type;
1499  };
1500  
1501  #define REGMAP_IRQ_REG(_irq, _off, _mask)		\
1502  	[_irq] = { .reg_offset = (_off), .mask = (_mask) }
1503  
1504  #define REGMAP_IRQ_REG_LINE(_id, _reg_bits) \
1505  	[_id] = {				\
1506  		.mask = BIT((_id) % (_reg_bits)),	\
1507  		.reg_offset = (_id) / (_reg_bits),	\
1508  	}
1509  
1510  #define REGMAP_IRQ_MAIN_REG_OFFSET(arr)				\
1511  	{ .num_regs = ARRAY_SIZE((arr)), .offset = &(arr)[0] }
1512  
1513  struct regmap_irq_sub_irq_map {
1514  	unsigned int num_regs;
1515  	unsigned int *offset;
1516  };
1517  
1518  struct regmap_irq_chip_data;
1519  
1520  /**
1521   * struct regmap_irq_chip - Description of a generic regmap irq_chip.
1522   *
1523   * @name:        Descriptive name for IRQ controller.
1524   * @domain_suffix: Name suffix to be appended to end of IRQ domain name. Needed
1525   *		   when multiple regmap-IRQ controllers are created from same
1526   *		   device.
1527   *
1528   * @main_status: Base main status register address. For chips which have
1529   *		 interrupts arranged in separate sub-irq blocks with own IRQ
1530   *		 registers and which have a main IRQ registers indicating
1531   *		 sub-irq blocks with unhandled interrupts. For such chips fill
1532   *		 sub-irq register information in status_base, mask_base and
1533   *		 ack_base.
1534   * @num_main_status_bits: Should be given to chips where number of meaningfull
1535   *			  main status bits differs from num_regs.
1536   * @sub_reg_offsets: arrays of mappings from main register bits to sub irq
1537   *		     registers. First item in array describes the registers
1538   *		     for first main status bit. Second array for second bit etc.
1539   *		     Offset is given as sub register status offset to
1540   *		     status_base. Should contain num_regs arrays.
1541   *		     Can be provided for chips with more complex mapping than
1542   *		     1.st bit to 1.st sub-reg, 2.nd bit to 2.nd sub-reg, ...
1543   * @num_main_regs: Number of 'main status' irq registers for chips which have
1544   *		   main_status set.
1545   *
1546   * @status_base: Base status register address.
1547   * @mask_base:   Base mask register address. Mask bits are set to 1 when an
1548   *               interrupt is masked, 0 when unmasked.
1549   * @unmask_base:  Base unmask register address. Unmask bits are set to 1 when
1550   *                an interrupt is unmasked and 0 when masked.
1551   * @ack_base:    Base ack address. If zero then the chip is clear on read.
1552   *               Using zero value is possible with @use_ack bit.
1553   * @wake_base:   Base address for wake enables.  If zero unsupported.
1554   * @config_base: Base address for IRQ type config regs. If null unsupported.
1555   * @irq_reg_stride:  Stride to use for chips where registers are not contiguous.
1556   * @init_ack_masked: Ack all masked interrupts once during initalization.
1557   * @mask_unmask_non_inverted: Controls mask bit inversion for chips that set
1558   *	both @mask_base and @unmask_base. If false, mask and unmask bits are
1559   *	inverted (which is deprecated behavior); if true, bits will not be
1560   *	inverted and the registers keep their normal behavior. Note that if
1561   *	you use only one of @mask_base or @unmask_base, this flag has no
1562   *	effect and is unnecessary. Any new drivers that set both @mask_base
1563   *	and @unmask_base should set this to true to avoid relying on the
1564   *	deprecated behavior.
1565   * @use_ack:     Use @ack register even if it is zero.
1566   * @ack_invert:  Inverted ack register: cleared bits for ack.
1567   * @clear_ack:  Use this to set 1 and 0 or vice-versa to clear interrupts.
1568   * @status_invert: Inverted status register: cleared bits are active interrupts.
1569   * @wake_invert: Inverted wake register: cleared bits are wake enabled.
1570   * @type_in_mask: Use the mask registers for controlling irq type. Use this if
1571   *		  the hardware provides separate bits for rising/falling edge
1572   *		  or low/high level interrupts and they should be combined into
1573   *		  a single logical interrupt. Use &struct regmap_irq_type data
1574   *		  to define the mask bit for each irq type.
1575   * @clear_on_unmask: For chips with interrupts cleared on read: read the status
1576   *                   registers before unmasking interrupts to clear any bits
1577   *                   set when they were masked.
1578   * @runtime_pm:  Hold a runtime PM lock on the device when accessing it.
1579   * @no_status: No status register: all interrupts assumed generated by device.
1580   *
1581   * @num_regs:    Number of registers in each control bank.
1582   *
1583   * @irqs:        Descriptors for individual IRQs.  Interrupt numbers are
1584   *               assigned based on the index in the array of the interrupt.
1585   * @num_irqs:    Number of descriptors.
1586   * @num_config_bases:	Number of config base registers.
1587   * @num_config_regs:	Number of config registers for each config base register.
1588   *
1589   * @handle_pre_irq:  Driver specific callback to handle interrupt from device
1590   *		     before regmap_irq_handler process the interrupts.
1591   * @handle_post_irq: Driver specific callback to handle interrupt from device
1592   *		     after handling the interrupts in regmap_irq_handler().
1593   * @handle_mask_sync: Callback used to handle IRQ mask syncs. The index will be
1594   *		      in the range [0, num_regs)
1595   * @set_type_config: Callback used for configuring irq types.
1596   * @get_irq_reg: Callback for mapping (base register, index) pairs to register
1597   *		 addresses. The base register will be one of @status_base,
1598   *		 @mask_base, etc., @main_status, or any of @config_base.
1599   *		 The index will be in the range [0, num_main_regs[ for the
1600   *		 main status base, [0, num_config_regs[ for any config
1601   *		 register base, and [0, num_regs[ for any other base.
1602   *		 If unspecified then regmap_irq_get_irq_reg_linear() is used.
1603   * @irq_drv_data:    Driver specific IRQ data which is passed as parameter when
1604   *		     driver specific pre/post interrupt handler is called.
1605   *
1606   * This is not intended to handle every possible interrupt controller, but
1607   * it should handle a substantial proportion of those that are found in the
1608   * wild.
1609   */
1610  struct regmap_irq_chip {
1611  	const char *name;
1612  	const char *domain_suffix;
1613  
1614  	unsigned int main_status;
1615  	unsigned int num_main_status_bits;
1616  	const struct regmap_irq_sub_irq_map *sub_reg_offsets;
1617  	int num_main_regs;
1618  
1619  	unsigned int status_base;
1620  	unsigned int mask_base;
1621  	unsigned int unmask_base;
1622  	unsigned int ack_base;
1623  	unsigned int wake_base;
1624  	const unsigned int *config_base;
1625  	unsigned int irq_reg_stride;
1626  	unsigned int init_ack_masked:1;
1627  	unsigned int mask_unmask_non_inverted:1;
1628  	unsigned int use_ack:1;
1629  	unsigned int ack_invert:1;
1630  	unsigned int clear_ack:1;
1631  	unsigned int status_invert:1;
1632  	unsigned int wake_invert:1;
1633  	unsigned int type_in_mask:1;
1634  	unsigned int clear_on_unmask:1;
1635  	unsigned int runtime_pm:1;
1636  	unsigned int no_status:1;
1637  
1638  	int num_regs;
1639  
1640  	const struct regmap_irq *irqs;
1641  	int num_irqs;
1642  
1643  	int num_config_bases;
1644  	int num_config_regs;
1645  
1646  	int (*handle_pre_irq)(void *irq_drv_data);
1647  	int (*handle_post_irq)(void *irq_drv_data);
1648  	int (*handle_mask_sync)(int index, unsigned int mask_buf_def,
1649  				unsigned int mask_buf, void *irq_drv_data);
1650  	int (*set_type_config)(unsigned int **buf, unsigned int type,
1651  			       const struct regmap_irq *irq_data, int idx,
1652  			       void *irq_drv_data);
1653  	unsigned int (*get_irq_reg)(struct regmap_irq_chip_data *data,
1654  				    unsigned int base, int index);
1655  	void *irq_drv_data;
1656  };
1657  
1658  unsigned int regmap_irq_get_irq_reg_linear(struct regmap_irq_chip_data *data,
1659  					   unsigned int base, int index);
1660  int regmap_irq_set_type_config_simple(unsigned int **buf, unsigned int type,
1661  				      const struct regmap_irq *irq_data,
1662  				      int idx, void *irq_drv_data);
1663  
1664  int regmap_add_irq_chip(struct regmap *map, int irq, int irq_flags,
1665  			int irq_base, const struct regmap_irq_chip *chip,
1666  			struct regmap_irq_chip_data **data);
1667  int regmap_add_irq_chip_fwnode(struct fwnode_handle *fwnode,
1668  			       struct regmap *map, int irq,
1669  			       int irq_flags, int irq_base,
1670  			       const struct regmap_irq_chip *chip,
1671  			       struct regmap_irq_chip_data **data);
1672  void regmap_del_irq_chip(int irq, struct regmap_irq_chip_data *data);
1673  
1674  int devm_regmap_add_irq_chip(struct device *dev, struct regmap *map, int irq,
1675  			     int irq_flags, int irq_base,
1676  			     const struct regmap_irq_chip *chip,
1677  			     struct regmap_irq_chip_data **data);
1678  int devm_regmap_add_irq_chip_fwnode(struct device *dev,
1679  				    struct fwnode_handle *fwnode,
1680  				    struct regmap *map, int irq,
1681  				    int irq_flags, int irq_base,
1682  				    const struct regmap_irq_chip *chip,
1683  				    struct regmap_irq_chip_data **data);
1684  void devm_regmap_del_irq_chip(struct device *dev, int irq,
1685  			      struct regmap_irq_chip_data *data);
1686  
1687  int regmap_irq_chip_get_base(struct regmap_irq_chip_data *data);
1688  int regmap_irq_get_virq(struct regmap_irq_chip_data *data, int irq);
1689  struct irq_domain *regmap_irq_get_domain(struct regmap_irq_chip_data *data);
1690  
1691  #else
1692  
1693  /*
1694   * These stubs should only ever be called by generic code which has
1695   * regmap based facilities, if they ever get called at runtime
1696   * something is going wrong and something probably needs to select
1697   * REGMAP.
1698   */
1699  
regmap_write(struct regmap * map,unsigned int reg,unsigned int val)1700  static inline int regmap_write(struct regmap *map, unsigned int reg,
1701  			       unsigned int val)
1702  {
1703  	WARN_ONCE(1, "regmap API is disabled");
1704  	return -EINVAL;
1705  }
1706  
regmap_write_async(struct regmap * map,unsigned int reg,unsigned int val)1707  static inline int regmap_write_async(struct regmap *map, unsigned int reg,
1708  				     unsigned int val)
1709  {
1710  	WARN_ONCE(1, "regmap API is disabled");
1711  	return -EINVAL;
1712  }
1713  
regmap_raw_write(struct regmap * map,unsigned int reg,const void * val,size_t val_len)1714  static inline int regmap_raw_write(struct regmap *map, unsigned int reg,
1715  				   const void *val, size_t val_len)
1716  {
1717  	WARN_ONCE(1, "regmap API is disabled");
1718  	return -EINVAL;
1719  }
1720  
regmap_raw_write_async(struct regmap * map,unsigned int reg,const void * val,size_t val_len)1721  static inline int regmap_raw_write_async(struct regmap *map, unsigned int reg,
1722  					 const void *val, size_t val_len)
1723  {
1724  	WARN_ONCE(1, "regmap API is disabled");
1725  	return -EINVAL;
1726  }
1727  
regmap_noinc_write(struct regmap * map,unsigned int reg,const void * val,size_t val_len)1728  static inline int regmap_noinc_write(struct regmap *map, unsigned int reg,
1729  				    const void *val, size_t val_len)
1730  {
1731  	WARN_ONCE(1, "regmap API is disabled");
1732  	return -EINVAL;
1733  }
1734  
regmap_bulk_write(struct regmap * map,unsigned int reg,const void * val,size_t val_count)1735  static inline int regmap_bulk_write(struct regmap *map, unsigned int reg,
1736  				    const void *val, size_t val_count)
1737  {
1738  	WARN_ONCE(1, "regmap API is disabled");
1739  	return -EINVAL;
1740  }
1741  
regmap_read(struct regmap * map,unsigned int reg,unsigned int * val)1742  static inline int regmap_read(struct regmap *map, unsigned int reg,
1743  			      unsigned int *val)
1744  {
1745  	WARN_ONCE(1, "regmap API is disabled");
1746  	return -EINVAL;
1747  }
1748  
regmap_read_bypassed(struct regmap * map,unsigned int reg,unsigned int * val)1749  static inline int regmap_read_bypassed(struct regmap *map, unsigned int reg,
1750  				       unsigned int *val)
1751  {
1752  	WARN_ONCE(1, "regmap API is disabled");
1753  	return -EINVAL;
1754  }
1755  
regmap_raw_read(struct regmap * map,unsigned int reg,void * val,size_t val_len)1756  static inline int regmap_raw_read(struct regmap *map, unsigned int reg,
1757  				  void *val, size_t val_len)
1758  {
1759  	WARN_ONCE(1, "regmap API is disabled");
1760  	return -EINVAL;
1761  }
1762  
regmap_noinc_read(struct regmap * map,unsigned int reg,void * val,size_t val_len)1763  static inline int regmap_noinc_read(struct regmap *map, unsigned int reg,
1764  				    void *val, size_t val_len)
1765  {
1766  	WARN_ONCE(1, "regmap API is disabled");
1767  	return -EINVAL;
1768  }
1769  
regmap_bulk_read(struct regmap * map,unsigned int reg,void * val,size_t val_count)1770  static inline int regmap_bulk_read(struct regmap *map, unsigned int reg,
1771  				   void *val, size_t val_count)
1772  {
1773  	WARN_ONCE(1, "regmap API is disabled");
1774  	return -EINVAL;
1775  }
1776  
regmap_update_bits_base(struct regmap * map,unsigned int reg,unsigned int mask,unsigned int val,bool * change,bool async,bool force)1777  static inline int regmap_update_bits_base(struct regmap *map, unsigned int reg,
1778  					  unsigned int mask, unsigned int val,
1779  					  bool *change, bool async, bool force)
1780  {
1781  	WARN_ONCE(1, "regmap API is disabled");
1782  	return -EINVAL;
1783  }
1784  
regmap_set_bits(struct regmap * map,unsigned int reg,unsigned int bits)1785  static inline int regmap_set_bits(struct regmap *map,
1786  				  unsigned int reg, unsigned int bits)
1787  {
1788  	WARN_ONCE(1, "regmap API is disabled");
1789  	return -EINVAL;
1790  }
1791  
regmap_clear_bits(struct regmap * map,unsigned int reg,unsigned int bits)1792  static inline int regmap_clear_bits(struct regmap *map,
1793  				    unsigned int reg, unsigned int bits)
1794  {
1795  	WARN_ONCE(1, "regmap API is disabled");
1796  	return -EINVAL;
1797  }
1798  
regmap_test_bits(struct regmap * map,unsigned int reg,unsigned int bits)1799  static inline int regmap_test_bits(struct regmap *map,
1800  				   unsigned int reg, unsigned int bits)
1801  {
1802  	WARN_ONCE(1, "regmap API is disabled");
1803  	return -EINVAL;
1804  }
1805  
regmap_field_update_bits_base(struct regmap_field * field,unsigned int mask,unsigned int val,bool * change,bool async,bool force)1806  static inline int regmap_field_update_bits_base(struct regmap_field *field,
1807  					unsigned int mask, unsigned int val,
1808  					bool *change, bool async, bool force)
1809  {
1810  	WARN_ONCE(1, "regmap API is disabled");
1811  	return -EINVAL;
1812  }
1813  
regmap_fields_update_bits_base(struct regmap_field * field,unsigned int id,unsigned int mask,unsigned int val,bool * change,bool async,bool force)1814  static inline int regmap_fields_update_bits_base(struct regmap_field *field,
1815  				   unsigned int id,
1816  				   unsigned int mask, unsigned int val,
1817  				   bool *change, bool async, bool force)
1818  {
1819  	WARN_ONCE(1, "regmap API is disabled");
1820  	return -EINVAL;
1821  }
1822  
regmap_update_bits(struct regmap * map,unsigned int reg,unsigned int mask,unsigned int val)1823  static inline int regmap_update_bits(struct regmap *map, unsigned int reg,
1824  				     unsigned int mask, unsigned int val)
1825  {
1826  	WARN_ONCE(1, "regmap API is disabled");
1827  	return -EINVAL;
1828  }
1829  
regmap_update_bits_async(struct regmap * map,unsigned int reg,unsigned int mask,unsigned int val)1830  static inline int regmap_update_bits_async(struct regmap *map, unsigned int reg,
1831  					   unsigned int mask, unsigned int val)
1832  {
1833  	WARN_ONCE(1, "regmap API is disabled");
1834  	return -EINVAL;
1835  }
1836  
regmap_update_bits_check(struct regmap * map,unsigned int reg,unsigned int mask,unsigned int val,bool * change)1837  static inline int regmap_update_bits_check(struct regmap *map, unsigned int reg,
1838  					   unsigned int mask, unsigned int val,
1839  					   bool *change)
1840  {
1841  	WARN_ONCE(1, "regmap API is disabled");
1842  	return -EINVAL;
1843  }
1844  
1845  static inline int
regmap_update_bits_check_async(struct regmap * map,unsigned int reg,unsigned int mask,unsigned int val,bool * change)1846  regmap_update_bits_check_async(struct regmap *map, unsigned int reg,
1847  			       unsigned int mask, unsigned int val,
1848  			       bool *change)
1849  {
1850  	WARN_ONCE(1, "regmap API is disabled");
1851  	return -EINVAL;
1852  }
1853  
regmap_write_bits(struct regmap * map,unsigned int reg,unsigned int mask,unsigned int val)1854  static inline int regmap_write_bits(struct regmap *map, unsigned int reg,
1855  				    unsigned int mask, unsigned int val)
1856  {
1857  	WARN_ONCE(1, "regmap API is disabled");
1858  	return -EINVAL;
1859  }
1860  
regmap_field_write(struct regmap_field * field,unsigned int val)1861  static inline int regmap_field_write(struct regmap_field *field,
1862  				     unsigned int val)
1863  {
1864  	WARN_ONCE(1, "regmap API is disabled");
1865  	return -EINVAL;
1866  }
1867  
regmap_field_force_write(struct regmap_field * field,unsigned int val)1868  static inline int regmap_field_force_write(struct regmap_field *field,
1869  					   unsigned int val)
1870  {
1871  	WARN_ONCE(1, "regmap API is disabled");
1872  	return -EINVAL;
1873  }
1874  
regmap_field_update_bits(struct regmap_field * field,unsigned int mask,unsigned int val)1875  static inline int regmap_field_update_bits(struct regmap_field *field,
1876  					   unsigned int mask, unsigned int val)
1877  {
1878  	WARN_ONCE(1, "regmap API is disabled");
1879  	return -EINVAL;
1880  }
1881  
1882  static inline int
regmap_field_force_update_bits(struct regmap_field * field,unsigned int mask,unsigned int val)1883  regmap_field_force_update_bits(struct regmap_field *field,
1884  			       unsigned int mask, unsigned int val)
1885  {
1886  	WARN_ONCE(1, "regmap API is disabled");
1887  	return -EINVAL;
1888  }
1889  
regmap_field_set_bits(struct regmap_field * field,unsigned int bits)1890  static inline int regmap_field_set_bits(struct regmap_field *field,
1891  					unsigned int bits)
1892  {
1893  	WARN_ONCE(1, "regmap API is disabled");
1894  	return -EINVAL;
1895  }
1896  
regmap_field_clear_bits(struct regmap_field * field,unsigned int bits)1897  static inline int regmap_field_clear_bits(struct regmap_field *field,
1898  					  unsigned int bits)
1899  {
1900  	WARN_ONCE(1, "regmap API is disabled");
1901  	return -EINVAL;
1902  }
1903  
regmap_field_test_bits(struct regmap_field * field,unsigned int bits)1904  static inline int regmap_field_test_bits(struct regmap_field *field,
1905  					 unsigned int bits)
1906  {
1907  	WARN_ONCE(1, "regmap API is disabled");
1908  	return -EINVAL;
1909  }
1910  
regmap_fields_write(struct regmap_field * field,unsigned int id,unsigned int val)1911  static inline int regmap_fields_write(struct regmap_field *field,
1912  				      unsigned int id, unsigned int val)
1913  {
1914  	WARN_ONCE(1, "regmap API is disabled");
1915  	return -EINVAL;
1916  }
1917  
regmap_fields_force_write(struct regmap_field * field,unsigned int id,unsigned int val)1918  static inline int regmap_fields_force_write(struct regmap_field *field,
1919  					    unsigned int id, unsigned int val)
1920  {
1921  	WARN_ONCE(1, "regmap API is disabled");
1922  	return -EINVAL;
1923  }
1924  
1925  static inline int
regmap_fields_update_bits(struct regmap_field * field,unsigned int id,unsigned int mask,unsigned int val)1926  regmap_fields_update_bits(struct regmap_field *field, unsigned int id,
1927  			  unsigned int mask, unsigned int val)
1928  {
1929  	WARN_ONCE(1, "regmap API is disabled");
1930  	return -EINVAL;
1931  }
1932  
1933  static inline int
regmap_fields_force_update_bits(struct regmap_field * field,unsigned int id,unsigned int mask,unsigned int val)1934  regmap_fields_force_update_bits(struct regmap_field *field, unsigned int id,
1935  				unsigned int mask, unsigned int val)
1936  {
1937  	WARN_ONCE(1, "regmap API is disabled");
1938  	return -EINVAL;
1939  }
1940  
regmap_get_val_bytes(struct regmap * map)1941  static inline int regmap_get_val_bytes(struct regmap *map)
1942  {
1943  	WARN_ONCE(1, "regmap API is disabled");
1944  	return -EINVAL;
1945  }
1946  
regmap_get_max_register(struct regmap * map)1947  static inline int regmap_get_max_register(struct regmap *map)
1948  {
1949  	WARN_ONCE(1, "regmap API is disabled");
1950  	return -EINVAL;
1951  }
1952  
regmap_get_reg_stride(struct regmap * map)1953  static inline int regmap_get_reg_stride(struct regmap *map)
1954  {
1955  	WARN_ONCE(1, "regmap API is disabled");
1956  	return -EINVAL;
1957  }
1958  
regmap_might_sleep(struct regmap * map)1959  static inline bool regmap_might_sleep(struct regmap *map)
1960  {
1961  	WARN_ONCE(1, "regmap API is disabled");
1962  	return true;
1963  }
1964  
regcache_sync(struct regmap * map)1965  static inline int regcache_sync(struct regmap *map)
1966  {
1967  	WARN_ONCE(1, "regmap API is disabled");
1968  	return -EINVAL;
1969  }
1970  
regcache_sync_region(struct regmap * map,unsigned int min,unsigned int max)1971  static inline int regcache_sync_region(struct regmap *map, unsigned int min,
1972  				       unsigned int max)
1973  {
1974  	WARN_ONCE(1, "regmap API is disabled");
1975  	return -EINVAL;
1976  }
1977  
regcache_drop_region(struct regmap * map,unsigned int min,unsigned int max)1978  static inline int regcache_drop_region(struct regmap *map, unsigned int min,
1979  				       unsigned int max)
1980  {
1981  	WARN_ONCE(1, "regmap API is disabled");
1982  	return -EINVAL;
1983  }
1984  
regcache_cache_only(struct regmap * map,bool enable)1985  static inline void regcache_cache_only(struct regmap *map, bool enable)
1986  {
1987  	WARN_ONCE(1, "regmap API is disabled");
1988  }
1989  
regcache_cache_bypass(struct regmap * map,bool enable)1990  static inline void regcache_cache_bypass(struct regmap *map, bool enable)
1991  {
1992  	WARN_ONCE(1, "regmap API is disabled");
1993  }
1994  
regcache_mark_dirty(struct regmap * map)1995  static inline void regcache_mark_dirty(struct regmap *map)
1996  {
1997  	WARN_ONCE(1, "regmap API is disabled");
1998  }
1999  
regmap_async_complete(struct regmap * map)2000  static inline void regmap_async_complete(struct regmap *map)
2001  {
2002  	WARN_ONCE(1, "regmap API is disabled");
2003  }
2004  
regmap_register_patch(struct regmap * map,const struct reg_sequence * regs,int num_regs)2005  static inline int regmap_register_patch(struct regmap *map,
2006  					const struct reg_sequence *regs,
2007  					int num_regs)
2008  {
2009  	WARN_ONCE(1, "regmap API is disabled");
2010  	return -EINVAL;
2011  }
2012  
regmap_parse_val(struct regmap * map,const void * buf,unsigned int * val)2013  static inline int regmap_parse_val(struct regmap *map, const void *buf,
2014  				unsigned int *val)
2015  {
2016  	WARN_ONCE(1, "regmap API is disabled");
2017  	return -EINVAL;
2018  }
2019  
dev_get_regmap(struct device * dev,const char * name)2020  static inline struct regmap *dev_get_regmap(struct device *dev,
2021  					    const char *name)
2022  {
2023  	return NULL;
2024  }
2025  
regmap_get_device(struct regmap * map)2026  static inline struct device *regmap_get_device(struct regmap *map)
2027  {
2028  	WARN_ONCE(1, "regmap API is disabled");
2029  	return NULL;
2030  }
2031  
2032  #endif
2033  
2034  #endif
2035