All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lucas Stach <dev@lynxeye.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 7/8] tegra: usb: move implementation into right directory
Date: Tue, 30 Oct 2012 10:22:52 +0100	[thread overview]
Message-ID: <1351588973-20699-7-git-send-email-dev@lynxeye.de> (raw)
In-Reply-To: <1351588973-20699-1-git-send-email-dev@lynxeye.de>

This moves the Tegra USB implementation into the drivers/usb/host
directory.

Signed-off-by: Lucas Stach <dev@lynxeye.de>
---
 arch/arm/cpu/armv7/tegra20/Makefile                |  2 -
 .../tegra20/usb.c => drivers/usb/host/ehci-tegra.c | 60 ++++++++++++++++++++--
 2 Dateien ge?ndert, 55 Zeilen hinzugef?gt(+), 7 Zeilen entfernt(-)
 rename arch/arm/cpu/armv7/tegra20/usb.c => drivers/usb/host/ehci-tegra.c (92%)

diff --git a/arch/arm/cpu/armv7/tegra20/Makefile b/arch/arm/cpu/armv7/tegra20/Makefile
index 09a0314..2c4d5c9 100644
--- a/arch/arm/cpu/armv7/tegra20/Makefile
+++ b/arch/arm/cpu/armv7/tegra20/Makefile
@@ -27,8 +27,6 @@ include $(TOPDIR)/config.mk
 
 LIB	=  $(obj)lib$(SOC).o
 
-COBJS-$(CONFIG_USB_EHCI_TEGRA) += usb.o
-
 COBJS	:= $(COBJS-y)
 SRCS	:= $(COBJS:.o=.c)
 OBJS	:= $(addprefix $(obj),$(COBJS))
diff --git a/arch/arm/cpu/armv7/tegra20/usb.c b/drivers/usb/host/ehci-tegra.c
similarity index 92%
rename from arch/arm/cpu/armv7/tegra20/usb.c
rename to drivers/usb/host/ehci-tegra.c
index 2cc95d2..3df43a9 100644
--- a/arch/arm/cpu/armv7/tegra20/usb.c
+++ b/drivers/usb/host/ehci-tegra.c
@@ -1,6 +1,7 @@
 /*
+ * Copyright (c) 2009-2012 NVIDIA Corporation
  * Copyright (c) 2011 The Chromium OS Authors.
- * (C) Copyright 2010,2011 NVIDIA Corporation <www.nvidia.com>
+ * Copyright (c) 2012 Lucas Stach
  *
  * See file CREDITS for list of people who contributed to this
  * project.
@@ -21,14 +22,16 @@
  * MA 02111-1307 USA
  */
 
-#include <common.h>
 #include <asm/io.h>
-#include <asm-generic/gpio.h>
 #include <asm/arch/clock.h>
 #include <asm/arch/usb.h>
-#include <usb/ulpi.h>
-#include <libfdt.h>
+#include <asm-generic/gpio.h>
+#include <common.h>
 #include <fdtdec.h>
+#include <libfdt.h>
+#include <usb.h>
+#include <usb/ulpi.h>
+#include "ehci.h"
 
 #ifdef CONFIG_USB_ULPI
 	#ifndef CONFIG_USB_ULPI_VIEWPORT
@@ -138,6 +141,23 @@ static const u8 utmip_elastic_limit = 16;
 /* UTMIP High Speed Sync Start Delay */
 static const u8 utmip_hs_sync_start_delay = 9;
 
+/*
+ * A known hardware issue where Connect Status Change bit of PORTSC register
+ * of USB1 controller will be set after Port Reset.
+ * We have to clear it in order for later device enumeration to proceed.
+ * This ehci_powerup_fixup overrides the weak function ehci_powerup_fixup
+ * in "ehci-hcd.c".
+ */
+void ehci_powerup_fixup(uint32_t *status_reg, uint32_t *reg)
+{
+	mdelay(50);
+	if (((u32) status_reg & TEGRA_USB_ADDR_MASK) != TEGRA_USB1_BASE)
+		return;
+	/* For EHCI_PS_CSC to be cleared in ehci_hcd.c */
+	if (ehci_readl(status_reg) & EHCI_PS_CSC)
+		*reg |= EHCI_PS_CSC;
+}
+
 /* Put the port into host mode */
 static void set_host_mode(struct fdt_usb *config)
 {
@@ -534,3 +554,33 @@ int board_usb_init(const void *blob)
 
 	return 0;
 }
+
+/*
+ * Create the appropriate control structures to manage
+ * a new EHCI host controller.
+ */
+int ehci_hcd_init(int index, struct ehci_hccr **hccr, struct ehci_hcor **hcor)
+{
+	u32 our_hccr, our_hcor;
+
+	/*
+	 * Select the first port, as we don't have a way of selecting others
+	 * yet
+	 */
+	if (tegrausb_start_port(index, &our_hccr, &our_hcor))
+		return -1;
+
+	*hccr = (struct ehci_hccr *)our_hccr;
+	*hcor = (struct ehci_hcor *)our_hcor;
+
+	return 0;
+}
+
+/*
+ * Destroy the appropriate control structures corresponding
+ * the the EHCI host controller.
+ */
+int ehci_hcd_stop(int index)
+{
+	return tegrausb_stop_port(index);
+}
-- 
1.7.11.7

  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 ` [U-Boot] [PATCH 5/8] tegra: usb: move controller init into start_port Lucas Stach
2012-10-30 10:59   ` 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 ` Lucas Stach [this message]
2012-10-30 13:33   ` [U-Boot] [PATCH 7/8] tegra: usb: move implementation into right directory 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-7-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.