From: Lucas Stach <dev@lynxeye.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2 7/7] tegra: usb: move [start|stop]_port into ehci_hcd_[init|stop]
Date: Fri, 25 Jan 2013 15:41:11 +0100 [thread overview]
Message-ID: <1359124871-4434-8-git-send-email-dev@lynxeye.de> (raw)
In-Reply-To: <1359124871-4434-1-git-send-email-dev@lynxeye.de>
The ehci_hcd entry points were just calling into the Tegra USB
functions. Now that they are in the same file we can just move over the
implementation.
Signed-off-by: Lucas Stach <dev@lynxeye.de>
---
arch/arm/include/asm/arch-tegra/usb.h | 19 ------
drivers/usb/host/ehci-tegra.c | 119 +++++++++++++++-------------------
2 files changed, 51 insertions(+), 87 deletions(-)
diff --git a/arch/arm/include/asm/arch-tegra/usb.h b/arch/arm/include/asm/arch-tegra/usb.h
index b18c850..ef6c089 100644
--- a/arch/arm/include/asm/arch-tegra/usb.h
+++ b/arch/arm/include/asm/arch-tegra/usb.h
@@ -246,23 +246,4 @@ struct usb_ctlr {
/* Setup USB on the board */
int board_usb_init(const void *blob);
-/**
- * Start up the given port number (ports are numbered from 0 on each board).
- * This returns values for the appropriate hccr and hcor addresses to use for
- * USB EHCI operations.
- *
- * @param portnum port number to start
- * @param hccr returns start address of EHCI HCCR registers
- * @param hcor returns start address of EHCI HCOR registers
- * @return 0 if ok, -1 on error (generally invalid port number)
- */
-int tegrausb_start_port(int portnum, u32 *hccr, u32 *hcor);
-
-/**
- * Stop the current port
- *
- * @return 0 if ok, -1 if no port was active
- */
-int tegrausb_stop_port(int portnum);
-
#endif /* _TEGRA_USB_H_ */
diff --git a/drivers/usb/host/ehci-tegra.c b/drivers/usb/host/ehci-tegra.c
index b77806f..13bd6cc 100644
--- a/drivers/usb/host/ehci-tegra.c
+++ b/drivers/usb/host/ehci-tegra.c
@@ -438,60 +438,6 @@ static void config_clock(const u32 timing[])
timing[PARAM_CPCON], timing[PARAM_LFCON]);
}
-int tegrausb_start_port(int portnum, u32 *hccr, u32 *hcor)
-{
- struct fdt_usb *config;
- struct usb_ctlr *usbctlr;
-
- if (portnum >= port_count)
- return -1;
-
- config = &port[portnum];
-
- /* skip init, if the port is already initialized */
- if (config->initialized)
- goto success;
-
- if (config->utmi && init_utmi_usb_controller(config)) {
- printf("tegrausb: Cannot init port %d\n", portnum);
- return -1;
- }
-
- if (config->ulpi && init_ulpi_usb_controller(config)) {
- printf("tegrausb: Cannot init port %d\n", portnum);
- return -1;
- }
-
- set_host_mode(config);
-
- config->initialized = 1;
-
-success:
- usbctlr = config->reg;
- *hccr = (u32)&usbctlr->cap_length;
- *hcor = (u32)&usbctlr->usb_cmd;
- return 0;
-}
-
-int tegrausb_stop_port(int portnum)
-{
- struct usb_ctlr *usbctlr;
-
- usbctlr = port[portnum].reg;
-
- /* Stop controller */
- writel(0, &usbctlr->usb_cmd);
- udelay(1000);
-
- /* Initiate controller reset */
- writel(2, &usbctlr->usb_cmd);
- udelay(1000);
-
- port[portnum].initialized = 0;
-
- return 0;
-}
-
int fdt_decode_usb(const void *blob, int node, struct fdt_usb *config)
{
const char *phy, *mode;
@@ -576,32 +522,69 @@ int board_usb_init(const void *blob)
return 0;
}
-/*
- * Create the appropriate control structures to manage
- * a new EHCI host controller.
+/**
+ * Start up the given port number (ports are numbered from 0 on each board).
+ * This returns values for the appropriate hccr and hcor addresses to use for
+ * USB EHCI operations.
+ *
+ * @param index port number to start
+ * @param hccr returns start address of EHCI HCCR registers
+ * @param hcor returns start address of EHCI HCOR registers
+ * @return 0 if ok, -1 on error (generally invalid port number)
*/
int ehci_hcd_init(int index, struct ehci_hccr **hccr, struct ehci_hcor **hcor)
{
- u32 our_hccr, our_hcor;
+ struct fdt_usb *config;
+ struct usb_ctlr *usbctlr;
- /*
- * Select the first port, as we don't have a way of selecting others
- * yet
- */
- if (tegrausb_start_port(index, &our_hccr, &our_hcor))
+ if (index >= port_count)
+ return -1;
+
+ config = &port[index];
+
+ /* skip init, if the port is already initialized */
+ if (config->initialized)
+ goto success;
+
+ if (config->utmi && init_utmi_usb_controller(config)) {
+ printf("tegrausb: Cannot init port %d\n", index);
+ return -1;
+ }
+
+ if (config->ulpi && init_ulpi_usb_controller(config)) {
+ printf("tegrausb: Cannot init port %d\n", index);
return -1;
+ }
+
+ set_host_mode(config);
- *hccr = (struct ehci_hccr *)our_hccr;
- *hcor = (struct ehci_hcor *)our_hcor;
+ config->initialized = 1;
+success:
+ usbctlr = config->reg;
+ *hccr = (u32)&usbctlr->cap_length;
+ *hcor = (u32)&usbctlr->usb_cmd;
return 0;
}
/*
- * Destroy the appropriate control structures corresponding
- * the the EHCI host controller.
+ * Bring down the specified USB controller
*/
int ehci_hcd_stop(int index)
{
- return tegrausb_stop_port(index);
+ struct usb_ctlr *usbctlr;
+
+ usbctlr = port[index].reg;
+
+ /* Stop controller */
+ writel(0, &usbctlr->usb_cmd);
+ udelay(1000);
+
+ /* Initiate controller reset */
+ writel(2, &usbctlr->usb_cmd);
+ udelay(1000);
+
+ port[index].initialized = 0;
+
+ return 0;
}
--
1.8.0.2
next prev parent reply other threads:[~2013-01-25 14:41 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-25 14:41 [U-Boot] [PATCH v2 0/7] Move Tegra EHCI drive to correct place Lucas Stach
2013-01-25 14:41 ` [U-Boot] [PATCH v2 1/7] tegra: usb: set USB_PORTS_MAX to correct value Lucas Stach
2013-01-25 21:22 ` Simon Glass
2013-01-25 14:41 ` [U-Boot] [PATCH v2 2/7] tegra: usb: make controller init functions more self contained Lucas Stach
2013-01-27 16:31 ` Simon Glass
2013-01-25 14:41 ` [U-Boot] [PATCH v2 3/7] tegra: usb: remove unneeded function parameter Lucas Stach
2013-01-25 14:41 ` [U-Boot] [PATCH v2 4/7] tegra: usb: move controller init into start_port Lucas Stach
2013-01-27 16:33 ` Simon Glass
2013-01-25 14:41 ` [U-Boot] [PATCH v2 5/7] tegra: usb: various small cleanups Lucas Stach
2013-01-25 21:23 ` Simon Glass
2013-01-25 14:41 ` [U-Boot] [PATCH v2 6/7] tegra: usb: move implementation into right directory Lucas Stach
2013-01-25 21:25 ` Simon Glass
2013-01-25 14:41 ` Lucas Stach [this message]
2013-01-27 16:33 ` [U-Boot] [PATCH v2 7/7] tegra: usb: move [start|stop]_port into ehci_hcd_[init|stop] Simon Glass
2013-01-25 16:07 ` [U-Boot] [PATCH v2 0/7] Move Tegra EHCI drive to correct place Tom Warren
2013-01-25 16:19 ` Lucas Stach
2013-01-26 3:26 ` Marek Vasut
2013-01-27 23:33 ` Stephen Warren
2013-01-27 23:48 ` Marek Vasut
2013-01-28 16:10 ` Stephen Warren
2013-01-28 16:29 ` Tom Warren
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=1359124871-4434-8-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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.