aboutsummaryrefslogtreecommitdiff
path: root/include/video/hdmi.h
diff options
context:
space:
mode:
authorPer Persson <per.xb.persson@stericsson.com>2010-07-02 13:14:25 +0200
committerJohn Rigby <john.rigby@linaro.org>2010-09-02 22:45:50 -0600
commit48d5fa309fc3a106e531528867406d6a3adb3059 (patch)
tree5af714f69b41159cc9dfd4d055c6e6fce20bddfc /include/video/hdmi.h
parent862ec7d2196b8072487f0a70cc9e56eea3fc8b7b (diff)
HDMI and AV8100: new features
* HDMI api, including EDID, CEC, INFOFRAME, audio coniguration, aes key handling, event support. * Automatic detection and handling of av8100 chip version 1 and 2. * Support for av8100/mcde hw trig method using I2SDAT3 (menuconfig). ST Ericsson Change-Id: WP264235 Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/2120 Reviewed-by: Dan JOHANSSON <dan.johansson@stericsson.com> Tested-by: Per PERSSON <per.xb.persson@stericsson.com> Reviewed-by: Marcel TUNNISSEN <marcel.tuennissen@stericsson.com> Signed-off-by: Mian Yousaf Kaukab <mian.yousaf.kaukab@stericsson.com> Change-Id: Ic205e046988fff7a5d49ae3091559d1fd76768d2 Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/2841
Diffstat (limited to 'include/video/hdmi.h')
-rwxr-xr-x[-rw-r--r--]include/video/hdmi.h157
1 files changed, 132 insertions, 25 deletions
diff --git a/include/video/hdmi.h b/include/video/hdmi.h
index 7745d80d147..7aeafb433eb 100644..100755
--- a/include/video/hdmi.h
+++ b/include/video/hdmi.h
@@ -1,7 +1,7 @@
/*
* Copyright (C) ST-Ericsson AB 2010
*
- * AV8100 driver
+ * HDMI driver
*
* Author: Per Persson <per.xb.persson@stericsson.com>
* for ST-Ericsson.
@@ -11,40 +11,147 @@
#ifndef __HDMI__H__
#define __HDMI__H__
-#define HDMI_DRIVER_MINOR_NUMBER 241
-struct hdmi_register {
- unsigned char value;
- unsigned char offset;
-};
-
-struct hdmi_command_register {
- unsigned char cmd_id; /* input */
- unsigned char buf_len; /* input, output */
- unsigned char buf[128]; /* input, output */
- unsigned char return_status; /* output */
-};
+#define HDMI_CEC_READ_MAXSIZE 16
+#define HDMI_CEC_WRITE_MAXSIZE 15
+#define HDMI_INFOFRAME_MAX_SIZE 27
+#define HDMI_HDCP_FUSEAES_KEYSIZE 16
+#define HDMI_HDCP_AES_BLOCK_START 128
+#define HDMI_HDCP_KSV_BLOCK 40
+#define HDMI_HDCP_AES_NR_OF_BLOCKS 18
+#define HDMI_HDCP_AES_KEYSIZE 16
+#define HDMI_HDCP_AES_KSVSIZE 5
+#define HDMI_HDCP_AES_KSVZEROESSIZE 3
-/* IOCTL return status */
-#define HDMI_COMMAND_RETURN_STATUS_OK 0
-#define HDMI_COMMAND_RETURN_STATUS_FAIL 1
+#define HDMI_STOREASTEXT_TEXT_SIZE 2
+#define HDMI_STOREASTEXT_BIN_SIZE 1
+#define HDMI_PLUGDETEN_TEXT_SIZE 6
+#define HDMI_PLUGDETEN_BIN_SIZE 3
+#define HDMI_EDIDREAD_TEXT_SIZE 4
+#define HDMI_EDIDREAD_BIN_SIZE 2
+#define HDMI_CECEVEN_TEXT_SIZE 2
+#define HDMI_CECEVEN_BIN_SIZE 1
+#define HDMI_CECSEND_TEXT_SIZE_MAX 37
+#define HDMI_CECSEND_TEXT_SIZE_MIN 6
+#define HDMI_CECSEND_BIN_SIZE_MAX 18
+#define HDMI_CECSEND_BIN_SIZE_MIN 3
+#define HDMI_INFOFRSEND_TEXT_SIZE_MIN 8
+#define HDMI_INFOFRSEND_TEXT_SIZE_MAX 63
+#define HDMI_INFOFRSEND_BIN_SIZE_MIN 4
+#define HDMI_INFOFRSEND_BIN_SIZE_MAX 31
+#define HDMI_HDCPEVEN_TEXT_SIZE 2
+#define HDMI_HDCPEVEN_BIN_SIZE 1
+#define HDMI_HDCP_FUSEAES_TEXT_SIZE 34
+#define HDMI_HDCP_FUSEAES_BIN_SIZE 17
+#define HDMI_HDCP_LOADAES_TEXT_SIZE 586
+#define HDMI_HDCP_LOADAES_BIN_SIZE 293
+#define HDMI_HDCPAUTHENCR_TEXT_SIZE 4
+#define HDMI_HDCPAUTHENCR_BIN_SIZE 2
+#define HDMI_EVCLR_TEXT_SIZE 2
+#define HDMI_EVCLR_BIN_SIZE 1
+#define HDMI_AUDIOCFG_TEXT_SIZE 14
+#define HDMI_AUDIOCFG_BIN_SIZE 7
#define HDMI_IOC_MAGIC 0xcc
/** IOCTL Operations */
-#define IOC_HDMI_POWER _IOWR(HDMI_IOC_MAGIC, 1, int)
-#define IOC_HDMI_ENABLE_INTERRUPTS _IOWR(HDMI_IOC_MAGIC, 2, int)
-#define IOC_HDMI_DOWNLOAD_FW _IOWR(HDMI_IOC_MAGIC, 3, int)
-#define IOC_HDMI_ONOFF _IOWR(HDMI_IOC_MAGIC, 4, int)
-
-#define IOC_HDMI_REGISTER_WRITE _IOWR(HDMI_IOC_MAGIC, 5, int)
-#define IOC_HDMI_REGISTER_READ _IOWR(HDMI_IOC_MAGIC, 6, int)
-#define IOC_HDMI_STATUS_GET _IOWR(HDMI_IOC_MAGIC, 7, int)
-#define IOC_HDMI_CONFIGURATION_WRITE _IOWR(HDMI_IOC_MAGIC, 8, int)
+#define IOC_PLUG_DETECT_ENABLE _IOWR(HDMI_IOC_MAGIC, 1, int)
+#define IOC_EDID_READ _IOWR(HDMI_IOC_MAGIC, 2, int)
+#define IOC_CEC_EVENT_ENABLE _IOWR(HDMI_IOC_MAGIC, 3, int)
+#define IOC_CEC_READ _IOWR(HDMI_IOC_MAGIC, 4, int)
+#define IOC_CEC_SEND _IOWR(HDMI_IOC_MAGIC, 5, int)
+#define IOC_INFOFRAME_SEND _IOWR(HDMI_IOC_MAGIC, 6, int)
+#define IOC_HDCP_EVENT_ENABLE _IOWR(HDMI_IOC_MAGIC, 7, int)
+#define IOC_HDCP_CHKAESOTP _IOWR(HDMI_IOC_MAGIC, 8, int)
+#define IOC_HDCP_FUSEAES _IOWR(HDMI_IOC_MAGIC, 9, int)
+#define IOC_HDCP_LOADAES _IOWR(HDMI_IOC_MAGIC, 10, int)
+#define IOC_HDCP_AUTHENCR_REQ _IOWR(HDMI_IOC_MAGIC, 11, int)
+#define IOC_HDCP_STATE_GET _IOWR(HDMI_IOC_MAGIC, 12, int)
+#define IOC_REVOCATION_LIST_GET _IOWR(HDMI_IOC_MAGIC, 13, int)
+#define IOC_REVOCATION_LIST_SET _IOWR(HDMI_IOC_MAGIC, 14, int)
+#define IOC_EVENTS_READ _IOWR(HDMI_IOC_MAGIC, 15, int)
+#define IOC_EVENTS_CLEAR _IOWR(HDMI_IOC_MAGIC, 16, int)
+#define IOC_AUDIO_CFG _IOWR(HDMI_IOC_MAGIC, 17, int)
/* HDMI driver */
+void hdmi_event(enum av8100_hdmi_event);
int hdmi_init(void);
void hdmi_exit(void);
+enum hdmi_event {
+ HDMI_EVENT_NONE = 0x0,
+ HDMI_EVENT_HDMI_PLUGIN = 0x1,
+ HDMI_EVENT_HDMI_PLUGOUT = 0x2,
+ HDMI_EVENT_CEC = 0x4,
+ HDMI_EVENT_HDCP = 0x8,
+};
+
+enum hdmi_hdcp_auth_type {
+ HDMI_HDCP_AUTH_OFF = 0,
+ HDMI_HDCP_AUTH_START = 1,
+ HDMI_HDCP_AUTH_CONT = 2,
+};
+
+enum hdmi_hdcp_encr_type {
+ HDMI_HDCP_ENCR_OFF = 0,
+ HDMI_HDCP_ENCR_OESS = 1,
+ HDMI_HDCP_ENCR_EESS = 2,
+};
+
+struct plug_detect {
+ u8 hdmi_detect_enable;
+ u8 on_time;
+ u8 hdmi_off_time;
+};
+
+struct edid_read {
+ u8 address;
+ u8 block_nr;
+ u8 data_length;
+ u8 data[128];
+};
+
+struct cec_rw {
+ u8 src;
+ u8 dest;
+ u8 length;
+ u8 data[15];
+};
+
+struct info_fr {
+ u8 type;
+ u8 ver;
+ u8 crc;
+ u8 length;
+ u8 data[27];
+};
+
+struct hdcp_fuseaes {
+ u8 key[16];
+ u8 crc;
+ u8 result;
+};
+
+struct hdcp_loadaesall {
+ u8 ksv[5];
+ u8 key[288];
+ u8 result;
+};
+
+struct hdcp_authencr {
+ u8 auth_type;
+ u8 encr_type;
+};
+
+struct audio_cfg {
+ u8 if_format;
+ u8 i2s_entries;
+ u8 freq;
+ u8 word_length;
+ u8 format;
+ u8 if_mode;
+ u8 mute;
+};
+
#endif /* __HDMI__H__ */