Re: [U-Boot] [PATCH v3] DA8xx: Add MUSB host support
On 13/11/09 16:47, Gupta, Ajay Kumar wrote: Hi, Tested USB host functionality on DA830 EVM. Signed-off-by: Ajay Kumar Gupta ajay.gu...@ti.com Signed-off-by: Swaminathan S swami.i...@ti.com --- snip.. --- a/include/usb.h +++ b/include/usb.h @@ -183,7 +183,8 @@ struct usb_device { #if defined(CONFIG_USB_UHCI) || defined(CONFIG_USB_OHCI) || \ defined(CONFIG_USB_EHCI) || defined(CONFIG_USB_OHCI_NEW) || \ defined(CONFIG_USB_SL811HS) || defined(CONFIG_USB_ISP116X_HCD) || \ - defined(CONFIG_USB_R8A66597_HCD) || defined(CONFIG_USB_DAVINCI) + defined(CONFIG_USB_R8A66597_HCD) || defined(CONFIG_USB_DAVINCI) || \ + defined(CONFIG_USB_DA8XX) These are aligned incorrectly (should be 4 spaces rather than a tab) It was originally with tabs only. Are you suggesting to change all 5 lines to match the alignment ? I originally thought this was a da8xx specific file. It is not, so no, I don't expect you the change the indentation - what you have looks fine. Nick. ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
[U-Boot] [PATCH v3] DA8xx: Add MUSB host support
Tested USB host functionality on DA830 EVM. Signed-off-by: Ajay Kumar Gupta ajay.gu...@ti.com Signed-off-by: Swaminathan S swami.i...@ti.com --- Patch has updated licensing header.Other patch in series has no update so not reposting them untill I get any rework comment. drivers/usb/musb/Makefile |1 + drivers/usb/musb/da8xx.c | 143 + drivers/usb/musb/da8xx.h | 84 ++ include/usb.h |3 +- 4 files changed, 230 insertions(+), 1 deletions(-) create mode 100644 drivers/usb/musb/da8xx.c create mode 100644 drivers/usb/musb/da8xx.h diff --git a/drivers/usb/musb/Makefile b/drivers/usb/musb/Makefile index 09e0a5f..eb4d8fd 100644 --- a/drivers/usb/musb/Makefile +++ b/drivers/usb/musb/Makefile @@ -27,6 +27,7 @@ LIB := $(obj)libusb_musb.a COBJS-$(CONFIG_MUSB_HCD) += musb_hcd.o musb_core.o COBJS-$(CONFIG_USB_DAVINCI) += davinci.o +COBJS-$(CONFIG_USB_DA8XX) += da8xx.o COBJS := $(COBJS-y) SRCS := $(COBJS:.o=.c) diff --git a/drivers/usb/musb/da8xx.c b/drivers/usb/musb/da8xx.c new file mode 100644 index 000..3e4694f --- /dev/null +++ b/drivers/usb/musb/da8xx.c @@ -0,0 +1,143 @@ +/* + * da8xx.c - TI's DA8xx platform specific usb wrapper functions. + * + * Author: Ajay Kumar Gupta ajay.gu...@ti.com + * + * Based on drivers/usb/musb/davinci.c + * + * Copyright (C) 2009 Texas Instruments Incorporated + * + * 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., 675 Mass Ave, Cambridge, MA 02139, USA. + */ +#include common.h +#include asm/arch/hardware.h +#include asm/arch/gpio_defs.h + +#include da8xx.h + +/* MUSB platform configuration */ +struct musb_config musb_cfg = { + (struct musb_regs *)DA8XX_USB_OTG_CORE_BASE, + DA8XX_USB_OTG_TIMEOUT, + 0 +}; + +/* + * This function enables VBUS by driving the GPIO Bank4 Pin 15 high. + */ +static void enable_vbus(void) +{ + u32 value; + + /* configure GPIO bank4 pin 15 in output direction */ + value = readl(davinci_gpio_bank45-dir); + writel((value (~DA8XX_USB_VBUS_GPIO)), davinci_gpio_bank45-dir); + + /* set GPIO bank4 pin 15 high to drive VBUS */ + value = readl(davinci_gpio_bank45-set_data); + writel((value | DA8XX_USB_VBUS_GPIO), davinci_gpio_bank45-set_data); +} + +/* + * Enable the usb0 phy. This initialization procedure is explained in + * the DA8xx USB user guide document. + */ +static u8 phy_on(void) +{ + u32 timeout; + u32 cfgchip2; + + cfgchip2 = readl(davinci_syscfg_regs-cfgchip2); + + cfgchip2 = ~(CFGCHIP2_RESET | CFGCHIP2_PHYPWRDN | CFGCHIP2_OTGPWRDN | + CFGCHIP2_OTGMODE | CFGCHIP2_REFFREQ); + cfgchip2 |= CFGCHIP2_SESENDEN | CFGCHIP2_VBDTCTEN | CFGCHIP2_PHY_PLLON | + CFGCHIP2_REFFREQ_24MHZ; + + writel(cfgchip2, davinci_syscfg_regs-cfgchip2); + + /* wait until the usb phy pll locks */ + timeout = musb_cfg.timeout; + while (timeout--) + if (readl(davinci_syscfg_regs-cfgchip2) CFGCHIP2_PHYCLKGD) + return 1; + + /* USB phy was not turned on */ + return 0; +} + +/* + * Disable the usb phy + */ +static void phy_off(void) +{ + u32 cfgchip2; + + /* +* Power down the on-chip PHY. +*/ + cfgchip2 = readl(davinci_syscfg_regs-cfgchip2); + cfgchip2 = ~CFGCHIP2_PHY_PLLON; + cfgchip2 |= CFGCHIP2_PHYPWRDN | CFGCHIP2_OTGPWRDN; + writel(cfgchip2, davinci_syscfg_regs-cfgchip2); +} + +/* + * This function performs DA8xx platform specific initialization for usb0. + */ +int musb_platform_init(void) +{ + u32 revision; + + /* enable psc for usb2.0 */ + lpsc_on(33); + + /* enable usb vbus */ + enable_vbus(); + + /* reset the controller */ + writel(0x1, (DA8XX_USB_OTG_BASE + DA8XX_USB_CTRL_REG)); + udelay(5000); + + /* start the on-chip usb phy and its pll */ + if (phy_on() == 0) + return -1; + + /* Returns zero if e.g. not clocked */ + revision = readl(DA8XX_USB_OTG_BASE + DA8XX_USB_VERSION_REG); + if (revision == 0) + return -1; + + /* Disable all interrupts */ + writel((DA8XX_USB_USBINT_MASK | DA8XX_USB_TXINT_MASK | + DA8XX_USB_RXINT_MASK), + (DA8XX_USB_OTG_BASE +
Re: [U-Boot] [PATCH v3] DA8xx: Add MUSB host support
On 13/11/09 13:05, Ajay Kumar Gupta wrote: Tested USB host functionality on DA830 EVM. Signed-off-by: Ajay Kumar Gupta ajay.gu...@ti.com Signed-off-by: Swaminathan S swami.i...@ti.com --- Patch has updated licensing header.Other patch in series has no update so not reposting them untill I get any rework comment. drivers/usb/musb/Makefile |1 + drivers/usb/musb/da8xx.c | 143 + drivers/usb/musb/da8xx.h | 84 ++ include/usb.h |3 +- 4 files changed, 230 insertions(+), 1 deletions(-) create mode 100644 drivers/usb/musb/da8xx.c create mode 100644 drivers/usb/musb/da8xx.h diff --git a/drivers/usb/musb/da8xx.c b/drivers/usb/musb/da8xx.c new file mode 100644 index 000..3e4694f --- /dev/null +++ b/drivers/usb/musb/da8xx.c +int musb_platform_init(void) +{ + u32 revision; + + /* enable psc for usb2.0 */ + lpsc_on(33); + + /* enable usb vbus */ + enable_vbus(); + + /* reset the controller */ + writel(0x1, (DA8XX_USB_OTG_BASE + DA8XX_USB_CTRL_REG)); + udelay(5000); + + /* start the on-chip usb phy and its pll */ + if (phy_on() == 0) + return -1; + + /* Returns zero if e.g. not clocked */ + revision = readl(DA8XX_USB_OTG_BASE + DA8XX_USB_VERSION_REG); + if (revision == 0) + return -1; + + /* Disable all interrupts */ + writel((DA8XX_USB_USBINT_MASK | DA8XX_USB_TXINT_MASK | + DA8XX_USB_RXINT_MASK), + (DA8XX_USB_OTG_BASE + DA8XX_USB_INT_MASK_SET_REG)); This last line should have one less alignment space. You still have a good collection of OTG + offset #defines here and below. Could you please add a C struct and pointer instead. + return 0; +} + +/* + * This function performs DA8xx platform specific deinitialization for usb0. + */ +void musb_platform_deinit(void) +{ + /* Turn of the phy */ + phy_off(); + + /* flush any interrupts */ + writel((DA8XX_USB_USBINT_MASK | DA8XX_USB_TXINT_MASK | + DA8XX_USB_RXINT_MASK), + (DA8XX_USB_OTG_BASE + DA8XX_USB_INT_MASK_CLR_REG)); + writel(0, (DA8XX_USB_OTG_BASE + DA8XX_USB_EOI_REG)); +} diff --git a/drivers/usb/musb/da8xx.h b/drivers/usb/musb/da8xx.h new file mode 100644 index 000..c3e9c77 --- /dev/null +++ b/drivers/usb/musb/da8xx.h +#ifndef __DA8XX_MUSB_H__ +#define __DA8XX_MUSB_H__ + +#include musb_core.h + +/* extern functions */ +extern void lpsc_on(unsigned int id); Already defined in hardware.h (inherited here from davinci.h) + +/* Base address of da8xx usb0 wrapper */ +#define DA8XX_USB_OTG_BASE 0x01E0 + +/* Base address of da8xx musb core */ +#define DA8XX_USB_OTG_CORE_BASE (DA8XX_USB_OTG_BASE + 0x400) + +/* Timeout for DA8xx usb module */ +#define DA8XX_USB_OTG_TIMEOUT 0x3FF + +/* For now include usb OTG module registers here */ +#define DA8XX_USB_VERSION_REG0x00 +#define DA8XX_USB_CTRL_REG 0x04 +#define DA8XX_USB_INT_MASK_SET_REG 0x30 +#define DA8XX_USB_INT_MASK_CLR_REG 0x34 +#define DA8XX_USB_EOI_REG0x3c These should be removed in favour of struct members. + +#define DA8XX_USB_TX_ENDPTS_MASK 0x1f /* ep0 + 4 tx */ +#define DA8XX_USB_RX_ENDPTS_MASK 0x1e /* 4 rx */ +#define DA8XX_USB_TXINT_SHIFT 0 +#define DA8XX_USB_RXINT_SHIFT 8 + +#define DA8XX_USB_USBINT_MASK 0x01ff /* 8 Mentor, DRVVBUS */ +#define DA8XX_USB_TXINT_MASK \ + (DA8XX_USB_TX_ENDPTS_MASK DA8XX_USB_TXINT_SHIFT) +#define DA8XX_USB_RXINT_MASK \ + (DA8XX_USB_RX_ENDPTS_MASK DA8XX_USB_RXINT_SHIFT) + +/* DA8xx CFGCHIP2 (USB 2.0 PHY Control) register bits */ +#define CFGCHIP2_PHYCLKGD(1 17) +#define CFGCHIP2_VBUSSENSE (1 16) +#define CFGCHIP2_RESET (1 15) +#define CFGCHIP2_OTGMODE (3 13) +#define CFGCHIP2_NO_OVERRIDE (0 13) +#define CFGCHIP2_FORCE_HOST (1 13) +#define CFGCHIP2_FORCE_DEVICE(2 13) +#define CFGCHIP2_FORCE_HOST_VBUS_LOW (3 13) +#define CFGCHIP2_USB1PHYCLKMUX (1 12) +#define CFGCHIP2_USB2PHYCLKMUX (1 11) +#define CFGCHIP2_PHYPWRDN(1 10) +#define CFGCHIP2_OTGPWRDN(1 9) +#define CFGCHIP2_DATPOL (1 8) +#define CFGCHIP2_USB1SUSPENDM(1 7) +#define CFGCHIP2_PHY_PLLON (1 6)/* override PLL suspend */ +#define CFGCHIP2_SESENDEN(1 5)/* Vsess_end comparator */ +#define CFGCHIP2_VBDTCTEN(1 4)/* Vbus comparator */ +#define CFGCHIP2_REFFREQ (0xf 0) +#define CFGCHIP2_REFFREQ_12MHZ (1 0) +#define CFGCHIP2_REFFREQ_24MHZ (2 0) +#define CFGCHIP2_REFFREQ_48MHZ (3 0) + +#define DA8XX_USB_VBUS_GPIO (1 15) +#endif /* __DA8XX_MUSB_H__ */ + diff --git a/include/usb.h b/include/usb.h index
Re: [U-Boot] [PATCH v3] DA8xx: Add MUSB host support
Hi, Tested USB host functionality on DA830 EVM. Signed-off-by: Ajay Kumar Gupta ajay.gu...@ti.com Signed-off-by: Swaminathan S swami.i...@ti.com --- snip.. --- a/include/usb.h +++ b/include/usb.h @@ -183,7 +183,8 @@ struct usb_device { #if defined(CONFIG_USB_UHCI) || defined(CONFIG_USB_OHCI) || \ defined(CONFIG_USB_EHCI) || defined(CONFIG_USB_OHCI_NEW) || \ defined(CONFIG_USB_SL811HS) || defined(CONFIG_USB_ISP116X_HCD) || \ - defined(CONFIG_USB_R8A66597_HCD) || defined(CONFIG_USB_DAVINCI) + defined(CONFIG_USB_R8A66597_HCD) || defined(CONFIG_USB_DAVINCI) || \ + defined(CONFIG_USB_DA8XX) These are aligned incorrectly (should be 4 spaces rather than a tab) It was originally with tabs only. Are you suggesting to change all 5 lines to match the alignment ? Tom, What do you think on this one? -Ajay ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH v3] DA8xx: Add MUSB host support
Gupta, Ajay Kumar wrote: Hi, Tested USB host functionality on DA830 EVM. Signed-off-by: Ajay Kumar Gupta ajay.gu...@ti.com Signed-off-by: Swaminathan S swami.i...@ti.com --- snip.. --- a/include/usb.h +++ b/include/usb.h @@ -183,7 +183,8 @@ struct usb_device { #if defined(CONFIG_USB_UHCI) || defined(CONFIG_USB_OHCI) || \ defined(CONFIG_USB_EHCI) || defined(CONFIG_USB_OHCI_NEW) || \ defined(CONFIG_USB_SL811HS) || defined(CONFIG_USB_ISP116X_HCD) || \ - defined(CONFIG_USB_R8A66597_HCD) || defined(CONFIG_USB_DAVINCI) + defined(CONFIG_USB_R8A66597_HCD) || defined(CONFIG_USB_DAVINCI) || \ + defined(CONFIG_USB_DA8XX) These are aligned incorrectly (should be 4 spaces rather than a tab) It was originally with tabs only. Are you suggesting to change all 5 lines to match the alignment ? Tom, What do you think on this one? In general tabs are preferred but I would like to review the entire patchset. When you make changes to a subset of the patches, you must repost the entire patchset. Please repost the entire patchset. Tom -Ajay ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH v3] DA8xx: Add MUSB host support
Hi, Hi, Tested USB host functionality on DA830 EVM. Signed-off-by: Ajay Kumar Gupta ajay.gu...@ti.com Signed-off-by: Swaminathan S swami.i...@ti.com --- snip.. --- a/include/usb.h +++ b/include/usb.h @@ -183,7 +183,8 @@ struct usb_device { #if defined(CONFIG_USB_UHCI) || defined(CONFIG_USB_OHCI) || \ defined(CONFIG_USB_EHCI) || defined(CONFIG_USB_OHCI_NEW) || \ defined(CONFIG_USB_SL811HS) || defined(CONFIG_USB_ISP116X_HCD) || \ - defined(CONFIG_USB_R8A66597_HCD) || defined(CONFIG_USB_DAVINCI) + defined(CONFIG_USB_R8A66597_HCD) || defined(CONFIG_USB_DAVINCI) || \ + defined(CONFIG_USB_DA8XX) These are aligned incorrectly (should be 4 spaces rather than a tab) It was originally with tabs only. Are you suggesting to change all 5 lines to match the alignment ? Tom, What do you think on this one? In general tabs are preferred but I would like to review the entire patchset. When you make changes to a subset of the patches, you must repost the entire patchset. Please repost the entire patchset. Ok sure. Shall I post this patch with tabs or with 4-spaces as Nick suggested ? Regards, Ajay Tom -Ajay ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot
Re: [U-Boot] [PATCH v3] DA8xx: Add MUSB host support
Gupta, Ajay Kumar wrote: Hi, Hi, Tested USB host functionality on DA830 EVM. Signed-off-by: Ajay Kumar Gupta ajay.gu...@ti.com Signed-off-by: Swaminathan S swami.i...@ti.com --- snip.. --- a/include/usb.h +++ b/include/usb.h @@ -183,7 +183,8 @@ struct usb_device { #if defined(CONFIG_USB_UHCI) || defined(CONFIG_USB_OHCI) || \ defined(CONFIG_USB_EHCI) || defined(CONFIG_USB_OHCI_NEW) || \ defined(CONFIG_USB_SL811HS) || defined(CONFIG_USB_ISP116X_HCD) || \ - defined(CONFIG_USB_R8A66597_HCD) || defined(CONFIG_USB_DAVINCI) + defined(CONFIG_USB_R8A66597_HCD) || defined(CONFIG_USB_DAVINCI) || \ + defined(CONFIG_USB_DA8XX) These are aligned incorrectly (should be 4 spaces rather than a tab) It was originally with tabs only. Are you suggesting to change all 5 lines to match the alignment ? Tom, What do you think on this one? In general tabs are preferred but I would like to review the entire patchset. When you make changes to a subset of the patches, you must repost the entire patchset. Please repost the entire patchset. Ok sure. Shall I post this patch with tabs or with 4-spaces as Nick suggested ? Just repost it as-is. Please be aware that this is a USB change. And though I can provide some input the ack/nak decision is Remy's. Tom Regards, Ajay Tom -Ajay ___ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot