aboutsummaryrefslogtreecommitdiff
path: root/drivers/mfd/hi6421-pmic-core.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/mfd/hi6421-pmic-core.c')
-rw-r--r--drivers/mfd/hi6421-pmic-core.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/mfd/hi6421-pmic-core.c b/drivers/mfd/hi6421-pmic-core.c
index b2d7c4e82bd2..1ef6d4e16172 100644
--- a/drivers/mfd/hi6421-pmic-core.c
+++ b/drivers/mfd/hi6421-pmic-core.c
@@ -107,7 +107,7 @@ EXPORT_SYMBOL(hi6421_pmic_rmw);
static int hi6421_to_irq(struct hi6421_pmic *pmic, unsigned offset)
{
- return irq_create_mapping(pmic->domain, offset);
+ return irq_find_mapping(pmic->domain, offset);
}
static irqreturn_t hi6421_irq_handler(int irq, void *data)
@@ -196,7 +196,7 @@ static int hi6421_pmic_probe(struct platform_device *pdev)
struct device_node *np = dev->of_node;
struct hi6421_pmic *pmic = NULL;
enum of_gpio_flags flags;
- int ret;
+ int i, ret;
pmic = devm_kzalloc(dev, sizeof(*pmic), GFP_KERNEL);
if (!pmic) {
@@ -253,6 +253,14 @@ static int hi6421_pmic_probe(struct platform_device *pdev)
if (!pmic->domain)
return -ENODEV;
+ for (i = 0; i < HI6421_NR_IRQ; i++) {
+ ret = irq_create_mapping(pmic->domain, i);
+ if (ret == NO_IRQ) {
+ dev_err(dev, "failed mapping hwirq %d\n", i);
+ return -ENOMEM;
+ }
+ }
+
ret = request_threaded_irq(pmic->irq, hi6421_irq_handler, NULL,
IRQF_TRIGGER_LOW | IRQF_TRIGGER_FALLING | IRQF_NO_SUSPEND,
"pmic", pmic);