blob: 3572484923f65eeeab9496749740d50a6588bb27 [file] [log] [blame]
/*
* arch/arm/cpu/armv8/gxl/hdmitx20/hdmitx_tvenc.c
*
* Copyright (C) 2015 Amlogic, Inc. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include "mach_reg.h"
#include "hdmitx_tvenc.h"
#define MREG_END_MARKER 0xFFFF
static const struct reg_t tvregs_720p[] = {
{P_ENCP_VIDEO_EN, 0},
{P_ENCI_VIDEO_EN, 0},
{P_VENC_DVI_SETTING, 0x2029},
{P_ENCP_VIDEO_MODE, 0x4040},
{P_ENCP_VIDEO_MODE_ADV, 0x0019},
{P_ENCP_VIDEO_YFP1_HTIME, 648},
{P_ENCP_VIDEO_YFP2_HTIME, 3207},
{P_ENCP_VIDEO_MAX_PXCNT, 3299},
{P_ENCP_VIDEO_HSPULS_BEGIN, 80},
{P_ENCP_VIDEO_HSPULS_END, 240},
{P_ENCP_VIDEO_HSPULS_SWITCH, 80},
{P_ENCP_VIDEO_VSPULS_BEGIN, 688},
{P_ENCP_VIDEO_VSPULS_END, 3248},
{P_ENCP_VIDEO_VSPULS_BLINE, 4},
{P_ENCP_VIDEO_VSPULS_ELINE, 8},
{P_ENCP_VIDEO_HAVON_BEGIN, 648},
{P_ENCP_VIDEO_HAVON_END, 3207},
{P_ENCP_VIDEO_VAVON_BLINE, 29},
{P_ENCP_VIDEO_VAVON_ELINE, 748},
{P_ENCP_VIDEO_HSO_BEGIN, 256},
{P_ENCP_VIDEO_HSO_END, 168},
{P_ENCP_VIDEO_VSO_BEGIN, 168},
{P_ENCP_VIDEO_VSO_END, 256},
{P_ENCP_VIDEO_VSO_BLINE, 0},
{P_ENCP_VIDEO_VSO_ELINE, 5},
{P_ENCP_VIDEO_MAX_LNCNT, 749},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCP_VIDEO_EN, 1},
{P_ENCI_VIDEO_EN, 0},
{MREG_END_MARKER, 0},
};
static const struct reg_t tvregs_720p_50hz[] = {
{P_ENCP_VIDEO_EN, 0},
{P_ENCI_VIDEO_EN, 0},
{P_VENC_DVI_SETTING, 0x202d},
{P_ENCP_VIDEO_MAX_PXCNT, 3959},
{P_ENCP_VIDEO_MAX_LNCNT, 749},
{P_ENCP_VIDEO_HSPULS_BEGIN, 80},
{P_ENCP_VIDEO_HSPULS_END, 240},
{P_ENCP_VIDEO_HSPULS_SWITCH, 80},
{P_ENCP_VIDEO_HAVON_BEGIN, 648},
{P_ENCP_VIDEO_HAVON_END, 3207},
{P_ENCP_VIDEO_HSO_BEGIN, 128},
{P_ENCP_VIDEO_HSO_END, 208},
{P_ENCP_VIDEO_VSPULS_BEGIN, 688},
{P_ENCP_VIDEO_VSPULS_END, 3248},
{P_ENCP_VIDEO_VSPULS_BLINE, 4},
{P_ENCP_VIDEO_VSPULS_ELINE, 8},
{P_ENCP_VIDEO_VAVON_BLINE, 29},
{P_ENCP_VIDEO_VAVON_ELINE, 748},
{P_ENCP_VIDEO_VSO_BEGIN, 128},
{P_ENCP_VIDEO_VSO_END, 128},
{P_ENCP_VIDEO_VSO_BLINE, 0},
{P_ENCP_VIDEO_VSO_ELINE, 5},
{P_ENCP_VIDEO_YFP1_HTIME, 648},
{P_ENCP_VIDEO_YFP2_HTIME, 3207},
{P_VENC_VIDEO_PROG_MODE, 0x100},
{P_ENCP_VIDEO_MODE, 0x4040},
{P_ENCP_VIDEO_MODE_ADV, 0x0019},
{P_ENCP_VIDEO_SYNC_MODE, 0x407},
{P_ENCP_VIDEO_YC_DLY, 0},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCP_VIDEO_EN, 1},
{P_ENCI_VIDEO_EN, 0},
{MREG_END_MARKER, 0},
};
static const struct reg_t tvregs_720p_100hz[] = {
{P_ENCP_VIDEO_EN, 0},
{P_ENCI_VIDEO_EN, 0},
{P_VENC_DVI_SETTING, 0x202d},
{P_ENCP_VIDEO_MAX_PXCNT, 3959},
{P_ENCP_VIDEO_MAX_LNCNT, 749},
{P_ENCP_VIDEO_HSPULS_BEGIN, 80},
{P_ENCP_VIDEO_HSPULS_END, 240},
{P_ENCP_VIDEO_HSPULS_SWITCH, 80},
{P_ENCP_VIDEO_HAVON_BEGIN, 648},
{P_ENCP_VIDEO_HAVON_END, 3207},
{P_ENCP_VIDEO_HSO_BEGIN, 128},
{P_ENCP_VIDEO_HSO_END, 208},
{P_ENCP_VIDEO_VSPULS_BEGIN, 688},
{P_ENCP_VIDEO_VSPULS_END, 3248},
{P_ENCP_VIDEO_VSPULS_BLINE, 4},
{P_ENCP_VIDEO_VSPULS_ELINE, 8},
{P_ENCP_VIDEO_VAVON_BLINE, 29},
{P_ENCP_VIDEO_VAVON_ELINE, 748},
{P_ENCP_VIDEO_VSO_BEGIN, 128},
{P_ENCP_VIDEO_VSO_END, 128},
{P_ENCP_VIDEO_VSO_BLINE, 0},
{P_ENCP_VIDEO_VSO_ELINE, 5},
{P_ENCP_VIDEO_YFP1_HTIME, 648},
{P_ENCP_VIDEO_YFP2_HTIME, 3207},
{P_VENC_VIDEO_PROG_MODE, 0x100},
{P_ENCP_VIDEO_MODE, 0x4040},
{P_ENCP_VIDEO_MODE_ADV, 0x0019},
{P_ENCP_VIDEO_SYNC_MODE, 0x407},
{P_ENCP_VIDEO_YC_DLY, 0},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCP_VIDEO_EN, 1},
{P_ENCI_VIDEO_EN, 0},
{MREG_END_MARKER, 0},
};
static const struct reg_t tvregs_720p_120hz[] = {
{P_ENCP_VIDEO_EN, 0},
{P_ENCI_VIDEO_EN, 0},
{P_VENC_DVI_SETTING, 0x2029},
{P_ENCP_VIDEO_MODE, 0x4040},
{P_ENCP_VIDEO_MODE_ADV, 0x0019},
{P_ENCP_VIDEO_YFP1_HTIME, 648},
{P_ENCP_VIDEO_YFP2_HTIME, 3207},
{P_ENCP_VIDEO_MAX_PXCNT, 3299},
{P_ENCP_VIDEO_HSPULS_BEGIN, 80},
{P_ENCP_VIDEO_HSPULS_END, 240},
{P_ENCP_VIDEO_HSPULS_SWITCH, 80},
{P_ENCP_VIDEO_VSPULS_BEGIN, 688},
{P_ENCP_VIDEO_VSPULS_END, 3248},
{P_ENCP_VIDEO_VSPULS_BLINE, 4},
{P_ENCP_VIDEO_VSPULS_ELINE, 8},
{P_ENCP_VIDEO_HAVON_BEGIN, 648},
{P_ENCP_VIDEO_HAVON_END, 3207},
{P_ENCP_VIDEO_VAVON_BLINE, 29},
{P_ENCP_VIDEO_VAVON_ELINE, 748},
{P_ENCP_VIDEO_HSO_BEGIN, 256},
{P_ENCP_VIDEO_HSO_END, 168},
{P_ENCP_VIDEO_VSO_BEGIN, 168},
{P_ENCP_VIDEO_VSO_END, 256},
{P_ENCP_VIDEO_VSO_BLINE, 0},
{P_ENCP_VIDEO_VSO_ELINE, 5},
{P_ENCP_VIDEO_MAX_LNCNT, 749},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCP_VIDEO_EN, 1},
{P_ENCI_VIDEO_EN, 0},
{MREG_END_MARKER, 0},
};
static const struct reg_t tvregs_480i[] = {
{P_ENCP_VIDEO_EN, 0},
{P_ENCI_VIDEO_EN, 0},
{P_ENCI_CFILT_CTRL, 0x12},
{P_ENCI_CFILT_CTRL2, 0x12},
{P_VENC_DVI_SETTING, 0},
{P_ENCI_VIDEO_MODE, 0},
{P_ENCI_VIDEO_MODE_ADV, 0},
{P_ENCI_SYNC_HSO_BEGIN, 5},
{P_ENCI_SYNC_HSO_END, 129},
{P_ENCI_SYNC_VSO_EVNLN, 0x0003},
{P_ENCI_SYNC_VSO_ODDLN, 0x0104},
{P_ENCI_MACV_MAX_AMP, 0x810b},
{P_VENC_VIDEO_PROG_MODE, 0xf0},
{P_ENCI_VIDEO_MODE, 0x08},
{P_ENCI_VIDEO_MODE_ADV, 0x26},
{P_ENCI_VIDEO_SCH, 0x20},
{P_ENCI_SYNC_MODE, 0x07},
{P_ENCI_DBG_PX_RST, 0},
{P_ENCI_VFIFO2VD_CTL, 0x4e01},
{P_ENCI_VFIFO2VD_PIXEL_START, 0xf3,},
{P_ENCI_VFIFO2VD_PIXEL_END, 0x0693,},
{P_ENCI_VFIFO2VD_LINE_TOP_START, 0x12,},
{P_ENCI_VFIFO2VD_LINE_TOP_END, 0x102,},
{P_ENCI_VFIFO2VD_LINE_BOT_START, 0x13,},
{P_ENCI_VFIFO2VD_LINE_BOT_END, 0x103,},
{P_VPU_VIU_VENC_MUX_CTRL, 0x5},
{P_ENCP_VIDEO_EN, 0},
{P_ENCI_VIDEO_EN, 1},
{MREG_END_MARKER, 0},
};
static const struct reg_t tvregs_480p[] = {
{P_ENCP_VIDEO_EN, 0},
{P_ENCI_VIDEO_EN, 0},
{P_ENCP_VIDEO_FILT_CTRL, 0x2052},
{P_VENC_DVI_SETTING, 0x21},
{P_ENCP_VIDEO_MODE, 0x4000},
{P_ENCP_VIDEO_MODE_ADV, 9},
{P_ENCP_VIDEO_YFP1_HTIME, 244},
{P_ENCP_VIDEO_YFP2_HTIME, 1630},
{P_ENCP_VIDEO_MAX_PXCNT, 1715},
{P_ENCP_VIDEO_MAX_LNCNT, 524},
{P_ENCP_VIDEO_HSPULS_BEGIN, 0x22},
{P_ENCP_VIDEO_HSPULS_END, 0xa0},
{P_ENCP_VIDEO_HSPULS_SWITCH, 88},
{P_ENCP_VIDEO_VSPULS_BEGIN, 0},
{P_ENCP_VIDEO_VSPULS_END, 1589},
{P_ENCP_VIDEO_VSPULS_BLINE, 0},
{P_ENCP_VIDEO_VSPULS_ELINE, 5},
{P_ENCP_VIDEO_HAVON_BEGIN, 249},
{P_ENCP_VIDEO_HAVON_END, 1689},
{P_ENCP_VIDEO_VAVON_BLINE, 42},
{P_ENCP_VIDEO_VAVON_ELINE, 521},
{P_ENCP_VIDEO_SYNC_MODE, 0x07},
{P_VENC_VIDEO_PROG_MODE, 0x0},
{P_ENCP_VIDEO_HSO_BEGIN, 0x3},
{P_ENCP_VIDEO_HSO_END, 0x5},
{P_ENCP_VIDEO_VSO_BEGIN, 0x3},
{P_ENCP_VIDEO_VSO_END, 0x5},
{P_ENCP_VIDEO_VSO_BLINE, 0},
{P_ENCP_VIDEO_SY_VAL, 8},
{P_ENCP_VIDEO_SY2_VAL, 0x1d8},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCI_VIDEO_EN, 0},
{P_ENCP_VIDEO_EN, 1},
{MREG_END_MARKER, 0},
};
static const struct reg_t tvregs_576i[] = {
{P_ENCP_VIDEO_EN, 0},
{P_ENCI_VIDEO_EN, 0},
{P_VENC_DVI_SETTING, 0},
{P_ENCI_VIDEO_MODE, 0},
{P_ENCI_VIDEO_MODE_ADV, 0},
{P_ENCI_SYNC_HSO_BEGIN, 3},
{P_ENCI_SYNC_HSO_END, 129},
{P_ENCI_SYNC_VSO_EVNLN, 0x0003},
{P_ENCI_SYNC_VSO_ODDLN, 0x0104},
{P_ENCI_MACV_MAX_AMP, 0x8107},
{P_VENC_VIDEO_PROG_MODE, 0xff},
{P_ENCI_VIDEO_MODE, 0x13},
{P_ENCI_VIDEO_MODE_ADV, 0x26},
{P_ENCI_VIDEO_SCH, 0x28},
{P_ENCI_SYNC_MODE, 0x07},
{P_ENCI_YC_DELAY, 0x333},
{P_ENCI_VFIFO2VD_PIXEL_START, 0x010b},
{P_ENCI_VFIFO2VD_PIXEL_END, 0x06ab},
{P_ENCI_VFIFO2VD_LINE_TOP_START, 0x0016},
{P_ENCI_VFIFO2VD_LINE_TOP_END, 0x0136},
{P_ENCI_VFIFO2VD_LINE_BOT_START, 0x0017},
{P_ENCI_VFIFO2VD_LINE_BOT_END, 0x0137},
{P_ENCI_DBG_PX_RST, 0},
{P_ENCI_VFIFO2VD_CTL, 0x4e01},
{P_ENCI_VFIFO2VD_PIXEL_START, 0x010b},
{P_ENCI_VFIFO2VD_PIXEL_END, 0x06ab},
{P_ENCI_VFIFO2VD_LINE_TOP_START, 0x0016},
{P_ENCI_VFIFO2VD_LINE_TOP_END, 0x0136},
{P_ENCI_VFIFO2VD_LINE_BOT_START, 0x0017},
{P_ENCI_VFIFO2VD_LINE_BOT_END, 0x0137},
{P_VPU_VIU_VENC_MUX_CTRL, 0x5},
{P_ENCP_VIDEO_EN, 0},
{P_ENCI_VIDEO_EN, 1},
{MREG_END_MARKER, 0},
};
static const struct reg_t tvregs_576p[] = {
{P_ENCP_VIDEO_EN, 0},
{P_ENCI_VIDEO_EN, 0},
{P_ENCP_VIDEO_FILT_CTRL, 0x52},
{P_VENC_DVI_SETTING, 0x21},
{P_ENCP_VIDEO_MODE, 0x4000},
{P_ENCP_VIDEO_MODE_ADV, 9},
{P_ENCP_VIDEO_YFP1_HTIME, 235},
{P_ENCP_VIDEO_YFP2_HTIME, 1674},
{P_ENCP_VIDEO_MAX_PXCNT, 1727},
{P_ENCP_VIDEO_MAX_LNCNT, 624},
{P_ENCP_VIDEO_HSPULS_BEGIN, 0},
{P_ENCP_VIDEO_HSPULS_END, 0x80},
{P_ENCP_VIDEO_HSPULS_SWITCH, 88},
{P_ENCP_VIDEO_VSPULS_BEGIN, 0},
{P_ENCP_VIDEO_VSPULS_END, 1599},
{P_ENCP_VIDEO_VSPULS_BLINE, 0},
{P_ENCP_VIDEO_VSPULS_ELINE, 4},
{P_ENCP_VIDEO_HAVON_BEGIN, 235},
{P_ENCP_VIDEO_HAVON_END, 1674},
{P_ENCP_VIDEO_VAVON_BLINE, 44},
{P_ENCP_VIDEO_VAVON_ELINE, 619},
{P_ENCP_VIDEO_SYNC_MODE, 0x07},
{P_VENC_VIDEO_PROG_MODE, 0x0},
{P_ENCP_VIDEO_HSO_BEGIN, 0x80},
{P_ENCP_VIDEO_HSO_END, 0x0},
{P_ENCP_VIDEO_VSO_BEGIN, 0x0},
{P_ENCP_VIDEO_VSO_END, 0x5},
{P_ENCP_VIDEO_VSO_BLINE, 0},
{P_ENCP_VIDEO_SY_VAL, 8},
{P_ENCP_VIDEO_SY2_VAL, 0x1d8},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCI_VIDEO_EN, 0},
{P_ENCP_VIDEO_EN, 1},
{MREG_END_MARKER, 0},
};
static const struct reg_t tvregs_1080i[] = {
{P_ENCP_VIDEO_EN, 0},
{P_ENCI_VIDEO_EN, 0},
{P_VENC_DVI_SETTING, 0x2029},
{P_ENCP_VIDEO_MAX_PXCNT, 4399},
{P_ENCP_VIDEO_MAX_LNCNT, 1124},
{P_ENCP_VIDEO_HSPULS_BEGIN, 88},
{P_ENCP_VIDEO_HSPULS_END, 264},
{P_ENCP_VIDEO_HSPULS_SWITCH, 88},
{P_ENCP_VIDEO_HAVON_BEGIN, 516},
{P_ENCP_VIDEO_HAVON_END, 4355},
{P_ENCP_VIDEO_HSO_BEGIN, 264},
{P_ENCP_VIDEO_HSO_END, 176},
{P_ENCP_VIDEO_EQPULS_BEGIN, 2288},
{P_ENCP_VIDEO_EQPULS_END, 2464},
{P_ENCP_VIDEO_VSPULS_BEGIN, 440},
{P_ENCP_VIDEO_VSPULS_END, 2200},
{P_ENCP_VIDEO_VSPULS_BLINE, 0},
{P_ENCP_VIDEO_VSPULS_ELINE, 4},
{P_ENCP_VIDEO_EQPULS_BLINE, 0},
{P_ENCP_VIDEO_EQPULS_ELINE, 4},
{P_ENCP_VIDEO_VAVON_BLINE, 20},
{P_ENCP_VIDEO_VAVON_ELINE, 559},
{P_ENCP_VIDEO_VSO_BEGIN, 88},
{P_ENCP_VIDEO_VSO_END, 88},
{P_ENCP_VIDEO_VSO_BLINE, 0},
{P_ENCP_VIDEO_VSO_ELINE, 5},
{P_ENCP_VIDEO_YFP1_HTIME, 516},
{P_ENCP_VIDEO_YFP2_HTIME, 4355},
{P_VENC_VIDEO_PROG_MODE, 0x100},
{P_ENCP_VIDEO_OFLD_VOAV_OFST, 0x11},
{P_ENCP_VIDEO_MODE, 0x5ffc},
{P_ENCP_VIDEO_MODE_ADV, 0x0019},
{P_ENCP_VIDEO_SYNC_MODE, 0x207},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCI_VIDEO_EN, 0},
{P_ENCP_VIDEO_EN, 1},
{MREG_END_MARKER, 0},
};
static const struct reg_t tvregs_1080i_50hz[] = {
{P_ENCP_VIDEO_EN, 0},
{P_ENCI_VIDEO_EN, 0},
{P_VENC_DVI_SETTING, 0x202d},
{P_ENCP_VIDEO_MAX_PXCNT, 5279},
{P_ENCP_VIDEO_MAX_LNCNT, 1124},
{P_ENCP_VIDEO_HSPULS_BEGIN, 88},
{P_ENCP_VIDEO_HSPULS_END, 264},
{P_ENCP_VIDEO_HSPULS_SWITCH, 88},
{P_ENCP_VIDEO_HAVON_BEGIN, 526},
{P_ENCP_VIDEO_HAVON_END, 4365},
{P_ENCP_VIDEO_HSO_BEGIN, 142},
{P_ENCP_VIDEO_HSO_END, 230},
{P_ENCP_VIDEO_VSPULS_BEGIN, 440},
{P_ENCP_VIDEO_VSPULS_END, 2200},
{P_ENCP_VIDEO_VSPULS_BLINE, 0},
{P_ENCP_VIDEO_VSPULS_ELINE, 4},
{P_ENCP_VIDEO_VAVON_BLINE, 20},
{P_ENCP_VIDEO_VAVON_ELINE, 559},
{P_ENCP_VIDEO_VSO_BEGIN, 142},
{P_ENCP_VIDEO_VSO_END, 142},
{P_ENCP_VIDEO_VSO_BLINE, 0},
{P_ENCP_VIDEO_VSO_ELINE, 5},
{P_ENCP_VIDEO_YFP1_HTIME, 526},
{P_ENCP_VIDEO_YFP2_HTIME, 4365},
{P_VENC_VIDEO_PROG_MODE, 0x100},
{P_ENCP_VIDEO_OFLD_VOAV_OFST, 0x11},
{P_ENCP_VIDEO_MODE, 0x5ffc},
{P_ENCP_VIDEO_MODE_ADV, 0x0019},
{P_ENCP_VIDEO_SYNC_MODE, 0x7},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCI_VIDEO_EN, 0},
{P_ENCP_VIDEO_EN, 1},
{MREG_END_MARKER, 0},
};
static const struct reg_t tvregs_1080p[] = {
{P_ENCP_VIDEO_EN, 0},
{P_ENCI_VIDEO_EN, 0},
{P_ENCP_VIDEO_FILT_CTRL, 0x1052},
{P_VENC_DVI_SETTING, 0x0001},
{P_ENCP_VIDEO_MODE, 0x4040},
{P_ENCP_VIDEO_MODE_ADV, 0x0018},
{P_ENCP_VIDEO_YFP1_HTIME, 140},
{P_ENCP_VIDEO_YFP2_HTIME, 2060},
{P_ENCP_VIDEO_MAX_PXCNT, 2199},
{P_ENCP_VIDEO_HSPULS_BEGIN, 2156},
{P_ENCP_VIDEO_HSPULS_END, 44},
{P_ENCP_VIDEO_HSPULS_SWITCH, 44},
{P_ENCP_VIDEO_VSPULS_BEGIN, 140},
{P_ENCP_VIDEO_VSPULS_END, 2059},
{P_ENCP_VIDEO_VSPULS_BLINE, 0},
{P_ENCP_VIDEO_VSPULS_ELINE, 4},
{P_ENCP_VIDEO_HAVON_BEGIN, 148},
{P_ENCP_VIDEO_HAVON_END, 2067},
{P_ENCP_VIDEO_VAVON_BLINE, 41},
{P_ENCP_VIDEO_VAVON_ELINE, 1120},
{P_ENCP_VIDEO_HSO_BEGIN, 44},
{P_ENCP_VIDEO_HSO_END, 2156},
{P_ENCP_VIDEO_VSO_BEGIN, 2100},
{P_ENCP_VIDEO_VSO_END, 2164},
{P_ENCP_VIDEO_VSO_BLINE, 0},
{P_ENCP_VIDEO_VSO_ELINE, 5},
{P_ENCP_VIDEO_MAX_LNCNT, 1124},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_VENC_VIDEO_PROG_MODE, 0x100},
{P_ENCI_VIDEO_EN, 0},
{P_ENCP_VIDEO_EN, 1},
{MREG_END_MARKER, 0},
};
static const struct reg_t tvregs_1080p_50hz[] = {
{P_ENCP_VIDEO_EN, 0},
{P_ENCI_VIDEO_EN, 0},
{P_VENC_DVI_SETTING, 0x000d},
{P_ENCP_VIDEO_MAX_PXCNT, 2639},
{P_ENCP_VIDEO_MAX_LNCNT, 1124},
{P_ENCP_VIDEO_HSPULS_BEGIN, 44},
{P_ENCP_VIDEO_HSPULS_END, 132},
{P_ENCP_VIDEO_HSPULS_SWITCH, 44},
{P_ENCP_VIDEO_HAVON_BEGIN, 271},
{P_ENCP_VIDEO_HAVON_END, 2190},
{P_ENCP_VIDEO_HSO_BEGIN, 79},
{P_ENCP_VIDEO_HSO_END, 123},
{P_ENCP_VIDEO_VSPULS_BEGIN, 220},
{P_ENCP_VIDEO_VSPULS_END, 2140},
{P_ENCP_VIDEO_VSPULS_BLINE, 0},
{P_ENCP_VIDEO_VSPULS_ELINE, 4},
{P_ENCP_VIDEO_EQPULS_BLINE, 0},
{P_ENCP_VIDEO_EQPULS_ELINE, 4},
{P_ENCP_VIDEO_VAVON_BLINE, 41},
{P_ENCP_VIDEO_VAVON_ELINE, 1120},
{P_ENCP_VIDEO_VSO_BEGIN, 79},
{P_ENCP_VIDEO_VSO_END, 79},
{P_ENCP_VIDEO_VSO_BLINE, 0},
{P_ENCP_VIDEO_VSO_ELINE, 5},
{P_ENCP_VIDEO_YFP1_HTIME, 271},
{P_ENCP_VIDEO_YFP2_HTIME, 2190},
{P_VENC_VIDEO_PROG_MODE, 0x100},
{P_ENCP_VIDEO_MODE, 0x4040},
{P_ENCP_VIDEO_MODE_ADV, 0x0018},
{P_ENCP_VIDEO_SYNC_MODE, 0x7},
{P_ENCP_VIDEO_YC_DLY, 0},
{P_ENCP_VIDEO_RGB_CTRL, 2},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCI_VIDEO_EN, 0},
{P_ENCP_VIDEO_EN, 1},
{MREG_END_MARKER, 0},
};
static const struct reg_t tvregs_1080p_24hz[] = {
{P_ENCP_VIDEO_EN, 0},
{P_ENCI_VIDEO_EN, 0},
{P_ENCP_VIDEO_FILT_CTRL, 0x1052},
{P_VENC_DVI_SETTING, 0x000d},
{P_ENCP_VIDEO_MAX_PXCNT, 2749},
{P_ENCP_VIDEO_MAX_LNCNT, 1124},
{P_ENCP_VIDEO_HSPULS_BEGIN, 44},
{P_ENCP_VIDEO_HSPULS_END, 132},
{P_ENCP_VIDEO_HSPULS_SWITCH, 44},
{P_ENCP_VIDEO_HAVON_BEGIN, 271},
{P_ENCP_VIDEO_HAVON_END, 2190},
{P_ENCP_VIDEO_HSO_BEGIN, 79},
{P_ENCP_VIDEO_HSO_END, 123},
{P_ENCP_VIDEO_VSPULS_BEGIN, 220},
{P_ENCP_VIDEO_VSPULS_END, 2140},
{P_ENCP_VIDEO_VSPULS_BLINE, 0},
{P_ENCP_VIDEO_VSPULS_ELINE, 4},
{P_ENCP_VIDEO_EQPULS_BLINE, 0},
{P_ENCP_VIDEO_EQPULS_ELINE, 4},
{P_ENCP_VIDEO_VAVON_BLINE, 41},
{P_ENCP_VIDEO_VAVON_ELINE, 1120},
{P_ENCP_VIDEO_VSO_BEGIN, 79},
{P_ENCP_VIDEO_VSO_END, 79},
{P_ENCP_VIDEO_VSO_BLINE, 0},
{P_ENCP_VIDEO_VSO_ELINE, 5},
{P_ENCP_VIDEO_YFP1_HTIME, 271},
{P_ENCP_VIDEO_YFP2_HTIME, 2190},
{P_VENC_VIDEO_PROG_MODE, 0x100},
{P_ENCP_VIDEO_MODE, 0x4040},
{P_ENCP_VIDEO_MODE_ADV, 0x0018},
{P_ENCP_VIDEO_SYNC_MODE, 0x7},
{P_ENCP_VIDEO_YC_DLY, 0},
{P_ENCP_VIDEO_RGB_CTRL, 2},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCI_VIDEO_EN, 0},
{P_ENCP_VIDEO_EN, 1},
{MREG_END_MARKER, 0},
};
static const struct reg_t tvregs_4k2k_30hz[] = {
{P_ENCP_VIDEO_EN, 0},
{P_ENCI_VIDEO_EN, 0},
{P_ENCP_VIDEO_MODE, 0x4040},
{P_ENCP_VIDEO_MODE_ADV, 0x0008},
{P_ENCP_VIDEO_YFP1_HTIME, 140},
{P_ENCP_VIDEO_YFP2_HTIME, 140+3840},
{P_ENCP_VIDEO_MAX_PXCNT, 3840+560-1},
{P_ENCP_VIDEO_HSPULS_BEGIN, 2156+1920},
{P_ENCP_VIDEO_HSPULS_END, 44},
{P_ENCP_VIDEO_HSPULS_SWITCH, 44},
{P_ENCP_VIDEO_VSPULS_BEGIN, 140},
{P_ENCP_VIDEO_VSPULS_END, 2059+1920},
{P_ENCP_VIDEO_VSPULS_BLINE, 0},
{P_ENCP_VIDEO_VSPULS_ELINE, 4},
{P_ENCP_VIDEO_HAVON_BEGIN, 148},
{P_ENCP_VIDEO_HAVON_END, 3987},
{P_ENCP_VIDEO_VAVON_BLINE, 89},
{P_ENCP_VIDEO_VAVON_ELINE, 2248},
{P_ENCP_VIDEO_HSO_BEGIN, 44},
{P_ENCP_VIDEO_HSO_END, 2156+1920},
{P_ENCP_VIDEO_VSO_BEGIN, 2100+1920},
{P_ENCP_VIDEO_VSO_END, 2164+1920},
{P_ENCP_VIDEO_VSO_BLINE, 51},
{P_ENCP_VIDEO_VSO_ELINE, 53},
{P_ENCP_VIDEO_MAX_LNCNT, 2249},
{P_ENCP_VIDEO_FILT_CTRL, 0x1000},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCP_VIDEO_EN, 1},
{P_ENCI_VIDEO_EN, 0},
{MREG_END_MARKER, 0},
};
static const struct reg_t tvregs_4k2k_25hz[] = {
{P_ENCP_VIDEO_EN, 0},
{P_ENCI_VIDEO_EN, 0},
{P_ENCP_VIDEO_MODE, 0x4040},
{P_ENCP_VIDEO_MODE_ADV, 0x0008},
{P_ENCP_VIDEO_YFP1_HTIME, 140},
{P_ENCP_VIDEO_YFP2_HTIME, 140+3840},
{P_ENCP_VIDEO_MAX_PXCNT, 3840+1440-1},
{P_ENCP_VIDEO_HSPULS_BEGIN, 2156+1920},
{P_ENCP_VIDEO_HSPULS_END, 44},
{P_ENCP_VIDEO_HSPULS_SWITCH, 44},
{P_ENCP_VIDEO_VSPULS_BEGIN, 140},
{P_ENCP_VIDEO_VSPULS_END, 2059+1920},
{P_ENCP_VIDEO_VSPULS_BLINE, 0},
{P_ENCP_VIDEO_VSPULS_ELINE, 4},
{P_ENCP_VIDEO_HAVON_BEGIN, 148},
{P_ENCP_VIDEO_HAVON_END, 3987},
{P_ENCP_VIDEO_VAVON_BLINE, 89},
{P_ENCP_VIDEO_VAVON_ELINE, 2248},
{P_ENCP_VIDEO_HSO_BEGIN, 44},
{P_ENCP_VIDEO_HSO_END, 2156+1920},
{P_ENCP_VIDEO_VSO_BEGIN, 2100+1920},
{P_ENCP_VIDEO_VSO_END, 2164+1920},
{P_ENCP_VIDEO_VSO_BLINE, 51},
{P_ENCP_VIDEO_VSO_ELINE, 53},
{P_ENCP_VIDEO_MAX_LNCNT, 2249},
{P_ENCP_VIDEO_FILT_CTRL, 0x1000},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCP_VIDEO_EN, 1},
{P_ENCI_VIDEO_EN, 0},
{MREG_END_MARKER, 0},
};
static const struct reg_t tvregs_4k2k_24hz[] = {
{P_ENCP_VIDEO_EN, 0},
{P_ENCI_VIDEO_EN, 0},
{P_ENCP_VIDEO_MODE, 0x4040},
{P_ENCP_VIDEO_MODE_ADV, 0x0008},
{P_ENCP_VIDEO_YFP1_HTIME, 140},
{P_ENCP_VIDEO_YFP2_HTIME, 140+3840},
{P_ENCP_VIDEO_MAX_PXCNT, 3840+1660-1},
{P_ENCP_VIDEO_HSPULS_BEGIN, 2156+1920},
{P_ENCP_VIDEO_HSPULS_END, 44},
{P_ENCP_VIDEO_HSPULS_SWITCH, 44},
{P_ENCP_VIDEO_VSPULS_BEGIN, 140},
{P_ENCP_VIDEO_VSPULS_END, 2059+1920},
{P_ENCP_VIDEO_VSPULS_BLINE, 0},
{P_ENCP_VIDEO_VSPULS_ELINE, 4},
{P_ENCP_VIDEO_HAVON_BEGIN, 148},
{P_ENCP_VIDEO_HAVON_END, 3987},
{P_ENCP_VIDEO_VAVON_BLINE, 89},
{P_ENCP_VIDEO_VAVON_ELINE, 2248},
{P_ENCP_VIDEO_HSO_BEGIN, 44},
{P_ENCP_VIDEO_HSO_END, 2156+1920},
{P_ENCP_VIDEO_VSO_BEGIN, 2100+1920},
{P_ENCP_VIDEO_VSO_END, 2164+1920},
{P_ENCP_VIDEO_VSO_BLINE, 51},
{P_ENCP_VIDEO_VSO_ELINE, 53},
{P_ENCP_VIDEO_MAX_LNCNT, 2249},
{P_ENCP_VIDEO_FILT_CTRL, 0x1000},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCP_VIDEO_EN, 1},
{P_ENCI_VIDEO_EN, 0},
{MREG_END_MARKER, 0},
};
static const struct reg_t tvregs_4k2k_smpte[] = {
{P_ENCP_VIDEO_EN, 0},
{P_ENCI_VIDEO_EN, 0},
{P_ENCP_VIDEO_MODE, 0x4040},
{P_ENCP_VIDEO_MODE_ADV, 0x0008},
{P_ENCP_VIDEO_YFP1_HTIME, 140},
{P_ENCP_VIDEO_YFP2_HTIME, 140+3840+256},
{P_ENCP_VIDEO_MAX_PXCNT, 4096+1404-1},
{P_ENCP_VIDEO_HSPULS_BEGIN, 2156+1920},
{P_ENCP_VIDEO_HSPULS_END, 44},
{P_ENCP_VIDEO_HSPULS_SWITCH, 44},
{P_ENCP_VIDEO_VSPULS_BEGIN, 140},
{P_ENCP_VIDEO_VSPULS_END, 2059+1920},
{P_ENCP_VIDEO_VSPULS_BLINE, 0},
{P_ENCP_VIDEO_VSPULS_ELINE, 4},
{P_ENCP_VIDEO_HAVON_BEGIN, 148},
{P_ENCP_VIDEO_HAVON_END, 3987+256},
{P_ENCP_VIDEO_VAVON_BLINE, 89},
{P_ENCP_VIDEO_VAVON_ELINE, 2248},
{P_ENCP_VIDEO_HSO_BEGIN, 44},
{P_ENCP_VIDEO_HSO_END, 2156+1920+256},
{P_ENCP_VIDEO_VSO_BEGIN, 2100+1920+256},
{P_ENCP_VIDEO_VSO_END, 2164+1920+256},
{P_ENCP_VIDEO_VSO_BLINE, 51},
{P_ENCP_VIDEO_VSO_ELINE, 53},
{P_ENCP_VIDEO_MAX_LNCNT, 2249},
{P_ENCP_VIDEO_FILT_CTRL, 0x1000},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCP_VIDEO_EN, 1},
{P_ENCI_VIDEO_EN, 0},
{MREG_END_MARKER, 0},
};
static const struct reg_t tvregs_4k2k_smpte_25hz[] = {
{P_ENCP_VIDEO_EN, 0},
{P_ENCI_VIDEO_EN, 0},
{P_ENCP_VIDEO_MODE, 0x4040,},
{P_ENCP_VIDEO_MODE_ADV, 0x18,},
{P_ENCP_VIDEO_MAX_PXCNT, 0x149F,},
{P_ENCP_VIDEO_MAX_LNCNT, 0x8C9,},
{P_ENCP_VIDEO_HAVON_BEGIN, 0xD8,},
{P_ENCP_VIDEO_HAVON_END, 0x10D7,},
{P_ENCP_VIDEO_VAVON_BLINE, 0x52,},
{P_ENCP_VIDEO_VAVON_ELINE, 0x8C1,},
{P_ENCP_VIDEO_HSO_BEGIN, 0x0,},
{P_ENCP_VIDEO_HSO_END, 0x58,},
{P_ENCP_VIDEO_VSO_BEGIN, 0x1E,},
{P_ENCP_VIDEO_VSO_END, 0x32,},
{P_ENCP_VIDEO_VSO_BLINE, 0x0,},
{P_ENCP_VIDEO_VSO_ELINE, 0xA,},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCP_VIDEO_EN, 1},
{P_ENCI_VIDEO_EN, 0},
{MREG_END_MARKER, 0},
};
static const struct reg_t tvregs_4k2k_smpte_30hz[] = {
{P_ENCP_VIDEO_EN, 0},
{P_ENCI_VIDEO_EN, 0},
{P_ENCP_VIDEO_MODE, 0x4040,},
{P_ENCP_VIDEO_MODE_ADV, 0x18,},
{P_ENCP_VIDEO_MAX_PXCNT, 0x112F,},
{P_ENCP_VIDEO_MAX_LNCNT, 0x8C9,},
{P_ENCP_VIDEO_HAVON_BEGIN, 0xD8,},
{P_ENCP_VIDEO_HAVON_END, 0x10D7,},
{P_ENCP_VIDEO_VAVON_BLINE, 0x52,},
{P_ENCP_VIDEO_VAVON_ELINE, 0x8C1,},
{P_ENCP_VIDEO_HSO_BEGIN, 0x0,},
{P_ENCP_VIDEO_HSO_END, 0x58,},
{P_ENCP_VIDEO_VSO_BEGIN, 0x1E,},
{P_ENCP_VIDEO_VSO_END, 0x32,},
{P_ENCP_VIDEO_VSO_BLINE, 0x0,},
{P_ENCP_VIDEO_VSO_ELINE, 0xA,},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCP_VIDEO_EN, 1},
{P_ENCI_VIDEO_EN, 0},
{MREG_END_MARKER, 0},
};
static const struct reg_t tvregs_vesa_640x480p60hz[] = {
{P_ENCP_VIDEO_EN, 0,},
{P_ENCI_VIDEO_EN, 0,},
{P_ENCP_VIDEO_MODE, 0x4040,},
{P_ENCP_VIDEO_MODE_ADV, 0x18,},
{P_ENCP_VIDEO_MAX_PXCNT, 0x31F,},
{P_ENCP_VIDEO_MAX_LNCNT, 0x20C,},
{P_ENCP_VIDEO_HAVON_BEGIN, 0x90,},
{P_ENCP_VIDEO_HAVON_END, 0x30F,},
{P_ENCP_VIDEO_VAVON_BLINE, 0x23,},
{P_ENCP_VIDEO_VAVON_ELINE, 0x202,},
{P_ENCP_VIDEO_HSO_BEGIN, 0x0,},
{P_ENCP_VIDEO_HSO_END, 0x60,},
{P_ENCP_VIDEO_VSO_BEGIN, 0x1E,},
{P_ENCP_VIDEO_VSO_END, 0x32,},
{P_ENCP_VIDEO_VSO_BLINE, 0x0,},
{P_ENCP_VIDEO_VSO_ELINE, 0x2,},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCP_VIDEO_EN, 1,},
{P_ENCI_VIDEO_EN, 0,},
{MREG_END_MARKER, 0}
};
static const struct reg_t tvregs_vesa_800x600p60hz[] = {
{P_ENCP_VIDEO_EN, 0,},
{P_ENCI_VIDEO_EN, 0,},
{P_ENCP_VIDEO_MODE, 0x4040,},
{P_ENCP_VIDEO_MODE_ADV, 0x18,},
{P_ENCP_VIDEO_MAX_PXCNT, 0x41F,},
{P_ENCP_VIDEO_MAX_LNCNT, 0x273,},
{P_ENCP_VIDEO_HAVON_BEGIN, 0xD8,},
{P_ENCP_VIDEO_HAVON_END, 0x3F7,},
{P_ENCP_VIDEO_VAVON_BLINE, 0x1B,},
{P_ENCP_VIDEO_VAVON_ELINE, 0x272,},
{P_ENCP_VIDEO_HSO_BEGIN, 0x0,},
{P_ENCP_VIDEO_HSO_END, 0x80,},
{P_ENCP_VIDEO_VSO_BEGIN, 0x1E,},
{P_ENCP_VIDEO_VSO_END, 0x32,},
{P_ENCP_VIDEO_VSO_BLINE, 0x0,},
{P_ENCP_VIDEO_VSO_ELINE, 0x4,},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCP_VIDEO_EN, 1,},
{P_ENCI_VIDEO_EN, 0,},
{MREG_END_MARKER, 0}
};
static const struct reg_t tvregs_vesa_800x480p60hz[] = {
{P_ENCP_VIDEO_EN, 0},
{P_ENCI_VIDEO_EN, 0},
{P_ENCP_VIDEO_MODE, 0x4040},
{P_ENCP_VIDEO_MODE_ADV, 0x18},
{P_ENCP_VIDEO_MAX_PXCNT, 0x3DF},
{P_ENCP_VIDEO_MAX_LNCNT, 0x1F3},
{P_ENCP_VIDEO_HAVON_BEGIN, 0xA8},
{P_ENCP_VIDEO_HAVON_END, 0x3C7},
{P_ENCP_VIDEO_VAVON_BLINE, 0x11},
{P_ENCP_VIDEO_VAVON_ELINE, 0x1F0},
{P_ENCP_VIDEO_HSO_BEGIN, 0x0},
{P_ENCP_VIDEO_HSO_END, 0x48},
{P_ENCP_VIDEO_VSO_BEGIN, 0x1E},
{P_ENCP_VIDEO_VSO_END, 0x32},
{P_ENCP_VIDEO_VSO_BLINE, 0x0},
{P_ENCP_VIDEO_VSO_ELINE, 0x7},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCP_VIDEO_EN, 1},
{P_ENCI_VIDEO_EN, 0},
{MREG_END_MARKER, 0},
};
static const struct reg_t tvregs_vesa_852x480p60hz[] = {
{P_ENCP_VIDEO_EN, 0,},
{P_ENCI_VIDEO_EN, 0,},
{P_ENCP_VIDEO_MODE, 0x4040,},
{P_ENCP_VIDEO_MODE_ADV, 0x18,},
{P_ENCP_VIDEO_MAX_PXCNT, 0x3B3,},/*947//htotal-1*/
{P_ENCP_VIDEO_MAX_LNCNT, 0x213,},/*531//vtotal-1*/
{P_ENCP_VIDEO_HAVON_BEGIN, 0x38,},/*56//hblank-hfront*/
{P_ENCP_VIDEO_HAVON_END, 0x38B,},/*907//htotal-hfront-1*/
{P_ENCP_VIDEO_VAVON_BLINE, 0x2A,},/*42//vblank-vfront*/
{P_ENCP_VIDEO_VAVON_ELINE, 0x209,},/*521//vtotal-vfront-1*/
{P_ENCP_VIDEO_HSO_BEGIN, 0x0,},
{P_ENCP_VIDEO_HSO_END, 0x10,},/*16/hor sync time*/
{P_ENCP_VIDEO_VSO_BEGIN, 0x1E,},
{P_ENCP_VIDEO_VSO_END, 0x32,},
{P_ENCP_VIDEO_VSO_BLINE, 0x0,},
{P_ENCP_VIDEO_VSO_ELINE, 0x2,},/*2//ver sync time*/
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCP_VIDEO_EN, 1,},
{P_ENCI_VIDEO_EN, 0,},
{MREG_END_MARKER, 0}
};
static const struct reg_t tvregs_vesa_854x480p60hz[] = {
{P_ENCP_VIDEO_EN, 0,},
{P_ENCI_VIDEO_EN, 0,},
{P_ENCP_VIDEO_MODE, 0x4040,},
{P_ENCP_VIDEO_MODE_ADV, 0x18,},
{P_ENCP_VIDEO_MAX_PXCNT, 0x3B5,},/*949//htotal-1*/
{P_ENCP_VIDEO_MAX_LNCNT, 0x212,},/*530//vtotal-1*/
{P_ENCP_VIDEO_HAVON_BEGIN, 0x38,},/*56//hblank-hfront*/
{P_ENCP_VIDEO_HAVON_END, 0x38D,},/*909//htotal-hfront-1*/
{P_ENCP_VIDEO_VAVON_BLINE, 0x29,},/*41//vblank-vfront*/
{P_ENCP_VIDEO_VAVON_ELINE, 0x208,},/*520//vtotal-vfront-1*/
{P_ENCP_VIDEO_HSO_BEGIN, 0x0,},
{P_ENCP_VIDEO_HSO_END, 0x10,},/*16//hor sync time*/
{P_ENCP_VIDEO_VSO_BEGIN, 0x1E,},
{P_ENCP_VIDEO_VSO_END, 0x32,},
{P_ENCP_VIDEO_VSO_BLINE, 0x0,},
{P_ENCP_VIDEO_VSO_ELINE, 0x2,},/*2//ver sync time*/
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCP_VIDEO_EN, 1,},
{P_ENCI_VIDEO_EN, 0,},
{MREG_END_MARKER, 0}
};
static const struct reg_t tvregs_vesa_1024x600p60hz[] = {
{P_ENCP_VIDEO_EN, 0,},
{P_ENCI_VIDEO_EN, 0,},
{P_ENCP_VIDEO_MODE, 0x4040,},
{P_ENCP_VIDEO_MODE_ADV, 0x18,},
{P_ENCP_VIDEO_MAX_PXCNT, 0x53F,},
{P_ENCP_VIDEO_MAX_LNCNT, 0x27D,},
{P_ENCP_VIDEO_HAVON_BEGIN, 0x128,},
{P_ENCP_VIDEO_HAVON_END, 0x527,},
{P_ENCP_VIDEO_VAVON_BLINE, 0x23,},
{P_ENCP_VIDEO_VAVON_ELINE, 0x27A,},
{P_ENCP_VIDEO_HSO_BEGIN, 0x0,},
{P_ENCP_VIDEO_HSO_END, 0x88,},
{P_ENCP_VIDEO_VSO_BEGIN, 0x1E,},
{P_ENCP_VIDEO_VSO_END, 0x32,},
{P_ENCP_VIDEO_VSO_BLINE, 0x0,},
{P_ENCP_VIDEO_VSO_ELINE, 0x6,},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCP_VIDEO_EN, 1,},
{P_ENCI_VIDEO_EN, 0,},
{MREG_END_MARKER, 0}
};
static const struct reg_t tvregs_vesa_1024x768p60hz[] = {
{P_ENCP_VIDEO_EN, 0,},
{P_ENCI_VIDEO_EN, 0,},
{P_ENCP_VIDEO_MODE, 0x4040,},
{P_ENCP_VIDEO_MODE_ADV, 0x18,},
{P_ENCP_VIDEO_MAX_PXCNT, 0x53F,},
{P_ENCP_VIDEO_MAX_LNCNT, 0x325,},
{P_ENCP_VIDEO_HAVON_BEGIN, 0x128,},
{P_ENCP_VIDEO_HAVON_END, 0x527,},
{P_ENCP_VIDEO_VAVON_BLINE, 0x23,},
{P_ENCP_VIDEO_VAVON_ELINE, 0x322,},
{P_ENCP_VIDEO_HSO_BEGIN, 0x0,},
{P_ENCP_VIDEO_HSO_END, 0x88,},
{P_ENCP_VIDEO_VSO_BEGIN, 0x1E,},
{P_ENCP_VIDEO_VSO_END, 0x32,},
{P_ENCP_VIDEO_VSO_BLINE, 0x0,},
{P_ENCP_VIDEO_VSO_ELINE, 0x6,},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCP_VIDEO_EN, 1,},
{P_ENCI_VIDEO_EN, 0,},
{MREG_END_MARKER, 0}
};
static const struct reg_t tvregs_vesa_1152x864p75hz[] = {
{P_ENCP_VIDEO_EN, 0,},
{P_ENCI_VIDEO_EN, 0,},
{P_ENCP_VIDEO_MODE, 0x4040,},
{P_ENCP_VIDEO_MODE_ADV, 0x18,},
{P_ENCP_VIDEO_MAX_PXCNT, 0x63F,},
{P_ENCP_VIDEO_MAX_LNCNT, 0x383,},
{P_ENCP_VIDEO_HAVON_BEGIN, 0x180,},
{P_ENCP_VIDEO_HAVON_END, 0x5FF,},
{P_ENCP_VIDEO_VAVON_BLINE, 0x23,},
{P_ENCP_VIDEO_VAVON_ELINE, 0x382,},
{P_ENCP_VIDEO_HSO_BEGIN, 0x0,},
{P_ENCP_VIDEO_HSO_END, 0x80,},
{P_ENCP_VIDEO_VSO_BEGIN, 0x1E,},
{P_ENCP_VIDEO_VSO_END, 0x32,},
{P_ENCP_VIDEO_VSO_BLINE, 0x0,},
{P_ENCP_VIDEO_VSO_ELINE, 0x3,},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCP_VIDEO_EN, 1,},
{P_ENCI_VIDEO_EN, 0,},
{MREG_END_MARKER, 0}
};
#if 0
static const struct reg_t tvregs_vesa_1280x600p60hz[] = {
{P_ENCP_VIDEO_EN, 0,},
{P_ENCI_VIDEO_EN, 0,},
{P_ENCP_VIDEO_MODE, 0x4040,},
{P_ENCP_VIDEO_MODE_ADV, 0x18,},
{P_ENCP_VIDEO_MAX_PXCNT, 0x59F,},
{P_ENCP_VIDEO_MAX_LNCNT, 0x336,},
{P_ENCP_VIDEO_HAVON_BEGIN, 0x70,},
{P_ENCP_VIDEO_HAVON_END, 0x56F,},
{P_ENCP_VIDEO_VAVON_BLINE, 0x14,},
{P_ENCP_VIDEO_VAVON_ELINE, 0x333,},
{P_ENCP_VIDEO_HSO_BEGIN, 0x0,},
{P_ENCP_VIDEO_HSO_END, 0x20,},
{P_ENCP_VIDEO_VSO_BEGIN, 0x1E,},
{P_ENCP_VIDEO_VSO_END, 0x32,},
{P_ENCP_VIDEO_VSO_BLINE, 0x0,},
{P_ENCP_VIDEO_VSO_ELINE, 0x6,},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCI_VIDEO_EN, 0},
{P_ENCP_VIDEO_EN, 1},
{MREG_END_MARKER, 0}
};
#endif
static const struct reg_t tvregs_vesa_1280x768p60hz[] = {
{P_ENCP_VIDEO_EN, 0,},
{P_ENCI_VIDEO_EN, 0,},
{P_ENCP_VIDEO_MODE, 0x4040,},
{P_ENCP_VIDEO_MODE_ADV, 0x18,},
{P_ENCP_VIDEO_MAX_PXCNT, 0x67F,},
{P_ENCP_VIDEO_MAX_LNCNT, 0x31D,},
{P_ENCP_VIDEO_HAVON_BEGIN, 0x140,},
{P_ENCP_VIDEO_HAVON_END, 0x63F,},
{P_ENCP_VIDEO_VAVON_BLINE, 0x1B,},
{P_ENCP_VIDEO_VAVON_ELINE, 0x31A,},
{P_ENCP_VIDEO_HSO_BEGIN, 0x0,},
{P_ENCP_VIDEO_HSO_END, 0x80,},
{P_ENCP_VIDEO_VSO_BEGIN, 0x1E,},
{P_ENCP_VIDEO_VSO_END, 0x32,},
{P_ENCP_VIDEO_VSO_BLINE, 0x0,},
{P_ENCP_VIDEO_VSO_ELINE, 0x7,},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCI_VIDEO_EN, 0},
{P_ENCP_VIDEO_EN, 1},
{MREG_END_MARKER, 0}
};
static const struct reg_t tvregs_vesa_1280x800p60hz[] = {
{P_ENCP_VIDEO_EN, 0,},
{P_ENCI_VIDEO_EN, 0,},
{P_ENCP_VIDEO_MODE, 0x4040,},
{P_ENCP_VIDEO_MODE_ADV, 0x18,},
{P_ENCP_VIDEO_MAX_PXCNT, 0x59F,},
{P_ENCP_VIDEO_MAX_LNCNT, 0x336,},
{P_ENCP_VIDEO_HAVON_BEGIN, 0x70,},
{P_ENCP_VIDEO_HAVON_END, 0x56F,},
{P_ENCP_VIDEO_VAVON_BLINE, 0x14,},
{P_ENCP_VIDEO_VAVON_ELINE, 0x333,},
{P_ENCP_VIDEO_HSO_BEGIN, 0x0,},
{P_ENCP_VIDEO_HSO_END, 0x20,},
{P_ENCP_VIDEO_VSO_BEGIN, 0x1E,},
{P_ENCP_VIDEO_VSO_END, 0x32,},
{P_ENCP_VIDEO_VSO_BLINE, 0x0,},
{P_ENCP_VIDEO_VSO_ELINE, 0x6,},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCI_VIDEO_EN, 0},
{P_ENCP_VIDEO_EN, 1},
{MREG_END_MARKER, 0}
};
static const struct reg_t tvregs_vesa_1280x960p60hz[] = {
{P_ENCP_VIDEO_EN, 0,},
{P_ENCI_VIDEO_EN, 0,},
{P_ENCP_VIDEO_MODE, 0x4040,},
{P_ENCP_VIDEO_MODE_ADV, 0x18,},
{P_ENCP_VIDEO_MAX_PXCNT, 0x707,},
{P_ENCP_VIDEO_MAX_LNCNT, 0x3E7,},
{P_ENCP_VIDEO_HAVON_BEGIN, 0x1A8,},
{P_ENCP_VIDEO_HAVON_END, 0x6A7,},
{P_ENCP_VIDEO_VAVON_BLINE, 0x27,},
{P_ENCP_VIDEO_VAVON_ELINE, 0x3E6,},
{P_ENCP_VIDEO_HSO_BEGIN, 0x0,},
{P_ENCP_VIDEO_HSO_END, 0x70,},
{P_ENCP_VIDEO_VSO_BEGIN, 0x1E,},
{P_ENCP_VIDEO_VSO_END, 0x32,},
{P_ENCP_VIDEO_VSO_BLINE, 0x0,},
{P_ENCP_VIDEO_VSO_ELINE, 0x3,},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCI_VIDEO_EN, 0},
{P_ENCP_VIDEO_EN, 1},
{MREG_END_MARKER, 0}
};
static const struct reg_t tvregs_vesa_1280x1024p60hz[] = {
{P_ENCP_VIDEO_EN, 0,},
{P_ENCI_VIDEO_EN, 0,},
{P_ENCP_VIDEO_MODE, 0x4040,},
{P_ENCP_VIDEO_MODE_ADV, 0x18,},
{P_ENCP_VIDEO_MAX_PXCNT, 0x697,},
{P_ENCP_VIDEO_MAX_LNCNT, 0x429,},
{P_ENCP_VIDEO_HAVON_BEGIN, 0x168,},
{P_ENCP_VIDEO_HAVON_END, 0x667,},
{P_ENCP_VIDEO_VAVON_BLINE, 0x29,},
{P_ENCP_VIDEO_VAVON_ELINE, 0x428,},
{P_ENCP_VIDEO_HSO_BEGIN, 0x0,},
{P_ENCP_VIDEO_HSO_END, 0x70,},
{P_ENCP_VIDEO_VSO_BEGIN, 0x1E,},
{P_ENCP_VIDEO_VSO_END, 0x32,},
{P_ENCP_VIDEO_VSO_BLINE, 0x0,},
{P_ENCP_VIDEO_VSO_ELINE, 0x3,},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCI_VIDEO_EN, 0},
{P_ENCP_VIDEO_EN, 1},
{MREG_END_MARKER, 0}
};
static const struct reg_t tvregs_vesa_1360x768p60hz[] = {
{P_ENCP_VIDEO_EN, 0,},
{P_ENCI_VIDEO_EN, 0,},
{P_ENCP_VIDEO_MODE, 0x4040,},
{P_ENCP_VIDEO_MODE_ADV, 0x18,},
{P_ENCP_VIDEO_MAX_PXCNT, 0x6FF,},
{P_ENCP_VIDEO_MAX_LNCNT, 0x31A,},
{P_ENCP_VIDEO_HAVON_BEGIN, 0x170,},
{P_ENCP_VIDEO_HAVON_END, 0x6BF,},
{P_ENCP_VIDEO_VAVON_BLINE, 0x18,},
{P_ENCP_VIDEO_VAVON_ELINE, 0x317,},
{P_ENCP_VIDEO_HSO_BEGIN, 0x0,},
{P_ENCP_VIDEO_HSO_END, 0x70,},
{P_ENCP_VIDEO_VSO_BEGIN, 0x1E,},
{P_ENCP_VIDEO_VSO_END, 0x32,},
{P_ENCP_VIDEO_VSO_BLINE, 0x0,},
{P_ENCP_VIDEO_VSO_ELINE, 0x6,},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCP_VIDEO_EN, 1,},
{P_ENCI_VIDEO_EN, 0,},
{MREG_END_MARKER, 0}
};
static const struct reg_t tvregs_vesa_1366x768p60hz[] = {
{P_ENCP_VIDEO_EN, 0,},
{P_ENCI_VIDEO_EN, 0,},
{P_ENCP_VIDEO_MODE, 0x4040,},
{P_ENCP_VIDEO_MODE_ADV, 0x18,},
{P_ENCP_VIDEO_MAX_PXCNT, 0x6FF,},
{P_ENCP_VIDEO_MAX_LNCNT, 0x31D,},
{P_ENCP_VIDEO_HAVON_BEGIN, 0x164,},
{P_ENCP_VIDEO_HAVON_END, 0x6B9,},
{P_ENCP_VIDEO_VAVON_BLINE, 0x1B,},
{P_ENCP_VIDEO_VAVON_ELINE, 0x31A,},
{P_ENCP_VIDEO_HSO_BEGIN, 0x0,},
{P_ENCP_VIDEO_HSO_END, 0x8F,},
{P_ENCP_VIDEO_VSO_BEGIN, 0x1E,},
{P_ENCP_VIDEO_VSO_END, 0x32,},
{P_ENCP_VIDEO_VSO_BLINE, 0x0,},
{P_ENCP_VIDEO_VSO_ELINE, 0x3,},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCP_VIDEO_EN, 1,},
{P_ENCI_VIDEO_EN, 0,},
{MREG_END_MARKER, 0}
};
static const struct reg_t tvregs_vesa_1400x1050p60hz[] = {
{P_ENCP_VIDEO_EN, 0,},
{P_ENCI_VIDEO_EN, 0,},
{P_ENCP_VIDEO_MODE, 0x4040,},
{P_ENCP_VIDEO_MODE_ADV, 0x18,},
{P_ENCP_VIDEO_MAX_PXCNT, 0x747,},
{P_ENCP_VIDEO_MAX_LNCNT, 0x440,},
{P_ENCP_VIDEO_HAVON_BEGIN, 0x178,},
{P_ENCP_VIDEO_HAVON_END, 0x6EF,},
{P_ENCP_VIDEO_VAVON_BLINE, 0x24,},
{P_ENCP_VIDEO_VAVON_ELINE, 0x43D,},
{P_ENCP_VIDEO_HSO_BEGIN, 0x0,},
{P_ENCP_VIDEO_HSO_END, 0x90,},
{P_ENCP_VIDEO_VSO_BEGIN, 0x1E,},
{P_ENCP_VIDEO_VSO_END, 0x32,},
{P_ENCP_VIDEO_VSO_BLINE, 0x0,},
{P_ENCP_VIDEO_VSO_ELINE, 0x4,},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCP_VIDEO_EN, 1,},
{P_ENCI_VIDEO_EN, 0,},
{MREG_END_MARKER, 0}
};
static const struct reg_t tvregs_vesa_1440x900p60hz[] = {
{P_ENCP_VIDEO_EN, 0,},
{P_ENCI_VIDEO_EN, 0,},
{P_ENCP_VIDEO_MODE, 0x4040,},
{P_ENCP_VIDEO_MODE_ADV, 0x18,},
{P_ENCP_VIDEO_MAX_PXCNT, 0x76F,},
{P_ENCP_VIDEO_MAX_LNCNT, 0x3A5,},
{P_ENCP_VIDEO_HAVON_BEGIN, 0x180,},
{P_ENCP_VIDEO_HAVON_END, 0x71F,},
{P_ENCP_VIDEO_VAVON_BLINE, 0x1F,},
{P_ENCP_VIDEO_VAVON_ELINE, 0x3A2,},
{P_ENCP_VIDEO_HSO_BEGIN, 0x0,},
{P_ENCP_VIDEO_HSO_END, 0x98,},
{P_ENCP_VIDEO_VSO_BEGIN, 0x1E,},
{P_ENCP_VIDEO_VSO_END, 0x32,},
{P_ENCP_VIDEO_VSO_BLINE, 0x0,},
{P_ENCP_VIDEO_VSO_ELINE, 0x6,},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCP_VIDEO_EN, 1,},
{P_ENCI_VIDEO_EN, 0,},
{MREG_END_MARKER, 0}
};
static const struct reg_t tvregs_vesa_1440x2560p60hz[] = {
{P_ENCP_VIDEO_EN, 0,},
{P_ENCI_VIDEO_EN, 0,},
{P_ENCP_VIDEO_MODE, 0x4040,},
{P_ENCP_VIDEO_MODE_ADV, 0x18,},
{P_ENCP_VIDEO_MAX_PXCNT, 0x623,},
{P_ENCP_VIDEO_MAX_LNCNT, 0xA23,},
{P_ENCP_VIDEO_HAVON_BEGIN, 0x44,},
{P_ENCP_VIDEO_HAVON_END, 0x5E3,},
{P_ENCP_VIDEO_VAVON_BLINE, 0x14,},
{P_ENCP_VIDEO_VAVON_ELINE, 0xA13,},
{P_ENCP_VIDEO_HSO_BEGIN, 0x0,},
{P_ENCP_VIDEO_HSO_END, 0x4,},
{P_ENCP_VIDEO_VSO_BEGIN, 0x1E,},
{P_ENCP_VIDEO_VSO_END, 0x32,},
{P_ENCP_VIDEO_VSO_BLINE, 0x0,},
{P_ENCP_VIDEO_VSO_ELINE, 0x4,},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCP_VIDEO_EN, 1,},
{P_ENCI_VIDEO_EN, 0,},
{MREG_END_MARKER, 0}
};
static const struct reg_t tvregs_vesa_1440x2560p70hz[] = {
{P_ENCP_VIDEO_EN, 0,},
{P_ENCI_VIDEO_EN, 0,},
{P_ENCP_VIDEO_MODE, 0x4040,},
{P_ENCP_VIDEO_MODE_ADV, 0x18,},
{P_ENCP_VIDEO_MAX_PXCNT, 0x60D,},
{P_ENCP_VIDEO_MAX_LNCNT, 0xA0F,},
{P_ENCP_VIDEO_HAVON_BEGIN, 0x2A,},
{P_ENCP_VIDEO_HAVON_END, 0x5C9,},
{P_ENCP_VIDEO_VAVON_BLINE, 0xA,},
{P_ENCP_VIDEO_VAVON_ELINE, 0xA09,},
{P_ENCP_VIDEO_HSO_BEGIN, 0x0,},
{P_ENCP_VIDEO_HSO_END, 0x10,},
{P_ENCP_VIDEO_VSO_BEGIN, 0x1E,},
{P_ENCP_VIDEO_VSO_END, 0x32,},
{P_ENCP_VIDEO_VSO_BLINE, 0x0,},
{P_ENCP_VIDEO_VSO_ELINE, 0x6,},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCP_VIDEO_EN, 1,},
{P_ENCI_VIDEO_EN, 0,},
{MREG_END_MARKER, 0}
};
static const struct reg_t tvregs_vesa_1600x900p60hz[] = {
{P_ENCP_VIDEO_EN, 0,},
{P_ENCI_VIDEO_EN, 0,},
{P_ENCP_VIDEO_MODE, 0x4040,},
{P_ENCP_VIDEO_MODE_ADV, 0x18,},
{P_ENCP_VIDEO_MAX_PXCNT, 0x707,},
{P_ENCP_VIDEO_MAX_LNCNT, 0x3E7,},
{P_ENCP_VIDEO_HAVON_BEGIN, 0xB0,},
{P_ENCP_VIDEO_HAVON_END, 0x6EF,},
{P_ENCP_VIDEO_VAVON_BLINE, 0x63,},
{P_ENCP_VIDEO_VAVON_ELINE, 0x3E6,},
{P_ENCP_VIDEO_HSO_BEGIN, 0x0,},
{P_ENCP_VIDEO_HSO_END, 0x50,},
{P_ENCP_VIDEO_VSO_BEGIN, 0x1E,},
{P_ENCP_VIDEO_VSO_END, 0x32,},
{P_ENCP_VIDEO_VSO_BLINE, 0x0,},
{P_ENCP_VIDEO_VSO_ELINE, 0x3,},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCP_VIDEO_EN, 1,},
{P_ENCI_VIDEO_EN, 0,},
{MREG_END_MARKER, 0}
};
static const struct reg_t tvregs_vesa_1600x1200p60hz[] = {
{P_ENCP_VIDEO_EN, 0,},
{P_ENCI_VIDEO_EN, 0,},
{P_ENCP_VIDEO_MODE, 0x4040,},
{P_ENCP_VIDEO_MODE_ADV, 0x18,},
{P_ENCP_VIDEO_MAX_PXCNT, 0x86F,},
{P_ENCP_VIDEO_MAX_LNCNT, 0x4E1,},
{P_ENCP_VIDEO_HAVON_BEGIN, 0x1F0,},
{P_ENCP_VIDEO_HAVON_END, 0x82F,},
{P_ENCP_VIDEO_VAVON_BLINE, 0x31,},
{P_ENCP_VIDEO_VAVON_ELINE, 0x4E0,},
{P_ENCP_VIDEO_HSO_BEGIN, 0x0,},
{P_ENCP_VIDEO_HSO_END, 0xC0,},
{P_ENCP_VIDEO_VSO_BEGIN, 0x1E,},
{P_ENCP_VIDEO_VSO_END, 0x32,},
{P_ENCP_VIDEO_VSO_BLINE, 0x0,},
{P_ENCP_VIDEO_VSO_ELINE, 0x3,},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCP_VIDEO_EN, 1,},
{P_ENCI_VIDEO_EN, 0,},
{MREG_END_MARKER, 0}
};
static const struct reg_t tvregs_vesa_1680x1050p60hz[] = {
{P_ENCP_VIDEO_EN, 0,},
{P_ENCI_VIDEO_EN, 0,},
{P_ENCP_VIDEO_MODE, 0x4040,},
{P_ENCP_VIDEO_MODE_ADV, 0x18,},
{P_ENCP_VIDEO_MAX_PXCNT, 0x8BF,},
{P_ENCP_VIDEO_MAX_LNCNT, 0x440,},
{P_ENCP_VIDEO_HAVON_BEGIN, 0x1C8,},
{P_ENCP_VIDEO_HAVON_END, 0x857,},
{P_ENCP_VIDEO_VAVON_BLINE, 0x24,},
{P_ENCP_VIDEO_VAVON_ELINE, 0x43D,},
{P_ENCP_VIDEO_HSO_BEGIN, 0x0,},
{P_ENCP_VIDEO_HSO_END, 0xB0,},
{P_ENCP_VIDEO_VSO_BEGIN, 0x1E,},
{P_ENCP_VIDEO_VSO_END, 0x32,},
{P_ENCP_VIDEO_VSO_BLINE, 0x0,},
{P_ENCP_VIDEO_VSO_ELINE, 0x6,},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCP_VIDEO_EN, 1,},
{P_ENCI_VIDEO_EN, 0,},
{MREG_END_MARKER, 0}
};
static const struct reg_t tvregs_vesa_1920x1200p60hz[] = {
{P_ENCP_VIDEO_EN, 0,},
{P_ENCI_VIDEO_EN, 0,},
{P_ENCP_VIDEO_MODE, 0x4040,},
{P_ENCP_VIDEO_MODE_ADV, 0x18,},
{P_ENCP_VIDEO_MAX_PXCNT, 0xA1F,},
{P_ENCP_VIDEO_MAX_LNCNT, 0x4DC,},
{P_ENCP_VIDEO_HAVON_BEGIN, 0x218,},
{P_ENCP_VIDEO_HAVON_END, 0x997,},
{P_ENCP_VIDEO_VAVON_BLINE, 0x2A,},
{P_ENCP_VIDEO_VAVON_ELINE, 0x4D9,},
{P_ENCP_VIDEO_HSO_BEGIN, 0x0,},
{P_ENCP_VIDEO_HSO_END, 0xC8,},
{P_ENCP_VIDEO_VSO_BEGIN, 0x1E,},
{P_ENCP_VIDEO_VSO_END, 0x32,},
{P_ENCP_VIDEO_VSO_BLINE, 0x0,},
{P_ENCP_VIDEO_VSO_ELINE, 0x6,},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCI_VIDEO_EN, 0},
{P_ENCP_VIDEO_EN, 1},
{MREG_END_MARKER, 0}
};
static const struct reg_t tvregs_vesa_2160x1200p90hz[] = {
{P_ENCP_VIDEO_EN, 0},
{P_ENCI_VIDEO_EN, 0},
{P_ENCP_VIDEO_MODE, 0x4040,},
{P_ENCP_VIDEO_MODE_ADV, 0x18,},
{P_ENCP_VIDEO_MAX_PXCNT, 0x99D,},
{P_ENCP_VIDEO_MAX_LNCNT, 0x4BB,},
{P_ENCP_VIDEO_HAVON_BEGIN, 0x70,},
{P_ENCP_VIDEO_HAVON_END, 0x8DF,},
{P_ENCP_VIDEO_VAVON_BLINE, 0x6,},
{P_ENCP_VIDEO_VAVON_ELINE, 0x4B5,},
{P_ENCP_VIDEO_HSO_BEGIN, 0x0,},
{P_ENCP_VIDEO_HSO_END, 0x20,},
{P_ENCP_VIDEO_VSO_BEGIN, 0x1E,},
{P_ENCP_VIDEO_VSO_END, 0x32,},
{P_ENCP_VIDEO_VSO_BLINE, 0x0,},
{P_ENCP_VIDEO_VSO_ELINE, 0x3,},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCP_VIDEO_EN, 1},
{P_ENCI_VIDEO_EN, 0},
{MREG_END_MARKER, 0},
};
static const struct reg_t tvregs_vesa_2560x1600p60hz[] = {
{P_ENCP_VIDEO_EN, 0,},
{P_ENCI_VIDEO_EN, 0,},
{P_ENCP_VIDEO_MODE, 0x4040,},
{P_ENCP_VIDEO_MODE_ADV, 0x18,},
{P_ENCP_VIDEO_MAX_PXCNT, 0xDAF,},
{P_ENCP_VIDEO_MAX_LNCNT, 0x679,},
{P_ENCP_VIDEO_HAVON_BEGIN, 0x2F0,},
{P_ENCP_VIDEO_HAVON_END, 0xCEF,},
{P_ENCP_VIDEO_VAVON_BLINE, 0x37,},
{P_ENCP_VIDEO_VAVON_ELINE, 0x676,},
{P_ENCP_VIDEO_HSO_BEGIN, 0x0,},
{P_ENCP_VIDEO_HSO_END, 0x118,},
{P_ENCP_VIDEO_VSO_BEGIN, 0x1E,},
{P_ENCP_VIDEO_VSO_END, 0x32,},
{P_ENCP_VIDEO_VSO_BLINE, 0x0,},
{P_ENCP_VIDEO_VSO_ELINE, 0x6,},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCI_VIDEO_EN, 0},
{P_ENCP_VIDEO_EN, 1},
{MREG_END_MARKER, 0}
};
#if 0 /* TODO */
static const struct reg_t tvregs_vesa_2560x1080p60hz[] = {
{P_ENCP_VIDEO_EN, 0,},
{P_ENCI_VIDEO_EN, 0,},
{P_ENCP_VIDEO_MODE, 0x4040,},
{P_ENCP_VIDEO_MODE_ADV, 0x18,},
{P_ENCP_VIDEO_MAX_PXCNT, 0xA1F,},
{P_ENCP_VIDEO_MAX_LNCNT, 0x4DC,},
{P_ENCP_VIDEO_HAVON_BEGIN, 0x218,},
{P_ENCP_VIDEO_HAVON_END, 0x997,},
{P_ENCP_VIDEO_VAVON_BLINE, 0x2A,},
{P_ENCP_VIDEO_VAVON_ELINE, 0x4D9,},
{P_ENCP_VIDEO_HSO_BEGIN, 0x0,},
{P_ENCP_VIDEO_HSO_END, 0xC8,},
{P_ENCP_VIDEO_VSO_BEGIN, 0x1E,},
{P_ENCP_VIDEO_VSO_END, 0x32,},
{P_ENCP_VIDEO_VSO_BLINE, 0x0,},
{P_ENCP_VIDEO_VSO_ELINE, 0x6,},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCI_VIDEO_EN, 0},
{P_ENCP_VIDEO_EN, 1},
{MREG_END_MARKER, 0}
};
static const struct reg_t tvregs_vesa_2560x1440p60hz[] = {
{P_ENCP_VIDEO_EN, 0,},
{P_ENCI_VIDEO_EN, 0,},
{P_ENCP_VIDEO_MODE, 0x4040,},
{P_ENCP_VIDEO_MODE_ADV, 0x18,},
{P_ENCP_VIDEO_MAX_PXCNT, 0xA1F,},
{P_ENCP_VIDEO_MAX_LNCNT, 0x4DC,},
{P_ENCP_VIDEO_HAVON_BEGIN, 0x218,},
{P_ENCP_VIDEO_HAVON_END, 0x997,},
{P_ENCP_VIDEO_VAVON_BLINE, 0x2A,},
{P_ENCP_VIDEO_VAVON_ELINE, 0x4D9,},
{P_ENCP_VIDEO_HSO_BEGIN, 0x0,},
{P_ENCP_VIDEO_HSO_END, 0xC8,},
{P_ENCP_VIDEO_VSO_BEGIN, 0x1E,},
{P_ENCP_VIDEO_VSO_END, 0x32,},
{P_ENCP_VIDEO_VSO_BLINE, 0x0,},
{P_ENCP_VIDEO_VSO_ELINE, 0x6,},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCI_VIDEO_EN, 0},
{P_ENCP_VIDEO_EN, 1},
{MREG_END_MARKER, 0}
};
static const struct reg_t tvregs_vesa_3440x1440p60hz[] = {
{P_ENCP_VIDEO_EN, 0,},
{P_ENCI_VIDEO_EN, 0,},
{P_ENCP_VIDEO_MODE, 0x4040,},
{P_ENCP_VIDEO_MODE_ADV, 0x18,},
{P_ENCP_VIDEO_MAX_PXCNT, 0xA1F,},
{P_ENCP_VIDEO_MAX_LNCNT, 0x4DC,},
{P_ENCP_VIDEO_HAVON_BEGIN, 0x218,},
{P_ENCP_VIDEO_HAVON_END, 0x997,},
{P_ENCP_VIDEO_VAVON_BLINE, 0x2A,},
{P_ENCP_VIDEO_VAVON_ELINE, 0x4D9,},
{P_ENCP_VIDEO_HSO_BEGIN, 0x0,},
{P_ENCP_VIDEO_HSO_END, 0xC8,},
{P_ENCP_VIDEO_VSO_BEGIN, 0x1E,},
{P_ENCP_VIDEO_VSO_END, 0x32,},
{P_ENCP_VIDEO_VSO_BLINE, 0x0,},
{P_ENCP_VIDEO_VSO_ELINE, 0x6,},
{P_VPU_VIU_VENC_MUX_CTRL, 0xA},
{P_ENCI_VIDEO_EN, 0},
{P_ENCP_VIDEO_EN, 1},
{MREG_END_MARKER, 0}
};
#endif
struct vic_tvregs_set {
enum hdmi_vic vic;
const struct reg_t *reg_setting;
};
/* Using HDMI vic as index */
static struct vic_tvregs_set tvregsTab[] = {
{HDMI_720x480i60_16x9, tvregs_480i},
{HDMI_2880x480i60_16x9, tvregs_480i},
{HDMI_720x480p60_16x9, tvregs_480p},
{HDMI_720x480p120_16x9, tvregs_480p},
{HDMI_2880x240p60_16x9, tvregs_480p},
{HDMI_720x576i50_16x9, tvregs_576i},
{HDMI_2880x576i50_16x9, tvregs_576i},
{HDMI_720x576p50_16x9, tvregs_576p},
{HDMI_720x576p100_16x9, tvregs_576p},
{HDMI_2880x576p50_16x9, tvregs_576p},
{HDMI_1280x720p60_16x9, tvregs_720p},
{HDMI_1920x1080i60_16x9, tvregs_1080i},
{HDMI_1920x1080p60_16x9, tvregs_1080p},
{HDMI_1920x1080p30_16x9, tvregs_1080p},
{HDMI_1280x720p50_16x9, tvregs_720p_50hz},
{HDMI_1280x720p100_16x9, tvregs_720p_50hz},
{HDMI_1280x720p120_16x9, tvregs_720p},
{HDMI_1920x1080i50_16x9, tvregs_1080i_50hz},
{HDMI_1920x1080i100_16x9, tvregs_1080i_50hz},
{HDMI_1920x1080i120_16x9, tvregs_1080i},
{HDMI_1920x1080p50_16x9, tvregs_1080p_50hz},
{HDMI_1920x1080p25_16x9, tvregs_1080p_50hz},
{HDMI_1920x1080p24_16x9, tvregs_1080p_24hz},
{HDMI_1920x1080p100_16x9, tvregs_1080p_50hz},
{HDMI_1920x1080p120_16x9, tvregs_1080p},
{HDMI_3840x2160p30_16x9, tvregs_4k2k_30hz},
{HDMI_3840x2160p25_16x9, tvregs_4k2k_25hz},
{HDMI_3840x2160p24_16x9, tvregs_4k2k_24hz},
{HDMI_4096x2160p24_256x135, tvregs_4k2k_smpte},
{HDMI_4096x2160p25_256x135, tvregs_4k2k_smpte_25hz},
{HDMI_4096x2160p30_256x135, tvregs_4k2k_smpte_30hz},
{HDMI_4096x2160p50_256x135, tvregs_4k2k_smpte_25hz},
{HDMI_4096x2160p60_256x135, tvregs_4k2k_smpte_30hz},
{HDMI_4096x2160p50_256x135_Y420, tvregs_4k2k_smpte_25hz},
{HDMI_4096x2160p60_256x135_Y420, tvregs_4k2k_smpte_30hz},
{HDMI_3840x2160p60_16x9, tvregs_4k2k_30hz},
{HDMI_3840x2160p50_16x9, tvregs_4k2k_25hz},
{HDMI_3840x2160p60_16x9_Y420, tvregs_4k2k_30hz},
{HDMI_3840x2160p50_16x9_Y420, tvregs_4k2k_25hz},
{HDMIV_640x480p60hz, tvregs_vesa_640x480p60hz},
{HDMIV_800x480p60hz, tvregs_vesa_800x480p60hz},
{HDMIV_800x600p60hz, tvregs_vesa_800x600p60hz},
{HDMIV_852x480p60hz, tvregs_vesa_852x480p60hz},
{HDMIV_854x480p60hz, tvregs_vesa_854x480p60hz},
{HDMIV_1024x600p60hz, tvregs_vesa_1024x600p60hz},
{HDMIV_1024x768p60hz, tvregs_vesa_1024x768p60hz},
{HDMIV_1152x864p75hz, tvregs_vesa_1152x864p75hz},
#if 0
{HDMIV_1280x600p60hz, tvregs_vesa_1280x600p60hz},
#endif
{HDMIV_1280x768p60hz, tvregs_vesa_1280x768p60hz},
{HDMIV_1280x800p60hz, tvregs_vesa_1280x800p60hz},
{HDMIV_1280x960p60hz, tvregs_vesa_1280x960p60hz},
{HDMIV_1280x1024p60hz, tvregs_vesa_1280x1024p60hz},
{HDMIV_1360x768p60hz, tvregs_vesa_1360x768p60hz},
{HDMIV_1366x768p60hz, tvregs_vesa_1366x768p60hz},
{HDMIV_1400x1050p60hz, tvregs_vesa_1400x1050p60hz},
{HDMIV_1440x900p60hz, tvregs_vesa_1440x900p60hz},
{HDMIV_1440x2560p60hz, tvregs_vesa_1440x2560p60hz},
{HDMIV_1440x2560p70hz, tvregs_vesa_1440x2560p70hz},
{HDMIV_1600x900p60hz, tvregs_vesa_1600x900p60hz},
{HDMIV_1600x1200p60hz, tvregs_vesa_1600x1200p60hz},
{HDMIV_1680x1050p60hz, tvregs_vesa_1680x1050p60hz},
{HDMIV_1920x1200p60hz, tvregs_vesa_1920x1200p60hz},
{HDMIV_2160x1200p90hz, tvregs_vesa_2160x1200p90hz},
{HDMIV_2560x1600p60hz, tvregs_vesa_2560x1600p60hz},
};
static inline void setreg(const struct reg_t *r)
{
hd_write_reg(r->reg, r->val);
/* printk("[0x%x] = 0x%x\n", r->reg, r->val); */
}
static const struct reg_t *tvregs_setting_mode(enum hdmi_vic vic)
{
int i = 0;
for (i = 0; i < ARRAY_SIZE(tvregsTab); i++) {
if (vic == tvregsTab[i].vic)
return tvregsTab[i].reg_setting;
}
return NULL;
}
void set_vmode_enc_hw(enum hdmi_vic vic)
{
const struct reg_t *s = tvregs_setting_mode(vic);
if (s) {
pr_info("hdmitx: set enc for VIC: %d\n", vic);
while (MREG_END_MARKER != s->reg)
setreg(s++);
} else
pr_info("hdmitx: not find VIC: %d\n", vic);
}