12731b9a8SJean-Christophe PLAGNIOL-VILLARD /* 22731b9a8SJean-Christophe PLAGNIOL-VILLARD * TI's Davinci platform specific USB wrapper functions. 32731b9a8SJean-Christophe PLAGNIOL-VILLARD * 42731b9a8SJean-Christophe PLAGNIOL-VILLARD * Copyright (c) 2008 Texas Instruments 52731b9a8SJean-Christophe PLAGNIOL-VILLARD * 6*1a459660SWolfgang Denk * SPDX-License-Identifier: GPL-2.0+ 72731b9a8SJean-Christophe PLAGNIOL-VILLARD * 82731b9a8SJean-Christophe PLAGNIOL-VILLARD * Author: Thomas Abraham t-abraham@ti.com, Texas Instruments 92731b9a8SJean-Christophe PLAGNIOL-VILLARD */ 102731b9a8SJean-Christophe PLAGNIOL-VILLARD 112731b9a8SJean-Christophe PLAGNIOL-VILLARD #ifndef __DAVINCI_USB_H__ 122731b9a8SJean-Christophe PLAGNIOL-VILLARD #define __DAVINCI_USB_H__ 132731b9a8SJean-Christophe PLAGNIOL-VILLARD 142731b9a8SJean-Christophe PLAGNIOL-VILLARD #include <asm/arch/hardware.h> 152731b9a8SJean-Christophe PLAGNIOL-VILLARD #include "musb_core.h" 162731b9a8SJean-Christophe PLAGNIOL-VILLARD 172731b9a8SJean-Christophe PLAGNIOL-VILLARD /* Base address of DAVINCI usb0 wrapper */ 182731b9a8SJean-Christophe PLAGNIOL-VILLARD #define DAVINCI_USB0_BASE 0x01C64000 192731b9a8SJean-Christophe PLAGNIOL-VILLARD 202731b9a8SJean-Christophe PLAGNIOL-VILLARD /* Base address of DAVINCI musb core */ 212731b9a8SJean-Christophe PLAGNIOL-VILLARD #define MENTOR_USB0_BASE (DAVINCI_USB0_BASE+0x400) 222731b9a8SJean-Christophe PLAGNIOL-VILLARD 232731b9a8SJean-Christophe PLAGNIOL-VILLARD /* 242731b9a8SJean-Christophe PLAGNIOL-VILLARD * Davinci platform USB wrapper register overlay. Note: Only the required 252731b9a8SJean-Christophe PLAGNIOL-VILLARD * registers are included in this structure. It can be expanded as required. 262731b9a8SJean-Christophe PLAGNIOL-VILLARD */ 272731b9a8SJean-Christophe PLAGNIOL-VILLARD struct davinci_usb_regs { 282731b9a8SJean-Christophe PLAGNIOL-VILLARD u32 version; 292731b9a8SJean-Christophe PLAGNIOL-VILLARD u32 ctrlr; 302731b9a8SJean-Christophe PLAGNIOL-VILLARD u32 reserved[0x20]; 312731b9a8SJean-Christophe PLAGNIOL-VILLARD u32 intclrr; 322731b9a8SJean-Christophe PLAGNIOL-VILLARD u32 intmskr; 332731b9a8SJean-Christophe PLAGNIOL-VILLARD u32 intmsksetr; 342731b9a8SJean-Christophe PLAGNIOL-VILLARD }; 352731b9a8SJean-Christophe PLAGNIOL-VILLARD 362731b9a8SJean-Christophe PLAGNIOL-VILLARD #define DAVINCI_USB_TX_ENDPTS_MASK 0x1f /* ep0 + 4 tx */ 372731b9a8SJean-Christophe PLAGNIOL-VILLARD #define DAVINCI_USB_RX_ENDPTS_MASK 0x1e /* 4 rx */ 382731b9a8SJean-Christophe PLAGNIOL-VILLARD #define DAVINCI_USB_USBINT_SHIFT 16 392731b9a8SJean-Christophe PLAGNIOL-VILLARD #define DAVINCI_USB_TXINT_SHIFT 0 402731b9a8SJean-Christophe PLAGNIOL-VILLARD #define DAVINCI_USB_RXINT_SHIFT 8 412731b9a8SJean-Christophe PLAGNIOL-VILLARD #define DAVINCI_INTR_DRVVBUS 0x0100 422731b9a8SJean-Christophe PLAGNIOL-VILLARD 432731b9a8SJean-Christophe PLAGNIOL-VILLARD #define DAVINCI_USB_USBINT_MASK 0x01ff0000 /* 8 Mentor, DRVVBUS */ 442731b9a8SJean-Christophe PLAGNIOL-VILLARD #define DAVINCI_USB_TXINT_MASK \ 452731b9a8SJean-Christophe PLAGNIOL-VILLARD (DAVINCI_USB_TX_ENDPTS_MASK << DAVINCI_USB_TXINT_SHIFT) 462731b9a8SJean-Christophe PLAGNIOL-VILLARD #define DAVINCI_USB_RXINT_MASK \ 472731b9a8SJean-Christophe PLAGNIOL-VILLARD (DAVINCI_USB_RX_ENDPTS_MASK << DAVINCI_USB_RXINT_SHIFT) 482731b9a8SJean-Christophe PLAGNIOL-VILLARD #define MGC_BUSCTL_OFFSET(_bEnd, _bOffset) \ 492731b9a8SJean-Christophe PLAGNIOL-VILLARD (0x80 + (8*(_bEnd)) + (_bOffset)) 502731b9a8SJean-Christophe PLAGNIOL-VILLARD 512731b9a8SJean-Christophe PLAGNIOL-VILLARD /* Integrated highspeed/otg PHY */ 522731b9a8SJean-Christophe PLAGNIOL-VILLARD #define USBPHY_CTL_PADDR (DAVINCI_SYSTEM_MODULE_BASE + 0x34) 536e20e64fSPrathap Srinivas #define USBPHY_PHY24MHZ (1 << 13) 542731b9a8SJean-Christophe PLAGNIOL-VILLARD #define USBPHY_PHYCLKGD (1 << 8) 552731b9a8SJean-Christophe PLAGNIOL-VILLARD #define USBPHY_SESNDEN (1 << 7) /* v(sess_end) comparator */ 562731b9a8SJean-Christophe PLAGNIOL-VILLARD #define USBPHY_VBDTCTEN (1 << 6) /* v(bus) comparator */ 572731b9a8SJean-Christophe PLAGNIOL-VILLARD #define USBPHY_PHYPLLON (1 << 4) /* override pll suspend */ 582731b9a8SJean-Christophe PLAGNIOL-VILLARD #define USBPHY_CLKO1SEL (1 << 3) 592731b9a8SJean-Christophe PLAGNIOL-VILLARD #define USBPHY_OSCPDWN (1 << 2) 602731b9a8SJean-Christophe PLAGNIOL-VILLARD #define USBPHY_PHYPDWN (1 << 0) 612731b9a8SJean-Christophe PLAGNIOL-VILLARD 622731b9a8SJean-Christophe PLAGNIOL-VILLARD /* Timeout for Davinci USB module */ 632731b9a8SJean-Christophe PLAGNIOL-VILLARD #define DAVINCI_USB_TIMEOUT 0x3FFFFFF 642731b9a8SJean-Christophe PLAGNIOL-VILLARD 652731b9a8SJean-Christophe PLAGNIOL-VILLARD /* IO Expander I2C address and VBUS enable mask */ 662731b9a8SJean-Christophe PLAGNIOL-VILLARD #define IOEXP_I2C_ADDR 0x3A 672731b9a8SJean-Christophe PLAGNIOL-VILLARD #define IOEXP_VBUSEN_MASK 1 682731b9a8SJean-Christophe PLAGNIOL-VILLARD 692731b9a8SJean-Christophe PLAGNIOL-VILLARD /* extern functions */ 702731b9a8SJean-Christophe PLAGNIOL-VILLARD extern void lpsc_on(unsigned int id); 712731b9a8SJean-Christophe PLAGNIOL-VILLARD extern int i2c_write(uchar chip, uint addr, int alen, uchar *buffer, int len); 722731b9a8SJean-Christophe PLAGNIOL-VILLARD extern int i2c_read(uchar chip, uint addr, int alen, uchar *buffer, int len); 732731b9a8SJean-Christophe PLAGNIOL-VILLARD extern void enable_vbus(void); 742731b9a8SJean-Christophe PLAGNIOL-VILLARD #endif /* __DAVINCI_USB_H__ */ 75