[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <87f141bce0a4fda04b550647306be296@walle.cc>
Date: Mon, 27 Apr 2020 19:40:11 +0200
From: Michael Walle <michael@...le.cc>
To: Thomas Gleixner <tglx@...utronix.de>
Cc: Andy Shevchenko <andriy.shevchenko@...ux.intel.com>,
linux-gpio@...r.kernel.org, devicetree@...r.kernel.org,
linux-kernel@...r.kernel.org, linux-hwmon@...r.kernel.org,
linux-pwm@...r.kernel.org, linux-watchdog@...r.kernel.org,
linux-arm-kernel@...ts.infradead.org,
Linus Walleij <linus.walleij@...aro.org>,
Bartosz Golaszewski <bgolaszewski@...libre.com>,
Rob Herring <robh+dt@...nel.org>,
Jean Delvare <jdelvare@...e.com>,
Guenter Roeck <linux@...ck-us.net>,
Lee Jones <lee.jones@...aro.org>,
Thierry Reding <thierry.reding@...il.com>,
Uwe Kleine-König <u.kleine-koenig@...gutronix.de>,
Wim Van Sebroeck <wim@...ux-watchdog.org>,
Shawn Guo <shawnguo@...nel.org>, Li Yang <leoyang.li@....com>,
Jason Cooper <jason@...edaemon.net>,
Marc Zyngier <maz@...nel.org>, Mark Brown <broonie@...nel.org>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>
Subject: Re: [PATCH v3 06/16] irqchip: add sl28cpld interrupt controller
support
Hi Thomas,
thanks for the review.
Am 2020-04-27 13:40, schrieb Thomas Gleixner:
> Michael Walle <michael@...le.cc> writes:
>
>> This patch adds support for the interrupt controller inside the sl28
>
> git grep 'This patch' Documentation/process/
ok.
>
>> CPLD management controller.
>>
>> +static int sl28cpld_intc_probe(struct platform_device *pdev)
>> +{
>> + struct sl28cpld_intc *irqchip;
>> + struct resource *res;
>> + unsigned int irq;
>> + int ret;
>> +
>> + if (!pdev->dev.parent)
>> + return -ENODEV;
>> +
>> + irqchip = devm_kzalloc(&pdev->dev, sizeof(*irqchip), GFP_KERNEL);
>> + if (!irqchip)
>> + return -ENOMEM;
>> +
>> + irqchip->regmap = dev_get_regmap(pdev->dev.parent, NULL);
>> + if (!irqchip->regmap)
>> + return -ENODEV;
>> +
>> + irq = platform_get_irq(pdev, 0);
>> + if (irq < 0)
>> + return irq;
>> +
>> + res = platform_get_resource(pdev, IORESOURCE_REG, 0);
>> + if (!res)
>> + return -EINVAL;
>> +
>> + irqchip->chip.name = "sl28cpld-intc";
>> + irqchip->chip.irqs = sl28cpld_irqs;
>> + irqchip->chip.num_irqs = ARRAY_SIZE(sl28cpld_irqs);
>> + irqchip->chip.num_regs = 1;
>> + irqchip->chip.status_base = res->start + INTC_IP;
>> + irqchip->chip.mask_base = res->start + INTC_IE;
>> + irqchip->chip.mask_invert = true,
>> + irqchip->chip.ack_base = res->start + INTC_IP;
>> +
>> + ret = devm_regmap_add_irq_chip(&pdev->dev, irqchip->regmap, irq,
>> + IRQF_SHARED | IRQF_ONESHOT, 0,
>
> What's the point of IRQF_SHARED | IRQF_ONESHOT here?
IRQF_SHARED because this interrupt is shared with all the blocks
which can generate interrupts, i.e. the GPIO contollers.
IRQF_ONESHOT, because its is a threaded interrupt with no primary
handler. But I just noticed, that regmap-irq will also set the
IRQF_ONESHOT. But that the commit 09cadf6e088b ("regmap-irq:
set IRQF_ONESHOT flag to ensure IRQ request") reads like it is
just there to be sure. So I don't know if it should also be set
here.
-michael
>
>> + &irqchip->chip, &irqchip->irq_data);
>
> Thanks,
>
> tglx
Powered by blists - more mailing lists