]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
mfd: wcd934x: Add macro for adding new interrupts
authorSrinivas Kandagatla <srinivas.kandagatla@linaro.org>
Mon, 10 May 2021 09:12:38 +0000 (10:12 +0100)
committerLee Jones <lee.jones@linaro.org>
Wed, 2 Jun 2021 09:49:59 +0000 (10:49 +0100)
Currently only two interrupts supported is added in wcd934x interrupt controller,
however if we are adding more interrupts the file will become too much unreadable.

So add a macro to make adding new interrupts easy and also convert existing
slim and soundwire interrupts to use it.
This is in preparation to enable Multi Button Headset Control support on this
codec.

WCD934x supports Multi Button Headset control which enable headset detection
along with headset button detection.

This patch adds interrupts required for MBHC functionality.

Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
drivers/mfd/wcd934x.c

index c274d733b65663972da6a7600dc43ad9122f9a88..53d46fadcf5ac43cf1360e9ccfa1e463dcdf05d2 100644 (file)
 #include <linux/regulator/consumer.h>
 #include <linux/slimbus.h>
 
+#define WCD934X_REGMAP_IRQ_REG(_irq, _off, _mask)              \
+       [_irq] = {                                              \
+               .reg_offset = (_off),                           \
+               .mask = (_mask),                                \
+               .type = {                                       \
+                       .type_reg_offset = (_off),              \
+                       .types_supported = IRQ_TYPE_EDGE_BOTH,  \
+                       .type_reg_mask  = (_mask),              \
+                       .type_level_low_val = (_mask),          \
+                       .type_level_high_val = (_mask),         \
+                       .type_falling_val = 0,                  \
+                       .type_rising_val = 0,                   \
+               },                                              \
+       }
+
 static const struct mfd_cell wcd934x_devices[] = {
        {
                .name = "wcd934x-codec",
@@ -30,32 +45,8 @@ static const struct mfd_cell wcd934x_devices[] = {
 };
 
 static const struct regmap_irq wcd934x_irqs[] = {
-       [WCD934X_IRQ_SLIMBUS] = {
-               .reg_offset = 0,
-               .mask = BIT(0),
-               .type = {
-                       .type_reg_offset = 0,
-                       .types_supported = IRQ_TYPE_EDGE_BOTH,
-                       .type_reg_mask  = BIT(0),
-                       .type_level_low_val = BIT(0),
-                       .type_level_high_val = BIT(0),
-                       .type_falling_val = 0,
-                       .type_rising_val = 0,
-               },
-       },
-       [WCD934X_IRQ_SOUNDWIRE] = {
-               .reg_offset = 2,
-               .mask = BIT(4),
-               .type = {
-                       .type_reg_offset = 2,
-                       .types_supported = IRQ_TYPE_EDGE_BOTH,
-                       .type_reg_mask  = BIT(4),
-                       .type_level_low_val = BIT(4),
-                       .type_level_high_val = BIT(4),
-                       .type_falling_val = 0,
-                       .type_rising_val = 0,
-               },
-       },
+       WCD934X_REGMAP_IRQ_REG(WCD934X_IRQ_SLIMBUS, 0, BIT(0)),
+       WCD934X_REGMAP_IRQ_REG(WCD934X_IRQ_SOUNDWIRE, 2, BIT(4)),
 };
 
 static const struct regmap_irq_chip wcd934x_regmap_irq_chip = {