diff options
Diffstat (limited to 'drivers/usb/musb/davinci.h')
| -rw-r--r-- | drivers/usb/musb/davinci.h | 86 | 
1 files changed, 86 insertions, 0 deletions
| diff --git a/drivers/usb/musb/davinci.h b/drivers/usb/musb/davinci.h new file mode 100644 index 000000000..f6751bf66 --- /dev/null +++ b/drivers/usb/musb/davinci.h @@ -0,0 +1,86 @@ +/* + * TI's Davinci platform specific USB wrapper functions. + * + * Copyright (c) 2008 Texas Instruments + * + * 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., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * Author: Thomas Abraham t-abraham@ti.com, Texas Instruments + */ + +#ifndef __DAVINCI_USB_H__ +#define __DAVINCI_USB_H__ + +#include <asm/arch/hardware.h> +#include "musb_core.h" + +/* Base address of DAVINCI usb0 wrapper */ +#define DAVINCI_USB0_BASE 0x01C64000 + +/* Base address of DAVINCI musb core */ +#define MENTOR_USB0_BASE (DAVINCI_USB0_BASE+0x400) + +/* + * Davinci platform USB wrapper register overlay. Note: Only the required + * registers are included in this structure. It can be expanded as required. + */ +struct davinci_usb_regs { +	u32	version; +	u32	ctrlr; +	u32	reserved[0x20]; +	u32	intclrr; +	u32 	intmskr; +	u32 	intmsksetr; +}; + +#define DAVINCI_USB_TX_ENDPTS_MASK	0x1f /* ep0 + 4 tx */ +#define DAVINCI_USB_RX_ENDPTS_MASK	0x1e /* 4 rx */ +#define DAVINCI_USB_USBINT_SHIFT	16 +#define DAVINCI_USB_TXINT_SHIFT 	0 +#define DAVINCI_USB_RXINT_SHIFT 	8 +#define DAVINCI_INTR_DRVVBUS		0x0100 + +#define DAVINCI_USB_USBINT_MASK 	0x01ff0000	/* 8 Mentor, DRVVBUS */ +#define DAVINCI_USB_TXINT_MASK \ +		(DAVINCI_USB_TX_ENDPTS_MASK << DAVINCI_USB_TXINT_SHIFT) +#define DAVINCI_USB_RXINT_MASK \ +		(DAVINCI_USB_RX_ENDPTS_MASK << DAVINCI_USB_RXINT_SHIFT) +#define MGC_BUSCTL_OFFSET(_bEnd, _bOffset) \ +		(0x80 + (8*(_bEnd)) + (_bOffset)) + +/* Integrated highspeed/otg PHY */ +#define USBPHY_CTL_PADDR	(DAVINCI_SYSTEM_MODULE_BASE + 0x34) +#define USBPHY_PHYCLKGD 	(1 << 8) +#define USBPHY_SESNDEN		(1 << 7)	/* v(sess_end) comparator */ +#define USBPHY_VBDTCTEN 	(1 << 6)	/* v(bus) comparator */ +#define USBPHY_PHYPLLON 	(1 << 4)	/* override pll suspend */ +#define USBPHY_CLKO1SEL 	(1 << 3) +#define USBPHY_OSCPDWN		(1 << 2) +#define USBPHY_PHYPDWN		(1 << 0) + +/* Timeout for Davinci USB module */ +#define DAVINCI_USB_TIMEOUT 0x3FFFFFF + +/* IO Expander I2C address and VBUS enable mask */ +#define IOEXP_I2C_ADDR 0x3A +#define IOEXP_VBUSEN_MASK 1 + +/* extern functions */ +extern void lpsc_on(unsigned int id); +extern int i2c_write(uchar chip, uint addr, int alen, uchar *buffer, int len); +extern int i2c_read(uchar chip, uint addr, int alen, uchar *buffer, int len); +extern void enable_vbus(void); +#endif	/* __DAVINCI_USB_H__ */ |