+++ /dev/null
-From e18eb4eb88c815ba06bc291da056ba55580bda1e Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Thu, 10 Nov 2022 16:41:31 +0100
-Subject: usb: dwc3: exynos: Fix remove() function
-
-From: Marek Szyprowski <m.szyprowski@samsung.com>
-
-[ Upstream commit e0481e5b3cc12ea7ccf4552d41518c89d3509004 ]
-
-The core DWC3 device node was not properly removed by the custom
-dwc3_exynos_remove_child() function. Replace it with generic
-of_platform_depopulate() which does that job right.
-
-Fixes: adcf20dcd262 ("usb: dwc3: exynos: Use of_platform API to create dwc3 core pdev")
-Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
-Acked-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
-Cc: stable@vger.kernel.org
-Reviewed-by: Sam Protsenko <semen.protsenko@linaro.org>
-Link: https://lore.kernel.org/r/20221110154131.2577-1-m.szyprowski@samsung.com
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/usb/dwc3/dwc3-exynos.c | 11 +----------
- 1 file changed, 1 insertion(+), 10 deletions(-)
-
-diff --git a/drivers/usb/dwc3/dwc3-exynos.c b/drivers/usb/dwc3/dwc3-exynos.c
-index 0a946c66c3bb..3d466ec8f8cc 100644
---- a/drivers/usb/dwc3/dwc3-exynos.c
-+++ b/drivers/usb/dwc3/dwc3-exynos.c
-@@ -28,15 +28,6 @@ struct dwc3_exynos {
- struct regulator *vdd10;
- };
-
--static int dwc3_exynos_remove_child(struct device *dev, void *unused)
--{
-- struct platform_device *pdev = to_platform_device(dev);
--
-- platform_device_unregister(pdev);
--
-- return 0;
--}
--
- static int dwc3_exynos_probe(struct platform_device *pdev)
- {
- struct dwc3_exynos *exynos;
-@@ -136,7 +127,7 @@ static int dwc3_exynos_remove(struct platform_device *pdev)
- {
- struct dwc3_exynos *exynos = platform_get_drvdata(pdev);
-
-- device_for_each_child(&pdev->dev, NULL, dwc3_exynos_remove_child);
-+ of_platform_depopulate(&pdev->dev);
-
- clk_disable_unprepare(exynos->axius_clk);
- clk_disable_unprepare(exynos->susp_clk);
---
-2.35.1
-
+++ /dev/null
-From 92d5cd3daef2a3366eac206d227805d63e6f1a5f Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Tue, 18 Sep 2018 10:16:50 +0200
-Subject: usb: dwc3: exynos: Remove dead code
-
-From: Marek Szyprowski <m.szyprowski@samsung.com>
-
-[ Upstream commit 1e041b6f313aaa966612a7e415cfc09c90d6b829 ]
-
-All supported Exynos variants provide respective generic PHY framework
-based drivers for controlling USB PHYs, so there is no point
-creating fake USB PHYs based on platform devices. While removing useless
-code, remove calls to runtime PM, which have no effect.
-
-Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
-Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
-Stable-dep-of: e0481e5b3cc1 ("usb: dwc3: exynos: Fix remove() function")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/usb/dwc3/dwc3-exynos.c | 75 ----------------------------------
- 1 file changed, 75 deletions(-)
-
-diff --git a/drivers/usb/dwc3/dwc3-exynos.c b/drivers/usb/dwc3/dwc3-exynos.c
-index a94fb1ba8f2c..0a946c66c3bb 100644
---- a/drivers/usb/dwc3/dwc3-exynos.c
-+++ b/drivers/usb/dwc3/dwc3-exynos.c
-@@ -13,15 +13,11 @@
- #include <linux/slab.h>
- #include <linux/platform_device.h>
- #include <linux/clk.h>
--#include <linux/usb/otg.h>
--#include <linux/usb/usb_phy_generic.h>
- #include <linux/of.h>
- #include <linux/of_platform.h>
- #include <linux/regulator/consumer.h>
-
- struct dwc3_exynos {
-- struct platform_device *usb2_phy;
-- struct platform_device *usb3_phy;
- struct device *dev;
-
- struct clk *clk;
-@@ -32,61 +28,6 @@ struct dwc3_exynos {
- struct regulator *vdd10;
- };
-
--static int dwc3_exynos_register_phys(struct dwc3_exynos *exynos)
--{
-- struct usb_phy_generic_platform_data pdata;
-- struct platform_device *pdev;
-- int ret;
--
-- memset(&pdata, 0x00, sizeof(pdata));
--
-- pdev = platform_device_alloc("usb_phy_generic", PLATFORM_DEVID_AUTO);
-- if (!pdev)
-- return -ENOMEM;
--
-- exynos->usb2_phy = pdev;
-- pdata.type = USB_PHY_TYPE_USB2;
-- pdata.gpio_reset = -1;
--
-- ret = platform_device_add_data(exynos->usb2_phy, &pdata, sizeof(pdata));
-- if (ret)
-- goto err1;
--
-- pdev = platform_device_alloc("usb_phy_generic", PLATFORM_DEVID_AUTO);
-- if (!pdev) {
-- ret = -ENOMEM;
-- goto err1;
-- }
--
-- exynos->usb3_phy = pdev;
-- pdata.type = USB_PHY_TYPE_USB3;
--
-- ret = platform_device_add_data(exynos->usb3_phy, &pdata, sizeof(pdata));
-- if (ret)
-- goto err2;
--
-- ret = platform_device_add(exynos->usb2_phy);
-- if (ret)
-- goto err2;
--
-- ret = platform_device_add(exynos->usb3_phy);
-- if (ret)
-- goto err3;
--
-- return 0;
--
--err3:
-- platform_device_del(exynos->usb2_phy);
--
--err2:
-- platform_device_put(exynos->usb3_phy);
--
--err1:
-- platform_device_put(exynos->usb2_phy);
--
-- return ret;
--}
--
- static int dwc3_exynos_remove_child(struct device *dev, void *unused)
- {
- struct platform_device *pdev = to_platform_device(dev);
-@@ -164,12 +105,6 @@ static int dwc3_exynos_probe(struct platform_device *pdev)
- goto vdd10_err;
- }
-
-- ret = dwc3_exynos_register_phys(exynos);
-- if (ret) {
-- dev_err(dev, "couldn't register PHYs\n");
-- goto phys_err;
-- }
--
- if (node) {
- ret = of_platform_populate(node, NULL, NULL, dev);
- if (ret) {
-@@ -185,9 +120,6 @@ static int dwc3_exynos_probe(struct platform_device *pdev)
- return 0;
-
- populate_err:
-- platform_device_unregister(exynos->usb2_phy);
-- platform_device_unregister(exynos->usb3_phy);
--phys_err:
- regulator_disable(exynos->vdd10);
- vdd10_err:
- regulator_disable(exynos->vdd33);
-@@ -205,8 +137,6 @@ static int dwc3_exynos_remove(struct platform_device *pdev)
- struct dwc3_exynos *exynos = platform_get_drvdata(pdev);
-
- device_for_each_child(&pdev->dev, NULL, dwc3_exynos_remove_child);
-- platform_device_unregister(exynos->usb2_phy);
-- platform_device_unregister(exynos->usb3_phy);
-
- clk_disable_unprepare(exynos->axius_clk);
- clk_disable_unprepare(exynos->susp_clk);
-@@ -258,11 +188,6 @@ static int dwc3_exynos_resume(struct device *dev)
- clk_enable(exynos->clk);
- clk_enable(exynos->axius_clk);
-
-- /* runtime set active to reflect active state. */
-- pm_runtime_disable(dev);
-- pm_runtime_set_active(dev);
-- pm_runtime_enable(dev);
--
- return 0;
- }
-
---
-2.35.1
-