mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-23 21:19:04 -04:00
regmap: Updates for v4.4
Quite a few new features for regmap this time, mostly expanding things
around the edges of the existing functionality to cover more devices
rather than thinsg with wide applicability:
- Support for offload of the update_bits() operation to hardware where
devices implement bit level access.
- Support for a few extra operations that need scratch buffers on
fast_io devices where we can't sleep.
- Expanded the feature set of regmap_irq to cope with some extra
register layouts.
- Cleanups to the debugfs code.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQEcBAABAgAGBQJWN6usAAoJECTWi3JdVIfQT7cH/1sNJlpt8s2pu/29LtBN0oMH
ZPPT8p46Xph7lbVMbMWZfgcobtISKMYo8dGDEeIYR1c1DZObErJSDxj5I/g5PxUv
FuJ1kVeJ0L0GJE78sB69LQQUAYXfmbtOnmivok/huNID+wpZbTE7uZjAby4tffuk
Mom2TLSnrm63j/zDnsi4VBAB9w1pQCIp+UiJ8LR8PCglcSHJ/eZLrh53F6BzXRU8
9QseD5YQCh4d3go6QZhVNX8iJEby9ehmtCnzN8zEfpXKpc2T1pCoHEH/BnKnxd16
i35A4RjW0GZfilS1815prjDhHJSbrQiqzyIh7Wua+zll7kCx6K/oLdjUfTIK9L0=
=A8Lm
-----END PGP SIGNATURE-----
Merge tag 'regmap-v4.4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap
Pull regmap updates from Mark Brown:
"Quite a few new features for regmap this time, mostly expanding things
around the edges of the existing functionality to cover more devices
rather than thinsg with wide applicability:
- Support for offload of the update_bits() operation to hardware
where devices implement bit level access.
- Support for a few extra operations that need scratch buffers on
fast_io devices where we can't sleep.
- Expanded the feature set of regmap_irq to cope with some extra
register layouts.
- Cleanups to the debugfs code"
* tag 'regmap-v4.4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap:
regmap: Allow installing custom reg_update_bits function
regmap: debugfs: simplify regmap_reg_ranges_read_file() slightly
regmap: debugfs: use memcpy instead of snprintf
regmap: debugfs: use snprintf return value in regmap_reg_ranges_read_file()
regmap: Add generic macro to define regmap_irq
regmap: debugfs: Remove scratch buffer for register length calculation
regmap: irq: add ack_invert flag for chips using cleared bits as ack
regmap: irq: add support for chips who have separate unmask registers
regmap: Allocate buffers with GFP_ATOMIC when fast_io == true
This commit is contained in:
commit
5062ecdb66
5 changed files with 91 additions and 30 deletions
|
|
@ -296,6 +296,8 @@ typedef int (*regmap_hw_reg_read)(void *context, unsigned int reg,
|
|||
unsigned int *val);
|
||||
typedef int (*regmap_hw_reg_write)(void *context, unsigned int reg,
|
||||
unsigned int val);
|
||||
typedef int (*regmap_hw_reg_update_bits)(void *context, unsigned int reg,
|
||||
unsigned int mask, unsigned int val);
|
||||
typedef struct regmap_async *(*regmap_hw_async_alloc)(void);
|
||||
typedef void (*regmap_hw_free_context)(void *context);
|
||||
|
||||
|
|
@ -335,6 +337,7 @@ struct regmap_bus {
|
|||
regmap_hw_gather_write gather_write;
|
||||
regmap_hw_async_write async_write;
|
||||
regmap_hw_reg_write reg_write;
|
||||
regmap_hw_reg_update_bits reg_update_bits;
|
||||
regmap_hw_read read;
|
||||
regmap_hw_reg_read reg_read;
|
||||
regmap_hw_free_context free_context;
|
||||
|
|
@ -791,6 +794,9 @@ struct regmap_irq {
|
|||
unsigned int mask;
|
||||
};
|
||||
|
||||
#define REGMAP_IRQ_REG(_irq, _off, _mask) \
|
||||
[_irq] = { .reg_offset = (_off), .mask = (_mask) }
|
||||
|
||||
/**
|
||||
* Description of a generic regmap irq_chip. This is not intended to
|
||||
* handle every possible interrupt controller, but it should handle a
|
||||
|
|
@ -800,6 +806,8 @@ struct regmap_irq {
|
|||
*
|
||||
* @status_base: Base status register address.
|
||||
* @mask_base: Base mask register address.
|
||||
* @unmask_base: Base unmask register address. for chips who have
|
||||
* separate mask and unmask registers
|
||||
* @ack_base: Base ack address. If zero then the chip is clear on read.
|
||||
* Using zero value is possible with @use_ack bit.
|
||||
* @wake_base: Base address for wake enables. If zero unsupported.
|
||||
|
|
@ -807,6 +815,7 @@ struct regmap_irq {
|
|||
* @init_ack_masked: Ack all masked interrupts once during initalization.
|
||||
* @mask_invert: Inverted mask register: cleared bits are masked out.
|
||||
* @use_ack: Use @ack register even if it is zero.
|
||||
* @ack_invert: Inverted ack register: cleared bits for ack.
|
||||
* @wake_invert: Inverted wake register: cleared bits are wake enabled.
|
||||
* @runtime_pm: Hold a runtime PM lock on the device when accessing it.
|
||||
*
|
||||
|
|
@ -820,12 +829,14 @@ struct regmap_irq_chip {
|
|||
|
||||
unsigned int status_base;
|
||||
unsigned int mask_base;
|
||||
unsigned int unmask_base;
|
||||
unsigned int ack_base;
|
||||
unsigned int wake_base;
|
||||
unsigned int irq_reg_stride;
|
||||
bool init_ack_masked:1;
|
||||
bool mask_invert:1;
|
||||
bool use_ack:1;
|
||||
bool ack_invert:1;
|
||||
bool wake_invert:1;
|
||||
bool runtime_pm:1;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue