From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marek Vasut Date: Mon, 25 Jan 2016 06:22:51 +0100 Subject: [U-Boot] [PATCH v2] usb: add clock support for generic EHCI In-Reply-To: References: <1453697970-20671-1-git-send-email-yamada.masahiro@socionext.com> <201601250613.03385.marex@denx.de> Message-ID: <201601250622.51938.marex@denx.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Monday, January 25, 2016 at 06:17:58 AM, Masahiro Yamada wrote: > 2016-01-25 14:13 GMT+09:00 Marek Vasut : > > On Monday, January 25, 2016 at 05:59:30 AM, Masahiro Yamada wrote: > >> This driver is designed in a generic manner, so clocks should be > >> handled genericly as well. > >> > >> Signed-off-by: Masahiro Yamada > >> --- > >> > >> Changes in v2: > >> - rephrase git-log > >> - rebase on commit 12f229ea > >> - do not store clk devices and IDs in the private data > >> > >> drivers/usb/host/ehci-generic.c | 15 +++++++++++++++ > >> 1 file changed, 15 insertions(+) > >> > >> diff --git a/drivers/usb/host/ehci-generic.c > >> b/drivers/usb/host/ehci-generic.c index 1292caa..98f9db7 100644 > >> --- a/drivers/usb/host/ehci-generic.c > >> +++ b/drivers/usb/host/ehci-generic.c > >> @@ -5,6 +5,7 @@ > >> > >> */ > >> > >> #include > >> > >> +#include > >> > >> #include > >> #include "ehci.h" > >> > >> @@ -21,6 +22,20 @@ static int ehci_usb_probe(struct udevice *dev) > >> > >> { > >> > >> struct ehci_hccr *hccr = (struct ehci_hccr *)dev_get_addr(dev); > >> struct ehci_hcor *hcor; > >> > >> + int i = 0; > >> + > >> + while (1) { > > > > You can do for (i = 0; ; i++) {} here ;-) I forgot to mention that if you do the for() thing, you can drop the i++ at the end of this function and you also can drop the explicit int i = 0; initialization. > >> + struct udevice *clk_dev; > >> + int clk_id; > >> + > >> + clk_id = clk_get_by_index(dev, i, &clk_dev); > >> + if (clk_id < 0) > >> + break; > >> + if (clk_enable(clk_dev, clk_id)) > >> + printf("failed to enable clock (dev=%s, id=%d)\n", > >> + clk_dev->name, clk_id); > >> + i++; > >> + } > >> > >> hcor = (struct ehci_hcor *)((uintptr_t)hccr + > >> > >> HC_LENGTH(ehci_readl(&hccr->cr_capbase > >> ))); > > > > What about disabling the clock? Is it doable with the current clock > > framework or shall we abandon it for now ? > > clk_disable() is not supported in U-Boot, at least for now. > (see include/clk.h and you will only find clk_enable.) > > I think this patch is the best I can do now. > > (ccing Simon, again) In that case, I am fine with it. Thanks!