| /* |
| * 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_PHY24MHZ (1 << 13) |
| #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__ */ |