1 #ifndef __LINUX_REGMAP_H 2 #define __LINUX_REGMAP_H 3 4 /* 5 * Register map access API 6 * 7 * Copyright 2011 Wolfson Microelectronics plc 8 * 9 * Author: Mark Brown <[email protected]> 10 * 11 * This program is free software; you can redistribute it and/or modify 12 * it under the terms of the GNU General Public License version 2 as 13 * published by the Free Software Foundation. 14 */ 15 16 #include <linux/list.h> 17 #include <linux/rbtree.h> 18 #include <linux/delay.h> 19 #include <linux/err.h> 20 #include <linux/bug.h> 21 #include <linux/lockdep.h> 22 23 struct module; 24 struct device; 25 struct i2c_client; 26 struct irq_domain; 27 struct spi_device; 28 struct spmi_device; 29 struct regmap; 30 struct regmap_range_cfg; 31 struct regmap_field; 32 struct snd_ac97; 33 struct sdw_slave; 34 35 /* An enum of all the supported cache types */ 36 enum regcache_type { 37 REGCACHE_NONE, 38 REGCACHE_RBTREE, 39 REGCACHE_COMPRESSED, 40 REGCACHE_FLAT, 41 }; 42 43 /** 44 * struct reg_default - Default value for a register. 45 * 46 * @reg: Register address. 47 * @def: Register default value. 48 * 49 * We use an array of structs rather than a simple array as many modern devices 50 * have very sparse register maps. 51 */ 52 struct reg_default { 53 unsigned int reg; 54 unsigned int def; 55 }; 56 57 /** 58 * struct reg_sequence - An individual write from a sequence of writes. 59 * 60 * @reg: Register address. 61 * @def: Register value. 62 * @delay_us: Delay to be applied after the register write in microseconds 63 * 64 * Register/value pairs for sequences of writes with an optional delay in 65 * microseconds to be applied after each write. 66 */ 67 struct reg_sequence { 68 unsigned int reg; 69 unsigned int def; 70 unsigned int delay_us; 71 }; 72 73 #define regmap_update_bits(map, reg, mask, val) \ 74 regmap_update_bits_base(map, reg, mask, val, NULL, false, false) 75 #define regmap_update_bits_async(map, reg, mask, val)\ 76 regmap_update_bits_base(map, reg, mask, val, NULL, true, false) 77 #define regmap_update_bits_check(map, reg, mask, val, change)\ 78 regmap_update_bits_base(map, reg, mask, val, change, false, false) 79 #define regmap_update_bits_check_async(map, reg, mask, val, change)\ 80 regmap_update_bits_base(map, reg, mask, val, change, true, false) 81 82 #define regmap_write_bits(map, reg, mask, val) \ 83 regmap_update_bits_base(map, reg, mask, val, NULL, false, true) 84 85 #define regmap_field_write(field, val) \ 86 regmap_field_update_bits_base(field, ~0, val, NULL, false, false) 87 #define regmap_field_force_write(field, val) \ 88 regmap_field_update_bits_base(field, ~0, val, NULL, false, true) 89 #define regmap_field_update_bits(field, mask, val)\ 90 regmap_field_update_bits_base(field, mask, val, NULL, false, false) 91 #define regmap_field_force_update_bits(field, mask, val) \ 92 regmap_field_update_bits_base(field, mask, val, NULL, false, true) 93 94 #define regmap_fields_write(field, id, val) \ 95 regmap_fields_update_bits_base(field, id, ~0, val, NULL, false, false) 96 #define regmap_fields_force_write(field, id, val) \ 97 regmap_fields_update_bits_base(field, id, ~0, val, NULL, false, true) 98 #define regmap_fields_update_bits(field, id, mask, val)\ 99 regmap_fields_update_bits_base(field, id, mask, val, NULL, false, false) 100 #define regmap_fields_force_update_bits(field, id, mask, val) \ 101 regmap_fields_update_bits_base(field, id, mask, val, NULL, false, true) 102 103 /** 104 * regmap_read_poll_timeout - Poll until a condition is met or a timeout occurs 105 * 106 * @map: Regmap to read from 107 * @addr: Address to poll 108 * @val: Unsigned integer variable to read the value into 109 * @cond: Break condition (usually involving @val) 110 * @sleep_us: Maximum time to sleep between reads in us (0 111 * tight-loops). Should be less than ~20ms since usleep_range 112 * is used (see Documentation/timers/timers-howto.txt). 113 * @timeout_us: Timeout in us, 0 means never timeout 114 * 115 * Returns 0 on success and -ETIMEDOUT upon a timeout or the regmap_read 116 * error return value in case of a error read. In the two former cases, 117 * the last read value at @addr is stored in @val. Must not be called 118 * from atomic context if sleep_us or timeout_us are used. 119 * 120 * This is modelled after the readx_poll_timeout macros in linux/iopoll.h. 121 */ 122 #define regmap_read_poll_timeout(map, addr, val, cond, sleep_us, timeout_us) \ 123 ({ \ 124 u64 __timeout_us = (timeout_us); \ 125 unsigned long __sleep_us = (sleep_us); \ 126 ktime_t __timeout = ktime_add_us(ktime_get(), __timeout_us); \ 127 int __ret; \ 128 might_sleep_if(__sleep_us); \ 129 for (;;) { \ 130 __ret = regmap_read((map), (addr), &(val)); \ 131 if (__ret) \ 132 break; \ 133 if (cond) \ 134 break; \ 135 if ((__timeout_us) && \ 136 ktime_compare(ktime_get(), __timeout) > 0) { \ 137 __ret = regmap_read((map), (addr), &(val)); \ 138 break; \ 139 } \ 140 if (__sleep_us) \ 141 usleep_range((__sleep_us >> 2) + 1, __sleep_us); \ 142 } \ 143 __ret ?: ((cond) ? 0 : -ETIMEDOUT); \ 144 }) 145 146 /** 147 * regmap_field_read_poll_timeout - Poll until a condition is met or timeout 148 * 149 * @field: Regmap field to read from 150 * @val: Unsigned integer variable to read the value into 151 * @cond: Break condition (usually involving @val) 152 * @sleep_us: Maximum time to sleep between reads in us (0 153 * tight-loops). Should be less than ~20ms since usleep_range 154 * is used (see Documentation/timers/timers-howto.txt). 155 * @timeout_us: Timeout in us, 0 means never timeout 156 * 157 * Returns 0 on success and -ETIMEDOUT upon a timeout or the regmap_field_read 158 * error return value in case of a error read. In the two former cases, 159 * the last read value at @addr is stored in @val. Must not be called 160 * from atomic context if sleep_us or timeout_us are used. 161 * 162 * This is modelled after the readx_poll_timeout macros in linux/iopoll.h. 163 */ 164 #define regmap_field_read_poll_timeout(field, val, cond, sleep_us, timeout_us) \ 165 ({ \ 166 u64 __timeout_us = (timeout_us); \ 167 unsigned long __sleep_us = (sleep_us); \ 168 ktime_t timeout = ktime_add_us(ktime_get(), __timeout_us); \ 169 int pollret; \ 170 might_sleep_if(__sleep_us); \ 171 for (;;) { \ 172 pollret = regmap_field_read((field), &(val)); \ 173 if (pollret) \ 174 break; \ 175 if (cond) \ 176 break; \ 177 if (__timeout_us && ktime_compare(ktime_get(), timeout) > 0) { \ 178 pollret = regmap_field_read((field), &(val)); \ 179 break; \ 180 } \ 181 if (__sleep_us) \ 182 usleep_range((__sleep_us >> 2) + 1, __sleep_us); \ 183 } \ 184 pollret ?: ((cond) ? 0 : -ETIMEDOUT); \ 185 }) 186 187 #ifdef CONFIG_REGMAP 188 189 enum regmap_endian { 190 /* Unspecified -> 0 -> Backwards compatible default */ 191 REGMAP_ENDIAN_DEFAULT = 0, 192 REGMAP_ENDIAN_BIG, 193 REGMAP_ENDIAN_LITTLE, 194 REGMAP_ENDIAN_NATIVE, 195 }; 196 197 /** 198 * struct regmap_range - A register range, used for access related checks 199 * (readable/writeable/volatile/precious checks) 200 * 201 * @range_min: address of first register 202 * @range_max: address of last register 203 */ 204 struct regmap_range { 205 unsigned int range_min; 206 unsigned int range_max; 207 }; 208 209 #define regmap_reg_range(low, high) { .range_min = low, .range_max = high, } 210 211 /** 212 * struct regmap_access_table - A table of register ranges for access checks 213 * 214 * @yes_ranges : pointer to an array of regmap ranges used as "yes ranges" 215 * @n_yes_ranges: size of the above array 216 * @no_ranges: pointer to an array of regmap ranges used as "no ranges" 217 * @n_no_ranges: size of the above array 218 * 219 * A table of ranges including some yes ranges and some no ranges. 220 * If a register belongs to a no_range, the corresponding check function 221 * will return false. If a register belongs to a yes range, the corresponding 222 * check function will return true. "no_ranges" are searched first. 223 */ 224 struct regmap_access_table { 225 const struct regmap_range *yes_ranges; 226 unsigned int n_yes_ranges; 227 const struct regmap_range *no_ranges; 228 unsigned int n_no_ranges; 229 }; 230 231 typedef void (*regmap_lock)(void *); 232 typedef void (*regmap_unlock)(void *); 233 234 /** 235 * struct regmap_config - Configuration for the register map of a device. 236 * 237 * @name: Optional name of the regmap. Useful when a device has multiple 238 * register regions. 239 * 240 * @reg_bits: Number of bits in a register address, mandatory. 241 * @reg_stride: The register address stride. Valid register addresses are a 242 * multiple of this value. If set to 0, a value of 1 will be 243 * used. 244 * @pad_bits: Number of bits of padding between register and value. 245 * @val_bits: Number of bits in a register value, mandatory. 246 * 247 * @writeable_reg: Optional callback returning true if the register 248 * can be written to. If this field is NULL but wr_table 249 * (see below) is not, the check is performed on such table 250 * (a register is writeable if it belongs to one of the ranges 251 * specified by wr_table). 252 * @readable_reg: Optional callback returning true if the register 253 * can be read from. If this field is NULL but rd_table 254 * (see below) is not, the check is performed on such table 255 * (a register is readable if it belongs to one of the ranges 256 * specified by rd_table). 257 * @volatile_reg: Optional callback returning true if the register 258 * value can't be cached. If this field is NULL but 259 * volatile_table (see below) is not, the check is performed on 260 * such table (a register is volatile if it belongs to one of 261 * the ranges specified by volatile_table). 262 * @precious_reg: Optional callback returning true if the register 263 * should not be read outside of a call from the driver 264 * (e.g., a clear on read interrupt status register). If this 265 * field is NULL but precious_table (see below) is not, the 266 * check is performed on such table (a register is precious if 267 * it belongs to one of the ranges specified by precious_table). 268 * @disable_locking: This regmap is either protected by external means or 269 * is guaranteed not be be accessed from multiple threads. 270 * Don't use any locking mechanisms. 271 * @lock: Optional lock callback (overrides regmap's default lock 272 * function, based on spinlock or mutex). 273 * @unlock: As above for unlocking. 274 * @lock_arg: this field is passed as the only argument of lock/unlock 275 * functions (ignored in case regular lock/unlock functions 276 * are not overridden). 277 * @reg_read: Optional callback that if filled will be used to perform 278 * all the reads from the registers. Should only be provided for 279 * devices whose read operation cannot be represented as a simple 280 * read operation on a bus such as SPI, I2C, etc. Most of the 281 * devices do not need this. 282 * @reg_write: Same as above for writing. 283 * @fast_io: Register IO is fast. Use a spinlock instead of a mutex 284 * to perform locking. This field is ignored if custom lock/unlock 285 * functions are used (see fields lock/unlock of struct regmap_config). 286 * This field is a duplicate of a similar file in 287 * 'struct regmap_bus' and serves exact same purpose. 288 * Use it only for "no-bus" cases. 289 * @max_register: Optional, specifies the maximum valid register address. 290 * @wr_table: Optional, points to a struct regmap_access_table specifying 291 * valid ranges for write access. 292 * @rd_table: As above, for read access. 293 * @volatile_table: As above, for volatile registers. 294 * @precious_table: As above, for precious registers. 295 * @reg_defaults: Power on reset values for registers (for use with 296 * register cache support). 297 * @num_reg_defaults: Number of elements in reg_defaults. 298 * 299 * @read_flag_mask: Mask to be set in the top bytes of the register when doing 300 * a read. 301 * @write_flag_mask: Mask to be set in the top bytes of the register when doing 302 * a write. If both read_flag_mask and write_flag_mask are 303 * empty and zero_flag_mask is not set the regmap_bus default 304 * masks are used. 305 * @zero_flag_mask: If set, read_flag_mask and write_flag_mask are used even 306 * if they are both empty. 307 * @use_single_rw: If set, converts the bulk read and write operations into 308 * a series of single read and write operations. This is useful 309 * for device that does not support bulk read and write. 310 * @can_multi_write: If set, the device supports the multi write mode of bulk 311 * write operations, if clear multi write requests will be 312 * split into individual write operations 313 * 314 * @cache_type: The actual cache type. 315 * @reg_defaults_raw: Power on reset values for registers (for use with 316 * register cache support). 317 * @num_reg_defaults_raw: Number of elements in reg_defaults_raw. 318 * @reg_format_endian: Endianness for formatted register addresses. If this is 319 * DEFAULT, the @reg_format_endian_default value from the 320 * regmap bus is used. 321 * @val_format_endian: Endianness for formatted register values. If this is 322 * DEFAULT, the @reg_format_endian_default value from the 323 * regmap bus is used. 324 * 325 * @ranges: Array of configuration entries for virtual address ranges. 326 * @num_ranges: Number of range configuration entries. 327 * @use_hwlock: Indicate if a hardware spinlock should be used. 328 * @hwlock_id: Specify the hardware spinlock id. 329 * @hwlock_mode: The hardware spinlock mode, should be HWLOCK_IRQSTATE, 330 * HWLOCK_IRQ or 0. 331 */ 332 struct regmap_config { 333 const char *name; 334 335 int reg_bits; 336 int reg_stride; 337 int pad_bits; 338 int val_bits; 339 340 bool (*writeable_reg)(struct device *dev, unsigned int reg); 341 bool (*readable_reg)(struct device *dev, unsigned int reg); 342 bool (*volatile_reg)(struct device *dev, unsigned int reg); 343 bool (*precious_reg)(struct device *dev, unsigned int reg); 344 345 bool disable_locking; 346 regmap_lock lock; 347 regmap_unlock unlock; 348 void *lock_arg; 349 350 int (*reg_read)(void *context, unsigned int reg, unsigned int *val); 351 int (*reg_write)(void *context, unsigned int reg, unsigned int val); 352 353 bool fast_io; 354 355 unsigned int max_register; 356 const struct regmap_access_table *wr_table; 357 const struct regmap_access_table *rd_table; 358 const struct regmap_access_table *volatile_table; 359 const struct regmap_access_table *precious_table; 360 const struct reg_default *reg_defaults; 361 unsigned int num_reg_defaults; 362 enum regcache_type cache_type; 363 const void *reg_defaults_raw; 364 unsigned int num_reg_defaults_raw; 365 366 unsigned long read_flag_mask; 367 unsigned long write_flag_mask; 368 bool zero_flag_mask; 369 370 bool use_single_rw; 371 bool can_multi_write; 372 373 enum regmap_endian reg_format_endian; 374 enum regmap_endian val_format_endian; 375 376 const struct regmap_range_cfg *ranges; 377 unsigned int num_ranges; 378 379 bool use_hwlock; 380 unsigned int hwlock_id; 381 unsigned int hwlock_mode; 382 }; 383 384 /** 385 * struct regmap_range_cfg - Configuration for indirectly accessed or paged 386 * registers. 387 * 388 * @name: Descriptive name for diagnostics 389 * 390 * @range_min: Address of the lowest register address in virtual range. 391 * @range_max: Address of the highest register in virtual range. 392 * 393 * @selector_reg: Register with selector field. 394 * @selector_mask: Bit shift for selector value. 395 * @selector_shift: Bit mask for selector value. 396 * 397 * @window_start: Address of first (lowest) register in data window. 398 * @window_len: Number of registers in data window. 399 * 400 * Registers, mapped to this virtual range, are accessed in two steps: 401 * 1. page selector register update; 402 * 2. access through data window registers. 403 */ 404 struct regmap_range_cfg { 405 const char *name; 406 407 /* Registers of virtual address range */ 408 unsigned int range_min; 409 unsigned int range_max; 410 411 /* Page selector for indirect addressing */ 412 unsigned int selector_reg; 413 unsigned int selector_mask; 414 int selector_shift; 415 416 /* Data window (per each page) */ 417 unsigned int window_start; 418 unsigned int window_len; 419 }; 420 421 struct regmap_async; 422 423 typedef int (*regmap_hw_write)(void *context, const void *data, 424 size_t count); 425 typedef int (*regmap_hw_gather_write)(void *context, 426 const void *reg, size_t reg_len, 427 const void *val, size_t val_len); 428 typedef int (*regmap_hw_async_write)(void *context, 429 const void *reg, size_t reg_len, 430 const void *val, size_t val_len, 431 struct regmap_async *async); 432 typedef int (*regmap_hw_read)(void *context, 433 const void *reg_buf, size_t reg_size, 434 void *val_buf, size_t val_size); 435 typedef int (*regmap_hw_reg_read)(void *context, unsigned int reg, 436 unsigned int *val); 437 typedef int (*regmap_hw_reg_write)(void *context, unsigned int reg, 438 unsigned int val); 439 typedef int (*regmap_hw_reg_update_bits)(void *context, unsigned int reg, 440 unsigned int mask, unsigned int val); 441 typedef struct regmap_async *(*regmap_hw_async_alloc)(void); 442 typedef void (*regmap_hw_free_context)(void *context); 443 444 /** 445 * struct regmap_bus - Description of a hardware bus for the register map 446 * infrastructure. 447 * 448 * @fast_io: Register IO is fast. Use a spinlock instead of a mutex 449 * to perform locking. This field is ignored if custom lock/unlock 450 * functions are used (see fields lock/unlock of 451 * struct regmap_config). 452 * @write: Write operation. 453 * @gather_write: Write operation with split register/value, return -ENOTSUPP 454 * if not implemented on a given device. 455 * @async_write: Write operation which completes asynchronously, optional and 456 * must serialise with respect to non-async I/O. 457 * @reg_write: Write a single register value to the given register address. This 458 * write operation has to complete when returning from the function. 459 * @reg_update_bits: Update bits operation to be used against volatile 460 * registers, intended for devices supporting some mechanism 461 * for setting clearing bits without having to 462 * read/modify/write. 463 * @read: Read operation. Data is returned in the buffer used to transmit 464 * data. 465 * @reg_read: Read a single register value from a given register address. 466 * @free_context: Free context. 467 * @async_alloc: Allocate a regmap_async() structure. 468 * @read_flag_mask: Mask to be set in the top byte of the register when doing 469 * a read. 470 * @reg_format_endian_default: Default endianness for formatted register 471 * addresses. Used when the regmap_config specifies DEFAULT. If this is 472 * DEFAULT, BIG is assumed. 473 * @val_format_endian_default: Default endianness for formatted register 474 * values. Used when the regmap_config specifies DEFAULT. If this is 475 * DEFAULT, BIG is assumed. 476 * @max_raw_read: Max raw read size that can be used on the bus. 477 * @max_raw_write: Max raw write size that can be used on the bus. 478 */ 479 struct regmap_bus { 480 bool fast_io; 481 regmap_hw_write write; 482 regmap_hw_gather_write gather_write; 483 regmap_hw_async_write async_write; 484 regmap_hw_reg_write reg_write; 485 regmap_hw_reg_update_bits reg_update_bits; 486 regmap_hw_read read; 487 regmap_hw_reg_read reg_read; 488 regmap_hw_free_context free_context; 489 regmap_hw_async_alloc async_alloc; 490 u8 read_flag_mask; 491 enum regmap_endian reg_format_endian_default; 492 enum regmap_endian val_format_endian_default; 493 size_t max_raw_read; 494 size_t max_raw_write; 495 }; 496 497 /* 498 * __regmap_init functions. 499 * 500 * These functions take a lock key and name parameter, and should not be called 501 * directly. Instead, use the regmap_init macros that generate a key and name 502 * for each call. 503 */ 504 struct regmap *__regmap_init(struct device *dev, 505 const struct regmap_bus *bus, 506 void *bus_context, 507 const struct regmap_config *config, 508 struct lock_class_key *lock_key, 509 const char *lock_name); 510 struct regmap *__regmap_init_i2c(struct i2c_client *i2c, 511 const struct regmap_config *config, 512 struct lock_class_key *lock_key, 513 const char *lock_name); 514 struct regmap *__regmap_init_spi(struct spi_device *dev, 515 const struct regmap_config *config, 516 struct lock_class_key *lock_key, 517 const char *lock_name); 518 struct regmap *__regmap_init_spmi_base(struct spmi_device *dev, 519 const struct regmap_config *config, 520 struct lock_class_key *lock_key, 521 const char *lock_name); 522 struct regmap *__regmap_init_spmi_ext(struct spmi_device *dev, 523 const struct regmap_config *config, 524 struct lock_class_key *lock_key, 525 const char *lock_name); 526 struct regmap *__regmap_init_w1(struct device *w1_dev, 527 const struct regmap_config *config, 528 struct lock_class_key *lock_key, 529 const char *lock_name); 530 struct regmap *__regmap_init_mmio_clk(struct device *dev, const char *clk_id, 531 void __iomem *regs, 532 const struct regmap_config *config, 533 struct lock_class_key *lock_key, 534 const char *lock_name); 535 struct regmap *__regmap_init_ac97(struct snd_ac97 *ac97, 536 const struct regmap_config *config, 537 struct lock_class_key *lock_key, 538 const char *lock_name); 539 struct regmap *__regmap_init_sdw(struct sdw_slave *sdw, 540 const struct regmap_config *config, 541 struct lock_class_key *lock_key, 542 const char *lock_name); 543 544 struct regmap *__devm_regmap_init(struct device *dev, 545 const struct regmap_bus *bus, 546 void *bus_context, 547 const struct regmap_config *config, 548 struct lock_class_key *lock_key, 549 const char *lock_name); 550 struct regmap *__devm_regmap_init_i2c(struct i2c_client *i2c, 551 const struct regmap_config *config, 552 struct lock_class_key *lock_key, 553 const char *lock_name); 554 struct regmap *__devm_regmap_init_spi(struct spi_device *dev, 555 const struct regmap_config *config, 556 struct lock_class_key *lock_key, 557 const char *lock_name); 558 struct regmap *__devm_regmap_init_spmi_base(struct spmi_device *dev, 559 const struct regmap_config *config, 560 struct lock_class_key *lock_key, 561 const char *lock_name); 562 struct regmap *__devm_regmap_init_spmi_ext(struct spmi_device *dev, 563 const struct regmap_config *config, 564 struct lock_class_key *lock_key, 565 const char *lock_name); 566 struct regmap *__devm_regmap_init_w1(struct device *w1_dev, 567 const struct regmap_config *config, 568 struct lock_class_key *lock_key, 569 const char *lock_name); 570 struct regmap *__devm_regmap_init_mmio_clk(struct device *dev, 571 const char *clk_id, 572 void __iomem *regs, 573 const struct regmap_config *config, 574 struct lock_class_key *lock_key, 575 const char *lock_name); 576 struct regmap *__devm_regmap_init_ac97(struct snd_ac97 *ac97, 577 const struct regmap_config *config, 578 struct lock_class_key *lock_key, 579 const char *lock_name); 580 struct regmap *__devm_regmap_init_sdw(struct sdw_slave *sdw, 581 const struct regmap_config *config, 582 struct lock_class_key *lock_key, 583 const char *lock_name); 584 585 /* 586 * Wrapper for regmap_init macros to include a unique lockdep key and name 587 * for each call. No-op if CONFIG_LOCKDEP is not set. 588 * 589 * @fn: Real function to call (in the form __[*_]regmap_init[_*]) 590 * @name: Config variable name (#config in the calling macro) 591 **/ 592 #ifdef CONFIG_LOCKDEP 593 #define __regmap_lockdep_wrapper(fn, name, ...) \ 594 ( \ 595 ({ \ 596 static struct lock_class_key _key; \ 597 fn(__VA_ARGS__, &_key, \ 598 KBUILD_BASENAME ":" \ 599 __stringify(__LINE__) ":" \ 600 "(" name ")->lock"); \ 601 }) \ 602 ) 603 #else 604 #define __regmap_lockdep_wrapper(fn, name, ...) fn(__VA_ARGS__, NULL, NULL) 605 #endif 606 607 /** 608 * regmap_init() - Initialise register map 609 * 610 * @dev: Device that will be interacted with 611 * @bus: Bus-specific callbacks to use with device 612 * @bus_context: Data passed to bus-specific callbacks 613 * @config: Configuration for register map 614 * 615 * The return value will be an ERR_PTR() on error or a valid pointer to 616 * a struct regmap. This function should generally not be called 617 * directly, it should be called by bus-specific init functions. 618 */ 619 #define regmap_init(dev, bus, bus_context, config) \ 620 __regmap_lockdep_wrapper(__regmap_init, #config, \ 621 dev, bus, bus_context, config) 622 int regmap_attach_dev(struct device *dev, struct regmap *map, 623 const struct regmap_config *config); 624 625 /** 626 * regmap_init_i2c() - Initialise register map 627 * 628 * @i2c: Device that will be interacted with 629 * @config: Configuration for register map 630 * 631 * The return value will be an ERR_PTR() on error or a valid pointer to 632 * a struct regmap. 633 */ 634 #define regmap_init_i2c(i2c, config) \ 635 __regmap_lockdep_wrapper(__regmap_init_i2c, #config, \ 636 i2c, config) 637 638 /** 639 * regmap_init_spi() - Initialise register map 640 * 641 * @dev: Device that will be interacted with 642 * @config: Configuration for register map 643 * 644 * The return value will be an ERR_PTR() on error or a valid pointer to 645 * a struct regmap. 646 */ 647 #define regmap_init_spi(dev, config) \ 648 __regmap_lockdep_wrapper(__regmap_init_spi, #config, \ 649 dev, config) 650 651 /** 652 * regmap_init_spmi_base() - Create regmap for the Base register space 653 * 654 * @dev: SPMI device that will be interacted with 655 * @config: Configuration for register map 656 * 657 * The return value will be an ERR_PTR() on error or a valid pointer to 658 * a struct regmap. 659 */ 660 #define regmap_init_spmi_base(dev, config) \ 661 __regmap_lockdep_wrapper(__regmap_init_spmi_base, #config, \ 662 dev, config) 663 664 /** 665 * regmap_init_spmi_ext() - Create regmap for Ext register space 666 * 667 * @dev: Device that will be interacted with 668 * @config: Configuration for register map 669 * 670 * The return value will be an ERR_PTR() on error or a valid pointer to 671 * a struct regmap. 672 */ 673 #define regmap_init_spmi_ext(dev, config) \ 674 __regmap_lockdep_wrapper(__regmap_init_spmi_ext, #config, \ 675 dev, config) 676 677 /** 678 * regmap_init_w1() - Initialise register map 679 * 680 * @w1_dev: Device that will be interacted with 681 * @config: Configuration for register map 682 * 683 * The return value will be an ERR_PTR() on error or a valid pointer to 684 * a struct regmap. 685 */ 686 #define regmap_init_w1(w1_dev, config) \ 687 __regmap_lockdep_wrapper(__regmap_init_w1, #config, \ 688 w1_dev, config) 689 690 /** 691 * regmap_init_mmio_clk() - Initialise register map with register clock 692 * 693 * @dev: Device that will be interacted with 694 * @clk_id: register clock consumer ID 695 * @regs: Pointer to memory-mapped IO region 696 * @config: Configuration for register map 697 * 698 * The return value will be an ERR_PTR() on error or a valid pointer to 699 * a struct regmap. 700 */ 701 #define regmap_init_mmio_clk(dev, clk_id, regs, config) \ 702 __regmap_lockdep_wrapper(__regmap_init_mmio_clk, #config, \ 703 dev, clk_id, regs, config) 704 705 /** 706 * regmap_init_mmio() - Initialise register map 707 * 708 * @dev: Device that will be interacted with 709 * @regs: Pointer to memory-mapped IO region 710 * @config: Configuration for register map 711 * 712 * The return value will be an ERR_PTR() on error or a valid pointer to 713 * a struct regmap. 714 */ 715 #define regmap_init_mmio(dev, regs, config) \ 716 regmap_init_mmio_clk(dev, NULL, regs, config) 717 718 /** 719 * regmap_init_ac97() - Initialise AC'97 register map 720 * 721 * @ac97: Device that will be interacted with 722 * @config: Configuration for register map 723 * 724 * The return value will be an ERR_PTR() on error or a valid pointer to 725 * a struct regmap. 726 */ 727 #define regmap_init_ac97(ac97, config) \ 728 __regmap_lockdep_wrapper(__regmap_init_ac97, #config, \ 729 ac97, config) 730 bool regmap_ac97_default_volatile(struct device *dev, unsigned int reg); 731 732 /** 733 * regmap_init_sdw() - Initialise register map 734 * 735 * @sdw: Device that will be interacted with 736 * @config: Configuration for register map 737 * 738 * The return value will be an ERR_PTR() on error or a valid pointer to 739 * a struct regmap. 740 */ 741 #define regmap_init_sdw(sdw, config) \ 742 __regmap_lockdep_wrapper(__regmap_init_sdw, #config, \ 743 sdw, config) 744 745 746 /** 747 * devm_regmap_init() - Initialise managed register map 748 * 749 * @dev: Device that will be interacted with 750 * @bus: Bus-specific callbacks to use with device 751 * @bus_context: Data passed to bus-specific callbacks 752 * @config: Configuration for register map 753 * 754 * The return value will be an ERR_PTR() on error or a valid pointer 755 * to a struct regmap. This function should generally not be called 756 * directly, it should be called by bus-specific init functions. The 757 * map will be automatically freed by the device management code. 758 */ 759 #define devm_regmap_init(dev, bus, bus_context, config) \ 760 __regmap_lockdep_wrapper(__devm_regmap_init, #config, \ 761 dev, bus, bus_context, config) 762 763 /** 764 * devm_regmap_init_i2c() - Initialise managed register map 765 * 766 * @i2c: Device that will be interacted with 767 * @config: Configuration for register map 768 * 769 * The return value will be an ERR_PTR() on error or a valid pointer 770 * to a struct regmap. The regmap will be automatically freed by the 771 * device management code. 772 */ 773 #define devm_regmap_init_i2c(i2c, config) \ 774 __regmap_lockdep_wrapper(__devm_regmap_init_i2c, #config, \ 775 i2c, config) 776 777 /** 778 * devm_regmap_init_spi() - Initialise register map 779 * 780 * @dev: Device that will be interacted with 781 * @config: Configuration for register map 782 * 783 * The return value will be an ERR_PTR() on error or a valid pointer 784 * to a struct regmap. The map will be automatically freed by the 785 * device management code. 786 */ 787 #define devm_regmap_init_spi(dev, config) \ 788 __regmap_lockdep_wrapper(__devm_regmap_init_spi, #config, \ 789 dev, config) 790 791 /** 792 * devm_regmap_init_spmi_base() - Create managed regmap for Base register space 793 * 794 * @dev: SPMI device that will be interacted with 795 * @config: Configuration for register map 796 * 797 * The return value will be an ERR_PTR() on error or a valid pointer 798 * to a struct regmap. The regmap will be automatically freed by the 799 * device management code. 800 */ 801 #define devm_regmap_init_spmi_base(dev, config) \ 802 __regmap_lockdep_wrapper(__devm_regmap_init_spmi_base, #config, \ 803 dev, config) 804 805 /** 806 * devm_regmap_init_spmi_ext() - Create managed regmap for Ext register space 807 * 808 * @dev: SPMI device that will be interacted with 809 * @config: Configuration for register map 810 * 811 * The return value will be an ERR_PTR() on error or a valid pointer 812 * to a struct regmap. The regmap will be automatically freed by the 813 * device management code. 814 */ 815 #define devm_regmap_init_spmi_ext(dev, config) \ 816 __regmap_lockdep_wrapper(__devm_regmap_init_spmi_ext, #config, \ 817 dev, config) 818 819 /** 820 * devm_regmap_init_w1() - Initialise managed register map 821 * 822 * @w1_dev: Device that will be interacted with 823 * @config: Configuration for register map 824 * 825 * The return value will be an ERR_PTR() on error or a valid pointer 826 * to a struct regmap. The regmap will be automatically freed by the 827 * device management code. 828 */ 829 #define devm_regmap_init_w1(w1_dev, config) \ 830 __regmap_lockdep_wrapper(__devm_regmap_init_w1, #config, \ 831 w1_dev, config) 832 /** 833 * devm_regmap_init_mmio_clk() - Initialise managed register map with clock 834 * 835 * @dev: Device that will be interacted with 836 * @clk_id: register clock consumer ID 837 * @regs: Pointer to memory-mapped IO region 838 * @config: Configuration for register map 839 * 840 * The return value will be an ERR_PTR() on error or a valid pointer 841 * to a struct regmap. The regmap will be automatically freed by the 842 * device management code. 843 */ 844 #define devm_regmap_init_mmio_clk(dev, clk_id, regs, config) \ 845 __regmap_lockdep_wrapper(__devm_regmap_init_mmio_clk, #config, \ 846 dev, clk_id, regs, config) 847 848 /** 849 * devm_regmap_init_mmio() - Initialise managed register map 850 * 851 * @dev: Device that will be interacted with 852 * @regs: Pointer to memory-mapped IO region 853 * @config: Configuration for register map 854 * 855 * The return value will be an ERR_PTR() on error or a valid pointer 856 * to a struct regmap. The regmap will be automatically freed by the 857 * device management code. 858 */ 859 #define devm_regmap_init_mmio(dev, regs, config) \ 860 devm_regmap_init_mmio_clk(dev, NULL, regs, config) 861 862 /** 863 * devm_regmap_init_ac97() - Initialise AC'97 register map 864 * 865 * @ac97: Device that will be interacted with 866 * @config: Configuration for register map 867 * 868 * The return value will be an ERR_PTR() on error or a valid pointer 869 * to a struct regmap. The regmap will be automatically freed by the 870 * device management code. 871 */ 872 #define devm_regmap_init_ac97(ac97, config) \ 873 __regmap_lockdep_wrapper(__devm_regmap_init_ac97, #config, \ 874 ac97, config) 875 876 /** 877 * devm_regmap_init_sdw() - Initialise managed register map 878 * 879 * @sdw: Device that will be interacted with 880 * @config: Configuration for register map 881 * 882 * The return value will be an ERR_PTR() on error or a valid pointer 883 * to a struct regmap. The regmap will be automatically freed by the 884 * device management code. 885 */ 886 #define devm_regmap_init_sdw(sdw, config) \ 887 __regmap_lockdep_wrapper(__devm_regmap_init_sdw, #config, \ 888 sdw, config) 889 890 void regmap_exit(struct regmap *map); 891 int regmap_reinit_cache(struct regmap *map, 892 const struct regmap_config *config); 893 struct regmap *dev_get_regmap(struct device *dev, const char *name); 894 struct device *regmap_get_device(struct regmap *map); 895 int regmap_write(struct regmap *map, unsigned int reg, unsigned int val); 896 int regmap_write_async(struct regmap *map, unsigned int reg, unsigned int val); 897 int regmap_raw_write(struct regmap *map, unsigned int reg, 898 const void *val, size_t val_len); 899 int regmap_bulk_write(struct regmap *map, unsigned int reg, const void *val, 900 size_t val_count); 901 int regmap_multi_reg_write(struct regmap *map, const struct reg_sequence *regs, 902 int num_regs); 903 int regmap_multi_reg_write_bypassed(struct regmap *map, 904 const struct reg_sequence *regs, 905 int num_regs); 906 int regmap_raw_write_async(struct regmap *map, unsigned int reg, 907 const void *val, size_t val_len); 908 int regmap_read(struct regmap *map, unsigned int reg, unsigned int *val); 909 int regmap_raw_read(struct regmap *map, unsigned int reg, 910 void *val, size_t val_len); 911 int regmap_bulk_read(struct regmap *map, unsigned int reg, void *val, 912 size_t val_count); 913 int regmap_update_bits_base(struct regmap *map, unsigned int reg, 914 unsigned int mask, unsigned int val, 915 bool *change, bool async, bool force); 916 int regmap_get_val_bytes(struct regmap *map); 917 int regmap_get_max_register(struct regmap *map); 918 int regmap_get_reg_stride(struct regmap *map); 919 int regmap_async_complete(struct regmap *map); 920 bool regmap_can_raw_write(struct regmap *map); 921 size_t regmap_get_raw_read_max(struct regmap *map); 922 size_t regmap_get_raw_write_max(struct regmap *map); 923 924 int regcache_sync(struct regmap *map); 925 int regcache_sync_region(struct regmap *map, unsigned int min, 926 unsigned int max); 927 int regcache_drop_region(struct regmap *map, unsigned int min, 928 unsigned int max); 929 void regcache_cache_only(struct regmap *map, bool enable); 930 void regcache_cache_bypass(struct regmap *map, bool enable); 931 void regcache_mark_dirty(struct regmap *map); 932 933 bool regmap_check_range_table(struct regmap *map, unsigned int reg, 934 const struct regmap_access_table *table); 935 936 int regmap_register_patch(struct regmap *map, const struct reg_sequence *regs, 937 int num_regs); 938 int regmap_parse_val(struct regmap *map, const void *buf, 939 unsigned int *val); 940 941 static inline bool regmap_reg_in_range(unsigned int reg, 942 const struct regmap_range *range) 943 { 944 return reg >= range->range_min && reg <= range->range_max; 945 } 946 947 bool regmap_reg_in_ranges(unsigned int reg, 948 const struct regmap_range *ranges, 949 unsigned int nranges); 950 951 /** 952 * struct reg_field - Description of an register field 953 * 954 * @reg: Offset of the register within the regmap bank 955 * @lsb: lsb of the register field. 956 * @msb: msb of the register field. 957 * @id_size: port size if it has some ports 958 * @id_offset: address offset for each ports 959 */ 960 struct reg_field { 961 unsigned int reg; 962 unsigned int lsb; 963 unsigned int msb; 964 unsigned int id_size; 965 unsigned int id_offset; 966 }; 967 968 #define REG_FIELD(_reg, _lsb, _msb) { \ 969 .reg = _reg, \ 970 .lsb = _lsb, \ 971 .msb = _msb, \ 972 } 973 974 struct regmap_field *regmap_field_alloc(struct regmap *regmap, 975 struct reg_field reg_field); 976 void regmap_field_free(struct regmap_field *field); 977 978 struct regmap_field *devm_regmap_field_alloc(struct device *dev, 979 struct regmap *regmap, struct reg_field reg_field); 980 void devm_regmap_field_free(struct device *dev, struct regmap_field *field); 981 982 int regmap_field_read(struct regmap_field *field, unsigned int *val); 983 int regmap_field_update_bits_base(struct regmap_field *field, 984 unsigned int mask, unsigned int val, 985 bool *change, bool async, bool force); 986 int regmap_fields_read(struct regmap_field *field, unsigned int id, 987 unsigned int *val); 988 int regmap_fields_update_bits_base(struct regmap_field *field, unsigned int id, 989 unsigned int mask, unsigned int val, 990 bool *change, bool async, bool force); 991 992 /** 993 * struct regmap_irq - Description of an IRQ for the generic regmap irq_chip. 994 * 995 * @reg_offset: Offset of the status/mask register within the bank 996 * @mask: Mask used to flag/control the register. 997 * @type_reg_offset: Offset register for the irq type setting. 998 * @type_rising_mask: Mask bit to configure RISING type irq. 999 * @type_falling_mask: Mask bit to configure FALLING type irq. 1000 */ 1001 struct regmap_irq { 1002 unsigned int reg_offset; 1003 unsigned int mask; 1004 unsigned int type_reg_offset; 1005 unsigned int type_rising_mask; 1006 unsigned int type_falling_mask; 1007 }; 1008 1009 #define REGMAP_IRQ_REG(_irq, _off, _mask) \ 1010 [_irq] = { .reg_offset = (_off), .mask = (_mask) } 1011 1012 /** 1013 * struct regmap_irq_chip - Description of a generic regmap irq_chip. 1014 * 1015 * @name: Descriptive name for IRQ controller. 1016 * 1017 * @status_base: Base status register address. 1018 * @mask_base: Base mask register address. 1019 * @mask_writeonly: Base mask register is write only. 1020 * @unmask_base: Base unmask register address. for chips who have 1021 * separate mask and unmask registers 1022 * @ack_base: Base ack address. If zero then the chip is clear on read. 1023 * Using zero value is possible with @use_ack bit. 1024 * @wake_base: Base address for wake enables. If zero unsupported. 1025 * @type_base: Base address for irq type. If zero unsupported. 1026 * @irq_reg_stride: Stride to use for chips where registers are not contiguous. 1027 * @init_ack_masked: Ack all masked interrupts once during initalization. 1028 * @mask_invert: Inverted mask register: cleared bits are masked out. 1029 * @use_ack: Use @ack register even if it is zero. 1030 * @ack_invert: Inverted ack register: cleared bits for ack. 1031 * @wake_invert: Inverted wake register: cleared bits are wake enabled. 1032 * @type_invert: Invert the type flags. 1033 * @runtime_pm: Hold a runtime PM lock on the device when accessing it. 1034 * 1035 * @num_regs: Number of registers in each control bank. 1036 * @irqs: Descriptors for individual IRQs. Interrupt numbers are 1037 * assigned based on the index in the array of the interrupt. 1038 * @num_irqs: Number of descriptors. 1039 * @num_type_reg: Number of type registers. 1040 * @type_reg_stride: Stride to use for chips where type registers are not 1041 * contiguous. 1042 * @handle_pre_irq: Driver specific callback to handle interrupt from device 1043 * before regmap_irq_handler process the interrupts. 1044 * @handle_post_irq: Driver specific callback to handle interrupt from device 1045 * after handling the interrupts in regmap_irq_handler(). 1046 * @irq_drv_data: Driver specific IRQ data which is passed as parameter when 1047 * driver specific pre/post interrupt handler is called. 1048 * 1049 * This is not intended to handle every possible interrupt controller, but 1050 * it should handle a substantial proportion of those that are found in the 1051 * wild. 1052 */ 1053 struct regmap_irq_chip { 1054 const char *name; 1055 1056 unsigned int status_base; 1057 unsigned int mask_base; 1058 unsigned int unmask_base; 1059 unsigned int ack_base; 1060 unsigned int wake_base; 1061 unsigned int type_base; 1062 unsigned int irq_reg_stride; 1063 bool mask_writeonly:1; 1064 bool init_ack_masked:1; 1065 bool mask_invert:1; 1066 bool use_ack:1; 1067 bool ack_invert:1; 1068 bool wake_invert:1; 1069 bool runtime_pm:1; 1070 bool type_invert:1; 1071 1072 int num_regs; 1073 1074 const struct regmap_irq *irqs; 1075 int num_irqs; 1076 1077 int num_type_reg; 1078 unsigned int type_reg_stride; 1079 1080 int (*handle_pre_irq)(void *irq_drv_data); 1081 int (*handle_post_irq)(void *irq_drv_data); 1082 void *irq_drv_data; 1083 }; 1084 1085 struct regmap_irq_chip_data; 1086 1087 int regmap_add_irq_chip(struct regmap *map, int irq, int irq_flags, 1088 int irq_base, const struct regmap_irq_chip *chip, 1089 struct regmap_irq_chip_data **data); 1090 void regmap_del_irq_chip(int irq, struct regmap_irq_chip_data *data); 1091 1092 int devm_regmap_add_irq_chip(struct device *dev, struct regmap *map, int irq, 1093 int irq_flags, int irq_base, 1094 const struct regmap_irq_chip *chip, 1095 struct regmap_irq_chip_data **data); 1096 void devm_regmap_del_irq_chip(struct device *dev, int irq, 1097 struct regmap_irq_chip_data *data); 1098 1099 int regmap_irq_chip_get_base(struct regmap_irq_chip_data *data); 1100 int regmap_irq_get_virq(struct regmap_irq_chip_data *data, int irq); 1101 struct irq_domain *regmap_irq_get_domain(struct regmap_irq_chip_data *data); 1102 1103 #else 1104 1105 /* 1106 * These stubs should only ever be called by generic code which has 1107 * regmap based facilities, if they ever get called at runtime 1108 * something is going wrong and something probably needs to select 1109 * REGMAP. 1110 */ 1111 1112 static inline int regmap_write(struct regmap *map, unsigned int reg, 1113 unsigned int val) 1114 { 1115 WARN_ONCE(1, "regmap API is disabled"); 1116 return -EINVAL; 1117 } 1118 1119 static inline int regmap_write_async(struct regmap *map, unsigned int reg, 1120 unsigned int val) 1121 { 1122 WARN_ONCE(1, "regmap API is disabled"); 1123 return -EINVAL; 1124 } 1125 1126 static inline int regmap_raw_write(struct regmap *map, unsigned int reg, 1127 const void *val, size_t val_len) 1128 { 1129 WARN_ONCE(1, "regmap API is disabled"); 1130 return -EINVAL; 1131 } 1132 1133 static inline int regmap_raw_write_async(struct regmap *map, unsigned int reg, 1134 const void *val, size_t val_len) 1135 { 1136 WARN_ONCE(1, "regmap API is disabled"); 1137 return -EINVAL; 1138 } 1139 1140 static inline int regmap_bulk_write(struct regmap *map, unsigned int reg, 1141 const void *val, size_t val_count) 1142 { 1143 WARN_ONCE(1, "regmap API is disabled"); 1144 return -EINVAL; 1145 } 1146 1147 static inline int regmap_read(struct regmap *map, unsigned int reg, 1148 unsigned int *val) 1149 { 1150 WARN_ONCE(1, "regmap API is disabled"); 1151 return -EINVAL; 1152 } 1153 1154 static inline int regmap_raw_read(struct regmap *map, unsigned int reg, 1155 void *val, size_t val_len) 1156 { 1157 WARN_ONCE(1, "regmap API is disabled"); 1158 return -EINVAL; 1159 } 1160 1161 static inline int regmap_bulk_read(struct regmap *map, unsigned int reg, 1162 void *val, size_t val_count) 1163 { 1164 WARN_ONCE(1, "regmap API is disabled"); 1165 return -EINVAL; 1166 } 1167 1168 static inline int regmap_update_bits_base(struct regmap *map, unsigned int reg, 1169 unsigned int mask, unsigned int val, 1170 bool *change, bool async, bool force) 1171 { 1172 WARN_ONCE(1, "regmap API is disabled"); 1173 return -EINVAL; 1174 } 1175 1176 static inline int regmap_field_update_bits_base(struct regmap_field *field, 1177 unsigned int mask, unsigned int val, 1178 bool *change, bool async, bool force) 1179 { 1180 WARN_ONCE(1, "regmap API is disabled"); 1181 return -EINVAL; 1182 } 1183 1184 static inline int regmap_fields_update_bits_base(struct regmap_field *field, 1185 unsigned int id, 1186 unsigned int mask, unsigned int val, 1187 bool *change, bool async, bool force) 1188 { 1189 WARN_ONCE(1, "regmap API is disabled"); 1190 return -EINVAL; 1191 } 1192 1193 static inline int regmap_get_val_bytes(struct regmap *map) 1194 { 1195 WARN_ONCE(1, "regmap API is disabled"); 1196 return -EINVAL; 1197 } 1198 1199 static inline int regmap_get_max_register(struct regmap *map) 1200 { 1201 WARN_ONCE(1, "regmap API is disabled"); 1202 return -EINVAL; 1203 } 1204 1205 static inline int regmap_get_reg_stride(struct regmap *map) 1206 { 1207 WARN_ONCE(1, "regmap API is disabled"); 1208 return -EINVAL; 1209 } 1210 1211 static inline int regcache_sync(struct regmap *map) 1212 { 1213 WARN_ONCE(1, "regmap API is disabled"); 1214 return -EINVAL; 1215 } 1216 1217 static inline int regcache_sync_region(struct regmap *map, unsigned int min, 1218 unsigned int max) 1219 { 1220 WARN_ONCE(1, "regmap API is disabled"); 1221 return -EINVAL; 1222 } 1223 1224 static inline int regcache_drop_region(struct regmap *map, unsigned int min, 1225 unsigned int max) 1226 { 1227 WARN_ONCE(1, "regmap API is disabled"); 1228 return -EINVAL; 1229 } 1230 1231 static inline void regcache_cache_only(struct regmap *map, bool enable) 1232 { 1233 WARN_ONCE(1, "regmap API is disabled"); 1234 } 1235 1236 static inline void regcache_cache_bypass(struct regmap *map, bool enable) 1237 { 1238 WARN_ONCE(1, "regmap API is disabled"); 1239 } 1240 1241 static inline void regcache_mark_dirty(struct regmap *map) 1242 { 1243 WARN_ONCE(1, "regmap API is disabled"); 1244 } 1245 1246 static inline void regmap_async_complete(struct regmap *map) 1247 { 1248 WARN_ONCE(1, "regmap API is disabled"); 1249 } 1250 1251 static inline int regmap_register_patch(struct regmap *map, 1252 const struct reg_sequence *regs, 1253 int num_regs) 1254 { 1255 WARN_ONCE(1, "regmap API is disabled"); 1256 return -EINVAL; 1257 } 1258 1259 static inline int regmap_parse_val(struct regmap *map, const void *buf, 1260 unsigned int *val) 1261 { 1262 WARN_ONCE(1, "regmap API is disabled"); 1263 return -EINVAL; 1264 } 1265 1266 static inline struct regmap *dev_get_regmap(struct device *dev, 1267 const char *name) 1268 { 1269 return NULL; 1270 } 1271 1272 static inline struct device *regmap_get_device(struct regmap *map) 1273 { 1274 WARN_ONCE(1, "regmap API is disabled"); 1275 return NULL; 1276 } 1277 1278 #endif 1279 1280 #endif 1281