From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marek Vasut Date: Mon, 25 Jan 2016 06:13:03 +0100 Subject: [U-Boot] [PATCH v2] usb: add clock support for generic EHCI In-Reply-To: <1453697970-20671-1-git-send-email-yamada.masahiro@socionext.com> References: <1453697970-20671-1-git-send-email-yamada.masahiro@socionext.com> Message-ID: <201601250613.03385.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 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 ;-) > + 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 ? Best regards, Marek Vasut