xref: /rk3399_rockchip-uboot/drivers/usb/musb/davinci.h (revision 326ea986ac150acdc7656d57fca647db80b50158)
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