blob: 23a761f3aa670faad884301f3ab0e426d840d76b [file] [log] [blame]
////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2010 Chrontel International Ltd. All rights reserved.
// Use of this source code is governed by the license that can be found in the LICENSE file.
///////////////////////////////////////////////////////////////////////////////////////////
/*
* @file GenTableCH7036.c
* @version 1.2
* @revision
**/
#include "GenTableCH7036.h"
struct config_ch7036 global_config = {
sizeof(struct config_ch7036),
0x56,
0x00,
CFG7036_COMV_OFF_DEFAULT,
CFG7036_DRV_STRENGTH_DEFAULT,
CFG7036_REFDLY_DEFAULT,
CFG7036_FBDLY_DEFAULT,
CFG7036_LVDS_INOUT_DEFAULT
};
typedef struct{
uint16 ht;
uint16 ha;
uint16 ho;
uint16 hw;
uint16 vt;
uint16 va;
uint16 vo;
uint16 vw;
}TIMING, *PTIMING;
#define POL_INVERT 1
#define POL_NO_INV 0
#define CONST_0001 1
#define CONST_0002 0
typedef struct{
TIMING timing;
uint32 sfld_0001;
uint8 pixel_fmt;
uint8 hs_pol;
uint8 vs_pol;
uint8 de_pol;
uint8 sfld_0006;
uint8 sfld_0007;
uint8 sfld_0008;
uint8 sfld_0009;
uint8 i2s_len;
uint8 sfld_0011;
}INPUT_INFO, *PINPUT_INFO;
#define CONST_0003 0
#define CONST_0004 1L
#define CONST_0034 2L
#define CONST_0005 3L
#define CONST_0006 4L
#define CONST_0026 (CONST_0003 << 0) | (CONST_0004 << 4) | (CONST_0034 << 8) | (CONST_0005 << 12) | (CONST_0006 << 16)
#define CONST_0027 (CONST_0004 << 0) | (CONST_0034 << 4) | (CONST_0005 << 8) | (CONST_0006 << 12) | (CONST_0003 << 16)
#define CONST_0028 (CONST_0034 << 0) | (CONST_0005 << 4) | (CONST_0006 << 8) | (CONST_0003 << 12) | (CONST_0004 << 16)
#define CONST_0029 (CONST_0005 << 0) | (CONST_0006 << 4) | (CONST_0003 << 8) | (CONST_0004 << 12) | (CONST_0034 << 16)
#define CONST_0030 (CONST_0006 << 0) | (CONST_0003 << 4) | (CONST_0004 << 8) | (CONST_0034 << 12) | (CONST_0005 << 16)
#define LVDS_CHANNAL_SWAP_OP5 (CONST_0005 << 0) | (CONST_0006 << 4) | (CONST_0034 << 8) | (CONST_0004 << 12) | (CONST_0003 << 16)
typedef struct{
uint32 sfld_0012;
uint32 sfld_0013;
uint32 pixel_fmt;
}IOT1_DFMT, *PIOT1_DFMT;
#define CONST_0007 1
#define CONST_0008 2
typedef struct{
uint8 sfld_0014;
uint8 sfld_0015;
uint8 sfld_0016;
uint8 sfld_0012;
uint8 sfld_0017;
uint8 hs_pol;
uint8 vs_pol;
uint8 sfld_0018;
uint8 sfld_0051;
}IOT2_DFMT, *PIOT2_DFMT;
typedef struct{
uint8 sfld_0012;
uint8 hs_pol;
uint8 vs_pol;
uint8 de_pol;
}IOT3_DFMT, *PIOT3_DFMT;
#define CONST_0009 (1 << 0)
#define CONST_0010 (1 << 1)
#define CONST_0011 (1 << 2)
#define CONST_0012 0
#define CONST_0013 1
#define CONST_0014 2
#define CONST_0015 3
typedef struct{
uint32 channel;
IOT1_DFMT sfld_iot01;
IOT2_DFMT sfld_iot02;
IOT3_DFMT sfld_iot03;
TIMING timing;
uint32 sfld_0019;
uint8 sfld_0020;
uint8 sfld_0021;
uint8 sfld_0050;
uint8 sfld_0022;
uint8 sfld_0023;
}OUTPUT_INFO, *POUTPUT_INFO;
#define CONST_0035 0
#define CONST_0016 1
#define CONST_0017 3
#define CONST_0018 7
#define CONST_0019 0
#define CONST_0020 1
#define CONST_0021 166000
#define CONST_0022 3000
#define CONST_0023 200
#define CONST_0024 250
#define CONST_0025 300
typedef struct{
uint32 sfld_0024;
uint8 sfld_0025;
uint8 sfld_0026;
uint8 sfld_0027;
uint8 sfld_0028;
uint8 sfld_0029;
uint8 sfld_0030;
uint8 sfld_0031;
uint8 sfld_0032;
uint8 sfld_0033;
}PREFER_INFO, *PPREFER_INFO;
typedef struct{
uint32 sfld_0034;
INPUT_INFO* pInfo_T_0001;
OUTPUT_INFO* pInfo_T_0002;
PREFER_INFO* pInfo_T_0003;
}DEV_CONTEXT, *PDEV_CONTEXT;
#ifndef _DEF_REG_MAP_H
#define _DEF_REG_MAP_H
#define CONST_0032 5
#define CONST_0033 0x80
static uint8 global_arr_001[5][0x80] = {
{
0x56,
0xF0,
0xF3,
0x00,
0x36,
0x58,
0xAC,
0xDD,
0x0F,
0x1F,
0xB4,
0x1A,
0x80,
0x20,
0x00,
0x10,
0x60,
0x11,
0xE0,
0x0D,
0x00,
0x0A,
0x02,
0x00,
0x00,
0xF8,
0x00,
0x00,
0x00,
0x00,
0x00,
0x1A,
0x80,
0x20,
0x00,
0x10,
0x60,
0x11,
0xE0,
0x0D,
0x00,
0x0A,
0x02,
0x08,
0x00,
0x00,
0x3C,
0x00,
0x01,
0x01,
0xC0,
0x01,
0x01,
0x80,
0x40,
0x40,
0x47,
0x88,
0x00,
0x00,
0x00,
0x86,
0x00,
0x11,
0x0E,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x40,
0x40,
0x80,
0x00,
0x00,
0x00,
0x1F,
0xFF,
0x00,
0x80,
0x10,
0x60,
0x00,
0x0A,
0x02,
0x08,
0x00,
0x00,
0x00,
0x40,
0x00,
0x00,
0x00,
0x00,
0x01,
0x2D,
0x90,
0x20,
0x22,
0x44,
0x24,
0x40,
0x00,
0x10,
0x00,
0xA0,
0x4B,
0x18,
0x01,
0x00,
0x00,
0x20,
0x80,
0x18,
0x00,
0x00,
0x01,
0x00,
0x00,
0x00,
0xFF,
0x0F,
0x00,
},
{
0x56,
0xF0,
0xF3,
0x01,
0x36,
0x58,
0xAC,
0x20,
0x00,
0x4B,
0x00,
0x6D,
0x6A,
0x51,
0x93,
0x1C,
0x00,
0x08,
0xC5,
0xA8,
0x91,
0x68,
0x29,
0x0E,
0xC8,
0x42,
0x6C,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x10,
0x07,
0xFF,
0xB6,
0x10,
0x00,
0x00,
0x15,
0x18,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x0B,
0x00,
0x00,
0x00,
0x00,
0x08,
0x60,
0x14,
0x20,
0x00,
0x00,
0x20,
0x00,
0x49,
0x10,
0xFF,
0xFF,
0xFF,
0x00,
0x08,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0xA0,
0x00,
0x00,
0x00,
0x00,
0x00,
0x7A,
0x5E,
0x6E,
0x1F,
0x1F,
0x00,
0x00,
0x00,
0x20,
0x40,
0x40,
0x40,
0x00,
0x00,
0x00,
0x00,
0xFF,
0xFF,
0xFF,
0xFF,
0x50,
0x00,
0x00,
0x09,
0x00,
0x00,
0x70,
0x00,
0x50,
0x00,
0x98,
0x00,
0x98,
0xFF,
0x00,
0x00,
0x00,
},
{
0x56,
0xF0,
0xF3,
0xFF,
0x36,
0x58,
0xAC,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
},
{
0x56,
0xF0,
0xF3,
0x03,
0x36,
0x58,
0xAC,
0x00,
0x00,
0x00,
0x00,
0x00,
0xFF,
0x00,
0x03,
0x19,
0x40,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x11,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0x09,
0x1D,
0x0F,
0x00,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0x00,
0x00,
0xFF,
0xF8,
0xFF,
0x00,
0x02,
0xFF,
0x00,
0x00,
0x00,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
},
{
0x56,
0xF0,
0xF3,
0x04,
0x36,
0x58,
0xAC,
0xFF,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0xC0,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0x00,
0x00,
0x4F,
0x07,
0x4F,
0x07,
0x3B,
0x07,
0x3B,
0x07,
0x50,
0x00,
0x50,
0x00,
0x10,
0x00,
0x00,
0x10,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0xFF,
0xFF,
0xFF,
0xFF,
0x00,
0x03,
0x00,
0x00,
0x00,
0x24,
0x00,
0x40,
0xFF,
0xFF,
0x7F,
0x56,
0x80,
0x3F,
0x00,
0x84,
0x60,
0xAF,
0x00,
0x00,
0x80,
0x94,
0x00,
0x80,
0x00,
0x05,
0x38,
0x01,
0x83,
0x11,
0x01,
0x80,
0x90,
0x00,
0x40,
0x4A,
0xE4,
0x00,
0x00,
0x00,
0x00,
0x89,
0x10,
0xAC,
0x00,
0xE0,
0x80,
0x80,
0x19,
0x7D,
0x00,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0xFF,
0x00,
0x0C,
},
};
#endif
#ifndef _REG_TABLE_H
#define _REG_TABLE_H
typedef enum{
FLD0000 = 0,
FLD0001, FLD0002, FLD0003, FLD0004, FLD0005, FLD0006, FLD0007, FLD0008, FLD0009,
FLD0010, FLD0011, FLD0012, FLD0013,
FLD0014, FLD0015, FLD0016, FLD0017, FLD0018,
FLD0019, FLD0020, FLD0021, FLD0022, FLD0023,
FLD0024, FLD0025,
FLD0026, FLD0027, FLD0028, FLD0029, FLD0030,
FLD0031, FLD0032, FLD0033, FLD0034, FLD0035, FLD0036, FLD0037, FLD0038,
FLD0039, FLD0040, FLD0041, FLD0042, FLD0043, FLD0044,
FLD0045, FLD0046, FLD0047, FLD0048, FLD0049,
FLD0050, FLD0051, HDMIIN_FLD0051, HDMIIN_FLD0050, FLD0054,
FLD0055, FLD0056, FLD0057,
FLD0058, FLD0059, FLD0033_SCL, FLD0034_SCL,
FLD0062, FLD0063, FLD0064, FLD0065,
FLD0066, FLD0067,
FLD0066SEC, FLD0069, FLD0070, FLD0080, FLD0081, FLD0082, FLD0083,
FLD0084, FLD00844, FLD00843, FLD0087, FLD0088, FLD0089,
FLD0090, FLD0091, FLD0092, FLD0093, FLD0094, FLD0066OD_SEL,
FLD0096, FLD0097, FLD0098, FLD0099, FLD0100,
FLD0101, FLD0102, FLD0103,
FLD0104, FLD0105, FLD0106, FLD0107, FLD0108,
FLD0109, FLD0110, FLD0111, FLD0112, FLD0113, FLD0114,
FLD0115, FLD0116, FLD0117, FLD0118, FLD0119, FLD0120,
FLD0121, FLD0122, FLD0123,
FLD0124, FLD0125, FLD0126,
FLD0127, FLD0128, FLD0129, FLD0130, FLD0130_SER,
FLD0130_PLL, FLD0130DRI, FLD0134, FLD0135,
FLD0136, FLD0137, FLD0138, FLD0139, FLD0140, FLD0141,
FLD0142, FLD0143,
FLD0144, FLD0145, FLD0146, FLD0147, FLD0148, FLD0149, FLD0150,
FLD0151, FLD0152, FLD0153,
FLD0154, FLD0155, FLD0156, FLD0157, FLD0158,
FLD0159, FLD0160, FLD0161,
FLD0162,
MUL_ID_END,
}MULTI_REG_ID;
typedef struct{
MULTI_REG_ID sfld_0034;
uint8 sfld_0035;
uint8 sfld_0036;
uint8 sfld_0037;
uint8 sfld_0038;
uint8 sfld_0039;
uint8 sfld_0040;
uint8 sfld_0041;
uint8 sfld_0042;
uint8 sfld_0043;
uint8 sfld_0044;
uint8 sfld_0046;
uint8 sfld_0047;
uint8 sfld_0048;
}MULTI_REG, *PMULTI_REG;
extern MULTI_REG global_arr_002[];
#endif
MULTI_REG global_arr_002[MUL_ID_END] =
{
{FLD0000, -1, 0, 0, -1, 0, 0, -1, 3, 6, -1, 0, 7, 0},
{FLD0001, -1, 0, 0, -1, 0, 0, 0x0B,3, 6, 0x0D, 0, 7, 0},
{FLD0002, -1, 0, 0, -1, 0, 0, 0x11,3, 5, 0x13, 0, 7, 0},
{FLD0003, -1, 0, 0, -1, 0, 0, 0x0B,0, 2, 0x0C, 0, 7, 0},
{FLD0004, -1, 0, 0, -1, 0, 0, 0x11,0, 2, 0x12, 0, 7, 0},
{FLD0005, -1, 0, 0, -1, 0, 0, 0x0E,0, 2, 0x0F, 0, 7, 0},
{FLD0006, -1, 0, 0, -1, 0, 0, 0x14,0, 2, 0x15, 0, 7, 0},
{FLD0007, -1, 0, 0, -1, 0, 0, 0x0E,3, 5, 0x10, 0, 7, 0},
{FLD0008, -1, 0, 0, -1, 0, 0, 0x14,3, 5, 0x16, 0, 7, 0},
{FLD0009, -1, 0, 0, 0x0F,0, 1, 0x14,0, 7, 0x15, 0, 7, 4},
{FLD0010, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x57, 7, 7, 4},
{FLD0011, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x57, 6, 6, 4},
{FLD0012, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x41, 6, 6, 1},
{FLD0013, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x41, 5, 5, 1},
{FLD0014, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x58, 4, 4, 4},
{FLD0015, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x58, 3, 3, 4},
{FLD0016, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x58, 2, 2, 4},
{FLD0017, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x58, 1, 1, 4},
{FLD0018, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x5F, 0, 0, 4},
{FLD0019, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x5E, 5, 7, 4},
{FLD0020, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x5E, 2, 4, 4},
{FLD0021, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x5F, 7, 7, 4},
{FLD0022, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x5F, 4, 6, 4},
{FLD0023, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x5F, 1, 3, 4},
{FLD0024,-1, 0, 0, -1, 0, 0, -1, 0, 0, 0x59, 5, 6, 4},
{FLD0025,-1, 0, 0, -1, 0, 0, -1, 0, 0, 0x61, 1, 1, 4},
{FLD0026, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x59, 4, 4, 4},
{FLD0027, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x59, 3, 3, 4},
{FLD0028, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x59, 2, 2, 4},
{FLD0029, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x59, 1, 1, 4},
{FLD0030, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x59, 0, 0, 4},
{FLD0031, -1, 0, 0, -1, 0, 0, 0x1F,3, 6, 0x21, 0, 7, 0},
{FLD0032, -1, 0, 0, -1, 0, 0, 0x25,3, 5, 0x27, 0, 7, 0},
{FLD0033, -1, 0, 0, -1, 0, 0, 0x1F,0, 2, 0x20, 0, 7, 0},
{FLD0034, -1, 0, 0, -1, 0, 0, 0x25,0, 2, 0x26, 0, 7, 0},
{FLD0035, -1, 0, 0, -1, 0, 0, 0x54,0, 2, 0x55, 0, 7, 0},
{FLD0036, -1, 0, 0, -1, 0, 0, 0x57,0, 2, 0x58, 0, 7, 0},
{FLD0037, -1, 0, 0, -1, 0, 0, 0x54,3, 5, 0x56, 0, 7, 0},
{FLD0038, -1, 0, 0, -1, 0, 0, 0x57,3, 5, 0x59, 0, 7, 0},
{FLD0039, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x19, 5, 5, 0},
{FLD0040, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x19, 4, 4, 0},
{FLD0041, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x19, 3, 3, 0},
{FLD0042, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x2E, 4, 4, 0},
{FLD0043, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x2E, 3, 3, 0},
{FLD0044, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x2E, 5, 5, 0},
{FLD0045, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x0A, 2, 2, 0},
{FLD0046, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x1E, 5, 5, 0},
{FLD0047, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x4C, 5, 5, 0},
{FLD0048, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x4C, 0, 4, 0},
{FLD0049, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x7E, 7, 7, 0},
{FLD0050, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x24, 5, 5, 1},
{FLD0051, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x24, 4, 4, 1},
{HDMIIN_FLD0051, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x61, 6, 6, 4},
{HDMIIN_FLD0050, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x61, 5, 5, 4},
{FLD0054, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x61, 4, 4, 4},
{FLD0055, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x3D, 2, 3, 0},
{FLD0056, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x3D, 0, 1, 0},
{FLD0057, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x40, 0, 5, 0},
{FLD0058, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x4B, 6, 6, 0},
{FLD0059, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x6C, 0, 0, 4},
{FLD0033_SCL, -1, 0, 0, -1, 0, 0, 0x6A,0, 7, 0x6B, 5, 7, 4},
{FLD0034_SCL, -1, 0, 0, -1, 0, 0, 0x6B,0, 4, 0x6C, 2, 7, 4},
{FLD0062, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x1E, 7, 7, 0},
{FLD0063, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x1E, 6, 6, 0},
{FLD0064, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x1E, 2, 3, 0},
{FLD0065, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x1E, 0, 1, 0},
{FLD0066, -1, 0, 0, 0x0F,4, 5, 0x10,0, 7, 0x11, 0, 7 , 4},
{FLD0067, -1, 0, 0, -1, 0, 0, 0x28, 0, 7,0x29, 0, 7, 1},
{FLD0066SEC, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x12, 4, 4, 1},
{FLD0069, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x55, 3, 5, 4},
{FLD0070, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x55, 0, 2, 4},
{FLD0080, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x56, 5, 7, 4},
{FLD0081, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x13, 1, 2, 1},
{FLD0082, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x5E, 0, 7, 0},
{FLD0083, -1, 0, 0, 0x0F,2, 3, 0x12,0, 7, 0x13, 0, 7, 4},
{FLD0084, -1, 0, 0, -1, 0, 0, 0x12,0, 1, 0x13, 7, 7, 1},
{FLD00844, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x6E, 2, 2, 4},
{FLD00843, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x6E, 1, 1, 4},
{FLD0087, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x69, 5, 6, 4},
{FLD0088, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x69, 3, 4, 4},
{FLD0089, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x6E, 3, 7, 4},
{FLD0090, 0x5A,0, 7, 0x5B,0, 7, 0x5C,0, 7, 0x5D, 0, 7, 0},
{FLD0091, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x60, 0, 7, 4},
{FLD0092, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x67, 7, 7, 4},
{FLD0093, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x0C, 3, 4, 1},
{FLD0094, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x0C, 1, 2, 1},
{FLD0066OD_SEL, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x61, 7, 7, 4},
{FLD0096, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x68, 1, 2, 0},
{FLD0097, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x74, 7, 7, 0},
{FLD0098, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x74, 3, 3, 0},
{FLD0099, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x74, 4, 4, 0},
{FLD0100, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x2D, 6, 7, 0},
{FLD0101, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x2D, 4, 5, 0},
{FLD0102, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x2E, 7, 7, 0},
{FLD0103, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x2E, 6, 6, 0},
{FLD0104, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x25, 6, 6, 0},
{FLD0105, -1, 0, 0, -1, 0, 0, 0x60,0, 7, 0x61, 0, 2, 0},
{FLD0106, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x32, 7, 7, 0},
{FLD0107, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x32, 6, 6, 0},
{FLD0108, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x64, 0, 6, 0},
{FLD0109, -1, 0, 0, -1, 0, 0, 0x6B,0, 7, 0x6C, 0, 3, 0},
{FLD0110, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x6A, 0, 0, 0},
{FLD0111, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x6A, 2, 2, 0},
{FLD0112, -1, 0, 0, -1, 0, 0, 0x6D,0, 7, 0x6E, 0, 2, 0},
{FLD0113, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x6E, 3, 3, 0},
{FLD0114, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x2F, 7, 7, 0},
{FLD0115, -1, 0, 0, -1, 0, 0, 0x2A,0, 7, 0x2B, 0, 2, 4},
{FLD0116, -1, 0, 0, -1, 0, 0, 0x2C,0, 7, 0x2D, 0, 2, 4},
{FLD0117, -1, 0, 0, -1, 0, 0, 0x2E,0, 7, 0x2F, 0, 2, 4},
{FLD0118, -1, 0, 0, -1, 0, 0, 0x30,0, 7, 0x31, 0, 2, 4},
{FLD0119, -1, 0, 0, -1, 0, 0, 0x32,0, 7, 0x33, 0, 2, 4},
{FLD0120, -1, 0, 0, -1, 0, 0, 0x34,0, 7, 0x35, 0, 2, 4},
{FLD0121, -1, 0, 0, 0x36,0, 4, 0x37,0, 7, 0x38, 0, 7, 4},
{FLD0122, -1, 0, 0, 0x39,0, 7, 0x3A,0, 7, 0x3B, 0, 7, 4},
{FLD0123, -1, 0, 0, 0x3C,0, 7, 0x3D,0, 7, 0x3E, 0, 7, 4},
{FLD0124, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x70, 6, 7, 0},
{FLD0125, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x0A, 7, 7, 0},
{FLD0126, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x0A, 4, 4, 0},
{FLD0127, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x09, 0, 0, 0},
{FLD0128, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x07, 6, 6, 0},
{FLD0129, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x07, 0, 0, 0},
{FLD0130, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x07, 3, 3, 0},
{FLD0130_SER, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x16, 0, 0, 1},
{FLD0130_PLL, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x16, 3, 3, 1},
{FLD0130DRI, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x08, 4, 7, 0},
{FLD0134, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x07, 4, 4, 0},
{FLD0135, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x0E, 7, 7, 1},
{FLD0136, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x0A, 3, 3, 0},
{FLD0137, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x63, 4, 7, 4},
{FLD0138, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x64, 0, 0, 4},
{FLD0139, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x66, 1, 1, 4},
{FLD0140, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x11, 4, 4, 1},
{FLD0141, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x1A, 4, 4, 1},
{FLD0142, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x09, 2, 2, 0},
{FLD0143, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x08, 1, 3, 0},
{FLD0144, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x09, 5, 5, 0},
{FLD0145, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x07, 1, 1, 0},
{FLD0146, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x54, 4, 4, 4},
{FLD0147, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x0F, 7, 7, 1},
{FLD0148, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x07, 2, 2, 0},
{FLD0149, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x07, 5, 5, 0},
{FLD0150, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x07, 7, 7, 0},
{FLD0151, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x09, 4, 4, 0},
{FLD0152, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x09, 3, 3, 0},
{FLD0153, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x0A, 5, 5, 0},
{FLD0154, -1, 0, 0, -1, 0, 0,0x1C, 0, 7, 0x1D, 0, 7, 0},
{FLD0155, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x07, 2, 2, 1},
{FLD0156, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x21, 7, 7, 1},
{FLD0157, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x58, 5, 5, 4},
{FLD0158, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x4E, 0, 0, 1},
{FLD0159, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x19, 6, 6, 0},
{FLD0160, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x07, 1, 1, 1},
{FLD0161, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x08, 0, 0, 1},
{FLD0162, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0x2E, 0, 2, 0},
};
static uint8 g_nCurPage = 0;
static uint8 global_arr_003[CONST_0032][CONST_0033];
static uint8 global_arr_004[CONST_0032][CONST_0033];
static uint8 g_dirtyreg = 0;
//static uint8 g_mcurst = 1;
static struct reg_ch7036 global_arr_005[CONST_0032*CONST_0033];
static uint32 global_arr_005_length =0;
static uint32 append_reg(uint8 index, uint8 value)
{
global_arr_005_length++;
global_arr_005[global_arr_005_length].index = index;
global_arr_005[global_arr_005_length].value = value;
global_arr_005[0].value = global_arr_005_length & 0xFF;
global_arr_005[0].index = 0xF0+ (0xF & (global_arr_005_length >>8));
return global_arr_005_length;
}
static struct reg_ch7036 ch7036_lvds_only[] = {
{ 0x03, 0x04 },
{ 0x58, 0x20 },
{ 0x67, 0xc0 },
{ 0x59, 0x60 },
{ 0x03, 0x01 },
{ 0x11, 0x88 },
{ 0x03, 0x00 },
{ 0x07, 0x5F },
{ 0x08, 0xFF },
{ 0x09, 0x7F },
{ 0x0A, 0x34 },
};
#define ch7036_lvds_only_length (sizeof(ch7036_lvds_only)/sizeof(struct reg_ch7036))
static uint8 in_data(uint8 index)
{
return global_arr_003[g_nCurPage][index];
}
void out_data(uint8 index, uint8 value)
{
if(index == 0x03)
{
g_nCurPage = value;
}
else
{
global_arr_003[g_nCurPage][index] = value;
global_arr_004[g_nCurPage][index] = 1;
}
}
static void iic_reset()
{
uint8 page, index;
for(page=0; page<CONST_0032; ++page)
{
for(index=0; index<CONST_0033; ++index)
{
global_arr_003[page][index] = global_arr_001[page][index];
global_arr_004[page][index]=0;
}
}
g_nCurPage = 0x00;
global_arr_005_length = 0;
}
static uint32 in_data_ex(MULTI_REG_ID reg_id)
{
uint8 oldpage;
uint32 n0, n1, n2, n3, mask, i, value;
n0 = n1 = n2 = n3 = value = mask = 0;
i = (uint32)reg_id;
oldpage = in_data(0x03);
out_data(0x03, global_arr_002[i].sfld_0048);
if(-1 != global_arr_002[i].sfld_0035)
n0 = in_data(global_arr_002[i].sfld_0035);
if(-1 != global_arr_002[i].sfld_0038)
n1 = in_data(global_arr_002[i].sfld_0038);
if(-1 != global_arr_002[i].sfld_0041)
n2 = in_data(global_arr_002[i].sfld_0041);
n3 = in_data(global_arr_002[i].sfld_0044);
out_data(0x03, oldpage);
if(0 != n0)
{
mask = 1;
mask <<= global_arr_002[i].sfld_0037 - global_arr_002[i].sfld_0036 + 1;
mask -= 1;
mask <<= global_arr_002[i].sfld_0036;
n0 &= mask;
n0 >>= global_arr_002[i].sfld_0036;
n0 <<= (global_arr_002[i].sfld_0040 - global_arr_002[i].sfld_0039 + 1)+(global_arr_002[i].sfld_0043 - global_arr_002[i].sfld_0042 + 1) + (global_arr_002[i].sfld_0047 - global_arr_002[i].sfld_0046 + 1);
}
if(0 != n1)
{
mask = 1;
mask <<= global_arr_002[i].sfld_0040 - global_arr_002[i].sfld_0039 + 1;
mask -= 1;
mask <<= global_arr_002[i].sfld_0039;
n1 &= mask;
n1 >>= global_arr_002[i].sfld_0039;
n1 <<= (global_arr_002[i].sfld_0043 - global_arr_002[i].sfld_0042 + 1) + (global_arr_002[i].sfld_0047 - global_arr_002[i].sfld_0046 + 1);
}
if(0 != n2)
{
mask = 1;
mask <<= global_arr_002[i].sfld_0043 - global_arr_002[i].sfld_0042 + 1;
mask -= 1;
mask <<= global_arr_002[i].sfld_0042;
n2 &= mask;
n2 >>= global_arr_002[i].sfld_0042;
n2 <<= global_arr_002[i].sfld_0047 - global_arr_002[i].sfld_0046 + 1;
}
if(0 != n3)
{
mask = 1;
mask <<= global_arr_002[i].sfld_0047 - global_arr_002[i].sfld_0046 + 1;
mask -= 1;
mask <<= global_arr_002[i].sfld_0046;
n3 &= mask;
n3 >>= global_arr_002[i].sfld_0046;
}
value = n0 | n1 | n2 | n3;
return value;
}
static void out_data_ex(MULTI_REG_ID reg_id, uint32 value)
{
uint8 oldpage;
uint32 n1, n2, n3, n4, mask, nOrigin, i, value_local;
n1 = n2 = n3 = n4 = mask = nOrigin = i = 0;
value_local = value;
i = (uint32)reg_id;
oldpage = in_data(0x03);
out_data(0x03, global_arr_002[i].sfld_0048);
mask = 1;
mask <<= global_arr_002[i].sfld_0047 - global_arr_002[i].sfld_0046 + 1;
mask -= 1;
n1 = value_local & mask;
n1 <<= global_arr_002[i].sfld_0046;
nOrigin = in_data(global_arr_002[i].sfld_0044);
mask <<= global_arr_002[i].sfld_0046;
nOrigin &= ~mask;
n1 |= nOrigin;
out_data(global_arr_002[i].sfld_0044, n1);
value_local >>= global_arr_002[i].sfld_0047 - global_arr_002[i].sfld_0046 + 1;
if(-1 != global_arr_002[i].sfld_0041)
{
mask = 1;
mask <<= global_arr_002[i].sfld_0043 - global_arr_002[i].sfld_0042 + 1;
mask -= 1;
n2 = value_local & mask;
n2 <<= global_arr_002[i].sfld_0042;
nOrigin = in_data(global_arr_002[i].sfld_0041);
mask <<= global_arr_002[i].sfld_0042;
nOrigin &= ~mask;
n2 |= nOrigin;
out_data(global_arr_002[i].sfld_0041, n2);
value_local >>= global_arr_002[i].sfld_0043 - global_arr_002[i].sfld_0042 + 1;
if(-1 != global_arr_002[i].sfld_0038)
{
mask = 1;
mask <<= global_arr_002[i].sfld_0040 - global_arr_002[i].sfld_0039 + 1;
mask -= 1;
n3 = value_local & mask;
n3 <<= global_arr_002[i].sfld_0039;
nOrigin = in_data(global_arr_002[i].sfld_0038);
mask <<= global_arr_002[i].sfld_0039;
nOrigin &= ~mask;
n3 |= nOrigin;
out_data(global_arr_002[i].sfld_0038, n3);
value_local >>= global_arr_002[i].sfld_0040 - global_arr_002[i].sfld_0039 + 1;
if(-1 != global_arr_002[i].sfld_0035)
{
mask = 1;
mask <<= global_arr_002[i].sfld_0037 - global_arr_002[i].sfld_0036 +1;
mask -= 1;
n4 = value_local & mask;
n4 <<= global_arr_002[i].sfld_0036;
nOrigin = in_data(global_arr_002[i].sfld_0035);
mask <<= global_arr_002[i].sfld_0036;
nOrigin &= ~mask;
n4 |= nOrigin;
out_data(global_arr_002[i].sfld_0035,n4);
}
}
}
out_data(0x03, oldpage);
}
static void func_gen_0001()
{
append_reg(0x03, 0x04);
append_reg(0x52, 0x2A);
append_reg(0x52, 0x2F);
append_reg(0x03, 0x00);
}
static void func_gen_0002(int lvdsonly)
{
append_reg(0x03, 0x04);
append_reg(0x5A, 0x06 );
append_reg(0x5A, 0x04);
append_reg(0x52, 0x29);
append_reg(0x52, 0x2B );
append_reg(0x5A, 0x04);
append_reg(0x03, 0x01);
if (global_config.comv_off) append_reg( 0x16, 0x29);
else append_reg(0x16, 0x21);
if (global_config.revisionid == 0x00) {
append_reg(0x14, 0xd1);
}
append_reg(0x03, 0x04);
if (global_config.revisionid == 0x00) {
if (lvdsonly) append_reg(0x54, 0xd4);
else append_reg(0x54, 0xc4);
}
else {
if (lvdsonly) append_reg(0x54, 0x94);
else append_reg(0x54, 0x84);
}
append_reg(0x66, ((global_config.refdly & 0x7)<<5)+ ((global_config.fbdly & 0x7)<<2) );
append_reg(0x68, 0x40 + (global_config.drv_strength & 0x0F) );
append_reg(0x57, 0xc0 & global_config.lvds_inout);
}
static void func_gen_0003()
{
uint8 page, index;
uint16 k =0;
uint16 rc[5];
for(page=0; page<CONST_0032; ++page)
{
rc[page]=0;
if(page == 0x02) continue;
append_reg(0x03, page);
for(index=0x07; index<CONST_0033; ++index)
{
if (g_dirtyreg) {
if(global_arr_004[page][index])
{
k++;
rc[page]++;
append_reg(index, global_arr_003[page][index]);
}
} else {
if(global_arr_003[page][index] != global_arr_001[page][index])
{
k++;
rc[page]++;
append_reg(index, global_arr_003[page][index]);
}
}
}
}
}
static uint32 g_nLastError;
static ch_bool func_gen_0004(ch_bool funpar_0001, uint8* funpar_0002, uint8* div_addr);
static ch_bool func_gen_0005(ch_bool funpar_0003, uint8* funpar_0004, uint8* div_addr);
static ch_bool func_gen_0006(ch_bool funpar_0005, uint8* funpar_0006, uint8* div_addr);
static ch_bool func_gen_0007(ch_bool funpar_0007, uint8* funpar_0008, uint8* div_addr);
static ch_bool func_gen_0008(ch_bool funpar_0009, uint8* funpar_0010, uint8* div_addr);
static ch_bool func_gen_0009(ch_bool funpar_0011, uint8* funpar_0012, uint8* div_addr);
static ch_bool func_gen_0010(ch_bool funpar_0013, uint8* funpar_0014, uint8* div_addr);
static ch_bool func_gen_0011(ch_bool funpar_0015, uint8* funpar_0016, uint8* div_addr);
static ch_bool func_gen_0012(INPUT_INFO* pInfo_T_0001);
static ch_bool func_gen_0013(OUTPUT_INFO* pInfo_T_0002);
static ch_bool func_gen_0014(PREFER_INFO* pInfo_T_0003);
static ch_bool func_gen_0015(DEV_CONTEXT* pDevContext);
static ch_bool func_gen_0016(DEV_CONTEXT* pDevContext);
static ch_bool func_gen_0017(DEV_CONTEXT* pDevContext);
#ifdef __GNUC__
static uint32 mul32div32(uint32 a, uint32 b, uint32 c)
{
return (uint32)((((uint64)a)*b)/c);
}
#else
#if _MSC_VER<=800
extern uint32 dos_mul32div32(uint32 a, uint32 b, uint32 c);
uint32 mul32div32(uint32 a, uint32 b, uint32 c)
{
uint32 t;
t = dos_mul32div32( a, b, c);
return t;
}
#else
static uint32 mul32div32(uint32 a, uint32 b, uint32 c)
{
return (uint32)((((uint64)a)*b)/c);
}
#endif
#endif
ch_bool func_gen_0019(DEV_CONTEXT* pDevContext)
{
uint32 C;
uint32 locvar_0001, locvar_0002, locvar_0003, val_t;
uint32 locvar_0004;
uint32 locvar_0005;
uint32 locvar_0006;
uint32 locvar_0007;
uint32 locvar_0008;
uint32 locvar_0009;
uint32 locvar_0010;
INPUT_INFO* pInfo_T_0001 = pDevContext->pInfo_T_0001;
OUTPUT_INFO* pInfo_T_0002 = pDevContext->pInfo_T_0002;
PREFER_INFO* pInfo_T_0003 = pDevContext->pInfo_T_0003;
g_nLastError = 0;
out_data(0x03, 0x04);
pDevContext->sfld_0034 = in_data(0x50);
if(pDevContext->sfld_0034 != 0x56)
{
g_nLastError = 105;
return ch_false;
}
if(pInfo_T_0001->timing.ha % 2)
{
pInfo_T_0001->timing.ha--;
}
if(pInfo_T_0001->timing.va % 2)
{
pInfo_T_0001->timing.va--;
}
if(pInfo_T_0003->sfld_0026)
{
C = 100;
}
else if(pInfo_T_0003->sfld_0027)
{
C = 100;
}
else
{
C = (pInfo_T_0003->sfld_0028) ? 75 : 50;
}
if(pInfo_T_0002->sfld_0020)
{
locvar_0001 = pInfo_T_0002->timing.ha * (100L - pInfo_T_0002->sfld_0020) / 100L;
}
else
{
locvar_0001 = pInfo_T_0002->timing.ha;
}
if(pInfo_T_0002->sfld_0021)
{
locvar_0002 = pInfo_T_0002->timing.va * (100L - pInfo_T_0002->sfld_0021) / 100L;
}
else
{
locvar_0002 = pInfo_T_0002->timing.va;
}
locvar_0001 = locvar_0001 + (locvar_0001 % 2);
locvar_0002 = locvar_0002 + (locvar_0002 % 2);
locvar_0004 = pInfo_T_0001->timing.ha;
if(locvar_0004 > locvar_0001 && pInfo_T_0002->sfld_0050 != CONST_0013 && pInfo_T_0002->sfld_0050 != CONST_0015)
{
locvar_0004 = locvar_0001;
}
if(pInfo_T_0002->sfld_0050 == CONST_0013 || pInfo_T_0002->sfld_0050 == CONST_0015)
{
val_t = 720;
}
else
{
if(pInfo_T_0003->sfld_0026)
{
val_t = 720;
}
else
{
val_t = pInfo_T_0003->sfld_0027 ? 720 : 1440;
}
}
if(locvar_0004 > val_t && (pInfo_T_0002->sfld_0050 != CONST_0012 || pInfo_T_0002->sfld_0022 || pInfo_T_0002->sfld_0023))
{
locvar_0004 = val_t;
}
locvar_0007 = pInfo_T_0002->sfld_iot02.sfld_0051;
if(pInfo_T_0002->channel & CONST_0010)
{
switch(pInfo_T_0002->sfld_iot02.sfld_0015)
{
case 5:
case 6:
case 7:
case 10:
case 11:
case 20:
case 21:
case 22:
case 25:
case 26:
locvar_0007 = 1;
break;
default:
break;
}
}
val_t = locvar_0007 ? (locvar_0002 / 2) : locvar_0002;
if(pInfo_T_0002->sfld_0050 == CONST_0013 || pInfo_T_0002->sfld_0050 == CONST_0015)
{
if(locvar_0004 <= val_t)
locvar_0006 = 3;
else
locvar_0006 = 1;
}
else
{
if(pInfo_T_0001->timing.va <= val_t)
locvar_0006 = 3;
else
locvar_0006 = 1;
}
locvar_0010 = (pInfo_T_0001->sfld_0001 + pInfo_T_0002->sfld_0019 * pInfo_T_0001->timing.ha / locvar_0001 * (4 - locvar_0006)) / 85 * C;
if(locvar_0010 > CONST_0021)
{
if(locvar_0006 >= 2)
{
g_nLastError = 103;
return ch_false;
}
locvar_0006++;
locvar_0010 = (pInfo_T_0001->sfld_0001 + pInfo_T_0002->sfld_0019 * pInfo_T_0001->timing.ha / locvar_0001 * (4 - locvar_0006)) / 85 * C;
if(locvar_0010 > CONST_0021)
{
g_nLastError = 103;
return ch_false;
}
pInfo_T_0003->sfld_0033 = 1;
}
if(pInfo_T_0002->sfld_0050 == CONST_0013 || pInfo_T_0002->sfld_0050 == CONST_0015)
{
val_t = 100;
}
else
{
if(pInfo_T_0003->sfld_0026)
{
val_t = 100;
}
else if(pInfo_T_0003->sfld_0027)
{
val_t = 100;
}
else
{
val_t = pInfo_T_0003->sfld_0028 ? 75 : 50;
}
}
if(val_t == 75)
{
locvar_0005 = (locvar_0004 / 4) * 3 + (locvar_0004 % 4);
}
else
{
locvar_0005 = locvar_0004 * val_t / 100;
}
if(pInfo_T_0002->sfld_0050 != CONST_0012 || pInfo_T_0002->sfld_0022 || pInfo_T_0002->sfld_0023)
{
locvar_0008 = 45;
}
else if(locvar_0005 <= 720 && pInfo_T_0001->timing.va <= 720)
{
locvar_0008 = 45;
}
else
{
locvar_0008 = locvar_0005 / 16;
locvar_0008 = (locvar_0005 % 16) ? (locvar_0008 + 1) : locvar_0008;
}
if((pInfo_T_0002->sfld_0050 == CONST_0013 || pInfo_T_0002->sfld_0050 == CONST_0015) && pInfo_T_0003->sfld_0027 == 0 && pInfo_T_0003->sfld_0028 == 0 && pInfo_T_0003->sfld_0026 == 0)
{
locvar_0003 = pInfo_T_0001->timing.va / 2;
}
else
{
locvar_0003 = pInfo_T_0001->timing.va;
}
val_t = (locvar_0003 % 16) ? (locvar_0003 / 16 + 1) : (locvar_0003 / 16);
locvar_0009 = locvar_0008 * val_t;
if(pInfo_T_0003->sfld_0026)
{
if(pInfo_T_0003->sfld_0027)
{
g_nLastError = 106;
return ch_false;
}
if(pInfo_T_0003->sfld_0028)
{
g_nLastError = 107;
return ch_false;
}
if(pInfo_T_0002->sfld_0050 == CONST_0012 && pInfo_T_0002->sfld_0022 == 0 && pInfo_T_0002->sfld_0023 == 0)
{
if(locvar_0009 > CONST_0022)
{
g_nLastError = 104;
return ch_false;
}
}
else if(pInfo_T_0002->sfld_0050 != CONST_0012)
{
if(pInfo_T_0001->timing.va > 720)
{
g_nLastError = 108;
return ch_false;
}
}
else
{
if(pInfo_T_0001->timing.va > 720)
{
g_nLastError = 109;
return ch_false;
}
}
}
if(pInfo_T_0003->sfld_0026 == 0)
{
if(pInfo_T_0002->sfld_0050 == CONST_0012 && pInfo_T_0002->sfld_0022 == 0 && pInfo_T_0002->sfld_0023 == 0)
{
if(locvar_0009 > CONST_0022)
{
if(pInfo_T_0003->sfld_0027)
{
g_nLastError = 106;
return ch_false;
}
if(pInfo_T_0003->sfld_0028)
{
g_nLastError = 107;
return ch_false;
}
g_nLastError = 104;
return ch_false;
}
}
if(pInfo_T_0002->sfld_0050 == CONST_0014)
{
if(pInfo_T_0003->sfld_0028)
{
g_nLastError = 107;
return ch_false;
}
if(pInfo_T_0003->sfld_0027)
{
if(pInfo_T_0001->timing.va > 720)
{
g_nLastError = 106;
return ch_false;
}
}
else
{
if(pInfo_T_0001->timing.va > 720)
{
g_nLastError = 108;
return ch_false;
}
}
}
if(pInfo_T_0002->sfld_0022 || pInfo_T_0002->sfld_0023)
{
if(pInfo_T_0003->sfld_0028)
{
g_nLastError = 107;
return ch_false;
}
if(pInfo_T_0001->timing.va > 720)
{
g_nLastError = 109;
return ch_false;
}
}
if(pInfo_T_0002->sfld_0050 == CONST_0013 || pInfo_T_0002->sfld_0050 == CONST_0015)
{
if(pInfo_T_0003->sfld_0028)
{
g_nLastError = 107;
return ch_false;
}
if(pInfo_T_0003->sfld_0027)
{
if(pInfo_T_0001->timing.va > 720)
{
g_nLastError = 106;
return ch_false;
}
}
else
{
if(pInfo_T_0001->timing.va > 1440)
{
g_nLastError = 108;
return ch_false;
}
}
}
}
if(pInfo_T_0003->sfld_0027 || pInfo_T_0003->sfld_0028)
{
pInfo_T_0003->sfld_0031 = 0;
}
iic_reset();
return ch_true;
}
ch_bool func_gen_0020(DEV_CONTEXT* pDevContext)
{
if(!func_gen_0012(pDevContext->pInfo_T_0001))
return ch_false;
if(!func_gen_0013(pDevContext->pInfo_T_0002))
return ch_false;
if(!func_gen_0014(pDevContext->pInfo_T_0003))
return ch_false;
if(!func_gen_0015(pDevContext))
return ch_false;
if(!func_gen_0016(pDevContext))
return ch_false;
if(!func_gen_0017(pDevContext))
return ch_false;
if(pDevContext->pInfo_T_0002->channel & CONST_0010) {
}
return ch_true;
}
ch_bool func_gen_0021(DEV_CONTEXT* pDevContext)
{
func_gen_0002(pDevContext->pInfo_T_0002->channel == CONST_0009);
if(pDevContext->pInfo_T_0002->channel == CONST_0009) {
int u;
for (u=0; u< ch7036_lvds_only_length; u++) {
append_reg( ch7036_lvds_only[u].index, ch7036_lvds_only[u].value);
}
}
else func_gen_0003();
return ch_true;
}
uint32 GetLastErrorMessage()
{
return g_nLastError;
}
ch_bool func_gen_0012(INPUT_INFO* pInfo_T_0001)
{
out_data_ex(FLD0001, pInfo_T_0001->timing.ht);
out_data_ex(FLD0003, pInfo_T_0001->timing.ha);
out_data_ex(FLD0005, pInfo_T_0001->timing.ho);
out_data_ex(FLD0007, pInfo_T_0001->timing.hw);
out_data_ex(FLD0002, pInfo_T_0001->timing.vt);
out_data_ex(FLD0004, pInfo_T_0001->timing.va);
out_data_ex(FLD0006, pInfo_T_0001->timing.vo);
out_data_ex(FLD0008, pInfo_T_0001->timing.vw);
out_data_ex(FLD0010, pInfo_T_0001->pixel_fmt);
out_data_ex(FLD0012, pInfo_T_0001->hs_pol);
out_data_ex(FLD0013, pInfo_T_0001->vs_pol);
out_data_ex(FLD0039, pInfo_T_0001->hs_pol);
out_data_ex(FLD0040, pInfo_T_0001->vs_pol);
out_data_ex(FLD0041, pInfo_T_0001->de_pol);
out_data_ex(FLD0014, (pInfo_T_0001->sfld_0006 & ( ((uint32)1) << 0)) ? 1 : 0);
out_data_ex(FLD0015, (pInfo_T_0001->sfld_0006 & ( ((uint32)1) << 1)) ? 1 : 0);
out_data_ex(FLD0016, (pInfo_T_0001->sfld_0006 & ( ((uint32)1) << 2)) ? 1 : 0);
out_data_ex(FLD0017, (pInfo_T_0001->sfld_0006 & ( ((uint32)1) << 3)) ? 1 : 0);
out_data_ex(FLD0018, pInfo_T_0001->sfld_0007);
out_data_ex(FLD0063, pInfo_T_0001->sfld_0008);
out_data_ex(FLD0062, pInfo_T_0001->sfld_0009);
out_data_ex(FLD0064, pInfo_T_0001->i2s_len);
out_data_ex(FLD0065, pInfo_T_0001->sfld_0011);
return ch_true;
}
ch_bool func_gen_0013(OUTPUT_INFO* pInfo_T_0002)
{
uint8 locvar_0011, locvar_0012, locvar_0013, locvar_0014, locvar_0015;
uint8 locvar_0016, locvar_0017, locvar_0018, locvar_0019, locvar_0020;
uint8 locvar_0021, locvar_0007, copy, locvar_0022, locvar_0023, locvar_0024, hsp, vsp, m1m0, c1c0, vic;
uint32 locvar_0025, locvar_0026;
IOT1_DFMT* locvar_0027 = &pInfo_T_0002->sfld_iot01;
IOT2_DFMT* locvar_0028 = &pInfo_T_0002->sfld_iot02;
if(pInfo_T_0002->channel & CONST_0010 || pInfo_T_0002->channel & CONST_0011)
{
out_data_ex(FLD0031, pInfo_T_0002->timing.ht);
out_data_ex(FLD0033, pInfo_T_0002->timing.ha);
out_data_ex(FLD0035, pInfo_T_0002->timing.ho);
out_data_ex(FLD0037, pInfo_T_0002->timing.hw);
out_data_ex(FLD0032, pInfo_T_0002->timing.vt);
out_data_ex(FLD0034, pInfo_T_0002->timing.va);
out_data_ex(FLD0036, pInfo_T_0002->timing.vo);
out_data_ex(FLD0038, pInfo_T_0002->timing.vw);
out_data_ex(FLD0101, pInfo_T_0002->sfld_0050);
out_data_ex(FLD0102, pInfo_T_0002->sfld_0022);
out_data_ex(FLD0103, pInfo_T_0002->sfld_0023);
locvar_0025 = pInfo_T_0002->timing.ha * (100L - pInfo_T_0002->sfld_0020) / 100L;
locvar_0025 = locvar_0025 + (locvar_0025 % 2);
locvar_0026 = pInfo_T_0002->timing.va * (100L - pInfo_T_0002->sfld_0021) / 100L;
locvar_0026 = locvar_0026 + (locvar_0026 % 2);
if(pInfo_T_0002->sfld_0020 || pInfo_T_0002->sfld_0021)
{
out_data_ex(FLD0059, 1);
out_data_ex(FLD0033_SCL, locvar_0025);
out_data_ex(FLD0034_SCL, locvar_0026);
}
out_data_ex(FLD0101, pInfo_T_0002->sfld_0050);
out_data_ex(FLD0102, pInfo_T_0002->sfld_0022);
out_data_ex(FLD0103, pInfo_T_0002->sfld_0023);
}
if(pInfo_T_0002->channel & CONST_0009)
{
locvar_0011 = (locvar_0027->sfld_0012 >> 0) & 0xF;
locvar_0012 = (locvar_0027->sfld_0012 >> 4) & 0xF;
locvar_0013 = (locvar_0027->sfld_0012 >> 8) & 0xF;
locvar_0014 = (locvar_0027->sfld_0012 >> 12) & 0xF;
locvar_0015 = (locvar_0027->sfld_0012 >> 16) & 0xF;
out_data_ex(FLD0019, locvar_0011);
out_data_ex(FLD0020, locvar_0012);
out_data_ex(FLD0021, locvar_0013);
out_data_ex(FLD0022, locvar_0014);
out_data_ex(FLD0023, locvar_0015);
locvar_0016 = (locvar_0027->sfld_0013 >> 0) & 0x1;
locvar_0017 = (locvar_0027->sfld_0013 >> 1) & 0x1;
locvar_0018 = (locvar_0027->sfld_0013 >> 2) & 0x1;
locvar_0019 = (locvar_0027->sfld_0013 >> 3) & 0x1;
locvar_0020 = (locvar_0027->sfld_0013 >> 4) & 0x1;
out_data_ex(FLD0026, locvar_0016);
out_data_ex(FLD0027, locvar_0017);
out_data_ex(FLD0028, locvar_0018);
out_data_ex(FLD0029, locvar_0019);
out_data_ex(FLD0030, locvar_0020);
out_data_ex(FLD0011, locvar_0027->pixel_fmt);
}
{
out_data_ex(FLD0042, 1);
out_data_ex(FLD0043, 0);
out_data_ex(FLD0044, 0);
}
{
out_data_ex(HDMIIN_FLD0051, 0);
out_data_ex(HDMIIN_FLD0050, 1);
out_data_ex(FLD0054, 1);
}
locvar_0007 = pInfo_T_0002->sfld_iot02.sfld_0051;
out_data( 0x3, 0x1);
out_data( 0x23, 0x00);
if(pInfo_T_0002->channel & CONST_0010)
{
locvar_0021 = locvar_0028->sfld_0014 ? 0 : 1;
out_data_ex(FLD0045, locvar_0021);
switch(locvar_0028->sfld_0015)
{
case 5:
case 6:
case 7:
case 10:
case 11:
case 20:
case 21:
case 22:
case 25:
case 26:
locvar_0007 = 1;
break;
default:
break;
}
out_data_ex(FLD0046, locvar_0007);
copy = 1;
out_data_ex(FLD0058, copy);
locvar_0022 = locvar_0028->sfld_0017;
out_data_ex(FLD0047, locvar_0022);
locvar_0023 = locvar_0028->sfld_0012;
out_data_ex(FLD0048, locvar_0023);
locvar_0024 = 1;
out_data_ex(FLD0049, locvar_0024);
hsp = locvar_0028->hs_pol;
vsp = locvar_0028->vs_pol;
out_data_ex(FLD0051, hsp);
out_data_ex(FLD0050, vsp);
switch(locvar_0028->sfld_0015)
{
case 1:
{
if(locvar_0028->sfld_0016 == CONST_0008)
{
g_nLastError = 201;
return ch_false;
}
}
break;
case 4:
case 5:
case 16:
case 19:
case 20:
case 31:
case 32:
case 33:
case 34:
{
if(locvar_0028->sfld_0016 == CONST_0007)
{
g_nLastError = 201;
return ch_false;
}
}
break;
default:
break;
}
m1m0 = locvar_0028->sfld_0016;
out_data_ex(FLD0055, m1m0);
c1c0 = 2;
out_data_ex(FLD0056, c1c0);
vic = locvar_0028->sfld_0015;
out_data_ex(FLD0057, vic);
out_data( 0x3, 0x0);
out_data( 0x3F, 0x12);
out_data( 0x3, 0x1);
out_data( 0x23, 0x63);
out_data( 0x24, 0xF9 & in_data(0x24));
}
return ch_true;
}
ch_bool func_gen_0014(PREFER_INFO* pInfo_T_0003)
{
uint8 hsync_cnt_th, prbs_set_sel;
uint8 dbp;
out_data_ex(FLD0066OD_SEL, pInfo_T_0003->sfld_0025);
out_data_ex(FLD0097, pInfo_T_0003->sfld_0026);
out_data_ex(FLD0098, pInfo_T_0003->sfld_0027);
out_data_ex(FLD0099, pInfo_T_0003->sfld_0028);
hsync_cnt_th = pInfo_T_0003->sfld_0029;
out_data_ex(FLD0024, hsync_cnt_th);
prbs_set_sel = pInfo_T_0003->sfld_0030;
out_data_ex(FLD0025, prbs_set_sel);
dbp = pInfo_T_0003->sfld_0031 ? 0 : 1;
out_data_ex(FLD0159, dbp);
out_data_ex(FLD0162, 5);
return ch_true;
}
ch_bool func_gen_0015(DEV_CONTEXT* pDevContext)
{
uint8 locvar_0029, locvar_0030;
uint8 locvar_0031, locvar_0032;
uint8 locvar_0033, locvar_0034;
uint8 locvar_0035, locvar_0036;
uint8 locvar_0037, locvar_0038;
uint8 locvar_0039, locvar_0040;
uint8 locvar_0041, locvar_0042;
uint8 locvar_0043, locvar_0044;
uint32 locvar_0045;
uint32 locvar_0046;
uint32 locvar_0047;
uint32 locvar_0048;
uint8 locvar_0049;
uint8 locvar_0050;
uint8 locvar_0051;
uint32 val_t;
uint32 val_t1, val_t2;
uint32 locvar_0093;
INPUT_INFO* pInfo_T_0001 = pDevContext->pInfo_T_0001;
OUTPUT_INFO* pInfo_T_0002 = pDevContext->pInfo_T_0002;
PREFER_INFO* pInfo_T_0003 = pDevContext->pInfo_T_0003;
locvar_0030 = 4;
locvar_0032 = 8;
if(!func_gen_0005(ch_false, &locvar_0029, &locvar_0030))
{
g_nLastError = 202;
return ch_false;
}
if(!func_gen_0006(ch_false, &locvar_0031, &locvar_0032))
{
g_nLastError = 203;
return ch_false;
}
out_data_ex(FLD0070, locvar_0029);
out_data_ex(FLD0080, locvar_0031);
if (global_config.revisionid > 0 ) {
locvar_0034 = 8;
locvar_0033 = 3;
}
else {
for(locvar_0034=1; locvar_0034<=64; locvar_0034<<=1)
{
val_t = pInfo_T_0001->sfld_0001 / locvar_0034;
if(val_t >= 2300 && val_t <= 4600)
break;
}
if(locvar_0034 > 64)
{
g_nLastError = 204;
return ch_false;
}
if(!func_gen_0004(ch_false, &locvar_0033, &locvar_0034))
{
g_nLastError = 204;
return ch_false;
}
}
out_data_ex(FLD0069, locvar_0033);
for(locvar_0036=1; locvar_0036<=8; locvar_0036<<=1)
{
val_t = pInfo_T_0003->sfld_0024 * locvar_0036 / 64;
if(val_t >= 2300 && val_t <= 2600)
break;
}
if(locvar_0036 > 8)
{
g_nLastError = 205;
return ch_false;
}
if(!func_gen_0010(ch_false, &locvar_0035, &locvar_0036))
{
g_nLastError = 205;
return ch_false;
}
out_data_ex(FLD0081, locvar_0035);
if (global_config.revisionid > 0 ) {
locvar_0093 = 27000;
}
else {
locvar_0093 = pInfo_T_0001->sfld_0001;
}
val_t1 = (locvar_0093 << 12);
val_t2 = (locvar_0034 * locvar_0036 * pInfo_T_0003->sfld_0024);
if (pInfo_T_0002->sfld_0019==148500) {
val_t2 = (locvar_0034 * locvar_0036 * 120000);
}
locvar_0045 = (val_t1 % val_t2) ? (val_t1 / val_t2 + 1) : (val_t1 / val_t2);
out_data_ex(FLD0082, locvar_0045);
if(pInfo_T_0001->sfld_0008)
{
locvar_0049 = pInfo_T_0002->sfld_0019 / 10;
}
else
{
locvar_0048 = (locvar_0093 * 2 * locvar_0030 * locvar_0032) / (locvar_0034 * 10);
}
out_data_ex(FLD0067, locvar_0048);
if((pInfo_T_0002->channel & CONST_0010) && (pInfo_T_0002->sfld_0019 == 54000 ||
pInfo_T_0002->sfld_0019 == 72000 ||
pInfo_T_0002->sfld_0019 == 74250 ||
pInfo_T_0002->sfld_0019 == 108000 ||
pInfo_T_0002->sfld_0019 == 148500 ))
{
locvar_0049 = 1;
}
else
{
locvar_0049 = 0;
}
out_data_ex(FLD0066SEC, locvar_0049);
if(locvar_0049 == 0)
{
locvar_0040 = 8;
locvar_0042 = 8;
for(locvar_0038=1; locvar_0038<=8; ++locvar_0038)
{
val_t = pInfo_T_0002->sfld_0019 * locvar_0038 / 64;
if(val_t >= 2300 && val_t <= 4600)
break;
}
if(locvar_0038 > 8)
{
g_nLastError = 206;
return ch_false;
}
locvar_0044 = 1;
if(pInfo_T_0003->sfld_0025 == 1)
{
locvar_0046 = mul32div32(pInfo_T_0002->sfld_0019* locvar_0034 * locvar_0038, ( ((uint32)1) << 20), locvar_0093);
out_data_ex(FLD0090, locvar_0046);
}
else
{
locvar_0047 = locvar_0093 * ( ((uint32)1) << 12) / (pInfo_T_0002->sfld_0019 * locvar_0034 * locvar_0038);
out_data_ex(FLD0091, locvar_0047);
}
}
else
{
switch(pInfo_T_0002->sfld_0019)
{
case 54000:
locvar_0044 = 6;
locvar_0042 = 8;
locvar_0040 = 6;
locvar_0038 = 4;
break;
case 72000:
locvar_0044 = 6;
locvar_0042 = 8;
locvar_0040 = 6;
locvar_0038 = 3;
break;
case 74250:
locvar_0044 = 5;
locvar_0042 = 11;
locvar_0040 = 5;
locvar_0038 = 4;
break;
case 108000:
locvar_0044 = 6;
locvar_0042 = 8;
locvar_0040 = 6;
locvar_0038 = 2;
break;
case 148500:
locvar_0044 = 5;
locvar_0042 = 11;
locvar_0040 = 5;
locvar_0038 = 2;
/*
{
locvar_0044 = 6;
locvar_0042 = 11;
locvar_0040 = 6;
locvar_0038 = 2;
out_data( 0x03, 0x01);
out_data( 0x0D, 0x60 | (0x9F & in_data(0x0D)));
out_data( 0x0C, 0x40 | (0x3F & in_data(0x0C)));
out_data( 0x0F, 0x38 | (0xC7 & in_data(0x0F)));
out_data( 0x0B, 0xC0 | (0x1F & in_data(0x0B)));
out_data( 0x0A, 0x0F | (0xE0 & in_data(0x0A)));
}
*/
break;
default:
return ch_false;
}
}
if(!func_gen_0007(ch_false, &locvar_0037, &locvar_0038))
{
g_nLastError = 206;
return ch_false;
}
out_data_ex(FLD0084, locvar_0037 & 0x07);
out_data_ex(FLD00843, locvar_0037 >> 3 & 0x01);
if(!func_gen_0008(ch_false, &locvar_0039, &locvar_0040))
{
g_nLastError = 207;
return ch_false;
}
out_data_ex(FLD0087, locvar_0039);
if(!func_gen_0009(ch_false, &locvar_0041, &locvar_0042))
{
g_nLastError = 208;
return ch_false;
}
out_data_ex(FLD0088, locvar_0041);
if(!func_gen_0011(ch_false, &locvar_0043, &locvar_0044))
{
g_nLastError = 209;
return ch_false;
}
out_data_ex(FLD0089, locvar_0043);
if(pInfo_T_0001->sfld_0001 > 40000)
{
out_data_ex(FLD0092, 1);
}
if(pInfo_T_0002->channel & CONST_0010)
{
val_t = pInfo_T_0002->sfld_0019;
if(val_t < 25000 || val_t > 165000)
{
g_nLastError = 210;
return ch_false;
}
if(val_t <= 40000)
{
locvar_0050 = 0;
locvar_0051 = 0;
}
else if(val_t < 80000)
{
locvar_0050 = 1;
locvar_0051 = 1;
}
else
{
locvar_0050 = 2;
locvar_0051 = 2;
}
out_data_ex(FLD0093, locvar_0050);
out_data_ex(FLD0094, locvar_0051);
}
out_data_ex(FLD0160, 1);
return ch_true;
}
ch_bool func_gen_0016(DEV_CONTEXT* pDevContext)
{
uint8 locvar_0052;
uint32 locvar_0092, locvar_0053, locvar_0054;
uint32 locvar_0004, locvar_0005;
uint8 locvar_0055, locvar_0056;
uint8 locvar_0057;
uint32 locvar_0058;
uint8 locvar_0008_reg;
uint32 locvar_0009_reg;
uint8 locvar_0059;
uint8 locvar_0060;
uint32 locvar_0061;
uint8 locvar_0006_reg;
uint8 locvar_0062;
uint8 locvar_0063;
uint8 locvar_0064;
uint32 val_t;
uint32 locvar_0001;
uint32 locvar_0002;
uint32 locvar_0003;
INPUT_INFO* pInfo_T_0001 = pDevContext->pInfo_T_0001;
OUTPUT_INFO* pInfo_T_0002 = pDevContext->pInfo_T_0002;
PREFER_INFO* pInfo_T_0003 = pDevContext->pInfo_T_0003;
locvar_0052 = 0;
out_data_ex(FLD0100, locvar_0052);
locvar_0092 = ((pInfo_T_0001->sfld_0001 * 10000L) / pInfo_T_0001->timing.ht) * 10L / pInfo_T_0001->timing.vt;
locvar_0053 = ((pInfo_T_0002->sfld_0019 * 10000L) / pInfo_T_0002->timing.ht) * 10L / pInfo_T_0002->timing.vt;
locvar_0054 = in_data_ex(FLD0046) ? (locvar_0053 * 2) : (locvar_0053);
locvar_0004 = pInfo_T_0001->timing.ha;
locvar_0058 = 0;
locvar_0055 = 0;
locvar_0056 = 0;
if(pInfo_T_0002->sfld_0020)
{
locvar_0001 = pInfo_T_0002->timing.ha * (100L - pInfo_T_0002->sfld_0020) / 100L;
}
else
{
locvar_0001 = pInfo_T_0002->timing.ha;
}
locvar_0001 = locvar_0001 + (locvar_0001 % 2);
if(locvar_0004 > locvar_0001)
{
locvar_0057 = 1;
locvar_0058 = locvar_0001;
locvar_0004 = locvar_0058;
locvar_0055 = 1;
locvar_0056 = 1;
}
else
{
locvar_0057 = 0;
locvar_0055 = 1;
locvar_0056 = 1;
}
if(pInfo_T_0002->sfld_0050 == CONST_0013 || pInfo_T_0002->sfld_0050 == CONST_0015)
{
val_t = 720;
}
else
{
if(pInfo_T_0003->sfld_0026)
{
val_t = 720;
}
else
{
val_t = pInfo_T_0003->sfld_0027 ? 720 : 1440;
}
}
if(locvar_0004 > val_t && (pInfo_T_0002->sfld_0050 != CONST_0012 || pInfo_T_0002->sfld_0022 || pInfo_T_0002->sfld_0023))
{
locvar_0057 = 1;
locvar_0058 = val_t;
locvar_0004 = locvar_0058;
locvar_0055 = 1;
locvar_0056 = 1;
}
out_data_ex(FLD0104, locvar_0057);
out_data_ex(FLD0105, locvar_0058);
if(pInfo_T_0001->timing.ha * 100L / locvar_0001 > pInfo_T_0003->sfld_0032)
{
locvar_0056 = 0;
}
out_data_ex(FLD0106, locvar_0055);
out_data_ex(FLD0107, locvar_0056);
if(pInfo_T_0002->sfld_0050 == CONST_0013 || pInfo_T_0002->sfld_0050 == CONST_0015)
{
val_t = 100;
}
else
{
if(pInfo_T_0003->sfld_0026)
{
val_t = 100;
}
else if(pInfo_T_0003->sfld_0027)
{
val_t = 100;
}
else
{
val_t = pInfo_T_0003->sfld_0028 ? 75 : 50;
}
}
if(val_t == 75)
{
locvar_0005 = (locvar_0004 / 4) * 3 + (locvar_0004 % 4);
}
else
{
locvar_0005 = locvar_0004 * val_t / 100;
}
if(pInfo_T_0002->sfld_0050 != CONST_0012 || pInfo_T_0002->sfld_0022 || pInfo_T_0002->sfld_0023)
{
locvar_0008_reg = 45;
}
else if(locvar_0005 <= 720 && pInfo_T_0001->timing.va <= 720)
{
locvar_0008_reg = 45;
}
else
{
locvar_0008_reg = locvar_0005 / 16;
locvar_0008_reg = (locvar_0005 % 16) ? (locvar_0008_reg + 1) : locvar_0008_reg;
}
out_data_ex(FLD0108, locvar_0008_reg);
if((pInfo_T_0002->sfld_0050 == CONST_0013 || pInfo_T_0002->sfld_0050 == CONST_0015) && pInfo_T_0003->sfld_0027 == 0 && pInfo_T_0003->sfld_0028 == 0 && pInfo_T_0003->sfld_0026 == 0)
{
locvar_0003 = pInfo_T_0001->timing.va / 2;
}
else
{
locvar_0003 = pInfo_T_0001->timing.va;
}
val_t = (locvar_0003 % 16) ? (locvar_0003 / 16 + 1) : (locvar_0003 / 16);
locvar_0009_reg = locvar_0008_reg * val_t;
if(locvar_0009_reg > 2048)
{
locvar_0059 = 1;
locvar_0060 = 1;
val_t = (locvar_0092 * 100) / locvar_0054;
if(val_t > 100)
{
locvar_0061 = pInfo_T_0001->timing.vt * (10000L - 10000L / val_t) / 10000L + CONST_0023;
}
else
{
locvar_0061 = pInfo_T_0001->timing.vt * (100 - val_t) / 100 + CONST_0023;
}
}
else
{
locvar_0059 = 0;
locvar_0060 = 0;
locvar_0061 = 0;
}
out_data_ex(FLD0109, locvar_0009_reg);
out_data_ex(FLD0110, locvar_0059);
out_data_ex(FLD0111, locvar_0060);
out_data_ex(FLD0112, locvar_0061);
if(pInfo_T_0002->sfld_0021)
{
locvar_0002 = pInfo_T_0002->timing.va * (100L - pInfo_T_0002->sfld_0021) / 100L;
}
else
{
locvar_0002 = pInfo_T_0002->timing.va;
}
locvar_0002 = locvar_0002 + (locvar_0002 % 2);
val_t = in_data_ex(FLD0046) ? (locvar_0002 / 2) : locvar_0002;
if(pInfo_T_0002->sfld_0050 == CONST_0013 || pInfo_T_0002->sfld_0050 == CONST_0015)
{
if(locvar_0004 <= val_t)
locvar_0006_reg = 3;
else
locvar_0006_reg = 1;
}
else
{
if(pInfo_T_0001->timing.va <= val_t)
locvar_0006_reg = 3;
else
locvar_0006_reg = 1;
}
if(pInfo_T_0003->sfld_0033)
{
locvar_0006_reg++;
}
out_data_ex(FLD0096, locvar_0006_reg);
if(locvar_0092 >= locvar_0054)
locvar_0062 = 1;
else
locvar_0062 = 0;
if (global_config.revisionid > 0 ) {
if(locvar_0092 >= (locvar_0054+50) )
locvar_0062 = 1;
else
locvar_0062 = 0;
}
out_data_ex(FLD0113, locvar_0062);
locvar_0063 = ( (pInfo_T_0003->sfld_0026 == 0) &&
(pInfo_T_0003->sfld_0027 == 0) &&
(pInfo_T_0003->sfld_0028 == 0) &&
( ((pInfo_T_0002->sfld_0050 == 0) &&
(pInfo_T_0002->sfld_0022 == 1)) ||
((pInfo_T_0002->sfld_0050 == 1) &&
(pInfo_T_0002->sfld_0022 == 0)) ||
((pInfo_T_0002->sfld_0050 == 3) &&
(pInfo_T_0002->sfld_0022 == 1)) ||
((pInfo_T_0002->sfld_0050 == 2) &&
(pInfo_T_0002->sfld_0022 == 0)) ) ) ? 1 : 0;
out_data_ex(FLD0114, locvar_0063);
locvar_0064 = 2;
out_data_ex(FLD0124, locvar_0064);
return ch_true;
}
ch_bool func_gen_0017(DEV_CONTEXT* pDevContext)
{
uint8 locvar_0065 = 1;
uint8 locvar_0066 = 1;
uint8 locvar_0067 = 1;
uint8 locvar_0068 = 1;
uint8 locvar_0068_ser = 1;
uint8 locvar_0068_pll = 1;
uint8 locvar_0068dri = 0xF;
uint8 locvar_0072 = 1;
uint8 locvar_0073 = 1;
uint8 locvar_0074 = 1;
uint8 locvar_0075 = 63;
uint8 locvar_0076 = 1;
uint8 locvar_0077 = 1;
uint8 locvar_0078 = 1;
uint8 locvar_0079 = 1;
uint8 locvar_0080 = 1;
uint8 locvar_0081 = 7;
uint8 locvar_0082 = 1;
uint8 locvar_0083 = 1;
uint8 locvar_0084 = 1;
uint8 locvar_0085 = 1;
uint8 locvar_0086 = 1;
uint8 locvar_0087 = 1;
uint8 locvar_0088 = 1;
uint8 locvar_0089 = 1;
uint8 locvar_0090 = 1;
uint8 locvar_0091 = 0;
INPUT_INFO* pInfo_T_0001 = pDevContext->pInfo_T_0001;
OUTPUT_INFO* pInfo_T_0002 = pDevContext->pInfo_T_0002;
out_data_ex(FLD0154, 27000);
out_data_ex(FLD0155, 1);
out_data_ex(FLD0156, 0);
out_data_ex(FLD0157, 1);
out_data_ex(FLD0158, 0);
if(pInfo_T_0002->channel & CONST_0009)
{
locvar_0074 = 0;
locvar_0075 = 0;
locvar_0076 = 0;
locvar_0077 = 0;
locvar_0078 = 0;
locvar_0079 = 0;
locvar_0086 = 0;
}
else {
}
if(pInfo_T_0002->channel & CONST_0010)
{
locvar_0065 = 0;
if(pInfo_T_0001->sfld_0008 == 1)
locvar_0066 = 0;
else
locvar_0067 = 0;
locvar_0068 = 0;
locvar_0068_ser = 0;
locvar_0068_pll = 0;
locvar_0068dri = 0;
locvar_0073 = 0;
locvar_0075 = 0;
locvar_0076 = 0;
locvar_0080 = 0;
locvar_0083 = 0;
locvar_0082 = 0;
locvar_0085 = 0;
locvar_0086 = 0;
locvar_0087 = 0;
locvar_0088 = 0;
locvar_0089 = 0;
locvar_0090 = 0;
}
else {
out_data(0x03, 0x01);
out_data(0x0D, (0x80 | in_data(0x0D)));
out_data(0x16, (0x01 | in_data(0x16)));
}
if (pInfo_T_0002->channel & CONST_0011) {
locvar_0075 = 0;
locvar_0076 = 0;
locvar_0080 = 0;
locvar_0081 = 0;
locvar_0083 = 0;
locvar_0082 = 0;
locvar_0085 = 0;
locvar_0086 = 0;
locvar_0088 = 0;
locvar_0089 = 0;
locvar_0090 = 0;
locvar_0091 = 1;
}
else {
out_data(0x03, 0x04);
out_data(0x57, 0x02);
}
out_data_ex(FLD0127, locvar_0065);
out_data_ex(FLD0128, locvar_0066);
out_data_ex(FLD0129, locvar_0067);
out_data_ex(FLD0130, locvar_0068);
out_data_ex(FLD0130_SER, locvar_0068_ser);
out_data_ex(FLD0130_PLL, locvar_0068_pll);
out_data_ex(FLD0130DRI, locvar_0068dri);
out_data_ex(FLD0134, locvar_0072);
out_data_ex(FLD0135, locvar_0073);
out_data_ex(FLD0136, locvar_0074);
out_data_ex(FLD0137, locvar_0075);
out_data_ex(FLD0138, locvar_0076);
out_data_ex(FLD0139, locvar_0077);
out_data_ex(FLD0140, locvar_0078);
out_data_ex(FLD0141, locvar_0079);
out_data_ex(FLD0142, locvar_0080);
out_data_ex(FLD0143, locvar_0081);
out_data_ex(FLD0145, locvar_0082);
out_data_ex(FLD0146, locvar_0083);
out_data_ex(FLD0147, locvar_0084);
out_data_ex(FLD0148, locvar_0085);
out_data_ex(FLD0149, locvar_0086);
out_data_ex(FLD0150, locvar_0087);
out_data_ex(FLD0151, locvar_0088);
out_data_ex(FLD0152, locvar_0089);
out_data_ex(FLD0153, locvar_0090);
out_data_ex(FLD0161, locvar_0091);
if(0==(pInfo_T_0002->channel & (CONST_0011 | CONST_0010)))
{
out_data(0x03, 0x01);
out_data(0x11, (0x80 | in_data(0x11)));
out_data(0x03, 0x04);
out_data(0x54, (0x10 | in_data(0x54)));
out_data(0x03, 0x00);
out_data(0x07, 0x5F);
out_data(0x08, 0xFF);
out_data(0x09, 0x7F);
}
if(0!=(pInfo_T_0002->channel & (CONST_0011 | CONST_0010)))
{
if (
(pInfo_T_0001->sfld_0001 > 100000)
)
{
out_data(0x03, 0x00);
out_data(0x07, 0x40 | in_data(0x07));
out_data(0x09, 0x28 | in_data(0x09));
out_data(0x0A, 0x20 | in_data(0x0A));
out_data(0x2B, 0x09);
}
}
{
}
return ch_true;
}
ch_bool func_gen_0004(ch_bool funpar_0001, uint8* funpar_0002, uint8* div_addr)
{
uint8 val_t;
if(funpar_0001)
{
if((*funpar_0002) <= 5)
{
(*div_addr)= 1<<(*funpar_0002);
}
else if((*funpar_0002) == 6 || (*funpar_0002) == 7)
{
(*div_addr) = 64;
}
else
{
return ch_false;
}
}
else
{
for(val_t=1; val_t<=6; ++val_t)
{
if(*div_addr == ( ((uint32)1) << val_t))
{
*funpar_0002 = val_t;
return ch_true;
}
}
return ch_false;
}
return ch_true;
}
ch_bool func_gen_0005(ch_bool funpar_0003, uint8* funpar_0004, uint8* div_addr)
{
uint8 val_t;
if(funpar_0003)
{
if((*funpar_0004) <= 3)
{
*div_addr = 1 << (*funpar_0004);
}
else if((4 == (*funpar_0004)) || (6 == (*funpar_0004)))
{
(*div_addr) = 16;
}
else if((5 == (*funpar_0004)) || (7 == (*funpar_0004)))
{
(*div_addr) = 32;
}
else
{
return ch_false;
}
}
else
{
for(val_t=0; val_t<=5; ++val_t)
{
if(*div_addr == ( ((uint32)1) << val_t))
{
*funpar_0004 = val_t;
return ch_true;
}
}
return ch_false;
}
return ch_true;
}
ch_bool func_gen_0006(ch_bool funpar_0005, uint8* funpar_0006, uint8* div_addr)
{
uint8 val_t;
if(funpar_0005)
{
if((*funpar_0006) <= 3)
{
*div_addr = 1 << (*funpar_0006);
}
else if((4 == (*funpar_0006)) || (6 == (*funpar_0006)))
{
(*div_addr) = 16;
}
else if((5 == (*funpar_0006)) || (7 == (*funpar_0006)))
{
(*div_addr) = 32;
}
else
{
return ch_false;
}
}
else
{
for(val_t=0; val_t<=5; ++val_t)
{
if(*div_addr == ( ((uint32)1) << val_t))
{
*funpar_0006 = val_t;
return ch_true;
}
}
return ch_false;
}
return ch_true;
}
ch_bool func_gen_0007(ch_bool funpar_0007, uint8* funpar_0008, uint8* div_addr)
{
if(funpar_0007)
{
switch(*funpar_0008)
{
case 0:
*div_addr = 1;
break;
case 4:
*div_addr = 2;
break;
case 1:
*div_addr = 3;
break;
case 8:
*div_addr = 4;
break;
case 2:
*div_addr = 5;
break;
case 5:
*div_addr = 6;
break;
case 3:
*div_addr = 7;
break;
case 12:
*div_addr = 8;
break;
default :
return ch_false;
}
}
else
{
switch(*div_addr)
{
case 1:
*funpar_0008 = 0;
break;
case 2:
*funpar_0008 = 4;
break;
case 3:
*funpar_0008 = 1;
break;
case 4:
*funpar_0008 = 8;
break;
case 5:
*funpar_0008 = 2;
break;
case 6:
*funpar_0008 = 5;
break;
case 7:
*funpar_0008 = 3;
break;
case 8:
*funpar_0008 = 0x0C;
break;
default :
return ch_false;
}
}
return ch_true;
}
ch_bool func_gen_0008(ch_bool funpar_0009, uint8* funpar_0010, uint8* div_addr)
{
if(funpar_0009)
{
if(*funpar_0010 <= 3)
{
(*div_addr)= (*funpar_0010) + 5;
return ch_true;
}
return ch_false;
}
else
{
if(*div_addr >= 5 && *div_addr <= 8)
{
*funpar_0010 = (*div_addr) - 5;
return ch_true;
}
return ch_false;
}
return ch_true;
}
ch_bool func_gen_0009(ch_bool funpar_0011, uint8* funpar_0012, uint8* div_addr)
{
if(funpar_0011)
{
if(*funpar_0012 <= 3)
{
(*div_addr)= (*funpar_0012) + 8;
return ch_true;
}
return ch_false;
}
else
{
if(*div_addr >= 8 && *div_addr <= 11)
{
*funpar_0012 = (*div_addr) - 8;
return ch_true;
}
return ch_false;
}
return ch_true;
}
ch_bool func_gen_0010(ch_bool funpar_0013, uint8* funpar_0014, uint8* div_addr)
{
uint8 val_t;
if(funpar_0013)
{
if(*funpar_0014 <= 3)
{
*div_addr= 1 << (*funpar_0014);
return ch_true;
}
return ch_false;
}
else
{
for(val_t=0; val_t<=3; ++val_t)
{
if(*div_addr == ( ((uint32)1) << val_t))
{
*funpar_0014 = val_t;
return ch_true;
}
}
return ch_false;
}
return ch_true;
}
ch_bool func_gen_0011(ch_bool funpar_0015, uint8* funpar_0016, uint8* div_addr)
{
if(funpar_0015)
{
switch(*funpar_0016)
{
case 0x00:
*div_addr = 1;
break;
case 0x04:
*div_addr = 2;
break;
case 0x08:
*div_addr = 3;
break;
case 0x0C:
*div_addr = 4;
break;
case 0x10:
*div_addr = 5;
break;
case 0x11:
*div_addr = 6;
break;
case 0x12:
*div_addr = 7;
break;
case 0x13:
*div_addr = 8;
break;
case 0x01:
*div_addr = 9;
break;
case 0x14:
*div_addr = 10;
break;
case 0x02:
*div_addr = 11;
break;
case 0x15:
*div_addr = 12;
break;
case 0x03:
*div_addr = 13;
break;
case 0x16:
*div_addr = 14;
break;
case 0x18:
*div_addr = 15;
break;
case 0x17:
*div_addr = 16;
break;
default:
return ch_false;
}
}
else
{
switch(*div_addr)
{
case 1:
*funpar_0016 = 0x00;
break;
case 2:
*funpar_0016 = 0x04;
break;
case 3:
*funpar_0016 = 0x08;
break;
case 4:
*funpar_0016 = 0x0C;
break;
case 5:
*funpar_0016 = 0x10;
break;
case 6:
*funpar_0016 = 0x11;
break;
case 7:
*funpar_0016 = 0x12;
break;
case 8:
*funpar_0016 = 0x13;
break;
case 9:
*funpar_0016 = 0x01;
break;
case 10:
*funpar_0016 = 0x14;
break;
case 11:
*funpar_0016 = 0x02;
break;
case 12:
*funpar_0016 = 0x15;
break;
case 13:
*funpar_0016 = 0x03;
break;
case 14:
*funpar_0016 = 0x16;
break;
case 15:
*funpar_0016 = 0x18;
break;
case 16:
*funpar_0016 = 0x17;
break;
default:
return ch_false;
}
}
return ch_true;
}
static void func_gen_0022(INPUT_INFO* pInfo_T_0001, struct timing_ch7036* pLvdsInput)
{
pInfo_T_0001->timing.ht = pLvdsInput->ht;
pInfo_T_0001->timing.ha = pLvdsInput->ha;
pInfo_T_0001->timing.ho = pLvdsInput->ho;
pInfo_T_0001->timing.hw = pLvdsInput->hw;
pInfo_T_0001->timing.vt = pLvdsInput->vt;
pInfo_T_0001->timing.va = pLvdsInput->va;
pInfo_T_0001->timing.vo = pLvdsInput->vo;
pInfo_T_0001->timing.vw = pLvdsInput->vw;
pInfo_T_0001->sfld_0001 = pLvdsInput->clk_khz;
pInfo_T_0001->pixel_fmt = pLvdsInput->pixel_fmt;
pInfo_T_0001->hs_pol = pLvdsInput->hs_pol;
pInfo_T_0001->vs_pol = pLvdsInput->vs_pol;
pInfo_T_0001->de_pol = pLvdsInput->de_pol;
pInfo_T_0001->sfld_0006 = POL_NO_INV;
pInfo_T_0001->sfld_0007 = POL_NO_INV;
pInfo_T_0001->sfld_0008 = CONST_0002;
pInfo_T_0001->sfld_0009 = 0;
pInfo_T_0001->i2s_len = 0;
pInfo_T_0001->sfld_0011 = 0;
}
static void func_gen_0023(OUTPUT_INFO* pInfo_T_0002, struct timing_ch7036* pHdmiOutput)
{
pInfo_T_0002->sfld_iot02.sfld_0014 = (PIXEL_HDMI_ENCODE_DVI & pHdmiOutput->pixel_fmt) ? 1 : 0;
pInfo_T_0002->sfld_iot02.sfld_0015 = PIXEL_HDMI_FOTMAT(pHdmiOutput->pixel_fmt);
pInfo_T_0002->sfld_iot02.sfld_0016 = PIXEL_HDMI_ASPECT(pHdmiOutput->pixel_fmt);
pInfo_T_0002->timing.ht = pHdmiOutput->ht;
pInfo_T_0002->timing.ha = pHdmiOutput->ha;
pInfo_T_0002->timing.ho = pHdmiOutput->ho;
pInfo_T_0002->timing.hw = pHdmiOutput->hw;
pInfo_T_0002->timing.vt = pHdmiOutput->vt;
pInfo_T_0002->timing.va = pHdmiOutput->va;
pInfo_T_0002->timing.vo = pHdmiOutput->vo;
pInfo_T_0002->timing.vw = pHdmiOutput->vw;
pInfo_T_0002->sfld_0019 = pHdmiOutput->clk_khz;
pInfo_T_0002->channel = CONST_0009 | CONST_0010 | CONST_0011;
pInfo_T_0002->sfld_iot01.sfld_0012 = CONST_0026;
pInfo_T_0002->sfld_iot01.sfld_0013 = (POL_LOW << 4) | (POL_LOW << 3) | (POL_LOW << 2) | (POL_LOW << 1) | (POL_LOW << 0);
pInfo_T_0002->sfld_iot01.pixel_fmt = PIXEL_FMT_18BIT;
pInfo_T_0002->sfld_iot02.sfld_0012 = 0;
pInfo_T_0002->sfld_iot02.sfld_0017 = POL_NO_INV;
pInfo_T_0002->sfld_iot02.hs_pol = pHdmiOutput->hs_pol;
pInfo_T_0002->sfld_iot02.vs_pol = pHdmiOutput->vs_pol;
pInfo_T_0002->sfld_iot02.sfld_0018 = 0;
pInfo_T_0002->sfld_iot02.sfld_0051 = (PIXEL_HDMI_ENCODE_INTERLACE & pHdmiOutput->pixel_fmt) ? 1 : 0;;
pInfo_T_0002->sfld_0020 = SCALE_HDOWN(pHdmiOutput->scale);
pInfo_T_0002->sfld_0021 = SCALE_VDOWN(pHdmiOutput->scale);
pInfo_T_0002->sfld_0050 = 0;
pInfo_T_0002->sfld_0022 = 0;
pInfo_T_0002->sfld_0023 = 0;
}
static void func_gen_0024(PREFER_INFO* pInfo_T_0003)
{
pInfo_T_0003->sfld_0024 = 166000;
pInfo_T_0003->sfld_0025 = 1;
pInfo_T_0003->sfld_0026 = 0;
pInfo_T_0003->sfld_0027 = 0;
pInfo_T_0003->sfld_0028 = 0;
pInfo_T_0003->sfld_0029 = CONST_0035;
pInfo_T_0003->sfld_0030 = CONST_0020;
pInfo_T_0003->sfld_0031 = 1;
pInfo_T_0003->sfld_0033 = 0;
pInfo_T_0003->sfld_0032 = 130;
}
void SetGlobalConfigCH7036(struct config_ch7036* pCfg)
{
if (pCfg) {
global_config.deviceid = pCfg->deviceid;
global_config.revisionid = pCfg->revisionid;
global_config.comv_off = pCfg->comv_off;
global_config.drv_strength = pCfg->drv_strength;
global_config.fbdly = pCfg->fbdly;
global_config.refdly = pCfg->refdly;
global_config.lvds_inout = pCfg->lvds_inout;
}
}
uint32 GenTableCH7036( struct timing_ch7036* pLvdsInput,
struct timing_ch7036* pHdmiOutput,
struct reg_ch7036** ppRegTable
)
{
return GenTableCH7036_outcfg(pLvdsInput, pHdmiOutput, ppRegTable,
OUTCFG_LVDS | OUTCFG_HDMI);
}
uint32 GenTableCH7036_outcfg( struct timing_ch7036* pLvdsInput,
struct timing_ch7036* pTimingOutput,
struct reg_ch7036** ppRegTable,
unsigned int outcfg
)
{
INPUT_INFO input_info;
OUTPUT_INFO output_info;
PREFER_INFO prefer_info;
DEV_CONTEXT DevContext;
uint32 last_error;
if (ppRegTable) *ppRegTable =0;
func_gen_0022(&input_info, pLvdsInput);
func_gen_0023(&output_info, pTimingOutput);
output_info.channel = outcfg & 0x07;
func_gen_0024(&prefer_info);
DevContext.pInfo_T_0001 = &input_info;
DevContext.pInfo_T_0002 = &output_info;
DevContext.pInfo_T_0003 = &prefer_info;
iic_reset();
{
}
if(!func_gen_0019(&DevContext))
{
last_error = GetLastErrorMessage();
if(last_error == 106)
{
prefer_info.sfld_0027 = 0;
prefer_info.sfld_0028 = 1;
if(!func_gen_0019(&DevContext))
{
if(GetLastErrorMessage() == 107)
{
prefer_info.sfld_0028 = 0;
}
}
}
if(last_error == 107)
{
prefer_info.sfld_0028 = 0;
}
if(!func_gen_0019(&DevContext))
{
last_error= GetLastErrorMessage();
return last_error;
}
}
if(!func_gen_0020(&DevContext))
{
last_error= GetLastErrorMessage();
return last_error;
}
if(!func_gen_0021(&DevContext))
{
last_error= GetLastErrorMessage();
return last_error;
}
if (DevContext.pInfo_T_0002->channel != CONST_0009)
{
uint8 val_t;
out_data(0x03, 0x00);
append_reg(0x03, 0x00);
val_t = in_data(0x0A);
val_t |= 0x80;
append_reg(0x0A, val_t);
val_t &= 0x7F;
append_reg(0x0A, val_t);
val_t &= 0xEF;
append_reg(0x0A, val_t);
}
func_gen_0001();
if (ppRegTable) *ppRegTable = global_arr_005;
return 0;
}