1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Copyright (C) 2016 BayLibre, SAS 4*4882a593Smuzhiyun * Author: Neil Armstrong <narmstrong@baylibre.com> 5*4882a593Smuzhiyun * Copyright (C) 2015 Amlogic, Inc. All rights reserved. 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun #ifndef __MESON_DW_HDMI_H 9*4882a593Smuzhiyun #define __MESON_DW_HDMI_H 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun /* 12*4882a593Smuzhiyun * Bit 15-10: RW Reserved. Default 1 starting from G12A 13*4882a593Smuzhiyun * Bit 9 RW sw_reset_i2c starting from G12A 14*4882a593Smuzhiyun * Bit 8 RW sw_reset_axiarb starting from G12A 15*4882a593Smuzhiyun * Bit 7 RW Reserved. Default 1, sw_reset_emp starting from G12A 16*4882a593Smuzhiyun * Bit 6 RW Reserved. Default 1, sw_reset_flt starting from G12A 17*4882a593Smuzhiyun * Bit 5 RW Reserved. Default 1, sw_reset_hdcp22 starting from G12A 18*4882a593Smuzhiyun * Bit 4 RW sw_reset_phyif: PHY interface. 1=Apply reset; 0=Release from reset. 19*4882a593Smuzhiyun * Default 1. 20*4882a593Smuzhiyun * Bit 3 RW sw_reset_intr: interrupt module. 1=Apply reset; 21*4882a593Smuzhiyun * 0=Release from reset. 22*4882a593Smuzhiyun * Default 1. 23*4882a593Smuzhiyun * Bit 2 RW sw_reset_mem: KSV/REVOC mem. 1=Apply reset; 0=Release from reset. 24*4882a593Smuzhiyun * Default 1. 25*4882a593Smuzhiyun * Bit 1 RW sw_reset_rnd: random number interface to HDCP. 1=Apply reset; 26*4882a593Smuzhiyun * 0=Release from reset. Default 1. 27*4882a593Smuzhiyun * Bit 0 RW sw_reset_core: connects to IP's ~irstz. 1=Apply reset; 28*4882a593Smuzhiyun * 0=Release from reset. Default 1. 29*4882a593Smuzhiyun */ 30*4882a593Smuzhiyun #define HDMITX_TOP_SW_RESET (0x000) 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun /* 33*4882a593Smuzhiyun * Bit 31 RW free_clk_en: 0=Enable clock gating for power saving; 1= Disable 34*4882a593Smuzhiyun * Bit 12 RW i2s_ws_inv:1=Invert i2s_ws; 0=No invert. Default 0. 35*4882a593Smuzhiyun * Bit 11 RW i2s_clk_inv: 1=Invert i2s_clk; 0=No invert. Default 0. 36*4882a593Smuzhiyun * Bit 10 RW spdif_clk_inv: 1=Invert spdif_clk; 0=No invert. Default 0. 37*4882a593Smuzhiyun * Bit 9 RW tmds_clk_inv: 1=Invert tmds_clk; 0=No invert. Default 0. 38*4882a593Smuzhiyun * Bit 8 RW pixel_clk_inv: 1=Invert pixel_clk; 0=No invert. Default 0. 39*4882a593Smuzhiyun * Bit 7 RW hdcp22_skpclk_en: starting from G12A, 1=enable; 0=disable 40*4882a593Smuzhiyun * Bit 6 RW hdcp22_esmclk_en: starting from G12A, 1=enable; 0=disable 41*4882a593Smuzhiyun * Bit 5 RW hdcp22_tmdsclk_en: starting from G12A, 1=enable; 0=disable 42*4882a593Smuzhiyun * Bit 4 RW cec_clk_en: 1=enable cec_clk; 0=disable. Default 0. Reserved for G12A 43*4882a593Smuzhiyun * Bit 3 RW i2s_clk_en: 1=enable i2s_clk; 0=disable. Default 0. 44*4882a593Smuzhiyun * Bit 2 RW spdif_clk_en: 1=enable spdif_clk; 0=disable. Default 0. 45*4882a593Smuzhiyun * Bit 1 RW tmds_clk_en: 1=enable tmds_clk; 0=disable. Default 0. 46*4882a593Smuzhiyun * Bit 0 RW pixel_clk_en: 1=enable pixel_clk; 0=disable. Default 0. 47*4882a593Smuzhiyun */ 48*4882a593Smuzhiyun #define HDMITX_TOP_CLK_CNTL (0x001) 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun /* 51*4882a593Smuzhiyun * Bit 31:28 RW rxsense_glitch_width: starting from G12A 52*4882a593Smuzhiyun * Bit 27:16 RW rxsense_valid_width: starting from G12A 53*4882a593Smuzhiyun * Bit 11: 0 RW hpd_valid_width: filter out width <= M*1024. Default 0. 54*4882a593Smuzhiyun * Bit 15:12 RW hpd_glitch_width: filter out glitch <= N. Default 0. 55*4882a593Smuzhiyun */ 56*4882a593Smuzhiyun #define HDMITX_TOP_HPD_FILTER (0x002) 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun /* 59*4882a593Smuzhiyun * intr_maskn: MASK_N, one bit per interrupt source. 60*4882a593Smuzhiyun * 1=Enable interrupt source; 0=Disable interrupt source. Default 0. 61*4882a593Smuzhiyun * [ 7] rxsense_fall starting from G12A 62*4882a593Smuzhiyun * [ 6] rxsense_rise starting from G12A 63*4882a593Smuzhiyun * [ 5] err_i2c_timeout starting from G12A 64*4882a593Smuzhiyun * [ 4] hdcp22_rndnum_err 65*4882a593Smuzhiyun * [ 3] nonce_rfrsh_rise 66*4882a593Smuzhiyun * [ 2] hpd_fall_intr 67*4882a593Smuzhiyun * [ 1] hpd_rise_intr 68*4882a593Smuzhiyun * [ 0] core_intr 69*4882a593Smuzhiyun */ 70*4882a593Smuzhiyun #define HDMITX_TOP_INTR_MASKN (0x003) 71*4882a593Smuzhiyun 72*4882a593Smuzhiyun /* 73*4882a593Smuzhiyun * Bit 30: 0 RW intr_stat: For each bit, write 1 to manually set the interrupt 74*4882a593Smuzhiyun * bit, read back the interrupt status. 75*4882a593Smuzhiyun * Bit 31 R IP interrupt status 76*4882a593Smuzhiyun * Bit 7 RW rxsense_fall starting from G12A 77*4882a593Smuzhiyun * Bit 6 RW rxsense_rise starting from G12A 78*4882a593Smuzhiyun * Bit 5 RW err_i2c_timeout starting from G12A 79*4882a593Smuzhiyun * Bit 2 RW hpd_fall 80*4882a593Smuzhiyun * Bit 1 RW hpd_rise 81*4882a593Smuzhiyun * Bit 0 RW IP interrupt 82*4882a593Smuzhiyun */ 83*4882a593Smuzhiyun #define HDMITX_TOP_INTR_STAT (0x004) 84*4882a593Smuzhiyun 85*4882a593Smuzhiyun /* 86*4882a593Smuzhiyun * [7] rxsense_fall starting from G12A 87*4882a593Smuzhiyun * [6] rxsense_rise starting from G12A 88*4882a593Smuzhiyun * [5] err_i2c_timeout starting from G12A 89*4882a593Smuzhiyun * [4] hdcp22_rndnum_err 90*4882a593Smuzhiyun * [3] nonce_rfrsh_rise 91*4882a593Smuzhiyun * [2] hpd_fall 92*4882a593Smuzhiyun * [1] hpd_rise 93*4882a593Smuzhiyun * [0] core_intr_rise 94*4882a593Smuzhiyun */ 95*4882a593Smuzhiyun #define HDMITX_TOP_INTR_STAT_CLR (0x005) 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun #define HDMITX_TOP_INTR_CORE BIT(0) 98*4882a593Smuzhiyun #define HDMITX_TOP_INTR_HPD_RISE BIT(1) 99*4882a593Smuzhiyun #define HDMITX_TOP_INTR_HPD_FALL BIT(2) 100*4882a593Smuzhiyun #define HDMITX_TOP_INTR_RXSENSE_RISE BIT(6) 101*4882a593Smuzhiyun #define HDMITX_TOP_INTR_RXSENSE_FALL BIT(7) 102*4882a593Smuzhiyun 103*4882a593Smuzhiyun /* 104*4882a593Smuzhiyun * Bit 14:12 RW tmds_sel: 3'b000=Output zero; 3'b001=Output normal TMDS data; 105*4882a593Smuzhiyun * 3'b010=Output PRBS data; 3'b100=Output shift pattern. Default 0. 106*4882a593Smuzhiyun * Bit 11: 9 RW shift_pttn_repeat: 0=New pattern every clk cycle; 1=New pattern 107*4882a593Smuzhiyun * every 2 clk cycles; ...; 7=New pattern every 8 clk cycles. Default 0. 108*4882a593Smuzhiyun * Bit 8 RW shift_pttn_en: 1= Enable shift pattern generator; 0=Disable. 109*4882a593Smuzhiyun * Default 0. 110*4882a593Smuzhiyun * Bit 4: 3 RW prbs_pttn_mode: 0=PRBS11; 1=PRBS15; 2=PRBS7; 3=PRBS31. Default 0. 111*4882a593Smuzhiyun * Bit 2: 1 RW prbs_pttn_width: 0=idle; 1=output 8-bit pattern; 112*4882a593Smuzhiyun * 2=Output 1-bit pattern; 3=output 10-bit pattern. Default 0. 113*4882a593Smuzhiyun * Bit 0 RW prbs_pttn_en: 1=Enable PRBS generator; 0=Disable. Default 0. 114*4882a593Smuzhiyun */ 115*4882a593Smuzhiyun #define HDMITX_TOP_BIST_CNTL (0x006) 116*4882a593Smuzhiyun 117*4882a593Smuzhiyun /* Bit 29:20 RW shift_pttn_data[59:50]. Default 0. */ 118*4882a593Smuzhiyun /* Bit 19:10 RW shift_pttn_data[69:60]. Default 0. */ 119*4882a593Smuzhiyun /* Bit 9: 0 RW shift_pttn_data[79:70]. Default 0. */ 120*4882a593Smuzhiyun #define HDMITX_TOP_SHIFT_PTTN_012 (0x007) 121*4882a593Smuzhiyun 122*4882a593Smuzhiyun /* Bit 29:20 RW shift_pttn_data[29:20]. Default 0. */ 123*4882a593Smuzhiyun /* Bit 19:10 RW shift_pttn_data[39:30]. Default 0. */ 124*4882a593Smuzhiyun /* Bit 9: 0 RW shift_pttn_data[49:40]. Default 0. */ 125*4882a593Smuzhiyun #define HDMITX_TOP_SHIFT_PTTN_345 (0x008) 126*4882a593Smuzhiyun 127*4882a593Smuzhiyun /* Bit 19:10 RW shift_pttn_data[ 9: 0]. Default 0. */ 128*4882a593Smuzhiyun /* Bit 9: 0 RW shift_pttn_data[19:10]. Default 0. */ 129*4882a593Smuzhiyun #define HDMITX_TOP_SHIFT_PTTN_67 (0x009) 130*4882a593Smuzhiyun 131*4882a593Smuzhiyun /* Bit 25:16 RW tmds_clk_pttn[19:10]. Default 0. */ 132*4882a593Smuzhiyun /* Bit 9: 0 RW tmds_clk_pttn[ 9: 0]. Default 0. */ 133*4882a593Smuzhiyun #define HDMITX_TOP_TMDS_CLK_PTTN_01 (0x00A) 134*4882a593Smuzhiyun 135*4882a593Smuzhiyun /* Bit 25:16 RW tmds_clk_pttn[39:30]. Default 0. */ 136*4882a593Smuzhiyun /* Bit 9: 0 RW tmds_clk_pttn[29:20]. Default 0. */ 137*4882a593Smuzhiyun #define HDMITX_TOP_TMDS_CLK_PTTN_23 (0x00B) 138*4882a593Smuzhiyun 139*4882a593Smuzhiyun /* 140*4882a593Smuzhiyun * Bit 1 RW shift_tmds_clk_pttn:1=Enable shifting clk pattern, 141*4882a593Smuzhiyun * used when TMDS CLK rate = TMDS character rate /4. Default 0. 142*4882a593Smuzhiyun * Bit 0 R Reserved. Default 0. 143*4882a593Smuzhiyun * [ 1] shift_tmds_clk_pttn 144*4882a593Smuzhiyun * [ 0] load_tmds_clk_pttn 145*4882a593Smuzhiyun */ 146*4882a593Smuzhiyun #define HDMITX_TOP_TMDS_CLK_PTTN_CNTL (0x00C) 147*4882a593Smuzhiyun 148*4882a593Smuzhiyun /* 149*4882a593Smuzhiyun * Bit 0 RW revocmem_wr_fail: Read back 1 to indicate Host write REVOC MEM 150*4882a593Smuzhiyun * failure, write 1 to clear the failure flag. Default 0. 151*4882a593Smuzhiyun */ 152*4882a593Smuzhiyun #define HDMITX_TOP_REVOCMEM_STAT (0x00D) 153*4882a593Smuzhiyun 154*4882a593Smuzhiyun /* 155*4882a593Smuzhiyun * Bit 1 R filtered RxSense status 156*4882a593Smuzhiyun * Bit 0 R filtered HPD status. 157*4882a593Smuzhiyun */ 158*4882a593Smuzhiyun #define HDMITX_TOP_STAT0 (0x00E) 159*4882a593Smuzhiyun 160*4882a593Smuzhiyun #endif /* __MESON_DW_HDMI_H */ 161