/*
 * include/linux/amlogic/cec_common.h
 *
 * Copyright (C) 2017 Amlogic, Inc. All rights reserved.
 *
 * 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 __CEC_COMMOM_H__
#define __CEC_COMMOM_H__

#define CEC_FUNC_MASK			0
#define ONE_TOUCH_PLAY_MASK		1
#define ONE_TOUCH_STANDBY_MASK		2
#define AUTO_POWER_ON_MASK		3

#define DEV_TYPE_TV			0
#define DEV_TYPE_RECORDER		1
#define DEV_TYPE_RESERVED		2
#define DEV_TYPE_TUNER			3
#define DEV_TYPE_PLAYBACK		4
#define DEV_TYPE_AUDIO_SYSTEM		5
#define DEV_TYPE_PURE_CEC_SWITCH	6
#define DEV_TYPE_VIDEO_PROCESSOR	7

/* tx result */
#define CEC_FAIL_NONE			0
#define CEC_FAIL_NACK			1
#define CEC_FAIL_BUSY			2
#define CEC_FAIL_OTHER			3

#define MAX_MSG				16
#define INVALID_PHY_ADDR	0xffff

/*
 * CEC OPCODES
 */
#define CEC_OC_ABORT_MESSAGE				0xFF
#define CEC_OC_ACTIVE_SOURCE				0x82
#define CEC_OC_CEC_VERSION				0x9E
#define CEC_OC_CLEAR_ANALOGUE_TIMER			0x33
#define CEC_OC_CLEAR_DIGITAL_TIMER			0x99
#define CEC_OC_CLEAR_EXTERNAL_TIMER			0xA1
#define CEC_OC_DECK_CONTROL				0x42
#define CEC_OC_DECK_STATUS				0x1B
#define CEC_OC_DEVICE_VENDOR_ID				0x87
#define CEC_OC_FEATURE_ABORT				0x00
#define CEC_OC_GET_CEC_VERSION				0x9F
#define CEC_OC_GET_MENU_LANGUAGE			0x91
#define CEC_OC_GIVE_AUDIO_STATUS			0x71
#define CEC_OC_GIVE_DECK_STATUS				0x1A
#define CEC_OC_GIVE_DEVICE_POWER_STATUS			0x8F
#define CEC_OC_GIVE_DEVICE_VENDOR_ID			0x8C
#define CEC_OC_GIVE_OSD_NAME				0x46
#define CEC_OC_GIVE_PHYSICAL_ADDRESS			0x83
#define CEC_OC_GIVE_SYSTEM_AUDIO_MODE_STATUS		0x7D
#define CEC_OC_GIVE_TUNER_DEVICE_STATUS			0x08
#define CEC_OC_IMAGE_VIEW_ON				0x04
#define CEC_OC_INACTIVE_SOURCE				0x9D
#define CEC_OC_MENU_REQUEST				0x8D
#define CEC_OC_MENU_STATUS				0x8E
#define CEC_OC_PLAY					0x41
#define CEC_OC_POLLING_MESSAGE				0xFC
#define CEC_OC_RECORD_OFF				0x0B
#define CEC_OC_RECORD_ON				0x09
#define CEC_OC_RECORD_STATUS				0x0A
#define CEC_OC_RECORD_TV_SCREEN				0x0F
#define CEC_OC_REPORT_AUDIO_STATUS			0x7A
#define CEC_OC_REPORT_PHYSICAL_ADDRESS			0x84
#define CEC_OC_REPORT_POWER_STATUS			0x90
#define CEC_OC_REQUEST_ACTIVE_SOURCE			0x85
#define CEC_OC_ROUTING_CHANGE				0x80
#define CEC_OC_ROUTING_INFORMATION			0x81
#define CEC_OC_SELECT_ANALOGUE_SERVICE			0x92
#define CEC_OC_SELECT_DIGITAL_SERVICE			0x93
#define CEC_OC_SET_ANALOGUE_TIMER			0x34
#define CEC_OC_SET_AUDIO_RATE				0x9A
#define CEC_OC_SET_DIGITAL_TIMER			0x97
#define CEC_OC_SET_EXTERNAL_TIMER			0xA2
#define CEC_OC_SET_MENU_LANGUAGE			0x32
#define CEC_OC_SET_OSD_NAME				0x47
#define CEC_OC_SET_OSD_STRING				0x64
#define CEC_OC_SET_STREAM_PATH				0x86
#define CEC_OC_SET_SYSTEM_AUDIO_MODE			0x72
#define CEC_OC_SET_TIMER_PROGRAM_TITLE			0x67
#define CEC_OC_STANDBY					0x36
#define CEC_OC_SYSTEM_AUDIO_MODE_REQUEST		0x70
#define CEC_OC_SYSTEM_AUDIO_MODE_STATUS			0x7E
#define CEC_OC_TEXT_VIEW_ON				0x0D
#define CEC_OC_TIMER_CLEARED_STATUS			0x43
#define CEC_OC_TIMER_STATUS				0x35
#define CEC_OC_TUNER_DEVICE_STATUS			0x07
#define CEC_OC_TUNER_STEP_DECREMENT			0x06
#define CEC_OC_TUNER_STEP_INCREMENT			0x05
#define CEC_OC_USER_CONTROL_PRESSED			0x44
#define CEC_OC_USER_CONTROL_RELEASED			0x45
#define CEC_OC_VENDOR_COMMANDi				0x89
#define CEC_OC_VENDOR_COMMAND_WITH_ID			0xA0
#define CEC_OC_VENDOR_REMOTE_BUTTON_DOWN		0x8A
#define CEC_OC_VENDOR_REMOTE_BUTTON_UP			0x8B

enum _cec_log_dev_addr_e {
	CEC_TV_ADDR = 0x00,
	CEC_RECORDING_DEVICE_1_ADDR,
	CEC_RECORDING_DEVICE_2_ADDR,
	CEC_TUNER_1_ADDR,
	CEC_PLAYBACK_DEVICE_1_ADDR,
	CEC_AUDIO_SYSTEM_ADDR,
	CEC_TUNER_2_ADDR,
	CEC_TUNER_3_ADDR,
	CEC_PLAYBACK_DEVICE_2_ADDR,
	CEC_RECORDING_DEVICE_3_ADDR,
	CEC_TUNER_4_ADDR,
	CEC_PLAYBACK_DEVICE_3_ADDR,
	CEC_RESERVED_1_ADDR,
	CEC_RESERVED_2_ADDR,
	CEC_FREE_USE_ADDR,
	CEC_UNREGISTERED_ADDR
};

#define CEC_BROADCAST_ADDR		CEC_UNREGISTERED_ADDR

#define CEC_TV				(1 << CEC_TV_ADDR)
#define CEC_RECORDING_DEVICE_1		(1 << CEC_RECORDING_DEVICE_1_ADDR)
#define CEC_RECORDING_DEVICE_2		(1 << CEC_RECORDING_DEVICE_2_ADDR)
#define CEC_TUNER_1			(1 << CEC_TUNER_1_ADDR)
#define CEC_PLAYBACK_DEVICE_1		(1 << CEC_PLAYBACK_DEVICE_1_ADDR)
#define CEC_AUDIO_SYSTEM		(1 << CEC_AUDIO_SYSTEM_ADDR)
#define CEC_TUNER_2			(1 << CEC_TUNER_2_ADDR)
#define CEC_TUNER_3			(1 << CEC_TUNER_3_ADDR)
#define CEC_PLAYBACK_DEVICE_2		(1 << CEC_PLAYBACK_DEVICE_2_ADDR)
#define CEC_RECORDING_DEVICE_3		(1 << CEC_RECORDING_DEVICE_3_ADDR)
#define CEC_TUNER_4			(1 << CEC_TUNER_4_ADDR)
#define CEC_PLAYBACK_DEVICE_3		(1 << CEC_PLAYBACK_DEVICE_3_ADDR)
#define CEC_RESERVED_1			(1 << CEC_RESERVED_1_ADDR)
#define CEC_RESERVED_2			(1 << CEC_RESERVED_2_ADDR)
#define CEC_FREE_USE			(1 << CEC_FREE_USE_ADDR)
#define CEC_UNREGISTERED		(1 << CEC_UNREGISTERED_ADDR)

#define CEC_DISPLAY_DEVICE		(CEC_TV | CEC_FREE_USE)
#define CEC_RECORDING_DEVICE		(CEC_RECORDING_DEVICE_1 | \
					CEC_RECORDING_DEVICE_2 | \
					CEC_RECORDING_DEVICE_3)
#define CEC_PLAYBACK_DEVICE		(CEC_PLAYBACK_DEVICE_1  | \
					CEC_PLAYBACK_DEVICE_2  | \
					CEC_PLAYBACK_DEVICE_3)
#define CEC_TUNER_DEVICE		(CEC_TUNER_1 | CEC_TUNER_2 | \
					CEC_TUNER_3 | CEC_TUNER_4)
#define CEC_AUDIO_SYSTEM_DEVICE		(CEC_AUDIO_SYSTEM)

#define CEC_IOC_MAGIC			'C'
#define CEC_IOC_GET_PHYSICAL_ADDR	_IOR(CEC_IOC_MAGIC, 0x00, uint16_t)
#define CEC_IOC_GET_VERSION		_IOR(CEC_IOC_MAGIC, 0x01, int)
#define CEC_IOC_GET_VENDOR_ID		_IOR(CEC_IOC_MAGIC, 0x02, uint32_t)
#define CEC_IOC_GET_PORT_INFO		_IOR(CEC_IOC_MAGIC, 0x03, int)
#define CEC_IOC_GET_PORT_NUM		_IOR(CEC_IOC_MAGIC, 0x04, int)
#define CEC_IOC_GET_SEND_FAIL_REASON	_IOR(CEC_IOC_MAGIC, 0x05, uint32_t)
#define CEC_IOC_SET_OPTION_WAKEUP	_IOW(CEC_IOC_MAGIC, 0x06, uint32_t)
#define CEC_IOC_SET_OPTION_ENALBE_CEC	_IOW(CEC_IOC_MAGIC, 0x07, uint32_t)
#define CEC_IOC_SET_OPTION_SYS_CTRL	_IOW(CEC_IOC_MAGIC, 0x08, uint32_t)
#define CEC_IOC_SET_OPTION_SET_LANG	_IOW(CEC_IOC_MAGIC, 0x09, uint32_t)
#define CEC_IOC_GET_CONNECT_STATUS	_IOR(CEC_IOC_MAGIC, 0x0A, uint32_t)
#define CEC_IOC_ADD_LOGICAL_ADDR	_IOW(CEC_IOC_MAGIC, 0x0B, uint32_t)
#define CEC_IOC_CLR_LOGICAL_ADDR	_IOW(CEC_IOC_MAGIC, 0x0C, uint32_t)
#define CEC_IOC_SET_DEV_TYPE		_IOW(CEC_IOC_MAGIC, 0x0D, uint32_t)
#define CEC_IOC_SET_ARC_ENABLE		_IOW(CEC_IOC_MAGIC, 0x0E, uint32_t)
#define CEC_IOC_SET_AUTO_DEVICE_OFF	_IOW(CEC_IOC_MAGIC, 0x0F, uint32_t)
#define CEC_IOC_GET_BOOT_ADDR           _IOW(CEC_IOC_MAGIC, 0x10, uint32_t)
#define CEC_IOC_GET_BOOT_REASON         _IOW(CEC_IOC_MAGIC, 0x11, uint32_t)

enum hdmi_port_type {
	HDMI_INPUT = 0,
	HDMI_OUTPUT = 1
};

enum cec_power_status_e {
	CEC_PW_POWER_ON = 0x00,
	CEC_PW_STANDBY,
	CEC_PW_TRANS_STANDBY_TO_ON,
	CEC_PW_TRANS_ON_TO_STANDBY,
};

enum cec_version_e {
	CEC_VERSION_11 = 0,
	CEC_VERSION_12,
	CEC_VERSION_12A,
	CEC_VERSION_13,
	CEC_VERSION_13A,
	CEC_VERSION_14A,
	CEC_VERSION_20,
};

/* from android cec hal */
enum {
	HDMI_OPTION_WAKEUP = 1,
	HDMI_OPTION_ENABLE_CEC = 2,
	HDMI_OPTION_SYSTEM_CEC_CONTROL = 3,
	HDMI_OPTION_SET_LANG = 5,
	HDMI_OPTION_SERVICE_FLAG = 16,
};

enum cec_dev_type_addr {
	CEC_DISPLAY_DEVICE_TYPE = 0x0,
	CEC_RECORDING_DEVICE_TYPE,
	CEC_RESERVED_DEVICE_TYPE,
	CEC_TUNER_DEVICE_TYPE,
	CEC_PLAYBACK_DEVICE_TYPE,
	CEC_AUDIO_SYSTEM_DEVICE_TYPE,
	CEC_UNREGISTERED_DEVICE_TYPE,
};

enum cec_feature_abort_e {
	CEC_UNRECONIZED_OPCODE = 0x0,
	CEC_NOT_CORRECT_MODE_TO_RESPOND,
	CEC_CANNOT_PROVIDE_SOURCE,
	CEC_INVALID_OPERAND,
	CEC_REFUSED,
	CEC_UNABLE_TO_DETERMINE,
};

enum cec_device_menu_state_e {
	DEVICE_MENU_ACTIVE = 0,
	DEVICE_MENU_INACTIVE,
};

struct hdmi_port_info {
	int type;
	/* Port ID should start from 1 which corresponds to HDMI "port 1". */
	int port_id;
	int cec_supported;
	int arc_supported;
	uint16_t physical_address;
};

#endif
