usb: host: xhci-plat: Add reset support

Add optional reset support. This is in preparation to adding USB xHCI
support for RZ/V2M SoC.

Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/r/20230121145853.4792-9-biju.das.jz@bp.renesas.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Biju Das 2023-01-21 14:58:49 +00:00 committed by Greg Kroah-Hartman
parent 8c6e8b0961
commit 224eb5311d

View File

@ -19,6 +19,7 @@
#include <linux/slab.h>
#include <linux/acpi.h>
#include <linux/usb/of.h>
#include <linux/reset.h>
#include "xhci.h"
#include "xhci-plat.h"
@ -263,10 +264,20 @@ static int xhci_plat_probe(struct platform_device *pdev)
goto put_hcd;
}
ret = clk_prepare_enable(xhci->reg_clk);
xhci->reset = devm_reset_control_array_get_optional_shared(&pdev->dev);
if (IS_ERR(xhci->reset)) {
ret = PTR_ERR(xhci->reset);
goto put_hcd;
}
ret = reset_control_deassert(xhci->reset);
if (ret)
goto put_hcd;
ret = clk_prepare_enable(xhci->reg_clk);
if (ret)
goto err_reset;
ret = clk_prepare_enable(xhci->clk);
if (ret)
goto disable_reg_clk;
@ -377,6 +388,9 @@ disable_clk:
disable_reg_clk:
clk_disable_unprepare(xhci->reg_clk);
err_reset:
reset_control_assert(xhci->reset);
put_hcd:
usb_put_hcd(hcd);
@ -412,6 +426,7 @@ static int xhci_plat_remove(struct platform_device *dev)
clk_disable_unprepare(clk);
clk_disable_unprepare(reg_clk);
reset_control_assert(xhci->reset);
usb_put_hcd(hcd);
pm_runtime_disable(&dev->dev);