/*
 *  EMXX FCD (Function Controller Driver) for USB.
 *
 *  Copyright (C) 2010 Renesas Electronics Corporation
 *
 *  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.
 *
 *  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.
 */

#ifndef _LINUX_EMXX_H
#define _LINUX_EMXX_H

/*---------------------------------------------------------------------------*/
/*----------------- Default undef */
#if 0
#define DEBUG
#define UDC_DEBUG_DUMP
#endif

/*----------------- Default define */
#define	USE_DMA	1
#define USE_SUSPEND_WAIT	1

#ifndef TRUE
#define TRUE	1
#define FALSE	0
#endif

/*------------ Board dependence(Resource) */
#define	VBUS_VALUE		GPIO_VBUS

/* below hacked up for staging integration */
#define GPIO_VBUS 0 /* GPIO_P153 on KZM9D */
#define INT_VBUS 0 /* IRQ for GPIO_P153 */

/*------------ Board dependence(Wait) */

/* CHATTERING wait time ms */
#define VBUS_CHATTERING_MDELAY		1
/* DMA Abort wait time ms */
#define DMA_DISABLE_TIME		10

/*------------ Controller dependence */
#define NUM_ENDPOINTS		14		/* Endpoint */
#define REG_EP_NUM		15		/* Endpoint Register */
#define DMA_MAX_COUNT		256		/* DMA Block */

#define EPC_RST_DISABLE_TIME		1	/* 1 usec */
#define EPC_DIRPD_DISABLE_TIME		1	/* 1 msec */
#define EPC_PLL_LOCK_COUNT		1000	/* 1000 */
#define IN_DATA_EMPTY_COUNT		1000	/* 1000 */

#define CHATGER_TIME			700	/* 700msec */
#define USB_SUSPEND_TIME		2000	/* 2 sec */

/* U2F FLAG */
#define U2F_ENABLE		1
#define U2F_DISABLE		0

/*------- BIT */
#define BIT00		0x00000001
#define BIT01		0x00000002
#define BIT02		0x00000004
#define BIT03		0x00000008
#define BIT04		0x00000010
#define BIT05		0x00000020
#define BIT06		0x00000040
#define BIT07		0x00000080
#define BIT08		0x00000100
#define BIT09		0x00000200
#define BIT10		0x00000400
#define BIT11		0x00000800
#define BIT12		0x00001000
#define BIT13		0x00002000
#define BIT14		0x00004000
#define BIT15		0x00008000
#define BIT16		0x00010000
#define BIT17		0x00020000
#define BIT18		0x00040000
#define BIT19		0x00080000
#define BIT20		0x00100000
#define BIT21		0x00200000
#define BIT22		0x00400000
#define BIT23		0x00800000
#define BIT24		0x01000000
#define BIT25		0x02000000
#define BIT26		0x04000000
#define BIT27		0x08000000
#define BIT28		0x10000000
#define BIT29		0x20000000
#define BIT30		0x40000000
#define BIT31		0x80000000

#define TEST_FORCE_ENABLE		(BIT18 + BIT16)

#define INT_SEL				BIT10
#define CONSTFS				BIT09
#define SOF_RCV				BIT08
#define RSUM_IN				BIT07
#define SUSPEND				BIT06
#define CONF				BIT05
#define DEFAULT				BIT04
#define CONNECTB			BIT03
#define PUE2				BIT02

#define MAX_TEST_MODE_NUM		0x05
#define TEST_MODE_SHIFT			16

/*------- (0x0004) USB Status Register */
#define SPEED_MODE			BIT06
#define HIGH_SPEED			BIT06

#define CONF				BIT05
#define DEFAULT				BIT04
#define USB_RST				BIT03
#define SPND_OUT			BIT02
#define RSUM_OUT			BIT01

/*------- (0x0008) USB Address Register */
#define USB_ADDR			0x007F0000
#define SOF_STATUS			BIT15
#define UFRAME				(BIT14 + BIT13 + BIT12)
#define FRAME				0x000007FF

#define USB_ADRS_SHIFT			16

/*------- (0x000C) UTMI Characteristic 1 Register */
#define SQUSET				(BIT07 + BIT06 + BIT05 + BIT04)

#define USB_SQUSET			(BIT06 + BIT05 + BIT04)

/*------- (0x0010) TEST Control Register */
#define FORCEHS				BIT02
#define CS_TESTMODEEN			BIT01
#define LOOPBACK			BIT00

/*------- (0x0018) Setup Data 0 Register */
/*------- (0x001C) Setup Data 1 Register */

/*------- (0x0020) USB Interrupt Status Register */
#define EPn_INT				0x00FFFF00
#define EP15_INT			BIT23
#define EP14_INT			BIT22
#define EP13_INT			BIT21
#define EP12_INT			BIT20
#define EP11_INT			BIT19
#define EP10_INT			BIT18
#define EP9_INT				BIT17
#define EP8_INT				BIT16
#define EP7_INT				BIT15
#define EP6_INT				BIT14
#define EP5_INT				BIT13
#define EP4_INT				BIT12
#define EP3_INT				BIT11
#define EP2_INT				BIT10
#define EP1_INT				BIT09
#define EP0_INT				BIT08
#define SPEED_MODE_INT			BIT06
#define SOF_ERROR_INT			BIT05
#define SOF_INT				BIT04
#define USB_RST_INT			BIT03
#define SPND_INT			BIT02
#define RSUM_INT			BIT01

#define USB_INT_STA_RW			0x7E

/*------- (0x0024) USB Interrupt Enable Register */
#define EP15_0_EN			0x00FFFF00
#define EP15_EN				BIT23
#define EP14_EN				BIT22
#define EP13_EN				BIT21
#define EP12_EN				BIT20
#define EP11_EN				BIT19
#define EP10_EN				BIT18
#define EP9_EN				BIT17
#define EP8_EN				BIT16
#define EP7_EN				BIT15
#define EP6_EN				BIT14
#define EP5_EN				BIT13
#define EP4_EN				BIT12
#define EP3_EN				BIT11
#define EP2_EN				BIT10
#define EP1_EN				BIT09
#define EP0_EN				BIT08
#define SPEED_MODE_EN			BIT06
#define SOF_ERROR_EN			BIT05
#define SOF_EN				BIT04
#define USB_RST_EN			BIT03
#define SPND_EN				BIT02
#define RSUM_EN				BIT01

#define USB_INT_EN_BIT	\
	(EP0_EN | SPEED_MODE_EN | USB_RST_EN | SPND_EN | RSUM_EN)

/*------- (0x0028) EP0 Control Register */
#define EP0_STGSEL			BIT18
#define EP0_OVERSEL			BIT17
#define EP0_AUTO			BIT16
#define EP0_PIDCLR			BIT09
#define EP0_BCLR			BIT08
#define EP0_DEND			BIT07
#define EP0_DW				(BIT06 + BIT05)
#define EP0_DW4				0
#define EP0_DW3				(BIT06 + BIT05)
#define EP0_DW2				BIT06
#define EP0_DW1				BIT05

#define EP0_INAK_EN			BIT04
#define EP0_PERR_NAK_CLR		BIT03
#define EP0_STL				BIT02
#define EP0_INAK			BIT01
#define EP0_ONAK			BIT00

/*------- (0x002C) EP0 Status Register */
#define EP0_PID				BIT18
#define EP0_PERR_NAK			BIT17
#define EP0_PERR_NAK_INT		BIT16
#define EP0_OUT_NAK_INT			BIT15
#define EP0_OUT_NULL			BIT14
#define EP0_OUT_FULL			BIT13
#define EP0_OUT_EMPTY			BIT12
#define EP0_IN_NAK_INT			BIT11
#define EP0_IN_DATA			BIT10
#define EP0_IN_FULL			BIT09
#define EP0_IN_EMPTY			BIT08
#define EP0_OUT_NULL_INT		BIT07
#define EP0_OUT_OR_INT			BIT06
#define EP0_OUT_INT			BIT05
#define EP0_IN_INT			BIT04
#define EP0_STALL_INT			BIT03
#define STG_END_INT			BIT02
#define STG_START_INT			BIT01
#define SETUP_INT			BIT00

#define EP0_STATUS_RW_BIT	(BIT16 | BIT15 | BIT11 | 0xFF)

/*------- (0x0030) EP0 Interrupt Enable Register */
#define EP0_PERR_NAK_EN			BIT16
#define EP0_OUT_NAK_EN			BIT15

#define EP0_IN_NAK_EN			BIT11

#define EP0_OUT_NULL_EN			BIT07
#define EP0_OUT_OR_EN			BIT06
#define EP0_OUT_EN			BIT05
#define EP0_IN_EN			BIT04
#define EP0_STALL_EN			BIT03
#define STG_END_EN			BIT02
#define STG_START_EN			BIT01
#define SETUP_EN			BIT00

#define EP0_INT_EN_BIT	\
	(EP0_OUT_OR_EN | EP0_OUT_EN | EP0_IN_EN | STG_END_EN | SETUP_EN)

/*------- (0x0034) EP0 Length Register */
#define EP0_LDATA			0x0000007F

/*------- (0x0038) EP0 Read Register */
/*------- (0x003C) EP0 Write Register */

/*------- (0x0040:) EPn Control Register */
#define EPn_EN				BIT31
#define EPn_BUF_TYPE			BIT30
#define EPn_BUF_SINGLE			BIT30

#define EPn_DIR0			BIT26
#define EPn_MODE			(BIT25 + BIT24)
#define EPn_BULK			0
#define EPn_INTERRUPT			BIT24
#define EPn_ISO				BIT25

#define EPn_OVERSEL			BIT17
#define EPn_AUTO			BIT16

#define EPn_IPIDCLR			BIT11
#define EPn_OPIDCLR			BIT10
#define EPn_BCLR			BIT09
#define EPn_CBCLR			BIT08
#define EPn_DEND			BIT07
#define EPn_DW				(BIT06 + BIT05)
#define EPn_DW4				0
#define EPn_DW3				(BIT06 + BIT05)
#define EPn_DW2				BIT06
#define EPn_DW1				BIT05

#define EPn_OSTL_EN			BIT04
#define EPn_ISTL			BIT03
#define EPn_OSTL			BIT02

#define EPn_ONAK			BIT00

/*------- (0x0044:) EPn Status Register	*/
#define EPn_ISO_PIDERR			BIT29		/* R */
#define EPn_OPID			BIT28		/* R */
#define EPn_OUT_NOTKN			BIT27		/* R */
#define EPn_ISO_OR			BIT26		/* R */

#define EPn_ISO_CRC			BIT24		/* R */
#define EPn_OUT_END_INT			BIT23		/* RW */
#define EPn_OUT_OR_INT			BIT22		/* RW */
#define EPn_OUT_NAK_ERR_INT		BIT21		/* RW */
#define EPn_OUT_STALL_INT		BIT20		/* RW */
#define EPn_OUT_INT			BIT19		/* RW */
#define EPn_OUT_NULL_INT		BIT18		/* RW */
#define EPn_OUT_FULL			BIT17		/* R */
#define EPn_OUT_EMPTY			BIT16		/* R */

#define EPn_IPID			BIT10		/* R */
#define EPn_IN_NOTKN			BIT09		/* R */
#define EPn_ISO_UR			BIT08		/* R */
#define EPn_IN_END_INT			BIT07		/* RW */

#define EPn_IN_NAK_ERR_INT		BIT05		/* RW */
#define EPn_IN_STALL_INT		BIT04		/* RW */
#define EPn_IN_INT			BIT03		/* RW */
#define EPn_IN_DATA			BIT02		/* R */
#define EPn_IN_FULL			BIT01		/* R */
#define EPn_IN_EMPTY			BIT00		/* R */

#define EPn_INT_EN	\
	(EPn_OUT_END_INT | EPn_OUT_INT | EPn_IN_END_INT | EPn_IN_INT)

/*------- (0x0048:) EPn Interrupt Enable Register */
#define EPn_OUT_END_EN			BIT23		/* RW */
#define EPn_OUT_OR_EN			BIT22		/* RW */
#define EPn_OUT_NAK_ERR_EN		BIT21		/* RW */
#define EPn_OUT_STALL_EN		BIT20		/* RW */
#define EPn_OUT_EN			BIT19		/* RW */
#define EPn_OUT_NULL_EN			BIT18		/* RW */

#define EPn_IN_END_EN			BIT07		/* RW */

#define EPn_IN_NAK_ERR_EN		BIT05		/* RW */
#define EPn_IN_STALL_EN			BIT04		/* RW */
#define EPn_IN_EN			BIT03		/* RW */

/*------- (0x004C:) EPn Interrupt Enable Register */
#define EPn_STOP_MODE			BIT11
#define EPn_DEND_SET			BIT10
#define EPn_BURST_SET			BIT09
#define EPn_STOP_SET			BIT08

#define EPn_DMA_EN			BIT04

#define EPn_DMAMODE0			BIT00

/*------- (0x0050:) EPn MaxPacket & BaseAddress Register */
#define EPn_BASEAD			0x1FFF0000
#define EPn_MPKT			0x000007FF

/*------- (0x0054:) EPn Length & DMA Count Register */
#define EPn_DMACNT			0x01FF0000
#define EPn_LDATA			0x000007FF

/*------- (0x0058:) EPn Read Register */
/*------- (0x005C:) EPn Write Register */

/*------- (0x1000) AHBSCTR Register */
#define WAIT_MODE			BIT00

/*------- (0x1004) AHBMCTR Register */
#define ARBITER_CTR			BIT31		/* RW */
#define MCYCLE_RST			BIT12		/* RW */

#define ENDIAN_CTR			(BIT09 + BIT08)	/* RW */
#define ENDIAN_BYTE_SWAP		BIT09
#define ENDIAN_HALF_WORD_SWAP		ENDIAN_CTR

#define HBUSREQ_MODE			BIT05		/* RW */
#define HTRANS_MODE			BIT04		/* RW */

#define WBURST_TYPE			BIT02		/* RW */
#define BURST_TYPE			(BIT01 + BIT00)	/* RW */
#define BURST_MAX_16			0
#define BURST_MAX_8			BIT00
#define BURST_MAX_4			BIT01
#define BURST_SINGLE			BURST_TYPE

/*------- (0x1008) AHBBINT Register */
#define DMA_ENDINT			0xFFFE0000	/* RW */

#define AHB_VBUS_INT			BIT13		/* RW */

#define MBUS_ERRINT			BIT06		/* RW */

#define SBUS_ERRINT0			BIT04		/* RW */
#define ERR_MASTER			0x0000000F	/* R */

/*------- (0x100C) AHBBINTEN Register */
#define DMA_ENDINTEN			0xFFFE0000	/* RW */

#define VBUS_INTEN			BIT13		/* RW */

#define MBUS_ERRINTEN			BIT06		/* RW */

#define SBUS_ERRINT0EN			BIT04		/* RW */

/*------- (0x1010) EPCTR Register */
#define DIRPD				BIT12		/* RW */

#define VBUS_LEVEL			BIT08		/* R */

#define PLL_RESUME			BIT05		/* RW */
#define PLL_LOCK			BIT04		/* R */

#define EPC_RST				BIT00		/* RW */

/*------- (0x1014) USBF_EPTEST Register */
#define LINESTATE			(BIT09 + BIT08)	/* R */
#define DM_LEVEL			BIT09		/* R */
#define DP_LEVEL			BIT08		/* R */

#define PHY_TST				BIT01		/* RW */
#define PHY_TSTCLK			BIT00		/* RW */

/*------- (0x1020) USBSSVER Register */
#define AHBB_VER			0x00FF0000	/* R */
#define EPC_VER				0x0000FF00	/* R */
#define SS_VER				0x000000FF	/* R */

/*------- (0x1024) USBSSCONF Register */
#define EP_AVAILABLE			0xFFFF0000	/* R */
#define DMA_AVAILABLE			0x0000FFFF	/* R */

/*------- (0x1110:) EPnDCR1 Register */
#define DCR1_EPn_DMACNT			0x00FF0000	/* RW */

#define DCR1_EPn_DIR0			BIT01		/* RW */
#define DCR1_EPn_REQEN			BIT00		/* RW */

/*------- (0x1114:) EPnDCR2 Register */
#define DCR2_EPn_LMPKT			0x07FF0000	/* RW */

#define DCR2_EPn_MPKT			0x000007FF	/* RW */

/*------- (0x1118:) EPnTADR Register */
#define EPn_TADR			0xFFFFFFFF	/* RW */

/*===========================================================================*/
/* Struct */
/*------- ep_regs */
struct ep_regs {
	u32 EP_CONTROL;			/* EP Control */
	u32 EP_STATUS;			/* EP Status */
	u32 EP_INT_ENA;			/* EP Interrupt Enable */
	u32 EP_DMA_CTRL;		/* EP DMA Control */
	u32 EP_PCKT_ADRS;		/* EP Maxpacket & BaseAddress */
	u32 EP_LEN_DCNT;		/* EP Length & DMA count */
	u32 EP_READ;			/* EP Read */
	u32 EP_WRITE;			/* EP Write */
};

/*------- ep_dcr */
struct ep_dcr {
	u32 EP_DCR1;			/* EP_DCR1 */
	u32 EP_DCR2;			/* EP_DCR2 */
	u32 EP_TADR;			/* EP_TADR */
	u32 Reserved;			/* Reserved */
};

/*------- Function Registers */
struct fc_regs {
	u32 USB_CONTROL;		/* (0x0000) USB Control */
	u32 USB_STATUS;			/* (0x0004) USB Status */
	u32 USB_ADDRESS;		/* (0x0008) USB Address */
	u32 UTMI_CHARACTER_1;		/* (0x000C) UTMI Setting */
	u32 TEST_CONTROL;		/* (0x0010) TEST Control */
	u32 Reserved_14;		/* (0x0014) Reserved */
	u32 SETUP_DATA0;		/* (0x0018) Setup Data0 */
	u32 SETUP_DATA1;		/* (0x001C) Setup Data1 */
	u32 USB_INT_STA;		/* (0x0020) USB Interrupt Status */
	u32 USB_INT_ENA;		/* (0x0024) USB Interrupt Enable */
	u32 EP0_CONTROL;		/* (0x0028) EP0 Control */
	u32 EP0_STATUS;			/* (0x002C) EP0 Status */
	u32 EP0_INT_ENA;		/* (0x0030) EP0 Interrupt Enable */
	u32 EP0_LENGTH;			/* (0x0034) EP0 Length */
	u32 EP0_READ;			/* (0x0038) EP0 Read */
	u32 EP0_WRITE;			/* (0x003C) EP0 Write */

	struct ep_regs EP_REGS[REG_EP_NUM];	/* Endpoint Register */

	u8 Reserved220[0x1000 - 0x220];	/* (0x0220:0x0FFF) Reserved */

	u32 AHBSCTR;			/* (0x1000) AHBSCTR */
	u32 AHBMCTR;			/* (0x1004) AHBMCTR */
	u32 AHBBINT;			/* (0x1008) AHBBINT */
	u32 AHBBINTEN;			/* (0x100C) AHBBINTEN */
	u32 EPCTR;			/* (0x1010) EPCTR */
	u32 USBF_EPTEST;		/* (0x1014) USBF_EPTEST */

	u8 Reserved1018[0x20 - 0x18];	/* (0x1018:0x101F) Reserved */

	u32 USBSSVER;			/* (0x1020) USBSSVER */
	u32 USBSSCONF;			/* (0x1024) USBSSCONF */

	u8 Reserved1028[0x110 - 0x28];	/* (0x1028:0x110F) Reserved */

	struct ep_dcr EP_DCR[REG_EP_NUM];	/* */

	u8 Reserved1200[0x1000 - 0x200];	/* Reserved */
} __aligned(32);

#define EP0_PACKETSIZE			64
#define EP_PACKETSIZE			1024

/* EPn RAM SIZE */
#define D_RAM_SIZE_CTRL			64

/* EPn Bulk Endpoint Max Packet Size */
#define D_FS_RAM_SIZE_BULK		64
#define D_HS_RAM_SIZE_BULK		512

struct nbu2ss_udc;

enum ep0_state {
	EP0_IDLE,
	EP0_IN_DATA_PHASE,
	EP0_OUT_DATA_PHASE,
	EP0_IN_STATUS_PHASE,
	EP0_OUT_STATUS_PAHSE,
	EP0_END_XFER,
	EP0_SUSPEND,
	EP0_STALL,
};

struct nbu2ss_req {
	struct usb_request		req;
	struct list_head		queue;

	u32			div_len;
	bool		dma_flag;
	bool		zero;

	bool		unaligned;

	unsigned			mapped:1;
};

struct nbu2ss_ep {
	struct usb_ep			ep;
	struct list_head		queue;

	struct nbu2ss_udc		*udc;

	const struct usb_endpoint_descriptor *desc;

	u8		epnum;
	u8		direct;
	u8		ep_type;

	unsigned		wedged:1;
	unsigned		halted:1;
	unsigned		stalled:1;

	u8		*virt_buf;
	dma_addr_t	phys_buf;
};

struct nbu2ss_udc {
	struct usb_gadget gadget;
	struct usb_gadget_driver *driver;
	struct platform_device *pdev;
	struct device *dev;
	spinlock_t lock;
	struct completion		*pdone;

	enum ep0_state			ep0state;
	enum usb_device_state	devstate;
	struct usb_ctrlrequest	ctrl;
	struct nbu2ss_req		ep0_req;
	u8		ep0_buf[EP0_PACKETSIZE];

	struct nbu2ss_ep	ep[NUM_ENDPOINTS];

	unsigned		softconnect:1;
	unsigned		vbus_active:1;
	unsigned		linux_suspended:1;
	unsigned		linux_resume:1;
	unsigned		usb_suspended:1;
	unsigned		remote_wakeup:1;
	unsigned		udc_enabled:1;

	unsigned		mA;

	u32		curr_config;	/* Current Configuration Number */

	struct fc_regs		*p_regs;
};

/* USB register access structure */
union usb_reg_access {
	struct {
		unsigned char	DATA[4];
	} byte;
	unsigned int		dw;
};

/*-------------------------------------------------------------------------*/

#endif  /* _LINUX_EMXX_H */
