blob: f4a06d2bcc37fcd25d5b2b3d0a90af78c3e8aec0 [file] [log] [blame]
/******************************************************************************
*
* Copyright (C) 2016-2017 Cadence Design Systems, Inc.
* All rights reserved worldwide.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation and/or
* other materials provided with the distribution.
*
* 3. Neither the name of the copyright holder nor the names of its contributors
* may be used to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
* INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
* Copyright 2018 NXP
*
******************************************************************************
*
* API_AFE_ss28fdsoi_hdmirx.h
*
******************************************************************************
*/
#ifndef API_AFE_SS28FDSOI_HDMIRX_H_
#define API_AFE_SS28FDSOI_HDMIRX_H_
#include <linux/io.h>
#include "../../../../mxc/hdp/all.h"
#define REFCLK_FREQ_KHZ 24000
#define LINK_WRITE 0x2000
#define LINK_ID 0x0
#define CMN_PLLSM0_PLLEN_TMR_ADDR 0x0029
#define CMN_PLLSM0_PLLPRE_TMR_ADDR 0x002A
#define CMN_PLLSM0_PLLVREF_TMR_ADDR 0x002B
#define CMN_PLLSM0_PLLLOCK_TMR_ADDR 0x002C
#define CMN_PLLSM0_USER_DEF_CTRL_ADDR 0x002F
#define CMN_PLL0_VCOCAL_CTRL_ADDR 0x0080
#define CMN_PLL0_VCOCAL_OVRD_ADDR 0x0083
#define CMN_PLL0_LOCK_REFCNT_START_ADDR 0x0090
#define CMN_PLL0_LOCK_PLLCNT_START_ADDR 0x0092
#define CMN_PLL0_DIV2SEL_OSR_CTRL_ADDR 0x009B
#define CMN_ICAL_CTRL_ADDR 0x00C0
#define CMN_ICAL_OVRD_ADDR 0x00C1
#define CMN_RXCAL_CTRL_ADDR 0x00D0
#define CMN_RXCAL_OVRD_ADDR 0x00D1
#define CMN_RXCAL_INIT_TMR_ADDR 0x00D4
#define CMN_TXPUCAL_OVRD_ADDR 0x00E1
#define CMN_TXPDCAL_OVRD_ADDR 0x00F1
#define CMN_CMSMT_CLK_FREQ_MSMT_CTRL_ADDR 0x01A0
#define CMN_CMSMT_REF_CLK_TMR_VALUE_ADDR 0x01A2
#define CMN_CMSMT_TEST_CLK_CNT_VALUE_ADDR 0x01A3
#define CMN_DIAG_PLL0_FBH_OVRD_ADDR 0x01C0
#define CMN_DIAG_PLL0_FBL_OVRD_ADDR 0x01C1
#define CMN_DIAG_PLL0_TEST_MODE_ADDR 0x01C4
#define CMN_DIAG_PLL0_INCLK_CTRL_ADDR 0x01CA
#define CMN_DIAG_PLL0_V2I_TUNE_ADDR 0x01C5
#define CMN_DIAG_PLL0_CP_TUNE_ADDR 0x01C6
#define CMN_DIAG_PLL0_PTATIS_TUNE1_ADDR 0x01C8
#define CMN_DIAG_PLL0_PTATIS_TUNE2_ADDR 0x01C9
#define XCVR_PSM_CAL_TMR_ADDR 0x4002
#define XCVR_PSM_A0IN_TMR_ADDR 0x4003
#define XCVR_DIAG_RX_LANE_CAL_RST_TMR_ADDR 0x40EA
#define TX_ANA_CTRL_REG_1_ADDR 0x5020
#define TX_ANA_CTRL_REG_2_ADDR 0x5021
#define TX_DIG_CTRL_REG_1_ADDR 0x5023
#define TX_DIG_CTRL_REG_2_ADDR 0x5024
#define TXDA_CYA_AUXDA_CYA_ADDR 0x5025
#define TX_ANA_CTRL_REG_3_ADDR 0x5026
#define TX_ANA_CTRL_REG_4_ADDR 0x5027
#define TX_ANA_CTRL_REG_5_ADDR 0x5029
#define RX_PSC_A0_ADDR 0x8000
#define RX_IQPI_ILL_CAL_OVRD_ADDR 0x8023
#define RX_EPI_ILL_CAL_OVRD_ADDR 0x8033
#define RX_SLC_CTRL_ADDR 0x80E0
#define RX_REE_PERGCSM_EQENM_PH1_ADDR 0x8179
#define RX_REE_PERGCSM_EQENM_PH2_ADDR 0x817A
#define RX_REE_VGA_GAIN_OVRD_ADDR 0x81AD
#define RX_REE_SMGM_CTRL1_ADDR 0x81BD
#define RX_DIAG_ILL_IQ_TRIM0_ADDR 0x81C1
#define RX_DIAG_ILL_E_TRIM0_ADDR 0x81C2
#define RX_DIAG_ILL_IQE_TRIM2_ADDR 0x81C5
#define RX_DIAG_DFE_CTRL2_ADDR 0x81D4
#define RX_DIAG_SC2C_DELAY_ADDR 0x81E1
#define RX_DIAG_SMPLR_OSR_ADDR 0x81E2
#define RX_CLK_SLICER_CAL_OVRD_ADDR 0x8621
#define RX_CLK_SLICER_CAL_INIT_TMR_ADDR 0x8624
#define PHY_MODE_CTL_ADDR 0xC008
#define PHY_PMA_CMN_CTRL1_ADDR 0xC800
#define PHY_PMA_CMN_CTRL2_ADDR 0xC801
#define PHY_PMA_SSM_STATE_ADDR 0xC802
#define PHY_PMA_PLL_SM_STATE_ADDR 0xC803
#define PHY_PMA_XCVR_CTRL_ADDR 0xCC00
typedef enum {
TMDS_BIT_CLOCK_RATIO_1_10 = 10,
TMDS_BIT_CLOCK_RATIO_1_40 = 40
} tmds_bit_clock_ratio_t;
typedef enum {
PIXEL_ENCODING_RGB = 0,
PIXEL_ENCODING_YUV422 = 1,
PIXEL_ENCODING_YUV444 = 2,
PIXEL_ENCODING_YUV420 = 3,
} pixel_encoding_t;
void speedup_config(state_struct *state);
void arc_config(state_struct *state);
void pma_config(state_struct *state);
int pma_cmn_ready(state_struct *state);
int pma_rx_clk_signal_detect(state_struct *state);
int pma_rx_clk_freq_detect(state_struct *state);
void pre_data_rate_change(state_struct *state);
int pma_pll_config(state_struct *state, u32, clk_ratio_t, tmds_bit_clock_ratio_t, unsigned char);
clk_ratio_t clk_ratio_detect(state_struct *state, u32, u32, u8, pixel_encoding_t, tmds_bit_clock_ratio_t);
void phy_status(state_struct *state);
#endif