From: Lucas Stach <dev@lynxeye.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 5/8] tegra: usb: move controller init into start_port
Date: Tue, 30 Oct 2012 10:22:50 +0100 [thread overview]
Message-ID: <1351588973-20699-5-git-send-email-dev@lynxeye.de> (raw)
In-Reply-To: <1351588973-20699-1-git-send-email-dev@lynxeye.de>
There is no need to init a USB controller before the upper layers indicate
that they are actually going to use it.
board_usb_init now only parses the device tree and sets up the common pll.
Signed-off-by: Lucas Stach <dev@lynxeye.de>
---
arch/arm/cpu/armv7/tegra20/usb.c | 47 +++++++++++++++-------------------------
1 Datei ge?ndert, 18 Zeilen hinzugef?gt(+), 29 Zeilen entfernt(-)
diff --git a/arch/arm/cpu/armv7/tegra20/usb.c b/arch/arm/cpu/armv7/tegra20/usb.c
index cf800b1..e372b8b 100644
--- a/arch/arm/cpu/armv7/tegra20/usb.c
+++ b/arch/arm/cpu/armv7/tegra20/usb.c
@@ -417,44 +417,29 @@ static int init_ulpi_usb_controller(struct fdt_usb *config)
}
#endif
-/**
- * Add a new USB port to the list of available ports.
- *
- * @param config USB port configuration
- * @return 0 if ok, -1 if error (too many ports)
- */
-static int add_port(struct fdt_usb *config)
+int tegrausb_start_port(int portnum, u32 *hccr, u32 *hcor)
{
- if (port_count == USB_PORTS_MAX) {
- printf("tegrausb: Cannot register more than %d ports\n",
- USB_PORTS_MAX);
+ struct fdt_usb *config;
+ struct usb_ctlr *usbctlr;
+
+ if (portnum >= port_count)
return -1;
- }
+
+ config = &port[portnum];
if (config->utmi && init_utmi_usb_controller(config)) {
- printf("tegrausb: Cannot init port\n");
+ printf("tegrausb: Cannot init port %d\n", portnum);
return -1;
}
if (config->ulpi && init_ulpi_usb_controller(config)) {
- printf("tegrausb: Cannot init port\n");
+ printf("tegrausb: Cannot init port %d\n", portnum);
return -1;
}
- port[port_count++] = *config;
-
- return 0;
-}
+ set_host_mode(config);
-int tegrausb_start_port(int portnum, u32 *hccr, u32 *hcor)
-{
- struct usb_ctlr *usbctlr;
-
- if (portnum >= port_count)
- return -1;
- set_host_mode(&port[portnum]);
-
- usbctlr = port[portnum].reg;
+ usbctlr = config->reg;
*hccr = (u32)&usbctlr->cap_length;
*hcor = (u32)&usbctlr->usb_cmd;
return 0;
@@ -539,6 +524,12 @@ int board_usb_init(const void *blob)
count = fdtdec_find_aliases_for_id(blob, "usb",
COMPAT_NVIDIA_TEGRA20_USB, node_list, USB_PORTS_MAX);
for (i = 0; i < count; i++) {
+ if (port_count == USB_PORTS_MAX) {
+ printf("tegrausb: Cannot register more than %d ports\n",
+ USB_PORTS_MAX);
+ return -1;
+ }
+
debug("USB %d: ", i);
node = node_list[i];
if (!node)
@@ -549,9 +540,7 @@ int board_usb_init(const void *blob)
return -1;
}
- if (add_port(&config))
- return -1;
- set_host_mode(&config);
+ port[port_count++] = config;
}
return 0;
--
1.7.11.7
next prev parent reply other threads:[~2012-10-30 9:22 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-30 9:22 [U-Boot] [PATCH 1/8] tegra: usb: convert USB_PORTS_MAX to be a define Lucas Stach
2012-10-30 9:22 ` [U-Boot] [PATCH 2/8] tegra: usb: make controller init functions more self contained Lucas Stach
2012-10-30 13:03 ` Simon Glass
2012-10-30 13:16 ` Lucas Stach
2012-10-30 15:35 ` Simon Glass
2012-10-30 9:22 ` [U-Boot] [PATCH 3/8] tegra: usb: fold initial pll setup into board_usb_init Lucas Stach
2012-10-30 13:23 ` Simon Glass
2012-10-30 13:32 ` Lucas Stach
2012-10-30 9:22 ` [U-Boot] [PATCH 4/8] tegra: usb: remove unneeded function parameter Lucas Stach
2012-10-30 13:18 ` Simon Glass
2012-10-30 9:22 ` Lucas Stach [this message]
2012-10-30 10:59 ` [U-Boot] [PATCH 5/8] tegra: usb: move controller init into start_port Marek Vasut
2012-10-30 12:12 ` Lucas Stach
2012-10-30 12:33 ` Marek Vasut
2012-10-30 12:44 ` Lucas Stach
2012-10-30 18:34 ` Stephen Warren
2012-10-30 13:27 ` Simon Glass
2012-10-30 13:37 ` Lucas Stach
2012-10-30 13:48 ` Simon Glass
2012-10-30 13:54 ` Lucas Stach
2012-10-30 14:03 ` Simon Glass
2012-10-30 9:22 ` [U-Boot] [PATCH 6/8] tegra: usb: various small cleanups Lucas Stach
2012-10-30 13:31 ` Simon Glass
2012-10-30 9:22 ` [U-Boot] [PATCH 7/8] tegra: usb: move implementation into right directory Lucas Stach
2012-10-30 13:33 ` Simon Glass
2012-10-30 13:38 ` Lucas Stach
2012-10-30 13:53 ` Simon Glass
2012-10-30 14:03 ` Lucas Stach
2012-10-30 16:11 ` Tom Warren
2012-10-30 16:18 ` Simon Glass
2012-10-30 18:38 ` Stephen Warren
2012-10-30 18:45 ` Lucas Stach
2012-10-30 18:51 ` Stephen Warren
2012-10-30 18:58 ` Lucas Stach
2012-10-30 9:22 ` [U-Boot] [PATCH 8/8] tegra: usb: move [start|stop]_port into ehci_hcd_[init|stop] Lucas Stach
2012-10-30 13:39 ` Simon Glass
2012-10-30 13:09 ` [U-Boot] [PATCH 1/8] tegra: usb: convert USB_PORTS_MAX to be a define Simon Glass
2012-10-30 13:11 ` Marek Vasut
2012-10-30 13:40 ` Simon Glass
2012-11-02 20:41 ` Marek Vasut
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1351588973-20699-5-git-send-email-dev@lynxeye.de \
--to=dev@lynxeye.de \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox