Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b0e59926 authored by Roger Quadros's avatar Roger Quadros Committed by Lee Jones
Browse files

mfd: omap-usb: prepare/unprepare clock while enable/disable



This should fix the following warning at boot on OMAP5 uEVM
[    8.783155] WARNING: CPU: 0 PID: 1 at drivers/clk/clk.c:883 __clk_enable+0x94/0xa4()

Signed-off-by: default avatarRoger Quadros <rogerq@ti.com>
Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
parent 2a048d3b
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -328,13 +328,13 @@ static int usbhs_runtime_resume(struct device *dev)
	omap_tll_enable(pdata);

	if (!IS_ERR(omap->ehci_logic_fck))
		clk_enable(omap->ehci_logic_fck);
		clk_prepare_enable(omap->ehci_logic_fck);

	for (i = 0; i < omap->nports; i++) {
		switch (pdata->port_mode[i]) {
		case OMAP_EHCI_PORT_MODE_HSIC:
			if (!IS_ERR(omap->hsic60m_clk[i])) {
				r = clk_enable(omap->hsic60m_clk[i]);
				r = clk_prepare_enable(omap->hsic60m_clk[i]);
				if (r) {
					dev_err(dev,
					 "Can't enable port %d hsic60m clk:%d\n",
@@ -343,7 +343,7 @@ static int usbhs_runtime_resume(struct device *dev)
			}

			if (!IS_ERR(omap->hsic480m_clk[i])) {
				r = clk_enable(omap->hsic480m_clk[i]);
				r = clk_prepare_enable(omap->hsic480m_clk[i]);
				if (r) {
					dev_err(dev,
					 "Can't enable port %d hsic480m clk:%d\n",
@@ -354,7 +354,7 @@ static int usbhs_runtime_resume(struct device *dev)

		case OMAP_EHCI_PORT_MODE_TLL:
			if (!IS_ERR(omap->utmi_clk[i])) {
				r = clk_enable(omap->utmi_clk[i]);
				r = clk_prepare_enable(omap->utmi_clk[i]);
				if (r) {
					dev_err(dev,
					 "Can't enable port %d clk : %d\n",
@@ -382,15 +382,15 @@ static int usbhs_runtime_suspend(struct device *dev)
		switch (pdata->port_mode[i]) {
		case OMAP_EHCI_PORT_MODE_HSIC:
			if (!IS_ERR(omap->hsic60m_clk[i]))
				clk_disable(omap->hsic60m_clk[i]);
				clk_disable_unprepare(omap->hsic60m_clk[i]);

			if (!IS_ERR(omap->hsic480m_clk[i]))
				clk_disable(omap->hsic480m_clk[i]);
				clk_disable_unprepare(omap->hsic480m_clk[i]);
		/* Fall through as utmi_clks were used in HSIC mode */

		case OMAP_EHCI_PORT_MODE_TLL:
			if (!IS_ERR(omap->utmi_clk[i]))
				clk_disable(omap->utmi_clk[i]);
				clk_disable_unprepare(omap->utmi_clk[i]);
			break;
		default:
			break;
@@ -398,7 +398,7 @@ static int usbhs_runtime_suspend(struct device *dev)
	}

	if (!IS_ERR(omap->ehci_logic_fck))
		clk_disable(omap->ehci_logic_fck);
		clk_disable_unprepare(omap->ehci_logic_fck);

	omap_tll_disable(pdata);

+2 −2
Original line number Diff line number Diff line
@@ -429,7 +429,7 @@ int omap_tll_enable(struct usbhs_omap_platform_data *pdata)
			if (IS_ERR(tll->ch_clk[i]))
				continue;

			r = clk_enable(tll->ch_clk[i]);
			r = clk_prepare_enable(tll->ch_clk[i]);
			if (r) {
				dev_err(tll_dev,
				 "Error enabling ch %d clock: %d\n", i, r);
@@ -460,7 +460,7 @@ int omap_tll_disable(struct usbhs_omap_platform_data *pdata)
	for (i = 0; i < tll->nch; i++) {
		if (omap_usb_mode_needs_tll(pdata->port_mode[i])) {
			if (!IS_ERR(tll->ch_clk[i]))
				clk_disable(tll->ch_clk[i]);
				clk_disable_unprepare(tll->ch_clk[i]);
		}
	}