Loading drivers/mfd/wm8994-irq.c +9 −1 Original line number Original line Diff line number Diff line Loading @@ -21,6 +21,7 @@ #include <linux/regmap.h> #include <linux/regmap.h> #include <linux/mfd/wm8994/core.h> #include <linux/mfd/wm8994/core.h> #include <linux/mfd/wm8994/pdata.h> #include <linux/mfd/wm8994/registers.h> #include <linux/mfd/wm8994/registers.h> #include <linux/delay.h> #include <linux/delay.h> Loading Loading @@ -139,6 +140,8 @@ static struct regmap_irq_chip wm8994_irq_chip = { int wm8994_irq_init(struct wm8994 *wm8994) int wm8994_irq_init(struct wm8994 *wm8994) { { int ret; int ret; unsigned long irqflags; struct wm8994_pdata *pdata = wm8994->dev->platform_data; if (!wm8994->irq) { if (!wm8994->irq) { dev_warn(wm8994->dev, dev_warn(wm8994->dev, Loading @@ -147,8 +150,13 @@ int wm8994_irq_init(struct wm8994 *wm8994) return 0; return 0; } } /* select user or default irq flags */ irqflags = IRQF_TRIGGER_HIGH | IRQF_ONESHOT; if (pdata->irq_flags) irqflags = pdata->irq_flags; ret = regmap_add_irq_chip(wm8994->regmap, wm8994->irq, ret = regmap_add_irq_chip(wm8994->regmap, wm8994->irq, IRQF_TRIGGER_HIGH | IRQF_ONESHOT, irqflags, wm8994->irq_base, &wm8994_irq_chip, wm8994->irq_base, &wm8994_irq_chip, &wm8994->irq_data); &wm8994->irq_data); if (ret != 0) { if (ret != 0) { Loading include/linux/mfd/wm8994/pdata.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -141,6 +141,7 @@ struct wm8994_pdata { struct wm8994_ldo_pdata ldo[WM8994_NUM_LDO]; struct wm8994_ldo_pdata ldo[WM8994_NUM_LDO]; int irq_base; /** Base IRQ number for WM8994, required for IRQs */ int irq_base; /** Base IRQ number for WM8994, required for IRQs */ unsigned long irq_flags; /** user irq flags */ int num_drc_cfgs; int num_drc_cfgs; struct wm8994_drc_cfg *drc_cfgs; struct wm8994_drc_cfg *drc_cfgs; Loading Loading
drivers/mfd/wm8994-irq.c +9 −1 Original line number Original line Diff line number Diff line Loading @@ -21,6 +21,7 @@ #include <linux/regmap.h> #include <linux/regmap.h> #include <linux/mfd/wm8994/core.h> #include <linux/mfd/wm8994/core.h> #include <linux/mfd/wm8994/pdata.h> #include <linux/mfd/wm8994/registers.h> #include <linux/mfd/wm8994/registers.h> #include <linux/delay.h> #include <linux/delay.h> Loading Loading @@ -139,6 +140,8 @@ static struct regmap_irq_chip wm8994_irq_chip = { int wm8994_irq_init(struct wm8994 *wm8994) int wm8994_irq_init(struct wm8994 *wm8994) { { int ret; int ret; unsigned long irqflags; struct wm8994_pdata *pdata = wm8994->dev->platform_data; if (!wm8994->irq) { if (!wm8994->irq) { dev_warn(wm8994->dev, dev_warn(wm8994->dev, Loading @@ -147,8 +150,13 @@ int wm8994_irq_init(struct wm8994 *wm8994) return 0; return 0; } } /* select user or default irq flags */ irqflags = IRQF_TRIGGER_HIGH | IRQF_ONESHOT; if (pdata->irq_flags) irqflags = pdata->irq_flags; ret = regmap_add_irq_chip(wm8994->regmap, wm8994->irq, ret = regmap_add_irq_chip(wm8994->regmap, wm8994->irq, IRQF_TRIGGER_HIGH | IRQF_ONESHOT, irqflags, wm8994->irq_base, &wm8994_irq_chip, wm8994->irq_base, &wm8994_irq_chip, &wm8994->irq_data); &wm8994->irq_data); if (ret != 0) { if (ret != 0) { Loading
include/linux/mfd/wm8994/pdata.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -141,6 +141,7 @@ struct wm8994_pdata { struct wm8994_ldo_pdata ldo[WM8994_NUM_LDO]; struct wm8994_ldo_pdata ldo[WM8994_NUM_LDO]; int irq_base; /** Base IRQ number for WM8994, required for IRQs */ int irq_base; /** Base IRQ number for WM8994, required for IRQs */ unsigned long irq_flags; /** user irq flags */ int num_drc_cfgs; int num_drc_cfgs; struct wm8994_drc_cfg *drc_cfgs; struct wm8994_drc_cfg *drc_cfgs; Loading