blob: 3c223eceb18e10e2226ecc07d75c1d1dbe950b7b [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
*
******************************************************************************
*
* t28hpc_hdmitx_table.h
*
******************************************************************************
*/
#ifndef T28HPC_HDMITX_TABLE_H_
#define T28HPC_HDMITX_TABLE_H_
#include <linux/io.h>
#define T28HPC_HDMITX_CLOCK_CONTROL_TABLE_ROWS_PIXEL_IN 22
#define T28HPC_HDMITX_PLL_TUNING_TABLE_ROWS_PIXEL_IN 38
#define T28HPC_HDMITX_CLOCK_CONTROL_TABLE_ROWS_PIXEL_OUT 47
#define T28HPC_HDMITX_PLL_TUNING_TABLE_ROWS_PIXEL_OUT 27
/* Table 6. HDMI TX clock control settings (pixel clock is input) */
typedef enum {
T6_PIXEL_CLK_FREQ_KHZ_MIN,
T6_PIXEL_CLK_FREQ_KHZ_MAX,
T6_FEEDBACK_FACTOR,
T6_DATA_RANGE_MBPS_MIN,
T6_DATA_RANGE_MBPS_MAX,
T6_CMNDA_PLL0_IP_DIV,
T6_CMN_REF_CLK_DIG_DIV,
T6_REF_CLK_DIVIDER_SCALER,
T6_PLL_FB_DIV_TOTAL,
T6_CMNDA_PLL0_FB_DIV_LOW,
T6_CMNDA_PLL0_FB_DIV_HIGH,
T6_VCO_FREQ_KHZ_MIN,
T6_VCO_FREQ_KHZ_MAX,
T6_VCO_RING_SELECT,
T6_CMNDA_HS_CLK_0_SEL,
T6_CMNDA_HS_CLK_1_SEL,
T6_HSCLK_DIV_AT_XCVR,
T6_HSCLK_DIV_TX_SUB_RATE,
T6_TX_CLK_KHZ_MIN,
T6_TX_CLK_KHZ_MAX,
T6_CMNDA_PLL0_HS_SYM_DIV_SEL,
T6_CMNDA_PLL0_CLK_FREQ_KHZ_MIN,
T6_CMNDA_PLL0_CLK_FREQ_KHZ_MAX,
T28HPC_HDMITX_CLOCK_CONTROL_TABLE_COLS_PIXEL_IN
} CLK_CTRL_PARAM_PIXEL_IN;
/* Table 7. HDMI TX PLL tuning settings (pixel clock is input) */
typedef enum {
T7_VCO_FREQ_BIN,
T7_PLL_VCO_FREQ_KHZ_MIN,
T7_PLL_VCO_FREQ_KHZ_MAX,
T7_VOLTAGE_TO_CURRENT_COARSE,
T7_VOLTAGE_TO_CURRENT,
T7_NDAC_CTRL,
T7_PMOS_CTRL,
T7_PTAT_NDAC_CTRL,
T7_PLL_FEEDBACK_DIV_TOTAL,
T7_CHARGE_PUMP_GAIN,
T28HPC_HDMITX_PLL_TUNING_TABLE_COLS_PIXEL_IN
} PLL_TUNE_PARAM_PIXEL_IN;
/* Table 8. HDMI TX control settings (pixel clock is output) */
typedef enum {
T8_PIXEL_CLK_FREQ_KHZ,
T8_FEEDBACK_FACTOR,
T8_DATA_RANGE_MBPS,
T8_CMNDA_PLL0_IP_DIV,
T8_CMN_REF_CLK_DIG_DIV,
T8_REF_CLK_DIVIDER_SCALER,
T8_PLL_FB_DIV_TOTAL,
T8_CMNDA_PLL0_FB_DIV_LOW,
T8_CMNDA_PLL0_FB_DIV_HIGH,
T8_PIXEL_DIV_TOTAL,
T8_CMNDA_PLL0_PXDIV_LOW,
T8_CMNDA_PLL0_PXDIV_HIGH,
T8_VCO_FREQ_KHZ,
T8_VCO_RING_SELECT,
T8_CMNDA_HS_CLK_0_SEL,
T8_CMNDA_HS_CLK_1_SEL,
T8_HSCLK_DIV_AT_XCVR,
T8_HSCLK_DIV_TX_SUB_RATE,
T8_TX_CLK_KHZ,
T8_CMNDA_PLL0_HS_SYM_DIV_SEL,
T8_CMNDA_PLL0_CLK_FREQ_KHZ,
T8_PIXEL_CLK_OUTPUT_ENABLE,
T28HPC_HDMITX_CLOCK_CONTROL_TABLE_COLS_PIXEL_OUT
} CLK_CTRL_PARAM_PIXEL_OUT;
/* Table 9. HDMI TX PLL tuning settings (pixel clock is output) */
typedef enum {
T9_VCO_FREQ_BIN,
T9_PLL_VCO_FREQ_KHZ_MIN,
T9_PLL_VCO_FREQ_KHZ_MAX,
T9_VOLTAGE_TO_CURRENT_COARSE,
T9_VOLTAGE_TO_CURRENT,
T9_NDAC_CTRL,
T9_PMOS_CTRL,
T9_PTAT_NDAC_CTRL,
T9_PLL_FEEDBACK_DIV_TOTAL,
T9_CHARGE_PUMP_GAIN,
T9_COARSE_CODE,
T9_V2I_CODE,
T9_VCO_CAL_CODE,
T28HPC_HDMITX_PLL_TUNING_TABLE_COLS_PIXEL_OUT
} PLL_TUNE_PARAM_PIXEL_OUT;
extern const u32 t28hpc_hdmitx_clock_control_table_pixel_in[T28HPC_HDMITX_CLOCK_CONTROL_TABLE_ROWS_PIXEL_IN][T28HPC_HDMITX_CLOCK_CONTROL_TABLE_COLS_PIXEL_IN];
extern const u32 t28hpc_hdmitx_pll_tuning_table_pixel_in[T28HPC_HDMITX_PLL_TUNING_TABLE_ROWS_PIXEL_IN][T28HPC_HDMITX_PLL_TUNING_TABLE_COLS_PIXEL_IN];
extern const u32 t28hpc_hdmitx_clock_control_table_pixel_out[T28HPC_HDMITX_CLOCK_CONTROL_TABLE_ROWS_PIXEL_OUT][T28HPC_HDMITX_CLOCK_CONTROL_TABLE_COLS_PIXEL_OUT];
extern const u32 t28hpc_hdmitx_pll_tuning_table_pixel_out[T28HPC_HDMITX_PLL_TUNING_TABLE_ROWS_PIXEL_OUT][T28HPC_HDMITX_PLL_TUNING_TABLE_COLS_PIXEL_OUT];
#endif