Skip to content

Commit a382d56

Browse files
prabhakarladkrzk
authored andcommitted
pinctrl: samsung: Use platform_get_irq_optional() to get the interrupt
platform_get_resource(pdev, IORESOURCE_IRQ, ..) relies on static allocation of IRQ resources in DT core code, this causes an issue when using hierarchical interrupt domains using "interrupts" property in the node as this bypasses the hierarchical setup and messes up the irq chaining. In preparation for removal of static setup of IRQ resource from DT core code use platform_get_irq_optional(). Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com> Link: https://lore.kernel.org/r/20211224145748.18754-2-prabhakar.mahadev-lad.rj@bp.renesas.com Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
1 parent 16dd3bb commit a382d56

1 file changed

Lines changed: 5 additions & 4 deletions

File tree

drivers/pinctrl/samsung/pinctrl-samsung.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1095,7 +1095,6 @@ static int samsung_pinctrl_probe(struct platform_device *pdev)
10951095
struct samsung_pinctrl_drv_data *drvdata;
10961096
const struct samsung_pin_ctrl *ctrl;
10971097
struct device *dev = &pdev->dev;
1098-
struct resource *res;
10991098
int ret;
11001099

11011100
drvdata = devm_kzalloc(dev, sizeof(*drvdata), GFP_KERNEL);
@@ -1109,9 +1108,11 @@ static int samsung_pinctrl_probe(struct platform_device *pdev)
11091108
}
11101109
drvdata->dev = dev;
11111110

1112-
res = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
1113-
if (res)
1114-
drvdata->irq = res->start;
1111+
ret = platform_get_irq_optional(pdev, 0);
1112+
if (ret < 0 && ret != -ENXIO)
1113+
return ret;
1114+
if (ret > 0)
1115+
drvdata->irq = ret;
11151116

11161117
if (ctrl->retention_data) {
11171118
drvdata->retention_ctrl = ctrl->retention_data->init(drvdata,

0 commit comments

Comments
 (0)