From: Nick Thompson <nick.thompson@gefanuc.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v3] DA8xx: Add MUSB host support
Date: Fri, 13 Nov 2009 14:22:20 +0000 [thread overview]
Message-ID: <4AFD6B9C.2090704@gefanuc.com> (raw)
In-Reply-To: <1258117521-31667-1-git-send-email-ajay.gupta@ti.com>
On 13/11/09 13:05, Ajay Kumar Gupta wrote:
> Tested USB host functionality on DA830 EVM.
>
> Signed-off-by: Ajay Kumar Gupta <ajay.gupta@ti.com>
> Signed-off-by: Swaminathan S <swami.iyer@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 0000000..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 0000000..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 0x01E00000
> +
> +/* 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 0x3FFFFFF
> +
> +/* For now include usb OTG module registers here */
> +#define DA8XX_USB_VERSION_REG 0x00
> +#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_REG 0x3c
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 0x01ff0000 /* 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 7c47098..7c56ace 100644
> --- 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)
next prev parent reply other threads:[~2009-11-13 14:22 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-11-13 13:05 [U-Boot] [PATCH v3] DA8xx: Add MUSB host support Ajay Kumar Gupta
2009-11-13 14:22 ` Nick Thompson [this message]
2009-11-13 16:47 ` Gupta, Ajay Kumar
2009-11-13 17:05 ` Tom
2009-11-13 17:09 ` Gupta, Ajay Kumar
2009-11-13 17:28 ` Tom
2009-11-16 9:18 ` Nick Thompson
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=4AFD6B9C.2090704@gefanuc.com \
--to=nick.thompson@gefanuc.com \
--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.