From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marek Vasut Date: Mon, 13 Feb 2012 10:03:51 +0100 Subject: [U-Boot] [v2 2/4] USB: Armada100: ECHI Driver for Armada100 SOCs In-Reply-To: <1329123447-21617-2-git-send-email-ajay.bhargav@einfochips.com> References: <1329123447-21617-1-git-send-email-ajay.bhargav@einfochips.com> <1329123447-21617-2-git-send-email-ajay.bhargav@einfochips.com> Message-ID: <201202131003.51680.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 > This patch adds support for USB EHCI driver for Armada100 SOCs. Fix the subject, you have ECHI written there ;-) > > Signed-off-by: Ajay Bhargav > --- > Changes for v2: > - Fix typo for SOC name > - change printf to debug > > arch/arm/include/asm/arch-armada100/armada100.h | 1 + > drivers/usb/host/Makefile | 1 + > drivers/usb/host/ehci-armada100.c | 62 > +++++++++++++++++++++++ 3 files changed, 64 insertions(+), 0 deletions(-) > create mode 100644 drivers/usb/host/ehci-armada100.c > > diff --git a/arch/arm/include/asm/arch-armada100/armada100.h > b/arch/arm/include/asm/arch-armada100/armada100.h index 70fba27..614de55 > 100644 > --- a/arch/arm/include/asm/arch-armada100/armada100.h > +++ b/arch/arm/include/asm/arch-armada100/armada100.h > @@ -68,6 +68,7 @@ > #define ARMD1_SSP5_BASE 0xD4021000 > #define ARMD1_UART3_BASE 0xD4026000 > #define ARMD1_MPMU_BASE 0xD4050000 > +#define ARMD1_USB_HOST_BASE 0xD4209000 > #define ARMD1_APMU_BASE 0xD4282800 > #define ARMD1_CPU_BASE 0xD4282C00 > > diff --git a/drivers/usb/host/Makefile b/drivers/usb/host/Makefile > index 7c4df53..5fdc97b 100644 > --- a/drivers/usb/host/Makefile > +++ b/drivers/usb/host/Makefile > @@ -35,6 +35,7 @@ COBJS-$(CONFIG_USB_SL811HS) += sl811-hcd.o > > # echi > COBJS-$(CONFIG_USB_EHCI) += ehci-hcd.o > +COBJS-$(CONFIG_USB_EHCI_ARMADA100) += ehci-armada100.o utmi-armada100.o > ifdef CONFIG_MPC512X > COBJS-$(CONFIG_USB_EHCI_FSL) += ehci-mpc512x.o > else > diff --git a/drivers/usb/host/ehci-armada100.c > b/drivers/usb/host/ehci-armada100.c new file mode 100644 > index 0000000..cfe159d > --- /dev/null > +++ b/drivers/usb/host/ehci-armada100.c > @@ -0,0 +1,62 @@ > +/* > + * (C) Copyright 2012 > + * eInfochips Ltd. > + * Written-by: Ajay Bhargav > + * > + * This driver is based on Kirkwood echi driver > + * (C) Copyright 2009 > + * Marvell Semiconductor > + * Written-by: Prafulla Wadaskar > + * > + * See file CREDITS for list of people who contributed to this > + * project. > + * > + * This program is free software; you can redistribute it and/or > + * modify it under the terms of the GNU General Public License as > + * published by the Free Software Foundation; either version 2 of > + * the License, or (at your option) any later version. > + * > + * This program is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + * GNU General Public License for more details. > + * > + * You should have received a copy of the GNU General Public License > + * along with this program; if not, write to the Free Software > + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, > + * MA 02110-1301 USA > + */ > + > +#include > +#include > +#include > +#include "ehci.h" > +#include "ehci-core.h" > +#include > +#include > +#include "utmi-armada100.h" Where does this include come from? Maybe this should be part of the platform includes in asm/arch/... and accessed as such too? M > + > +/* > + * EHCI host controller init > + */ > +int ehci_hcd_init(void) > +{ > + utmi_init(); > + hccr = (struct ehci_hccr *)(ARMD1_USB_HOST_BASE + 0x100); > + hcor = (struct ehci_hcor *)((uint32_t) hccr > + + HC_LENGTH(ehci_readl(&hccr->cr_capbase))); > + > + debug("armada100-ehci: init hccr %x and hcor %x hc_length %d\n", > + (uint32_t)hccr, (uint32_t)hcor, > + (uint32_t)HC_LENGTH(ehci_readl(&hccr->cr_capbase))); > + > + return 0; > +} > + > +/* > + * EHCI host controller stop > + */ > +int ehci_hcd_stop(void) > +{ > + return 0; > +}