[PATCH 1/3] ARM: SAMSUNG: Add support for EXYNOS SS USB 3.0 DRD controller

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Cc: Kukjin Kim <kgene.kim <at> samsung.com>
Cc: Greg Kroah-Hartman <gregkh <at> suse.de>
Cc: Felipe Balbi <balbi <at> ti.com>

Adds DRD global register definitions and related platform data.

Signed-off-by: Anton Tikhomirov <av.tikhomirov@xxxxxxxxxxx>
---
 .../include/plat/regs-usb3-exynos-drd.h            |  305 ++++++++++++++++++++
 arch/arm/plat-samsung/include/plat/udc-ss.h        |   21 ++
 arch/arm/plat-samsung/include/plat/usb-phy.h       |    1 +
 3 files changed, 327 insertions(+), 0 deletions(-)
 create mode 100644 arch/arm/plat-samsung/include/plat/regs-usb3-exynos-drd.h
 create mode 100644 arch/arm/plat-samsung/include/plat/udc-ss.h

diff --git a/arch/arm/plat-samsung/include/plat/regs-usb3-exynos-drd.h b/arch/arm/plat-samsung/include/plat/regs-usb3-exynos-drd.h
new file mode 100644
index 0000000..7006dc4
--- /dev/null
+++ b/arch/arm/plat-samsung/include/plat/regs-usb3-exynos-drd.h
@@ -0,0 +1,305 @@
+/* arch/arm/plat-samsung/include/plat/regs-usb3-exynos-drd.h
+ *
+ * Copyright (c) 2011 Samsung Electronics Co. Ltd
+ * Author: Anton Tikhomirov <av.tikhomirov@xxxxxxxxxxx>
+ *
+ * Exynos SuperSpeed USB 3.0 DRD Controller Global registers
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#ifndef __SAMSUNG_PLAT_REGS_USB3_EXYNOS_DRD_H
+#define __SAMSUNG_PLAT_REGS_USB3_EXYNOS_DRD_H __FILE__
+
+#define EXYNOS_USB3_REG(x) (x)
+
+#define EXYNOS_USB3_GSBUSCFG0		EXYNOS_USB3_REG(0xC100)
+#define EXYNOS_USB3_GSBUSCFG0_SBusStoreAndForward	(1 << 12)
+#define EXYNOS_USB3_GSBUSCFG0_DatBigEnd			(1 << 11)
+#define EXYNOS_USB3_GSBUSCFG0_INCR256BrstEna		(1 << 7)
+#define EXYNOS_USB3_GSBUSCFG0_INCR128BrstEna		(1 << 6)
+#define EXYNOS_USB3_GSBUSCFG0_INCR64BrstEna		(1 << 5)
+#define EXYNOS_USB3_GSBUSCFG0_INCR32BrstEna		(1 << 4)
+#define EXYNOS_USB3_GSBUSCFG0_INCR16BrstEna		(1 << 3)
+#define EXYNOS_USB3_GSBUSCFG0_INCR8BrstEna		(1 << 2)
+#define EXYNOS_USB3_GSBUSCFG0_INCR4BrstEna		(1 << 1)
+#define EXYNOS_USB3_GSBUSCFG0_INCRBrstEna		(1 << 0)
+
+#define EXYNOS_USB3_GSBUSCFG1		EXYNOS_USB3_REG(0xC104)
+#define EXYNOS_USB3_GSBUSCFG1_EN1KPAGE			(1 << 12)
+#define EXYNOS_USB3_GSBUSCFG1_BREQLIMIT_MASK		(0xf << 8)
+#define EXYNOS_USB3_GSBUSCFG1_BREQLIMIT_SHIFT		8
+#define EXYNOS_USB3_GSBUSCFG1_BREQLIMIT(_x)		((_x) << 8)
+
+
+#define EXYNOS_USB3_GTXTHRCFG		EXYNOS_USB3_REG(0xC108)
+#define EXYNOS_USB3_GTXTHRCFG_USBTxPktCntSel		(1 << 29)
+#define EXYNOS_USB3_GTXTHRCFG_USBTxPktCnt_MASK		(0xf << 24)
+#define EXYNOS_USB3_GTXTHRCFG_USBTxPktCnt_SHIFT		24
+#define EXYNOS_USB3_GTXTHRCFG_USBTxPktCnt(_x)		((_x) << 24)
+#define EXYNOS_USB3_GTXTHRCFG_USBMaxTxBurstSize_MASK	(0xff << 16)
+#define EXYNOS_USB3_GTXTHRCFG_USBMaxTxBurstSize_SHIFT	16
+#define EXYNOS_USB3_GTXTHRCFG_USBMaxTxBurstSize(_x)	((_x) << 16)
+
+
+#define EXYNOS_USB3_GRXTHRCFG		EXYNOS_USB3_REG(0xC10C)
+#define EXYNOS_USB3_GRXTHRCFG_USBRxPktCntSel		(1 << 29)
+#define EXYNOS_USB3_GRXTHRCFG_USBRxPktCnt_MASK		(0xf << 24)
+#define EXYNOS_USB3_GRXTHRCFG_USBRxPktCnt_SHIFT		24
+#define EXYNOS_USB3_GRXTHRCFG_USBRxPktCnt(_x)		((_x) << 24)
+#define EXYNOS_USB3_GRXTHRCFG_USBMaxRxBurstSize_MASK	(0x1f << 19)
+#define EXYNOS_USB3_GRXTHRCFG_USBMaxRxBurstSize_SHIFT	19
+#define EXYNOS_USB3_GRXTHRCFG_USBMaxRxBurstSize(_x)	((_x) << 19)
+
+
+#define EXYNOS_USB3_GCTL		EXYNOS_USB3_REG(0xC110)
+#define EXYNOS_USB3_GCTL_PwrDnScale_MASK		(0x1fff << 19)
+#define EXYNOS_USB3_GCTL_PwrDnScale_SHIFT		19
+#define EXYNOS_USB3_GCTL_PwrDnScale(_x)			((_x) << 19)
+#define EXYNOS_USB3_GCTL_U2RSTECN			(1 << 16)
+#define EXYNOS_USB3_GCTL_FRMSCLDWN_MASK			(0x3 << 14)
+#define EXYNOS_USB3_GCTL_FRMSCLDWN_SHIFT		14
+#define EXYNOS_USB3_GCTL_FRMSCLDWN(_x)			((_x) << 14)
+#define EXYNOS_USB3_GCTL_PrtCapDir_MASK			(0x3 << 12)
+#define EXYNOS_USB3_GCTL_PrtCapDir_SHIFT		12
+#define EXYNOS_USB3_GCTL_PrtCapDir(_x)			((_x) << 12)
+#define EXYNOS_USB3_GCTL_CoreSoftReset			(1 << 11)
+#define EXYNOS_USB3_GCTL_LocalLpBkEn			(1 << 10)
+#define EXYNOS_USB3_GCTL_LpbkEn				(1 << 9)
+#define EXYNOS_USB3_GCTL_DebugAttach			(1 << 8)
+#define EXYNOS_USB3_GCTL_RAMClkSel_MASK			(0x3 << 6)
+#define EXYNOS_USB3_GCTL_RAMClkSel_SHIFT		6
+#define EXYNOS_USB3_GCTL_RAMClkSel(_x)			((_x) << 6)
+#define EXYNOS_USB3_GCTL_ScaleDown_MASK			(0x3 << 4)
+#define EXYNOS_USB3_GCTL_ScaleDown_SHIFT		4
+#define EXYNOS_USB3_GCTL_ScaleDown(_x)			((_x) << 4)
+#define EXYNOS_USB3_GCTL_DisScramble			(1 << 3)
+#define EXYNOS_USB3_GCTL_SsPwrClmp			(1 << 2)
+#define EXYNOS_USB3_GCTL_HsFsLsPwrClmp			(1 << 1)
+#define EXYNOS_USB3_GCTL_DsblClkGtng			(1 << 0)
+
+#define EXYNOS_USB3_GEVTEN		EXYNOS_USB3_REG(0xC114)
+#define EXYNOS_USB3_GEVTEN_I2CEvtEn			(1 << 1)
+#define EXYNOS_USB3_GEVTEN_ULPICKEvtEn			(1 << 0)
+#define EXYNOS_USB3_GEVTEN_I2CCKEvtEn			(1 << 0)
+
+#define EXYNOS_USB3_GSTS		EXYNOS_USB3_REG(0xC118)
+#define EXYNOS_USB3_GSTS_CBELT_MASK			(0xfff << 20)
+#define EXYNOS_USB3_GSTS_CBELT_SHIFT			20
+#define EXYNOS_USB3_GSTS_CBELT(_x)			((_x) << 20)
+#define EXYNOS_USB3_GSTS_OTG_IP				(1 << 10)
+#define EXYNOS_USB3_GSTS_BC_IP				(1 << 9)
+#define EXYNOS_USB3_GSTS_ADP_IP				(1 << 8)
+#define EXYNOS_USB3_GSTS_Host_IP			(1 << 7)
+#define EXYNOS_USB3_GSTS_Device_IP			(1 << 6)
+#define EXYNOS_USB3_GSTS_CSRTimeout			(1 << 5)
+#define EXYNOS_USB3_GSTS_BusErrAddrVld			(1 << 4)
+#define EXYNOS_USB3_GSTS_CurMod_MASK			(0x3 << 0)
+#define EXYNOS_USB3_GSTS_CurMod_SHIFT			0
+#define EXYNOS_USB3_GSTS_CurMod(_x)			((_x) << 0)
+
+#define EXYNOS_USB3_GSNPSID		EXYNOS_USB3_REG(0xC120)
+
+#define EXYNOS_USB3_GGPIO		EXYNOS_USB3_REG(0xC124)
+#define EXYNOS_USB3_GGPIO_GPO_MASK			(0xffff << 16)
+#define EXYNOS_USB3_GGPIO_GPO_SHIFT			16
+#define EXYNOS_USB3_GGPIO_GPO(_x)			((_x) << 16)
+#define EXYNOS_USB3_GGPIO_GPI_MASK			(0xffff << 0)
+#define EXYNOS_USB3_GGPIO_GPI_SHIFT			0
+#define EXYNOS_USB3_GGPIO_GPI(_x)			((x) << 0)
+
+#define EXYNOS_USB3_GUID		EXYNOS_USB3_REG(0xC128)
+
+#define EXYNOS_USB3_GUCTL		EXYNOS_USB3_REG(0xC12C)
+#define EXYNOS_USB3_GUCTL_SprsCtrlTransEn		(1 << 17)
+#define EXYNOS_USB3_GUCTL_ResBwHSEPS			(1 << 16)
+#define EXYNOS_USB3_GUCTL_CMdevAddr			(1 << 15)
+#define EXYNOS_USB3_GUCTL_USBHstInAutoRetryEn		(1 << 14)
+#define EXYNOS_USB3_GUCTL_USBHstInMaxBurst_MASK		(0x7 << 11)
+#define EXYNOS_USB3_GUCTL_USBHstInMaxBurst_SHIFT	11
+#define EXYNOS_USB3_GUCTL_USBHstInMaxBurst(_x)		((_x) << 11)
+#define EXYNOS_USB3_GUCTL_DTCT_MASK			(0x3 << 9)
+#define EXYNOS_USB3_GUCTL_DTCT_SHIFT			9
+#define EXYNOS_USB3_GUCTL_DTCT(_x)			((_x) << 9)
+#define EXYNOS_USB3_GUCTL_DTFT_MASK			(0x1ff << 0)
+#define EXYNOS_USB3_GUCTL_DTFT_SHIFT			0
+#define EXYNOS_USB3_GUCTL_DTFT(_x)			((_x) << 0)
+
+/* TODO: Not finished */
+#define EXYNOS_USB3_GBUSERRADDR_31_0	EXYNOS_USB3_REG(0xC130)
+#define EXYNOS_USB3_GBUSERRADDR_63_32	EXYNOS_USB3_REG(0xC134)
+#define EXYNOS_USB3_GPRTBIMAP_31_0	EXYNOS_USB3_REG(0xC138)
+#define EXYNOS_USB3_GPRTBIMAP_63_32	EXYNOS_USB3_REG(0xC13C)
+
+#define EXYNOS_USB3_GHWPARAMS0		EXYNOS_USB3_REG(0xC140)
+#define EXYNOS_USB3_GHWPARAMS1		EXYNOS_USB3_REG(0xC144)
+#define EXYNOS_USB3_GHWPARAMS2		EXYNOS_USB3_REG(0xC148)
+#define EXYNOS_USB3_GHWPARAMS3		EXYNOS_USB3_REG(0xC14C)
+#define EXYNOS_USB3_GHWPARAMS4		EXYNOS_USB3_REG(0xC150)
+#define EXYNOS_USB3_GHWPARAMS5		EXYNOS_USB3_REG(0xC154)
+#define EXYNOS_USB3_GHWPARAMS6		EXYNOS_USB3_REG(0xC158)
+#define EXYNOS_USB3_GHWPARAMS7		EXYNOS_USB3_REG(0xC15C)
+
+#define EXYNOS_USB3_GDBGFIFOSPACE	EXYNOS_USB3_REG(0xC160)
+#define EXYNOS_USB3_GDBGLTSSM		EXYNOS_USB3_REG(0xC164)
+
+#define EXYNOS_USB3_GDBGLSPMUX		EXYNOS_USB3_REG(0xC170)
+#define EXYNOS_USB3_GDBGLSP		EXYNOS_USB3_REG(0xC174)
+#define EXYNOS_USB3_GDBGEPINFO0		EXYNOS_USB3_REG(0xC178)
+#define EXYNOS_USB3_GDBGEPINFO1		EXYNOS_USB3_REG(0xC17C)
+
+#define EXYNOS_USB3_GPRTBIMAP_HS_31_0	EXYNOS_USB3_REG(0xC180)
+#define EXYNOS_USB3_GPRTBIMAP_HS_63_32	EXYNOS_USB3_REG(0xC184)
+#define EXYNOS_USB3_GPRTBIMAP_FS_31_0	EXYNOS_USB3_REG(0xC188)
+#define EXYNOS_USB3_GPRTBIMAP_FS_63_32	EXYNOS_USB3_REG(0xC18C)
+/****************/
+
+#define EXYNOS_USB3_GUSB2PHYCFG(_a)	EXYNOS_USB3_REG(0xC200 + ((_a) * 0x04))
+#define EXYNOS_USB3_GUSB2PHYCFGx_PHYSoftRst		(1 << 31)
+#define EXYNOS_USB3_GUSB2PHYCFGx_PhyIntrNum_MASK	(0x3f << 19)
+#define EXYNOS_USB3_GUSB2PHYCFGx_PhyIntrNum_SHIFT	19
+#define EXYNOS_USB3_GUSB2PHYCFGx_PhyIntrNum(_x)		((_x) << 19)
+#define EXYNOS_USB3_GUSB2PHYCFGx_ULPIExtVbusIndicator	(1 << 18)
+#define EXYNOS_USB3_GUSB2PHYCFGx_ULPIExtVbusDrv		(1 << 17)
+#define EXYNOS_USB3_GUSB2PHYCFGx_ULPIClkSusM		(1 << 16)
+#define EXYNOS_USB3_GUSB2PHYCFGx_ULPIAutoRes		(1 << 15)
+#define EXYNOS_USB3_GUSB2PHYCFGx_PhyLPwrClkSel		(1 << 14)
+#define EXYNOS_USB3_GUSB2PHYCFGx_USBTrdTim_MASK		(0xf << 10)
+#define EXYNOS_USB3_GUSB2PHYCFGx_USBTrdTim_SHIFT	10
+#define EXYNOS_USB3_GUSB2PHYCFGx_USBTrdTim(_x)		((_x) << 10)
+#define EXYNOS_USB3_GUSB2PHYCFGx_EnblSlpM		(1 << 8)
+#define EXYNOS_USB3_GUSB2PHYCFGx_PHYSel			(1 << 7)
+#define EXYNOS_USB3_GUSB2PHYCFGx_SusPHY			(1 << 6)
+#define EXYNOS_USB3_GUSB2PHYCFGx_FSIntf			(1 << 5)
+#define EXYNOS_USB3_GUSB2PHYCFGx_ULPI_UTMI_Sel		(1 << 4)
+#define EXYNOS_USB3_GUSB2PHYCFGx_PHYIf			(1 << 3)
+#define EXYNOS_USB3_GUSB2PHYCFGx_TOutCal_MASK		(0x7 << 0)
+#define EXYNOS_USB3_GUSB2PHYCFGx_TOutCal_SHIFT		0
+#define EXYNOS_USB3_GUSB2PHYCFGx_TOutCal(_x)		((_x) << 0)
+
+/* Reserved for future use */
+#define EXYNOS_USB3_GUSB2I2CCTL(_a)	EXYNOS_USB3_REG(0xC240 + ((_a) * 0x04))
+
+#define EXYNOS_USB3_GUSB2PHYACC(_a)	EXYNOS_USB3_REG(0xC280 + ((_a) * 0x04))
+#define EXYNOS_USB3_GUSB2PHYACCx_DisUlpiDrvr		(1 << 26)
+#define EXYNOS_USB3_GUSB2PHYACCx_NewRegReq		(1 << 25)
+#define EXYNOS_USB3_GUSB2PHYACCx_VStsDone		(1 << 24)
+#define EXYNOS_USB3_GUSB2PHYACCx_VStsBsy		(1 << 23)
+#define EXYNOS_USB3_GUSB2PHYACCx_RegWr			(1 << 22)
+#define EXYNOS_USB3_GUSB2PHYACCx_RegAddr_MASK		(0x3f << 16)
+#define EXYNOS_USB3_GUSB2PHYACCx_RegAddr_SHIFT		16
+#define EXYNOS_USB3_GUSB2PHYACCx_RegAddr(_x)		((_x) << 16)
+/* Next 2 fields are overlaping. Is it error in user manual? */
+#define EXYNOS_USB3_GUSB2PHYACCx_VCtrl_MASK		(0xff << 8)
+#define EXYNOS_USB3_GUSB2PHYACCx_VCtrl_SHIFT		8
+#define EXYNOS_USB3_GUSB2PHYACCx_VCtrl(_x)		((_x) << 8)
+/*---*/
+#define EXYNOS_USB3_GUSB2PHYACCx_ExtRegAddr_MASK	(0x3f << 8)
+#define EXYNOS_USB3_GUSB2PHYACCx_ExtRegAddr_SHIFT	8
+#define EXYNOS_USB3_GUSB2PHYACCx_ExtRegAddr(_x)		((_x) << 8)
+/*---*/
+#define EXYNOS_USB3_GUSB2PHYACCx_RegData_MASK		(0xff << 0)
+#define EXYNOS_USB3_GUSB2PHYACCx_RegData_SHIFT		0
+#define EXYNOS_USB3_GUSB2PHYACCx_RegData(_x)		((_x) << 0)
+
+#define EXYNOS_USB3_GUSB3PIPECTL(_a)	EXYNOS_USB3_REG(0xC2C0 + ((_a) * 0x04))
+#define EXYNOS_USB3_GUSB3PIPECTLx_PHYSoftRst		(1 << 31)
+#define EXYNOS_USB3_GUSB3PIPECTLx_request_p1p2p3	(1 << 24)
+#define EXYNOS_USB3_GUSB3PIPECTLx_StartRxdetU3RxDet	(1 << 23)
+#define EXYNOS_USB3_GUSB3PIPECTLx_DisRxDetU3RxDet	(1 << 22)
+#define EXYNOS_USB3_GUSB3PIPECTLx_delay_p1p2p3_MASK	(0x7 << 19)
+#define EXYNOS_USB3_GUSB3PIPECTLx_delay_p1p2p3_SHIFT	19
+#define EXYNOS_USB3_GUSB3PIPECTLx_delay_p1p2p3(_x)	((_x) << 19)
+/* TODO: Check naming for the next 2 fields */
+#define EXYNOS_USB3_GUSB3PIPECTLx_delay_phy_pwr_p1p2p3	(1 << 18)
+#define EXYNOS_USB3_GUSB3PIPECTLx_SuspSSPhy		(1 << 17)
+#define EXYNOS_USB3_GUSB3PIPECTLx_DatWidth_MASK		(0x3 << 15)
+#define EXYNOS_USB3_GUSB3PIPECTLx_DatWidth_SHIFT	15
+#define EXYNOS_USB3_GUSB3PIPECTLx_DatWidth(_x)		((_x) << 15)
+#define EXYNOS_USB3_GUSB3PIPECTLx_AbortRxDetInU2	(1 << 14)
+#define EXYNOS_USB3_GUSB3PIPECTLx_SkipRxDet		(1 << 13)
+#define EXYNOS_USB3_GUSB3PIPECTLx_LFPSP0Algn		(1 << 12)
+#define EXYNOS_USB3_GUSB3PIPECTLx_P3P2TranOK		(1 << 11)
+#define EXYNOS_USB3_GUSB3PIPECTLx_LFPSFilt		(1 << 9)
+#define EXYNOS_USB3_GUSB3PIPECTLx_TxSwing		(1 << 6)
+#define EXYNOS_USB3_GUSB3PIPECTLx_TxMargin_MASK		(0x7 << 3)
+#define EXYNOS_USB3_GUSB3PIPECTLx_TxMargin_SHIFT	3
+#define EXYNOS_USB3_GUSB3PIPECTLx_TxMargin(_x)		((_x) << 3)
+#define EXYNOS_USB3_GUSB3PIPECTLx_TxDeemphasis_MASK	(0x3 << 1)
+#define EXYNOS_USB3_GUSB3PIPECTLx_TxDeemphasis_SHIFT	1
+#define EXYNOS_USB3_GUSB3PIPECTLx_TxDeemphasis(_x)	((_x) << 1)
+#define EXYNOS_USB3_GUSB3PIPECTLx_ElasticBufferMode	(1 << 0)
+
+#define EXYNOS_USB3_GTXFIFOSIZ(_a)	EXYNOS_USB3_REG(0xC300 + ((_a) * 0x04))
+#define EXYNOS_USB3_GTXFIFOSIZx_TxFStAddr_n_MASK	(0xffff << 16)
+#define EXYNOS_USB3_GTXFIFOSIZx_TxFStAddr_n_SHIFT	16
+#define EXYNOS_USB3_GTXFIFOSIZx_TxFStAddr_n(_x)		((_x) << 16)
+#define EXYNOS_USB3_GTXFIFOSIZx_TxFDep_n_MASK		(0xffff << 0)
+#define EXYNOS_USB3_GTXFIFOSIZx_TxFDep_n_SHIFT		0
+#define EXYNOS_USB3_GTXFIFOSIZx_TxFDep_n(_x)		((_x) << 0)
+
+#define EXYNOS_USB3_GRXFIFOSIZ(_a)	EXYNOS_USB3_REG(0xC380 + ((_a) * 0x04))
+#define EXYNOS_USB3_GRXFIFOSIZx_RxFStAddr_n_MASK	(0xffff << 16)
+#define EXYNOS_USB3_GRXFIFOSIZx_RxFStAddr_n_SHIFT	16
+#define EXYNOS_USB3_GRXFIFOSIZx_RxFStAddr_n(_x)		((_x) << 16)
+#define EXYNOS_USB3_GRXFIFOSIZx_RxFDep_n_MASK		(0xffff << 0)
+#define EXYNOS_USB3_GRXFIFOSIZx_RxFDep_n_SHIFT		0
+#define EXYNOS_USB3_GRXFIFOSIZx_RxFDep_n(_x)		((_x) << 0)
+
+#define EXYNOS_USB3_GEVNTADR_31_0(_a)	EXYNOS_USB3_REG(0xC400 + ((_a) * 0x10))
+
+#define EXYNOS_USB3_GEVNTADR_63_32(_a)	EXYNOS_USB3_REG(0xC404 + ((_a) * 0x10))
+
+#define EXYNOS_USB3_GEVNTSIZ(_a)	EXYNOS_USB3_REG(0xC408 + ((_a) * 0x10))
+#define EXYNOS_USB3_GEVNTSIZx_EvntIntMask		(1 << 31)
+#define EXYNOS_USB3_GEVNTSIZx_EVNTSiz_MASK		(0xffff << 0)
+#define EXYNOS_USB3_GEVNTSIZx_EVNTSiz_SHIFT		0
+#define EXYNOS_USB3_GEVNTSIZx_EVNTSiz(x)		((_x) << 0)
+
+#define EXYNOS_USB3_GEVNTCOUNT(_a)	EXYNOS_USB3_REG(0xC40C + ((_a) * 0x10))
+#define EXYNOS_USB3_GEVNTCOUNTx_EVNTCount_MASK		(0xffff << 0)
+#define EXYNOS_USB3_GEVNTCOUNTx_EVNTCount_SHIFT		0
+#define EXYNOS_USB3_GEVNTCOUNTx_EVNTCount(_x)		((_x) << 0)
+
+/* Event Buffer Content for Device Endpoint-Specific Events (DEPEVT) */
+#define EXYNOS_USB3_DEPEVT_EventParam_MASK		(0xffff << 16)
+#define EXYNOS_USB3_DEPEVT_EventParam_SHIFT		16
+#define EXYNOS_USB3_DEPEVT_EventParam(_x)		((_x) << 16)
+#define EXYNOS_USB3_DEPEVT_EventStatus_MASK		(0xf << 12)
+#define EXYNOS_USB3_DEPEVT_EventStatus_SHIFT		12
+#define EXYNOS_USB3_DEPEVT_EVENT_MASK			(0xf << 6)
+#define EXYNOS_USB3_DEPEVT_EVENT_SHIFT			6
+#define EXYNOS_USB3_DEPEVT_EVENT_EPCmdCmplt		(7 << 6)
+#define EXYNOS_USB3_DEPEVT_EVENT_StreamEvt		(6 << 6)
+#define EXYNOS_USB3_DEPEVT_EVENT_RxTxfifoEvt		(4 << 6)
+#define EXYNOS_USB3_DEPEVT_EVENT_XferNotReady		(3 << 6)
+#define EXYNOS_USB3_DEPEVT_EVENT_XferInProgress		(2 << 6)
+#define EXYNOS_USB3_DEPEVT_EVENT_XferComplete		(1 << 6)
+#define EXYNOS_USB3_DEPEVT_EPNUM_MASK			(0x1f << 1)
+#define EXYNOS_USB3_DEPEVT_EPNUM_SHIFT			1
+#define EXYNOS_USB3_DEPEVT_EPNUM(_x)			((_x) << 1)
+
+/* Event Buffer Content for Device-Specific Events (DEVT) */
+#define EXYNOS_USB3_DEVT_EventParam_MASK		(0xf << 16)
+#define EXYNOS_USB3_DEVT_EventParam_SHIFT		16
+#define EXYNOS_USB3_DEVT_EventParam_SS			(1 << 20)
+#define EXYNOS_USB3_DEVT_EventParam(_x)			((_x) << 16)
+#define EXYNOS_USB3_DEVT_EVENT_MASK			(0xf << 8)
+#define EXYNOS_USB3_DEVT_EVENT_SHIFT			8
+#define EXYNOS_USB3_DEVT_EVENT_VndrDevTstRcved		(12 << 8)
+#define EXYNOS_USB3_DEVT_EVENT_EvntOverflow		(11 << 8)
+#define EXYNOS_USB3_DEVT_EVENT_CmdCmplt			(10 << 8)
+#define EXYNOS_USB3_DEVT_EVENT_ErrticErr		(9 << 8)
+#define EXYNOS_USB3_DEVT_EVENT_Sof			(7 << 8)
+#define EXYNOS_USB3_DEVT_EVENT_EOPF			(6 << 8)
+#define EXYNOS_USB3_DEVT_EVENT_WkUpEvt			(4 << 8)
+#define EXYNOS_USB3_DEVT_EVENT_ULStChng			(3 << 8)
+#define EXYNOS_USB3_DEVT_EVENT_ConnectDone		(2 << 8)
+#define EXYNOS_USB3_DEVT_EVENT_USBRst			(1 << 8)
+#define EXYNOS_USB3_DEVT_EVENT_DisconnEvt		(0 << 8)
+
+#define EXYNOS_USB3_GHWPARAMS8		EXYNOS_USB3_REG(0xC600)
+
+#endif /* __SAMSUNG_PLAT_REGS_USB3_EXYNOS_DRD_H */
diff --git a/arch/arm/plat-samsung/include/plat/udc-ss.h b/arch/arm/plat-samsung/include/plat/udc-ss.h
new file mode 100644
index 0000000..911d48a
--- /dev/null
+++ b/arch/arm/plat-samsung/include/plat/udc-ss.h
@@ -0,0 +1,21 @@
+/* arch/arm/plat-samsung/include/plat/udc-ss.h
+ *
+ * Copyright (c) 2011 Samsung Electronics Co. Ltd
+ * Author: Anton Tikhomirov <av.tikhomirov@xxxxxxxxxxx>
+ *
+ * EXYNOS SuperSpeed USB 3.0 DRD Controller platform information
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+*/
+
+/**
+ * struct exynos_ss_udc_plat - platform data for EXYNOS USB 3.0 UDC
+ */
+struct exynos_ss_udc_plat {
+	int (*phy_init)(struct platform_device *pdev, int type);
+	int (*phy_exit)(struct platform_device *pdev, int type);
+};
+
+extern void exynos_ss_udc_set_platdata(struct exynos_ss_udc_plat *pd);
diff --git a/arch/arm/plat-samsung/include/plat/usb-phy.h b/arch/arm/plat-samsung/include/plat/usb-phy.h
index 959bcdb..f784101 100644
--- a/arch/arm/plat-samsung/include/plat/usb-phy.h
+++ b/arch/arm/plat-samsung/include/plat/usb-phy.h
@@ -14,6 +14,7 @@
 enum s5p_usb_phy_type {
 	S5P_USB_PHY_DEVICE,
 	S5P_USB_PHY_HOST,
+	S5P_USB_PHY_DRD,
 };
 
 extern int s5p_usb_phy_init(struct platform_device *pdev, int type);
-- 
1.7.1


--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux SoC Development]     [Linux Rockchip Development]     [Linux USB Development]     [Video for Linux]     [Linux Audio Users]     [Linux SCSI]     [Yosemite News]

  Powered by Linux