/*
 * Copyrights (C) 2017 Samsung Electronics, Inc.
 * Copyrights (C) 2017 Maxim Integrated Products, Inc.
 *
 * 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.
 */

#ifndef __LINUX_MFD_MAX77705_H
#define __LINUX_MFD_MAX77705_H

#define MAX77705_CCPD_NAME	"MAX77705"

#undef  __CONST_FFS
#define __CONST_FFS(_x) \
	((_x) & 0x0F ? \
	 ((_x) & 0x03 ? ((_x) & 0x01 ? 0 : 1) : ((_x) & 0x04 ? 2 : 3)) : \
	 ((_x) & 0x30 ? ((_x) & 0x10 ? 4 : 5) : ((_x) & 0x40 ? 6 : 7)))

#undef FFS
#define FFS(_x) \
	((_x) ? __CONST_FFS(_x) : 0)

#undef  BIT_RSVD
#define BIT_RSVD  0

#undef  BITS
#define BITS(_end, _start) \
	((BIT(_end) - BIT(_start)) + BIT(_end))

#undef  __BITS_GET
#define __BITS_GET(_word, _mask, _shift) \
	(((_word) & (_mask)) >> (_shift))

#undef  BITS_GET
#define BITS_GET(_word, _bit) \
	__BITS_GET(_word, _bit, FFS(_bit))

#undef  __BITS_SET
#define __BITS_SET(_word, _mask, _shift, _val) \
	(((_word) & ~(_mask)) | (((_val) << (_shift)) & (_mask)))

#undef  BITS_SET
#define BITS_SET(_word, _bit, _val) \
	__BITS_SET(_word, _bit, FFS(_bit), _val)

#undef  BITS_MATCH
#define BITS_MATCH(_word, _bit) \
	(((_word) & (_bit)) == (_bit))

/*
 * Register address
 */
#define	REG_UIC_HW_REV			0x00
#define	REG_UIC_FW_REV			0x01

#define	REG_UIC_INT				0x02
#define	REG_CC_INT				0x03
#define	REG_PD_INT				0x04
#define	REG_VDM_INT				0x05

#define	REG_USBC_STATUS1		0x06
#define	REG_USBC_STATUS2		0x07
#define	REG_BC_STATUS			0x08

#define	REG_UIC_FW_MINOR		0x09


#define	REG_CC_STATUS0			0x0A
#define	REG_CC_STATUS1			0x0B

#define	REG_PD_STATUS0			0x0C
#define	REG_PD_STATUS1			0x0D

#define	REG_UIC_INT_M			0x0E
#define	REG_CC_INT_M			0x0F
#define	REG_PD_INT_M			0x10
#define	REG_VDM_INT_M			0x11

#define REG_OPCODE				0x21
#define REG_OPCODE_DATA			0x22
#define REG_OPCDE_RES			0x51

#define REG_END_DATA			0x41

/*
 * REG_INT_M Initial values
 */
#define REG_UIC_INT_M_INIT		0x04
#define REG_CC_INT_M_INIT		0x20
#define REG_PD_INT_M_INIT		0x00
#define REG_VDM_INT_M_INIT		0xF0

/*
 * REG_UIC_INT Interrupts
 */
#define BIT_APCmdResI			BIT(7)
#define BIT_SYSMsgI				BIT(6)
#define BIT_VBUSDetI			BIT(5)
#define BIT_VbADCI				BIT(4)
#define BIT_DCDTmoI				BIT(3)
#define BIT_CHGTypI				BIT(1)
#define BIT_UIDADCI				BIT(0)

/*
 * REG_CC_INT Interrupts
 */
#define BIT_VCONNOCPI			BIT(7)
#define BIT_VSAFE0VI			BIT(6)
#define BIT_AttachSrcErrI		BIT(5)
#define BIT_VCONNSCI			BIT(4)
#define BIT_CCPinStatI			BIT(3)
#define	BIT_CCIStatI			BIT(2)
#define	BIT_CCVcnStatI			BIT(1)
#define	BIT_CCStatI				BIT(0)

/*
 * REG_PD_INT Interrupts
 */
#define BIT_PDMsgI				BIT(7)
#define BIT_DataRole			BIT(5)
#define BIT_SSAccI				BIT(1)
#define BIT_FCTIDI				BIT(0)

/*
 * REG_USBC_STATUS1
 */
#define BIT_VBADC				BITS(7, 4)
#define BIT_UIDADC				BITS(2, 0)

/*
 * REG_USBC_STATUS2
 */
#define BIT_SYSMsg				BITS(7, 0)

/*
 * REG_BC_STATUS
 */
#define BIT_VBUSDet				BIT(7)
#define BIT_PrChgTyp			BITS(5, 3)
#define BIT_DCDTmo				BIT(2)
#define BIT_ChgTyp				BITS(1, 0)

/*
 * REG_CC_STATUS1
 */
#define BIT_CCPinStat			BITS(7, 6)
#define BIT_CCIStat				BITS(5, 4)
#define BIT_CCVcnStat			BIT(3)
#define BIT_CCStat				BITS(2, 0)

/*
 * REG_CC_STATUS2
 */
#define BIT_CCSBUSHORT			BITS(7, 6)
#define BIT_VCONNOCP			BIT(5)
#define BIT_VCONNSC				BIT(4)
#define BIT_VSAFE0V				BIT(3)
#define BIT_AttachSrcErr		BIT(2)
#define BIT_ConnStat			BIT(1)
#define BIT_Altmode				BIT(0)

/*
 * REG_PD_STATUS0
 */
#define BIT_PDMsg				BITS(7, 0)

/*
 * REG_PD_STATUS1
 */
#define BIT_PD_DataRole			BIT(7)
#define BIT_PD_PSRDY			BIT(4)
#define BIT_FCT_ID				BITS(3, 0)


/** opcode reg **/

/*
 * CC Control1 Write
 */
#define BIT_CCSrcCurCh			BIT(7)
#define BIT_CCSrcCur			BITS(6, 5)
#define BIT_CCSrcSnk			BIT(4)
#define BIT_CCSnkSrc			BIT(3)
#define BIT_CCDbgEn				BIT(2)
#define BIT_CCAudEn				BIT(1)
#define BIT_CCDetEn				BIT(0)




/*
 * max77766 role
 */
enum max77705_data_role {
	UFP = 0,
	DFP,
};
enum max77705_power_role {
	SNK = 0,
	SRC,
};
enum max77705_vcon_role {
	OFF = 0,
	ON
};

/*
 * F/W update
 */
#define FW_CMD_READ			0x3
#define FW_CMD_READ_SIZE	6	/* cmd(1) + len(1) + data(4) */

#define FW_CMD_WRITE		0x1
#define FW_CMD_WRITE_SIZE	36	/* cmd(1) + len(1) + data(34) */

#define FW_CMD_END			0x0

#define FW_HEADER_SIZE		8
#define FW_VERIFY_DATA_SIZE 3

#define FW_VERIFY_TRY_COUNT 10

#define FW_WAIT_TIMEOUT			(1000 * 5) /* 5 sec */
#define I2C_SMBUS_BLOCK_HALF	(I2C_SMBUS_BLOCK_MAX / 2)

#define GET_CONTROL3_LOCK_ERROR_EN(_x)		((_x & (0x1 << 1)) >> 1)

typedef struct {
	u32 magic;     /* magic number */
	u8 major;         /* major version */
	u8 minor:3;       /* minor version */
	u8 product_id:5;  /* product id */
	u8 id;            /* id */
	u8 rev;           /* rev */
} max77705_fw_header;
#define MAX77705_SIGN 0xCEF166C1

enum {
	FW_UPDATE_START = 0x00,
	FW_UPDATE_WAIT_RESP_START,
	FW_UPDATE_WAIT_RESP_STOP,
	FW_UPDATE_DOING,
	FW_UPDATE_END,
};

enum {
	FW_UPDATE_FAIL = 0xF0,
	FW_UPDATE_I2C_FAIL,
	FW_UPDATE_TIMEOUT_FAIL,
	FW_UPDATE_VERIFY_FAIL,
	FW_UPDATE_CMD_FAIL,
	FW_UPDATE_MAX_LENGTH_FAIL,
};


enum {
	NO_DETERMINATION = 0,
	CC1_ACTIVE,
	CC2_ACTVIE,
	AUDIO_ACCESSORY,
	DEBUG_ACCESSORY,
	ERROR,
	DISABLED,
	RFU,
};

enum {
	NOT_IN_UFP_MODE = 0,
	CCI_500mA,
	CCI_1_5A,
	CCI_3_0A,
	CCI_SHORT,
};

/*
 * All type of Interrupts
 */
enum {
	AP_Command_respond = 7,
	USBC_System_message = 6,
	CHGIN_Voltage = 5,
	CHGIN_Voltage_ADC = 4,
	DCD_Timer = 3,
	Charge_Type = 1,
	UID_ADC = 0,
};

enum max77705_chg_type {
	CHGTYP_NOTHING = 0,
	CHGTYP_USB_SDP,
	CHGTYP_CDP_T,
	CHGTYP_DCP,
};

enum max77705_pr_chg_type {
	Unknown = 0,
	Samsung_2A,
	Apple_05A,
	Apple_1A,
	Apple_2A,
	Apple_12W,
	DCP_3A,
	RFU_CHG,
};

enum max77705_ccpd_device {
	DEV_NONE = 0,
	DEV_OTG,

	DEV_USB,
	DEV_CDP,
	DEV_DCP,

	DEV_APPLE500MA,
	DEV_APPLE1A,
	DEV_APPLE2A,
	DEV_APPLE12W,
	DEV_DCP3A,
	DEV_HVDCP,
	DEV_QC,

	DEV_FCT_0,
	DEV_FCT_1K,
	DEV_FCT_255K,
	DEV_FCT_301K,
	DEV_FCT_523K,
	DEV_FCT_619K,
	DEV_FCT_OPEN,

	DEV_PD_TA,
	DEV_PD_AMA,

	DEV_UNKNOWN,
};

enum max77705_uidadc {
	UID_GND	= 0,
	UID_255Kohm = 3,
	UID_301Kohm	= 4,
	UID_523Kohm = 5,
	UID_619Kohm = 6,
	UID_Open = 7,
};

enum max77705_fctid {
	FCT_GND = 1,
	FCT_1Kohm,
	FCT_255Kohm,
	FCT_301Kohm,
	FCT_523Kohm,
	FCT_619Kohm,
	FCT_OPEN,
};

enum max77705_cc_pin_state {
	cc_No_Connection = 0,
	cc_SINK,
	cc_SOURCE,
	cc_Audio_Accessory,
	cc_Debug_Accessory,
	cc_Error,
	cc_Disabled,
	cc_RFU,
};

enum max77705_usbc_SYSMsg {
	SYSERROR_NONE = 0x00,
	/*Reserved = 0x01,*/
	/*Reserved = 0x02,*/
	SYSERROR_BOOT_WDT = 0x03,
	SYSERROR_BOOT_SWRSTREQ = 0x04,
	SYSMSG_BOOT_POR = 0x05,

	SYSERROR_HV_NOVBUS = 0x10,
	SYSERROR_HV_FMETHOD_RXPERR = 0x11,
	SYSERROR_HV_FMETHOD_RXBUFOW = 0x12,
	SYSERROR_HV_FMETHOD_RXTFR = 0x13,
	SYSERROR_HV_FMETHOD_MPNACK = 0x14,
	SYSERROR_HV_FMETHOD_RESET_FAIL = 0x15,

	SYSMsg_AFC_Done = 0x20,

	SYSERROR_SYSPOS = 0x30,
	SYSERROR_APCMD_UNKNOWN = 0x31,
	SYSERROR_APCMD_INPROGRESS = 0x32,
	SYSERROR_APCMD_FAIL = 0x33,

	SYSMSG_CCx_5V_SHORT = 0x61,
	SYSMSG_SBUx_GND_SHORT = 0x62,
	SYSMSG_SBUx_5V_SHORT = 0x63,

#ifdef CONFIG_MAX77705_GRL_ENABLE
	SYSMSG_SET_GRL = 0x64,
#endif

	SYSMSG_PD_CCx_5V_SHORT = 0x65,
	SYSMSG_PD_SBUx_5V_SHORT = 0x66,
	SYSMSG_PD_SHORT_NONE = 0x67,
	SYSERROR_DROP5V_SRCRDY = 0x68,
	SYSERROR_DROP5V_SNKRDY = 0x69,
	SYSMSG_PD_GENDER_SHORT = 0x6A,

	SYSERROR_FACTORY_RID0 = 0x70,
	SYSERROR_POWER_NEGO = 0x80,
	SYSERROR_CCRP_HIGH = 0x90, /* PD Charger Connected while Water state */
	SYSERROR_CCRP_LOW = 0x91, /* PD Charger Disconnected while Water state */

	/* TypeC earphone is attached during PD charging */
	SYSMSG_10K_TO_22K = 0xB0,
	SYSMSG_10K_TO_56K = 0xB1,
	SYSMSG_22K_TO_56K = 0xB2,
	/* TypeC earphone is detached during PD charging */
	SYSMSG_56K_TO_22K = 0xB3,
	SYSMSG_56K_TO_10K = 0xB4,
	SYSMSG_22K_TO_10K = 0xB5,
};

enum max77705_pdmsg {
	Nothing_happened = 0x00,
	Sink_PD_PSRdy_received = 0x01,
	Sink_PD_Error_Recovery = 0x02,
	Sink_PD_SenderResponseTimer_Timeout	= 0x03,
	Source_PD_PSRdy_Sent = 0x04,
	Source_PD_Error_Recovery = 0x05,
	Source_PD_SenderResponseTimer_Timeout = 0x06,
	PD_DR_Swap_Request_Received	= 0x07,
	PD_PR_Swap_Request_Received	= 0x08,
	PD_VCONN_Swap_Request_Received = 0x09,
	Received_PD_Message_in_illegal_state = 0x0A,
	SRC_CAP_RECEIVED = 0x0B,

	Samsung_Accessory_is_attached = 0x10,
	VDM_Attention_message_Received = 0x11,
	Rejcet_Received = 0x12,
	Not_Supported_Received = 0x13,
	Prswap_Snktosrc_Sent	= 0x14,
	Prswap_Srctosnk_Sent	= 0x15,
	HARDRESET_RECEIVED = 0x16,
	Get_Vbus_turn_on = 0x17,
	Get_Vbus_turn_off = 0x18,
	HARDRESET_SENT = 0x19,
	PRSWAP_SRCTOSWAP = 0x1A,
	PRSWAP_SWAPTOSNK = 0X1B,
	PRSWAP_SNKTOSWAP = 0x1C,
	PRSWAP_SWAPTOSRC = 0x1D,

	Sink_PD_Disabled = 0x20,
	Source_PD_Disabled = 0x21,
	Current_Cable_Connected = 0x22,

	Get_Source_Capabilities_Extended_Received = 0x30,
	Get_Status_Received = 0x31,
	Get_Battery_Cap_Received = 0x32,
	Get_Battery_Status_Received = 0x33,
	Get_Manufacturer_Info_Received = 0x34,
	Source_Capabilities_Extended_Received = 0x35,
	Status_Received = 0x36,
	Battery_Capabilities_Received = 0x37,
	Batery_Status_Received = 0x38,
	Manufacturer_Info_Received = 0x39,
	Alert_Message = 0x3e,
	VDM_NAK_Recevied = 0x40,
	VDM_BUSY_Recevied = 0x41,
	VDM_ACK_Recevied = 0x42,
	VDM_REQ_Recevied = 0x43,

	AFC_Sink_PD_Capabilities_Received = 0x50,
	AFC_Sink_PD_PSRdy_Received = 0x51,
	AFC_VDM_ResponseTimer_Timout = 0x52,


	PDMSG_DP_DISCOVER_IDENTITY = 0x61,
	PDMSG_DP_DISCOVER_SVID = 0x62,
	PDMSG_DP_DISCOVER_MODES = 0x63,
	PDMSG_DP_ENTER_MODE = 0x64,
	PDMSG_DP_EXIT_MODE = 0x65,
	PDMSG_DP_STATUS = 0x66,
	PDMSG_DP_CONFIGURE = 0x67,
	PDMSG_DP_ATTENTION = 0x68,

};
enum max77705_connstat {
	DRY = 0x00,
	WATER = 0x01,
};

/*
 * External type definition
 */
#define MAX77705_AUTOIBUS_FW_AT_OFF	3
#define MAX77705_AUTOIBUS_FW_OFF	2
#define MAX77705_AUTOIBUS_AT_OFF	1
#define MAX77705_AUTOIBUS_ON	0

#define OPCODE_WAIT_TIMEOUT (3000) /* 3000ms */

#define OPCODE_WRITE_COMMAND 0x21
#define OPCODE_READ_COMMAND 0x51
#define OPCODE_SIZE 1
#define OPCODE_HEADER_SIZE 1
#define OPCODE_DATA_LENGTH 32
#define OPCODE_MAX_LENGTH (OPCODE_DATA_LENGTH + OPCODE_SIZE)
#define OPCODE_WRITE 0x21
#define OPCODE_WRITE_END 0x41
#define OPCODE_READ 0x51
#define OPCODE_WRITE_SEQ 0x1
#define OPCODE_READ_SEQ 0x2
#define OPCODE_RW_SEQ 0x3
#define OPCODE_PUSH_SEQ 0x4
#define OPCODE_UPDATE_SEQ 0x5

typedef enum {
	OPCODE_BCCTRL1_R = 0x01,
	OPCODE_BCCTRL1_W,
	OPCODE_BCCTRL2_R,
	OPCODE_BCCTRL2_W,
	OPCODE_CTRL1_R = 0x05,
	OPCODE_CTRL1_W,
	OPCODE_CTRL2_R,
	OPCODE_CTRL2_W,
	OPCODE_CTRL3_R,
	OPCODE_CTRL3_W,
	OPCODE_CCCTRL1_R = 0x0B,
	OPCODE_CCCTRL1_W,
	OPCODE_CCCTRL2_R,
	OPCODE_CCCTRL2_W,
	OPCODE_CCCTRL3_R,
	OPCODE_CCCTRL3_W,
	OPCODE_HVCTRL_R = 0x11,
	OPCODE_HVCTRL_W,
	OPCODE_OPCODE_VCONN_ILIM_R = 0x13,
	OPCODE_OPCODE_VCONN_ILIM_W,
	OPCODE_CHGIN_ILIM_R = 0x15,
	OPCODE_CHGIN_ILIM_W,
	OPCODE_CHGIN_ILIM2_R,
	OPCODE_CHGIN_ILIM2_W,
	OPCODE_CTRLREG_INIT_R = 0x1A,
	OPCODE_CTRLREG_INIT_W,
	OPCODE_CTRLREG3_R = 0x1C,
	OPCODE_CTRLREG3_W = 0x1D,
	OPCODE_AFC_HV_W = 0x20,
	OPCODE_AFC_RESULT_R,
	OPCODE_QC2P0_SET = 0x22,
	OPCODE_READ_SBU = 0x25,
	OPCODE_CURRENT_SRCCAP = 0x30,
	OPCODE_GET_SRCCAP = 0x31,
	OPCODE_SRCCAP_REQUEST = 0x32,
	OPCODE_SET_SRCCAP = 0x33,
	OPCODE_SEND_GET_REQUEST = 0x34,
	OPCODE_READ_RESPONSE_FOR_GET_REQUEST = 0x35,
	OPCODE_SEND_GET_RESPONSE = 0x36,
	OPCODE_SWAP_REQUEST = 0x37,
	OPCODE_SWAP_REQUEST_RESPONSE = 0x38,
	OPCODE_APDO_SRCCAP_REQUEST = 0x3A,
	OPCODE_GET_PPS_STATUS = 0x3B,
	OPCODE_SET_PPS = 0x3C,
	OPCODE_VDM_DISCOVER_IDENETITY_RESPONSE = 0x40,
	OPCODE_VDM_DISCOVER_SET_VDM_REQ = 0x48,
	OPCODE_VDM_DISCOVER_GET_VDM_RESP = 0x4b,
	OPCODE_SEND_VDM_AFC3P0_COMMAND,
	OPCODE_GET_PD_MESSAGE,
	OPCODE_SAMSUNG_ACC_COMMAND_RECIEVED,
	OPCODE_SAMSUNG_ACC_COMMAND_RESPOND,
	OPCODE_SAMSUNG_SECURE_KEY_REVOCATION,
	OPCODE_SAMSUNG_FACTORY_TEST = 0x54,
	OPCODE_SET_ALTERNATEMODE = 0x55,
	OPCODE_SAMSUNG_FW_AUTOIBUS = 0x57,
	OPCODE_READ_SELFTEST = 0x59,
	OPCODE_SAMSUNG_GPIO5_CONTROL = 0x5B,
	OPCODE_SAMSUNG_READ_MESSAGE = 0x5D,
#ifdef CONFIG_MAX77705_GRL_ENABLE
	OPCODE_GRL_COMMAND = 0x70,
#else
	OPCODE_FW_OPCODE_CLEAR = 0x70,
#endif
	OPCODE_RAM_TEST_COMMAND = 0xD1,
	OPCODE_NONE = 0xff,
} max77705_opcode_list;

typedef enum{
	OPCODE_ID_VDM_DISCOVER_IDENTITY = 0x1,
	OPCODE_ID_VDM_DISCOVER_SVIDS = 0x2,
	OPCODE_ID_VDM_DISCOVER_MODES = 0x3,
	OPCODE_ID_VDM_ENTER_MODE = 0x4,
	OPCODE_ID_VDM_EXIT_MODE = 0x5,
	OPCODE_ID_VDM_ATTENTION = 0x6,
	OPCODE_ID_VDM_SVID_DP_STATUS = 0x10,
	OPCODE_ID_VDM_SVID_DP_CONFIGURE = 0x11,
} max77705_vdm_list;

typedef enum {
	OPCODE_WAIT_START = 0,
	OPCODE_WAIT_END,
} max77705_opcode_wait_type;


typedef enum {
	OPCODE_NOTI_START = 0x0,
	OPCODE_NOTI_NONE = 0xff,
} max77705_opcode_noti_cmd;


/* SAMSUNG OPCODE */
#define REG_NONE 0xff
#define CCIC_IRQ_INIT_DETECT		(-1)

#define MINOR_VERSION_MASK 0b00000111

/* PRODUCT ID  */
#define FW_PRODUCT_ID_REG 3
//#define STAR_PRODUCT_ID 0b0000
//#define Lykan_PRODUCT_ID 0b0001
//#define BEYOND_PRODUCT_ID 0b0010
#endif

