diff options
Diffstat (limited to 'target/linux/gemini/patches-6.1/0010-fotg210-udc-Handle-PCLK.patch')
-rw-r--r-- | target/linux/gemini/patches-6.1/0010-fotg210-udc-Handle-PCLK.patch | 90 |
1 files changed, 0 insertions, 90 deletions
diff --git a/target/linux/gemini/patches-6.1/0010-fotg210-udc-Handle-PCLK.patch b/target/linux/gemini/patches-6.1/0010-fotg210-udc-Handle-PCLK.patch deleted file mode 100644 index 8da3de3b47..0000000000 --- a/target/linux/gemini/patches-6.1/0010-fotg210-udc-Handle-PCLK.patch +++ /dev/null @@ -1,90 +0,0 @@ -From 772ea3ec2b9363b45ef9a4768ea205f758c3debc Mon Sep 17 00:00:00 2001 -From: Linus Walleij <linus.walleij@linaro.org> -Date: Mon, 14 Nov 2022 12:52:00 +0100 -Subject: [PATCH 10/29] fotg210-udc: Handle PCLK - -This adds optional handling of the peripheral clock PCLK. - -Signed-off-by: Linus Walleij <linus.walleij@linaro.org> -Link: https://lore.kernel.org/r/20221114115201.302887-3-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 -@@ -15,6 +15,7 @@ - #include <linux/platform_device.h> - #include <linux/usb/ch9.h> - #include <linux/usb/gadget.h> -+#include <linux/clk.h> - #include <linux/usb/otg.h> - #include <linux/usb/phy.h> - -@@ -1145,6 +1146,10 @@ int fotg210_udc_remove(struct platform_d - fotg210_ep_free_request(&fotg210->ep[0]->ep, fotg210->ep0_req); - for (i = 0; i < FOTG210_MAX_NUM_EP; i++) - kfree(fotg210->ep[i]); -+ -+ if (!IS_ERR(fotg210->pclk)) -+ clk_disable_unprepare(fotg210->pclk); -+ - kfree(fotg210); - - return 0; -@@ -1180,17 +1185,34 @@ int fotg210_udc_probe(struct platform_de - - fotg210->dev = dev; - -+ /* It's OK not to supply this clock */ -+ fotg210->pclk = devm_clk_get(dev, "PCLK"); -+ if (!IS_ERR(fotg210->pclk)) { -+ ret = clk_prepare_enable(fotg210->pclk); -+ if (ret) { -+ dev_err(dev, "failed to enable PCLK\n"); -+ return ret; -+ } -+ } else if (PTR_ERR(fotg210->pclk) == -EPROBE_DEFER) { -+ /* -+ * Percolate deferrals, for anything else, -+ * just live without the clocking. -+ */ -+ ret = -EPROBE_DEFER; -+ goto err; -+ } -+ - fotg210->phy = devm_usb_get_phy_by_phandle(dev->parent, "usb-phy", 0); - if (IS_ERR(fotg210->phy)) { - ret = PTR_ERR(fotg210->phy); - if (ret == -EPROBE_DEFER) -- goto err; -+ goto err_pclk; - dev_info(dev, "no PHY found\n"); - fotg210->phy = NULL; - } else { - ret = usb_phy_init(fotg210->phy); - if (ret) -- goto err; -+ goto err_pclk; - dev_info(dev, "found and initialized PHY\n"); - } - -@@ -1292,6 +1314,10 @@ err_map: - err_alloc: - for (i = 0; i < FOTG210_MAX_NUM_EP; i++) - kfree(fotg210->ep[i]); -+err_pclk: -+ if (!IS_ERR(fotg210->pclk)) -+ clk_disable_unprepare(fotg210->pclk); -+ - kfree(fotg210); - - err: ---- a/drivers/usb/fotg210/fotg210-udc.h -+++ b/drivers/usb/fotg210/fotg210-udc.h -@@ -231,6 +231,7 @@ struct fotg210_ep { - struct fotg210_udc { - spinlock_t lock; /* protect the struct */ - void __iomem *reg; -+ struct clk *pclk; - - unsigned long irq_trigger; - |