/* SPDX-License-Identifier: GPL-2.0-only */
/*
* HDMI driver definition for TI OMAP5 processors.
*
* Copyright (C) 2011-2012 Texas Instruments Incorporated - https://www.ti.com/
*/
#ifndef _HDMI5_CORE_H_
#define _HDMI5_CORE_H_
#include "hdmi.h"
/* HDMI IP Core System */
/* HDMI Identification */
#define HDMI_CORE_DESIGN_ID
0x00000
#define HDMI_CORE_REVISION_ID
0x00004
#define HDMI_CORE_PRODUCT_ID0
0x00008
#define HDMI_CORE_PRODUCT_ID1
0x0000C
#define HDMI_CORE_CONFIG0_ID
0x00010
#define HDMI_CORE_CONFIG1_ID
0x00014
#define HDMI_CORE_CONFIG2_ID
0x00018
#define HDMI_CORE_CONFIG3_ID
0x0001C
/* HDMI Interrupt */
#define HDMI_CORE_IH_FC_STAT0
0x00400
#define HDMI_CORE_IH_FC_STAT1
0x00404
#define HDMI_CORE_IH_FC_STAT2
0x00408
#define HDMI_CORE_IH_AS_STAT0
0x0040C
#define HDMI_CORE_IH_PHY_STAT0
0x00410
#define HDMI_CORE_IH_I2CM_STAT0
0x00414
#define HDMI_CORE_IH_CEC_STAT0
0x00418
#define HDMI_CORE_IH_VP_STAT0
0x0041C
#define HDMI_CORE_IH_I2CMPHY_STAT0
0x00420
#define HDMI_CORE_IH_MUTE
0x007FC
/* HDMI Video Sampler */
#define HDMI_CORE_TX_INVID0
0x00800
#define HDMI_CORE_TX_INSTUFFING
0x00804
#define HDMI_CORE_TX_RGYDATA0
0x00808
#define HDMI_CORE_TX_RGYDATA1
0x0080C
#define HDMI_CORE_TX_RCRDATA0
0x00810
#define HDMI_CORE_TX_RCRDATA1
0x00814
#define HDMI_CORE_TX_BCBDATA0
0x00818
#define HDMI_CORE_TX_BCBDATA1
0x0081C
/* HDMI Video Packetizer */
#define HDMI_CORE_VP_STATUS
0x02000
#define HDMI_CORE_VP_PR_CD
0x02004
#define HDMI_CORE_VP_STUFF
0x02008
#define HDMI_CORE_VP_REMAP
0x0200C
#define HDMI_CORE_VP_CONF
0x02010
#define HDMI_CORE_VP_STAT
0x02014
#define HDMI_CORE_VP_INT
0x02018
#define HDMI_CORE_VP_MASK
0x0201C
#define HDMI_CORE_VP_POL
0x02020
/* Frame Composer */
#define HDMI_CORE_FC_INVIDCONF
0x04000
#define HDMI_CORE_FC_INHACTIV0
0x04004
#define HDMI_CORE_FC_INHACTIV1
0x04008
#define HDMI_CORE_FC_INHBLANK0
0x0400C
#define HDMI_CORE_FC_INHBLANK1
0x04010
#define HDMI_CORE_FC_INVACTIV0
0x04014
#define HDMI_CORE_FC_INVACTIV1
0x04018
#define HDMI_CORE_FC_INVBLANK
0x0401C
#define HDMI_CORE_FC_HSYNCINDELAY0
0x04020
#define HDMI_CORE_FC_HSYNCINDELAY1
0x04024
#define HDMI_CORE_FC_HSYNCINWIDTH0
0x04028
#define HDMI_CORE_FC_HSYNCINWIDTH1
0x0402C
#define HDMI_CORE_FC_VSYNCINDELAY
0x04030
#define HDMI_CORE_FC_VSYNCINWIDTH
0x04034
#define HDMI_CORE_FC_INFREQ0
0x04038
#define HDMI_CORE_FC_INFREQ1
0x0403C
#define HDMI_CORE_FC_INFREQ2
0x04040
#define HDMI_CORE_FC_CTRLDUR
0x04044
#define HDMI_CORE_FC_EXCTRLDUR
0x04048
#define HDMI_CORE_FC_EXCTRLSPAC
0x0404C
#define HDMI_CORE_FC_CH0PREAM
0x04050
#define HDMI_CORE_FC_CH1PREAM
0x04054
#define HDMI_CORE_FC_CH2PREAM
0x04058
#define HDMI_CORE_FC_AVICONF3
0x0405C
#define HDMI_CORE_FC_GCP
0x04060
#define HDMI_CORE_FC_AVICONF0
0x04064
#define HDMI_CORE_FC_AVICONF1
0x04068
#define HDMI_CORE_FC_AVICONF2
0x0406C
#define HDMI_CORE_FC_AVIVID
0x04070
#define HDMI_CORE_FC_AVIETB0
0x04074
#define HDMI_CORE_FC_AVIETB1
0x04078
#define HDMI_CORE_FC_AVISBB0
0x0407C
#define HDMI_CORE_FC_AVISBB1
0x04080
#define HDMI_CORE_FC_AVIELB0
0x04084
#define HDMI_CORE_FC_AVIELB1
0x04088
#define HDMI_CORE_FC_AVISRB0
0x0408C
#define HDMI_CORE_FC_AVISRB1
0x04090
#define HDMI_CORE_FC_AUDICONF0
0x04094
#define HDMI_CORE_FC_AUDICONF1
0x04098
#define HDMI_CORE_FC_AUDICONF2
0x0409C
#define HDMI_CORE_FC_AUDICONF3
0x040A0
#define HDMI_CORE_FC_VSDIEEEID0
0x040A4
#define HDMI_CORE_FC_VSDSIZE
0x040A8
#define HDMI_CORE_FC_VSDIEEEID1
0x040C0
#define HDMI_CORE_FC_VSDIEEEID2
0x040C4
#define HDMI_CORE_FC_VSDPAYLOAD(n) (n *
4 +
0x040C8)
#define HDMI_CORE_FC_SPDVENDORNAME(n) (n *
4 +
0x04128)
#define HDMI_CORE_FC_SPDPRODUCTNAME(n) (n *
4 +
0x04148)
#define HDMI_CORE_FC_SPDDEVICEINF
0x04188
#define HDMI_CORE_FC_AUDSCONF
0x0418C
#define HDMI_CORE_FC_AUDSSTAT
0x04190
#define HDMI_CORE_FC_AUDSV
0x04194
#define HDMI_CORE_FC_AUDSU
0x04198
#define HDMI_CORE_FC_AUDSCHNLS(n) (n *
4 +
0x0419C)
#define HDMI_CORE_FC_CTRLQHIGH
0x041CC
#define HDMI_CORE_FC_CTRLQLOW
0x041D0
#define HDMI_CORE_FC_ACP0
0x041D4
#define HDMI_CORE_FC_ACP(n) ((
16-n) *
4 +
0x04208)
#define HDMI_CORE_FC_ISCR1_0
0x04248
#define HDMI_CORE_FC_ISCR1(n) ((
16-n) *
4 +
0x0424C)
#define HDMI_CORE_FC_ISCR2(n) ((
15-n) *
4 +
0x0428C)
#define HDMI_CORE_FC_DATAUTO0
0x042CC
#define HDMI_CORE_FC_DATAUTO1
0x042D0
#define HDMI_CORE_FC_DATAUTO2
0x042D4
#define HDMI_CORE_FC_DATMAN
0x042D8
#define HDMI_CORE_FC_DATAUTO3
0x042DC
#define HDMI_CORE_FC_RDRB(n) (n *
4 +
0x042E0)
#define HDMI_CORE_FC_STAT0
0x04340
#define HDMI_CORE_FC_INT0
0x04344
#define HDMI_CORE_FC_MASK0
0x04348
#define HDMI_CORE_FC_POL0
0x0434C
#define HDMI_CORE_FC_STAT1
0x04350
#define HDMI_CORE_FC_INT1
0x04354
#define HDMI_CORE_FC_MASK1
0x04358
#define HDMI_CORE_FC_POL1
0x0435C
#define HDMI_CORE_FC_STAT2
0x04360
#define HDMI_CORE_FC_INT2
0x04364
#define HDMI_CORE_FC_MASK2
0x04368
#define HDMI_CORE_FC_POL2
0x0436C
#define HDMI_CORE_FC_PRCONF
0x04380
#define HDMI_CORE_FC_GMD_STAT
0x04400
#define HDMI_CORE_FC_GMD_EN
0x04404
#define HDMI_CORE_FC_GMD_UP
0x04408
#define HDMI_CORE_FC_GMD_CONF
0x0440C
#define HDMI_CORE_FC_GMD_HB
0x04410
#define HDMI_CORE_FC_GMD_PB(n) (n *
4 +
0x04414)
#define HDMI_CORE_FC_DBGFORCE
0x04800
#define HDMI_CORE_FC_DBGAUD0CH0
0x04804
#define HDMI_CORE_FC_DBGAUD1CH0
0x04808
#define HDMI_CORE_FC_DBGAUD2CH0
0x0480C
#define HDMI_CORE_FC_DBGAUD0CH1
0x04810
#define HDMI_CORE_FC_DBGAUD1CH1
0x04814
#define HDMI_CORE_FC_DBGAUD2CH1
0x04818
#define HDMI_CORE_FC_DBGAUD0CH2
0x0481C
#define HDMI_CORE_FC_DBGAUD1CH2
0x04820
#define HDMI_CORE_FC_DBGAUD2CH2
0x04824
#define HDMI_CORE_FC_DBGAUD0CH3
0x04828
#define HDMI_CORE_FC_DBGAUD1CH3
0x0482C
#define HDMI_CORE_FC_DBGAUD2CH3
0x04830
#define HDMI_CORE_FC_DBGAUD0CH4
0x04834
#define HDMI_CORE_FC_DBGAUD1CH4
0x04838
#define HDMI_CORE_FC_DBGAUD2CH4
0x0483C
#define HDMI_CORE_FC_DBGAUD0CH5
0x04840
#define HDMI_CORE_FC_DBGAUD1CH5
0x04844
#define HDMI_CORE_FC_DBGAUD2CH5
0x04848
#define HDMI_CORE_FC_DBGAUD0CH6
0x0484C
#define HDMI_CORE_FC_DBGAUD1CH6
0x04850
#define HDMI_CORE_FC_DBGAUD2CH6
0x04854
#define HDMI_CORE_FC_DBGAUD0CH7
0x04858
#define HDMI_CORE_FC_DBGAUD1CH7
0x0485C
#define HDMI_CORE_FC_DBGAUD2CH7
0x04860
#define HDMI_CORE_FC_DBGTMDS0
0x04864
#define HDMI_CORE_FC_DBGTMDS1
0x04868
#define HDMI_CORE_FC_DBGTMDS2
0x0486C
#define HDMI_CORE_PHY_MASK0
0x0C018
#define HDMI_CORE_PHY_I2CM_INT_ADDR
0x0C09C
#define HDMI_CORE_PHY_I2CM_CTLINT_ADDR
0x0C0A0
/* HDMI Audio */
#define HDMI_CORE_AUD_CONF0
0x0C400
#define HDMI_CORE_AUD_CONF1
0x0C404
#define HDMI_CORE_AUD_INT
0x0C408
#define HDMI_CORE_AUD_N1
0x0C800
#define HDMI_CORE_AUD_N2
0x0C804
#define HDMI_CORE_AUD_N3
0x0C808
#define HDMI_CORE_AUD_CTS1
0x0C80C
#define HDMI_CORE_AUD_CTS2
0x0C810
#define HDMI_CORE_AUD_CTS3
0x0C814
#define HDMI_CORE_AUD_INCLKFS
0x0C818
#define HDMI_CORE_AUD_CC08
0x0CC08
#define HDMI_CORE_AUD_GP_CONF0
0x0D400
#define HDMI_CORE_AUD_GP_CONF1
0x0D404
#define HDMI_CORE_AUD_GP_CONF2
0x0D408
#define HDMI_CORE_AUD_D010
0x0D010
#define HDMI_CORE_AUD_GP_STAT
0x0D40C
#define HDMI_CORE_AUD_GP_INT
0x0D410
#define HDMI_CORE_AUD_GP_POL
0x0D414
#define HDMI_CORE_AUD_GP_MASK
0x0D418
/* HDMI Main Controller */
#define HDMI_CORE_MC_CLKDIS
0x10004
#define HDMI_CORE_MC_SWRSTZREQ
0x10008
#define HDMI_CORE_MC_FLOWCTRL
0x10010
#define HDMI_CORE_MC_PHYRSTZ
0x10014
#define HDMI_CORE_MC_LOCKONCLOCK
0x10018
/* HDMI COLOR SPACE CONVERTER */
#define HDMI_CORE_CSC_CFG
0x10400
#define HDMI_CORE_CSC_SCALE
0x10404
#define HDMI_CORE_CSC_COEF_A1_MSB
0x10408
#define HDMI_CORE_CSC_COEF_A1_LSB
0x1040C
#define HDMI_CORE_CSC_COEF_A2_MSB
0x10410
#define HDMI_CORE_CSC_COEF_A2_LSB
0x10414
#define HDMI_CORE_CSC_COEF_A3_MSB
0x10418
#define HDMI_CORE_CSC_COEF_A3_LSB
0x1041C
#define HDMI_CORE_CSC_COEF_A4_MSB
0x10420
#define HDMI_CORE_CSC_COEF_A4_LSB
0x10424
#define HDMI_CORE_CSC_COEF_B1_MSB
0x10428
#define HDMI_CORE_CSC_COEF_B1_LSB
0x1042C
#define HDMI_CORE_CSC_COEF_B2_MSB
0x10430
#define HDMI_CORE_CSC_COEF_B2_LSB
0x10434
#define HDMI_CORE_CSC_COEF_B3_MSB
0x10438
#define HDMI_CORE_CSC_COEF_B3_LSB
0x1043C
#define HDMI_CORE_CSC_COEF_B4_MSB
0x10440
#define HDMI_CORE_CSC_COEF_B4_LSB
0x10444
#define HDMI_CORE_CSC_COEF_C1_MSB
0x10448
#define HDMI_CORE_CSC_COEF_C1_LSB
0x1044C
#define HDMI_CORE_CSC_COEF_C2_MSB
0x10450
#define HDMI_CORE_CSC_COEF_C2_LSB
0x10454
#define HDMI_CORE_CSC_COEF_C3_MSB
0x10458
#define HDMI_CORE_CSC_COEF_C3_LSB
0x1045C
#define HDMI_CORE_CSC_COEF_C4_MSB
0x10460
#define HDMI_CORE_CSC_COEF_C4_LSB
0x10464
/* HDMI HDCP */
#define HDMI_CORE_HDCP_MASK
0x14020
/* HDMI CEC */
#define HDMI_CORE_CEC_MASK
0x17408
/* HDMI I2C Master */
#define HDMI_CORE_I2CM_SLAVE
0x157C8
#define HDMI_CORE_I2CM_ADDRESS
0x157CC
#define HDMI_CORE_I2CM_DATAO
0x157D0
#define HDMI_CORE_I2CM_DATAI
0X157D4
#define HDMI_CORE_I2CM_OPERATION
0x157D8
#define HDMI_CORE_I2CM_INT
0x157DC
#define HDMI_CORE_I2CM_CTLINT
0x157E0
#define HDMI_CORE_I2CM_DIV
0x157E4
#define HDMI_CORE_I2CM_SEGADDR
0x157E8
#define HDMI_CORE_I2CM_SOFTRSTZ
0x157EC
#define HDMI_CORE_I2CM_SEGPTR
0x157F0
#define HDMI_CORE_I2CM_SS_SCL_HCNT_1_ADDR
0x157F4
#define HDMI_CORE_I2CM_SS_SCL_HCNT_0_ADDR
0x157F8
#define HDMI_CORE_I2CM_SS_SCL_LCNT_1_ADDR
0x157FC
#define HDMI_CORE_I2CM_SS_SCL_LCNT_0_ADDR
0x15800
#define HDMI_CORE_I2CM_FS_SCL_HCNT_1_ADDR
0x15804
#define HDMI_CORE_I2CM_FS_SCL_HCNT_0_ADDR
0x15808
#define HDMI_CORE_I2CM_FS_SCL_LCNT_1_ADDR
0x1580C
#define HDMI_CORE_I2CM_FS_SCL_LCNT_0_ADDR
0x15810
#define HDMI_CORE_I2CM_SDA_HOLD_ADDR
0x15814
enum hdmi_core_packet_mode {
HDMI_PACKETMODERESERVEDVALUE =
0,
HDMI_PACKETMODE24BITPERPIXEL =
4,
HDMI_PACKETMODE30BITPERPIXEL =
5,
HDMI_PACKETMODE36BITPERPIXEL =
6,
HDMI_PACKETMODE48BITPERPIXEL =
7,
};
struct hdmi_core_vid_config {
struct hdmi_config v_fc_config;
enum hdmi_core_packet_mode packet_mode;
int data_enable_pol;
int vblank_osc;
int hblank;
int vblank;
};
struct csc_table {
u16 a1, a2, a3, a4;
u16 b1, b2, b3, b4;
u16 c1, c2, c3, c4;
};
int hdmi5_read_edid(
struct hdmi_core_data *core, u8 *edid,
int len);
void hdmi5_core_dump(
struct hdmi_core_data *core,
struct seq_file *s);
void hdmi5_configure(
struct hdmi_core_data *core,
struct hdmi_wp_data *wp,
struct hdmi_config *cfg);
int hdmi5_core_init(
struct platform_device *pdev,
struct hdmi_core_data *core);
int hdmi5_audio_config(
struct hdmi_core_data *core,
struct hdmi_wp_data *wp,
struct omap_dss_audio *audio, u32 pclk);
#endif