Commit c146ede4 authored by Zhang Zekun's avatar Zhang Zekun Committed by Greg Kroah-Hartman

usb: ohci-nxp: Use helper function devm_clk_get_enabled()

devm_clk_get() and clk_prepare_enable() can be replaced by helper
function devm_clk_get_enabled(). Let's use devm_clk_get_enabled() to
simplify code and avoid calling clk_disable_unprepare().
Signed-off-by: default avatarZhang Zekun <zhangzekun11@huawei.com>
Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
Link: https://lore.kernel.org/r/20240902123020.29267-3-zhangzekun11@huawei.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent b2430136
...@@ -51,8 +51,6 @@ static struct hc_driver __read_mostly ohci_nxp_hc_driver; ...@@ -51,8 +51,6 @@ static struct hc_driver __read_mostly ohci_nxp_hc_driver;
static struct i2c_client *isp1301_i2c_client; static struct i2c_client *isp1301_i2c_client;
static struct clk *usb_host_clk;
static void isp1301_configure_lpc32xx(void) static void isp1301_configure_lpc32xx(void)
{ {
/* LPC32XX only supports DAT_SE0 USB mode */ /* LPC32XX only supports DAT_SE0 USB mode */
...@@ -155,6 +153,7 @@ static int ohci_hcd_nxp_probe(struct platform_device *pdev) ...@@ -155,6 +153,7 @@ static int ohci_hcd_nxp_probe(struct platform_device *pdev)
struct resource *res; struct resource *res;
int ret = 0, irq; int ret = 0, irq;
struct device_node *isp1301_node; struct device_node *isp1301_node;
struct clk *usb_host_clk;
if (pdev->dev.of_node) { if (pdev->dev.of_node) {
isp1301_node = of_parse_phandle(pdev->dev.of_node, isp1301_node = of_parse_phandle(pdev->dev.of_node,
...@@ -180,26 +179,20 @@ static int ohci_hcd_nxp_probe(struct platform_device *pdev) ...@@ -180,26 +179,20 @@ static int ohci_hcd_nxp_probe(struct platform_device *pdev)
} }
/* Enable USB host clock */ /* Enable USB host clock */
usb_host_clk = devm_clk_get(&pdev->dev, NULL); usb_host_clk = devm_clk_get_enabled(&pdev->dev, NULL);
if (IS_ERR(usb_host_clk)) { if (IS_ERR(usb_host_clk)) {
dev_err(&pdev->dev, "failed to acquire USB OHCI clock\n"); dev_err(&pdev->dev, "failed to acquire and start USB OHCI clock\n");
ret = PTR_ERR(usb_host_clk); ret = PTR_ERR(usb_host_clk);
goto fail_disable; goto fail_disable;
} }
ret = clk_prepare_enable(usb_host_clk);
if (ret < 0) {
dev_err(&pdev->dev, "failed to start USB OHCI clock\n");
goto fail_disable;
}
isp1301_configure(); isp1301_configure();
hcd = usb_create_hcd(driver, &pdev->dev, dev_name(&pdev->dev)); hcd = usb_create_hcd(driver, &pdev->dev, dev_name(&pdev->dev));
if (!hcd) { if (!hcd) {
dev_err(&pdev->dev, "Failed to allocate HC buffer\n"); dev_err(&pdev->dev, "Failed to allocate HC buffer\n");
ret = -ENOMEM; ret = -ENOMEM;
goto fail_hcd; goto fail_disable;
} }
hcd->regs = devm_platform_get_and_ioremap_resource(pdev, 0, &res); hcd->regs = devm_platform_get_and_ioremap_resource(pdev, 0, &res);
...@@ -229,8 +222,6 @@ static int ohci_hcd_nxp_probe(struct platform_device *pdev) ...@@ -229,8 +222,6 @@ static int ohci_hcd_nxp_probe(struct platform_device *pdev)
ohci_nxp_stop_hc(); ohci_nxp_stop_hc();
fail_resource: fail_resource:
usb_put_hcd(hcd); usb_put_hcd(hcd);
fail_hcd:
clk_disable_unprepare(usb_host_clk);
fail_disable: fail_disable:
isp1301_i2c_client = NULL; isp1301_i2c_client = NULL;
return ret; return ret;
...@@ -243,7 +234,6 @@ static void ohci_hcd_nxp_remove(struct platform_device *pdev) ...@@ -243,7 +234,6 @@ static void ohci_hcd_nxp_remove(struct platform_device *pdev)
usb_remove_hcd(hcd); usb_remove_hcd(hcd);
ohci_nxp_stop_hc(); ohci_nxp_stop_hc();
usb_put_hcd(hcd); usb_put_hcd(hcd);
clk_disable_unprepare(usb_host_clk);
isp1301_i2c_client = NULL; isp1301_i2c_client = NULL;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment