mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-22 23:12:32 +00:00
58acb1dd2c
This adds a bunch of patches for the v6.1 Gemini kernel. For v5.15 this was down to a single upstream patch, but for kernel v6.2 I reworked the USB code for FOTG210, so instead of carrying over the half-baked and incomplete patch from v5.15 I just backported all the v6.2 patches, 31 in total, as it creates full device USB mode for e.g. D-Link DNS-313. Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
70 lines
2.2 KiB
Diff
70 lines
2.2 KiB
Diff
From eda686d41e298a9d16708d2ec8d12d8e682dd7ca Mon Sep 17 00:00:00 2001
|
|
From: Linus Walleij <linus.walleij@linaro.org>
|
|
Date: Mon, 14 Nov 2022 12:52:01 +0100
|
|
Subject: [PATCH 11/29] fotg210-udc: Get IRQ using platform_get_irq()
|
|
|
|
The platform_get_irq() is necessary to use to get dynamic
|
|
IRQ resolution when instantiating the device from the
|
|
device tree. IRQs are not passed as resources in that
|
|
case.
|
|
|
|
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
|
|
Link: https://lore.kernel.org/r/20221114115201.302887-4-linus.walleij@linaro.org
|
|
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
|
---
|
|
--- a/drivers/usb/fotg210/fotg210-udc.c
|
|
+++ b/drivers/usb/fotg210/fotg210-udc.c
|
|
@@ -1157,10 +1157,11 @@ int fotg210_udc_remove(struct platform_d
|
|
|
|
int fotg210_udc_probe(struct platform_device *pdev)
|
|
{
|
|
- struct resource *res, *ires;
|
|
+ struct resource *res;
|
|
struct fotg210_udc *fotg210 = NULL;
|
|
struct fotg210_ep *_ep[FOTG210_MAX_NUM_EP];
|
|
struct device *dev = &pdev->dev;
|
|
+ int irq;
|
|
int ret = 0;
|
|
int i;
|
|
|
|
@@ -1170,9 +1171,9 @@ int fotg210_udc_probe(struct platform_de
|
|
return -ENODEV;
|
|
}
|
|
|
|
- ires = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
|
|
- if (!ires) {
|
|
- pr_err("platform_get_resource IORESOURCE_IRQ error.\n");
|
|
+ irq = platform_get_irq(pdev, 0);
|
|
+ if (irq < 0) {
|
|
+ pr_err("could not get irq\n");
|
|
return -ENODEV;
|
|
}
|
|
|
|
@@ -1202,7 +1203,7 @@ int fotg210_udc_probe(struct platform_de
|
|
goto err;
|
|
}
|
|
|
|
- fotg210->phy = devm_usb_get_phy_by_phandle(dev->parent, "usb-phy", 0);
|
|
+ fotg210->phy = devm_usb_get_phy_by_phandle(dev, "usb-phy", 0);
|
|
if (IS_ERR(fotg210->phy)) {
|
|
ret = PTR_ERR(fotg210->phy);
|
|
if (ret == -EPROBE_DEFER)
|
|
@@ -1282,7 +1283,7 @@ int fotg210_udc_probe(struct platform_de
|
|
|
|
fotg210_disable_unplug(fotg210);
|
|
|
|
- ret = request_irq(ires->start, fotg210_irq, IRQF_SHARED,
|
|
+ ret = request_irq(irq, fotg210_irq, IRQF_SHARED,
|
|
udc_name, fotg210);
|
|
if (ret < 0) {
|
|
dev_err(dev, "request_irq error (%d)\n", ret);
|
|
@@ -1303,7 +1304,7 @@ int fotg210_udc_probe(struct platform_de
|
|
err_add_udc:
|
|
if (!IS_ERR_OR_NULL(fotg210->phy))
|
|
usb_unregister_notifier(fotg210->phy, &fotg210_phy_notifier);
|
|
- free_irq(ires->start, fotg210);
|
|
+ free_irq(irq, fotg210);
|
|
|
|
err_req:
|
|
fotg210_ep_free_request(&fotg210->ep[0]->ep, fotg210->ep0_req);
|