www.pudn.com > init_t102_au.rar > gpio.c
#include "user_init.h"
#include "pu8560.h"
#include "config.h"
#include "regmap.h"
#include "global.h"
#include "epp.h"
#include "gpio.h"
#ifdef SUPPORT_CARD_STORAGE
#include "cardfs.h"
#endif
#include "osd.h"
//#define GPIO_DBG 1
#include "iop.h"
#include "kernel.h"
#ifdef EASTWIN
#include "iop.h"
#include "kernel.h" // Kevin Sep 20,04
extern void show_level(int id,INT8 level,BYTE total_level);
//extern void load_t102_factory_value(void);
#if 1
/* Default parameter table of AN2526H */
unsigned char color_drv_data[16] = { 0x84,0x8b,0xbf,0x73,/* 0,1,2,3 */
0x47,0xca,0xad,0x7f,/* 4,5,6,7 */
0x5f,0x5f,0x85,0x7f,/* 8,9,10,11 */
0xe4,0x6e,0x3c,0xcc /* 12,13,14,15 */
};
#endif
#if 0
/* Default parameter table of AN2526H from Maple */
unsigned char color_drv_data[16] = { 0x13,0x11,0xe0,0xdd,/* 0,1,2,3 */
0x8f,0xed,0xa5,0x80,/* 4,5,6,7 */
0x7f,0x73,0x80,0x80,/* 8,9,10,11 */
0xff,0x82,0x80,0xac /* 12,13,14,15 */
};
#endif
#endif
#ifdef SUPPORT_Auo_2inch_Digital_panel
void init_auo_digital_panel(void);
#endif
#ifdef SUPPORT_Auo_UPS053_Digital_panel
#if 0
BYTE auo_053_ntsc[25]={ /*00*/0xE3, /*01*/0xE0, /*02*/0x96, /*03*/0x06,
/*04*/0x00,/*05*/0x0E, /*06*/0x52, /*07*/0x02,
/*08*/0x6A, /*09*/0x9C,/*0A*/0xB4, /*0B*/0x50,
/*0C*/0xF7, /*0D*/0x80, /*0E*/0x20, /*0F*/0xC1,
/*10*/0xCE, /*11*/0x07, /*12*/0x91, /*13*/0x01,
/*14*/0x80, /*15*/0x00, /*16*/0x00, /*17*/0x00,
/*18*/0x00
};
BYTE auo_053_ntsc[25]={ /*00*/0xE2, /*01*/0x28, /*02*/0x96, /*03*/0x06,
/*04*/0x00,/*05*/0x10, /*06*/0x52, /*07*/0x02,
/*08*/0x6A, /*09*/0x9C,/*0A*/0xB4, /*0B*/0x50,
/*0C*/0xF7, /*0D*/0x80, /*0E*/0x20, /*0F*/0xC1,
/*10*/0xCE, /*11*/0x00, /*12*/0x91, /*13*/0x01,
/*14*/0x30, /*15*/0x00, /*16*/0x00, /*17*/0x00,
/*18*/0xc7
};
BYTE auo_053_ntsc[25]={
/*00*/0xE1, /*1*/0x28, /*2*/0x96, /*3*/0x06,
/*04*/0x0B,/*5*/0x10, /*6*/0x15, /*7*/0x07,
/*08*/0x44, /*9*/0x9C,/*A*/0xB4, /*B*/0x52,
/*0C*/0xE4, /*D=4A-DVD;8A-decoder*/0x4A, /*E*/0x60, /*F*/0x40,
/*10*/0x6C, /*1*/0x00, /*2*/0x91, /*3*/0x01,
/*14*/0x30, /*5*/0xFF, /*6*/0x00, /*7*/0x00,
/*18*/0x47
};
#endif
BYTE auo_053_ntsc[25]={ /*00*/0xE2, /*01*/0x28, /*02*/0x96, /*03*/0x06,
/*04*/0x00,/*05*/0x10, /*06*/0x52, /*07*/0x02,
/*08*/0x6A, /*09*/0x9C,/*0A*/0xB4, /*0B*/0x50,
/*0C*/0xF7, /*0D*/0x80, /*0E*/0x20, /*0F*/0xC1,
/*10*/0xCE, /*11*/0x00, /*12*/0x91, /*13*/0x01,
/*14*/0x30, /*15*/0x00, /*16*/0x00, /*17*/0x00,
/*18*/0xc7
};
void init_auo_ups053_digital_panel(void);
#endif
#ifdef SUPPORT_Auo_UPS018_Digital_panel
#if 0
BYTE auo_018_ntsc[5]={ /*00*/0x7a, /*1*/0x4e, /*2*/0x71, /*3*/0x80,
/*04*/0x91};//////for 480*234 pannel (1)
BYTE auo_018_ntsc[5]={ /*00*/0x7b, /*1*/0x4e, /*2*/0x71, /*3*/0x80,
/*04*/0x91};//////for 480*234 pannel (2)
BYTE auo_018_ntsc[5]={ /*00*/0x67, /*1*/0x4e, /*2*/0x71, /*3*/0x80,
/*04*/0x91};/////for 7" pannel out for 4:3
BYTE auo_018_ntsc[5]={ /*00*/0x7f, /*1*/0x4e, /*2*/0x71, /*3*/0x80,
/*04*/0x91};/////for 7" pannel out for 16:9
#endif
BYTE auo_018_ntsc[5]={ /*00*/0x7a, /*1*/0x4e, /*2*/0x71, /*3*/0x80,
/*04*/0x91};//////for 480*234 pannel (1)
BYTE color_drv_data[16] = { 0x84,0x8b,0xbf,0x73,/* 0,1,2,3 */
0x47,0xca,0xad,0x7f,/* 4,5,6,7 */
0x5f,0x5f,0x85,0x7f,/* 8,9,10,11 */
0xe4,0x6e,0x3c,0xcc /* 12,13,14,15 */
};
BYTE an2526_data_ntsc[16] =
{
0x84, // 0 Vertical sync. signal output position
0x8e, // 1 Horizontal sync. signal output position
0x80, // 2 PWM duty
0x98, // 3 Common pulse amplitude
0x80, // 4 Y-gain
0xcf,//0xbf, // 5 Color gain
0xbe,//0xbe, // 6 Hue
0x80, // 7 Black-limiter level
0x5f,//0x6c, // 8 Bright
0x80, // 9 Y-aperture gain
0x8b, // 10 R-ch. sub bright
0x87, // 11 B-ch. sub bright
0x80, // 12 White peak limiter
0x89, // 13 Gamma-1 Knee level
0x80, // 14 Gamma-2 Knee level
0x99//0x8a // 15 RGB contrast
};
void init_auo_ups018_digital_panel(void);
#endif
//
// FUNCTION
// reset_gpio
//
// restore GPIO initial state
//
#ifdef PORTABLE_DVD
#include "gpio_portable.c" //0725 splitted for portable
#endif
#if defined(PMP_DVD)
//extern void hwHddPowerOn(void);//kenny 2005/5/13
extern void Set_PMP_Key(void);
//kenny 2005/5/12 move the code from pmp_drv.c
///for PMP power control
void ioPowerOff(void)
{
//CUT_USB_PWR set it to be low
regs0->sft_cfg1=regs0->sft_cfg1&(~(1<<0x02));//pin77,GPIO 17
GPIO_M_SET(17,1);
GPIO_E_SET(17,1);
GPIO_O_SET(17,0);
}
inline void hwCfpowerOn(void)
{
//pin78 set it to be high , let CF power on
regs0->sft_cfg1=regs0->sft_cfg1&(~(1<<0x01));//pin78,GPIO 18
GPIO_M_SET(18,1);
GPIO_E_SET(18,1);
GPIO_O_SET(18,1);
}
inline void hw8202IdeBusOn(void)
{
//pin61 set it to be high , let 8202 ide bus switch on
regs0->sft_cfg4=regs0->sft_cfg4&(~(1<<0x04));//pin61,GPIO 4
GPIO_M_SET(4,1);
GPIO_E_SET(4,1);
GPIO_O_SET(4,1);
}
inline void hwHddPowerOn(void)
{
//Power on HDD HDD_PWR is set to high , pin152 GPIO 31
GPIO_M_SET(30,1);
GPIO_E_SET(30,1);
GPIO_O_SET(30,1);
}
void ioPowerOn(void)
{
//CUT_USB_PWR set it to be high, cut the connect between VCC5_USB and Vcc5_IO
regs0->sft_cfg1=regs0->sft_cfg1&(~(1<<0x02));//pin77,GPIO 17
GPIO_M_SET(17,1);
GPIO_E_SET(17,1);
GPIO_O_SET(17,1);
hw8202IdeBusOn();
hwHddPowerOn();
delay_1ms(10);
hwCfpowerOn();
}
void PMP_gpio_init()
{
regs0->sft_cfg1 &= ~(0x1 << 2); //set GPIO 17 ca8202 pin77 yangli add 2005/4/20
GPIO_M_SET(CUT_PANEL_POWER ,1);
GPIO_E_SET(CUT_PANEL_POWER ,1);
GPIO_O_SET(CUT_PANEL_POWER ,0);
regs0->sft_cfg4 &= ~(0x1 << 2);
GPIO_M_SET(2 ,1);
GPIO_E_SET(2 ,0);
regs0->sft_cfg0 &= ~(0x1 << 5); //set GPIO 38 ca8202 pin161
GPIO_E_SET(PC_USB_CONNECT_PIN, 0); //pin161 is Pc Usb Vcc detect pin
//pin61 set it to be high , let 8202 ide bus switch on
regs0->sft_cfg4=regs0->sft_cfg4&(~(1<<0x04)); //pin61,GPIO 4
GPIO_M_SET(IDE_BUS_SWITCH_CONTROL_PIN,1);
GPIO_E_SET(IDE_BUS_SWITCH_CONTROL_PIN,1);
GPIO_O_SET(IDE_BUS_SWITCH_CONTROL_PIN,1);
//pin64
GPIO_M_SET(USB_DEVICE_CHIP_POWER_PIN,1);
GPIO_E_SET(USB_DEVICE_CHIP_POWER_PIN,1);
#ifdef PMP_PCB_VER_B
GPIO_O_SET(USB_DEVICE_CHIP_POWER_PIN,0);
#else //PMP_PCB_VER_C
GPIO_O_SET(USB_DEVICE_CHIP_POWER_PIN,1);
hwHddPowerOn();
#endif
#ifdef PMP_KEYBOARD//xyy add 2005-1-13
Set_PMP_Key();
#endif
}
#endif //#if defined(PMP_DVD)
//kenny 2005/5/12 move the code from pmp_drv.c
#ifdef IDE_CF_SW
/**************************************************************************
* *
* Function Name: hwCfCardStandby *
* *
* Purposes: *
* disable CF card interface *
* Descriptions: *
* *
* Arguments: *
* on : 1 -> CF enter to stanby *
* 0 -> CF out of stand by mode *
* Returns: *
* None *
* See also: *
* *
**************************************************************************/
void hwCfCardStandby(UINT8 on)
{
regs0->sft_cfg3=regs0->sft_cfg3&(~(1<<7));//pin194 GPIO51
GPIO_M_SET(51,1);
GPIO_E_SET(51,1);
if(on)
{
// printf("CF is OFF #########################\n");
GPIO_O_SET(51,0);
delay_1ms(2);
}
else
{
// printf("CF is ON #########################\n");
GPIO_O_SET(51,1);
delay_1ms(10);
}
}
#endif //#ifdef IDE_CF_SW
void reset_gpio(void)
{
#ifdef CONTROL_STANDBY_MCU
GPIO_M_SET(CONTROL_POWER_GPIO,1);
GPIO_E_SET(CONTROL_POWER_GPIO,1);
GPIO_O_SET(CONTROL_POWER_GPIO,1);
#endif
#ifdef MIDI_CHECK_PASSWORD_PASS_MCU //lijd 2005-2-25 14:25
//Set gpio STB,CLK,DAT use for RISC
GPIO_M_SET(STB, 1);
GPIO_M_SET(CLK, 1);
GPIO_M_SET(DAT, 1);
//Set gpio STB as input port
GPIO_E_SET(STB, 0);
//Set gpio CLK,DAT as output port
GPIO_E_SET(CLK, 1);
GPIO_E_SET(DAT, 1);
//Set gpio CLK,DAT output high
GPIO_O_SET(CLK, 1);
GPIO_O_SET(DAT, 1);
#endif
//wanghaoying add 2005-3-28 9:51 for wuxi-oritron w5690 type: slot in loader dector pin
#ifdef W5690
//---> set 8202/256 pin62 as gpio5
regs0->sft_cfg2 &= ~(0x3 << 10);
regs0->sft_cfg4 &= ~(0x1 << 5);
regs0->sft_cfg8 &= ~(0x3 << 8);
//---> set gpio5 control by RISC
GPIO_M_SET(5,1);
//---> set gpio5 as input pin
GPIO_E_SET(5,0);
//---> set 8202/256 pin65 as gpio8
regs0->sft_cfg2 &= ~(0x3 << 10);
regs0->sft_cfg4 &= ~(0x1 << 6);
regs0->sft_cfg8 &= ~(0x1 << 9);
//---> set gpio8 control by RISC
GPIO_M_SET(8,1);
//---> set gpio8 as input pin
GPIO_E_SET(8,0);
//---> set 8202/256 pin78 as gpio18
regs0->sft_cfg1 &= ~(0x1 << 1);
regs0->sft_cfg8 &= ~(0x1 << 9);
//---> set gpio18 control by RISC
GPIO_M_SET(18,1);
//---> set gpio18 as input pin
GPIO_E_SET(18,0);
#endif//#ifdef W5690
#if defined(MINTON_DVD)&&defined(TOP_DOOR_LOADER) //liudan,for ngailik top_door sense pin,2005-1-12 11:31
regs0->sft_cfg4 &= ~(0x1 << 6);
GPIO_M_SET(8,1);
GPIO_E_SET(8,0);
#endif
#ifdef IR_SWITCH_CD_USB_CF_OTHER //dingzhy use vfd data test bus switch 4-10-22 10:41
// GPIO_E_SET(23,1);
#endif
#ifdef AKI_2CH_KEY_SCAN //linrc add for AKI 2004-12-31 10:42
GPIO_M_SET(22,1);
GPIO_M_SET(23,1);
GPIO_E_SET(22,1);
GPIO_E_SET(23,1);
GPIO_O_SET(22,1);
GPIO_O_SET(23,1);
#endif
#ifdef NINTAUS_612_SCAN_KEY //linrc 2004-6-9 17:52
regs0->sft_cfg1 &= ~(0x1 << 3);//PIN29 use as CARD_RESET gpio3
GPIO_M_SET(3,1);
GPIO_M_SET(4,1);
GPIO_M_SET(54,1);//set used by RISC
GPIO_M_SET(55,1);//set
GPIO_M_SET(56,1);//set
GPIO_E_SET(54,0);//set CLK as input
GPIO_E_SET(55,0);//set STB as input
GPIO_E_SET(56,1);//set STB as output
GPIO_E_SET(3,1); //linrc modify 2004-6-7 19:30
GPIO_E_SET(4,1);
#endif //end NINTAUS_612_SCAN_KEY
#if defined(HANYANG_SCAN_KEY)||defined(HJ2439_SCAN_KEY) //caoh 2004-4-19 12:00
regs0->sft_cfg3 &= ~(0x1 << 5);//PIN163 use as SCART_RGB gpio57
regs0->sft_cfg6 &= ~(0x1 << 5);//PIN151 use as SCART_SW gpio18
GPIO_M_SET(54,1);
GPIO_M_SET(55,1);
GPIO_M_SET(56,1);
GPIO_M_SET(57,1);
GPIO_M_SET(18,1);
GPIO_E_SET(57,1);
GPIO_E_SET(18,1);
GPIO_E_SET(55,1);
#endif
#ifdef DP3240_KEY_SCAN // add xrh
#ifdef STBY_CONTROLLER_IO_61PIN_12GPIO
GPIO_M_SET(12,1); //pin 61 gpio 12 s-by
GPIO_E_SET(12,1); //pin 61 gpio 12 s-by
GPIO_O_SET(12,1); //pin 61 gpio 12 s-by
#endif
GPIO_M_SET(PLAY_LED_1,1); // gpio 13 pin 62 led 2
GPIO_E_SET(PLAY_LED_1,1); // gpio 13 pin 62 led 2
GPIO_O_SET(PLAY_LED_1,1);
GPIO_M_SET(POWER_LED_2,1); // gpio 14 pin 63 led 3
GPIO_E_SET(POWER_LED_2,1); //gpio 14 pin 63 led 3
GPIO_O_SET(POWER_LED_2,1);
#endif
#ifdef DP2030_SCAN_KEY //caoh 2004-4-19 12:00
GPIO_M_SET(PANEL_LED_PLAY,1); //PANEL_LED1 pin82
GPIO_E_SET(PANEL_LED_PLAY,1); //SETUP AS OUTPUT
GPIO_O_SET(PANEL_LED_PLAY,1); //PLAY
GPIO_M_SET(PANEL_LED_POWER,1); //PANEL_LED2 pin83
GPIO_E_SET(PANEL_LED_POWER,1);
GPIO_O_SET(PANEL_LED_POWER,1); //POWER
GPIO_M_SET(23,1); //SCAN_KEY1 pin84
GPIO_M_SET(93,1); //SCAN_KEY2 pin226
GPIO_M_SET(94,1); //SCAN_KEY3 pin227
GPIO_M_SET(97,1); //SCAN_KEY4 pin230
GPIO_M_SET(98,1); //SCAN_KEY5 pin231
GPIO_M_SET(100,1); //SCAN_KEY6 pin233
GPIO_M_SET(99,1); //DOOR_SENSE_GPIO
GPIO_E_SET(23,1); //KEY1
GPIO_E_SET(93,1); //KEY2
GPIO_E_SET(98,1); //KEY5
GPIO_E_SET(99,0); //as input DOOR_SENSE_GPIO
GPIO_E_SET(94,0); //KEY3
GPIO_E_SET(97,0); //KEY4
GPIO_E_SET(100,0); //KEY6
//GPIO_O_SET(DOOR_SENSE_GPIO,1);
#endif//#ifdef DP2030_SCAN_KEY
#ifdef DP30H0_KEY_SCAN //add 2004-5-14 xia
//wthsin
regs0->sdc_data_cnt[6][0] |= (0x0c);//Disable ROM_A21(Pin226),ROM_A22(Pin227) as GPIO93,94
GPIO_M_SET(21,1); //PANEL_LED1 pin82
GPIO_M_SET(22,1); //PANEL_LED2 pin83
GPIO_M_SET(23,1); //bit PIN 84
regs0->sft_cfg1 &= ~(0x1 << 4); //gpio 94 intput
regs0->sft_cfg1 &= ~(0x1 << 5); //gpio 97 output
GPIO_M_SET(93,1); //SCAN_KEY1 pin226
GPIO_M_SET(94,1); //SCAN_KEY2 pin227
GPIO_M_SET(97,1); //SCAN_KEY3 pin230
GPIO_M_SET(98,1); //SCAN_KEY4 pin231
GPIO_M_SET(99,1); //SCAN_KEY5 pin232
GPIO_M_SET(100,1); //SCAN_KEY6 pin233
GPIO_E_SET(21,1); //SETUP AS OUTPUT
GPIO_E_SET(22,1);
GPIO_E_SET(23,1);
GPIO_E_SET(97,1); //KEY3
GPIO_E_SET(98,1); //KEY4
GPIO_E_SET(99,1); //KEY5
GPIO_E_SET(100,1); //KEY6
GPIO_E_SET(93,0); //key1
GPIO_E_SET(94,0); //key2
GPIO_O_SET(PANEL_LED_POWER,1); //POWER
GPIO_O_SET(PANEL_LED_PLAY,1); //PLAY
GPIO_O_SET(PANEL_LED_CLOCK,0); //clock
GPIO_O_SET(IR_LED,0);
#endif//#ifdef DP30H0_KEY_SCAN
//dingzhy 3-11-17 10:15
#ifdef USE_VFD_GAME_PORT_TO_KEYBOARD_HJ_DP313
regs0->sft_cfg6 &= ~(0x1 << 4); // A11 as GPIO14
regs0->sft_cfg6 &= ~(0x1 << 6); // BA1 as GPIO15
GPIO_M_SET(14,1);//1 risc use
GPIO_M_SET(15,1);
GPIO_M_SET(56,1);
GPIO_M_SET(55,1);
GPIO_M_SET(54,1);
GPIO_E_SET(14,0);// 0 input
GPIO_E_SET(15,0);
GPIO_E_SET(56,0);
GPIO_E_SET(55,0);
GPIO_E_SET(54,0);
regs0->sft_cfg1 &= ~(0x1 << 3);//GPIO3 pin29 use as MP3 LIGHT
regs0->sft_cfg3 &= ~(0x3 << 14);//GPIO62 63 pin175 176 use as DVD CD LIGHT
regs0->sft_cfg2 &= ~(0x7 << 2);//GPIO62 63 pin175 176 use as DVD CD LIGHT
GPIO_M_SET(3,1);//1 risc use
GPIO_M_SET(62,1);
GPIO_M_SET(63,1);
GPIO_E_SET(3,1);// 1 output
GPIO_E_SET(62,1);
GPIO_E_SET(63,1);
GPIO_O_SET(3,1);
GPIO_O_SET(62,1);
GPIO_O_SET(63,1);
#endif
#ifndef ROM_ATA_SHARE_BUS
regs0->sft_cfg1 &= ~(0x3 << 1);
#else
#ifdef SUPPORT_CARD_STORAGE
regs0->sft_cfg1 |= (0x7 << 0);
regs0->sft_cfg1 &= ~(0x1 << 3);
#endif
#endif
#ifdef PORTABLE_DVD //Jack added for all PDVD customers
portable_reset_gpio(); //0725 splitted for portable
#endif
/*
#ifdef SUPPORT_8202_EXT_ADC //chyeh 2005/03/21
regs0->sft_cfg3 &= 0xf3ff;
regs0->sft_cfg3 |= 0x0400;
#endif
*/
#ifdef SUPPORT_8202D_EXT_ADC //chyeh 2005/03/21
regs0->sft_cfg13 &= (~((0x1f)<<4));
regs0->sft_cfg13 |= (0x4<<4);
#endif
#ifdef SUPPORT_RECEIVER // benosn add extrenal AD interface PIN 130,131,133
#ifdef SUPPORT_EXT_ADC
regs0->sft_cfg0 &= ~((0x0fffc)<<1);
regs0->gpio_master[2]|= 0x01b0; //GPIO 37~47
//regs0->gpio_oe[2]|= 0xe980;
regs0->gpio_oe[2]&= ~(0x01b0);
//regs0->gpio_out[2]|= 0x0900;
//regs0->gpio_out[2]&= ~(0xe080);
regs0->sft_cfg3 &= 0xfff8;
regs0->sft_cfg3 |= 0x0004;
#endif
#ifdef SUPPORT_8202_216_EXT_ADC // benson add 2004.08.18 pin 59,61,62 hongfeng modify 2005-05-18
regs0->sft_cfg3 &= 0xf3ff;
regs0->sft_cfg3 |= 0x0400;
#endif
#ifdef SUPPORT_8202_EXT_ADC // benson add 2004.08.23 pin 169,171,172
regs0->sft_cfg3 &= 0xf3ff;
regs0->sft_cfg3 |= 0x0800;
#endif
#endif
#if defined(SUPPORT_USB)&&defined(HOST_SL811HS) //wthsin, 2004/1/12 01:36pm
regs0->sft_cfg1 |= (0x7 << 0);
#endif
/*a block is removed. huziqin 2004-2-26*/
#ifdef PCM1742 //Jeff 20030917
regs0->sft_cfg1 |= (0x7 << 0);
regs0->sft_cfg1 &= ~(0x1 << 3);
#endif
#if defined(PCM1742)&&defined(CHECK_DAC_ZERO_FLAG_TO_GPIO_MUTE) //gerry,3-10-20 11:36
regs0->sft_cfg6 &= ~(0x1 << 4); // SA11 as GPIO 14, pin 109
GPIO_M_SET(14,1);//GPIO_M_SET(35,1);
GPIO_E_SET(14,0);//GPIO_E_SET(35,0);
#endif
#ifdef USE_CD_SENSE_PIN_AS_LED_GPIO //gerry,2004-2-10 18:33
GPIO_M_SET(4,1);
GPIO_E_SET(4,1);
GPIO_O_SET(4,0);
#endif//USE_CD_SENSE_PIN_AS_LED_GPIO
#ifdef USE_PIN31_CONTROL_POWER_LED //gerry,normal led is high on,2004/2/11 05:31¤U¤È
GPIO_M_SET(4,1);
GPIO_E_SET(4,1);
GPIO_O_SET(4,0);
#endif//USE_PIN31_CONTROL_POWER_LED
#ifdef GBM_USE_GPIO_CONTROL_LED //use gpio44(pin138) control led on/off,2004/2/11 08:54¤U¤È
GPIO_M_SET(44,1);
GPIO_E_SET(44,1);
GPIO_O_SET(44,1);
#endif//GBM_USE_GPIO44_CONTROL_LED
#if defined(SUPPORT_CARD_STORAGE) && defined(CARD_HOT_PLUG)
//#ifndef GBM_CARD_READER
#if (!defined(GBM_CARD_READER))&&(!defined(HJ023_CARD_READER))&&(!defined(QSI_PORTABLE_DVD))//wangfeng 2003-12-3 21:32
#ifdef MIDI_4_FSLOADER_CARD
regs0->sft_cfg3 &= ~(0x1 << 5); //PIN163 use as CD_CARD_DETECT_PIN(GPIO57)
#else
regs0->sft_cfg6 &= ~(0x1 << 4);//PIN109 use as SCART_SW1 gpio14 //wthsin
#endif
#endif//#ifndef GBM_CARD_READER
regs0->gpio_master[CARD_RESET_PIN / 16] |= (0x1 << (CARD_RESET_PIN % 16));
regs0->gpio_master[CF_CARD_DETECT_PIN / 16] |= (0x1 << (CF_CARD_DETECT_PIN % 16));
regs0->gpio_master[CD_CARD_DETECT_PIN / 16] |= (0x1 << (CD_CARD_DETECT_PIN % 16));
#elif defined(CF_GPIO_CONTROL_COLOR)
// #define VFD_BACK_COLOR_RED 3 //GPIO 17 ca720 pin29
//#define VFD_BACK_COLOR_GREEN 2 //GPIO 18 ca720 pin28
// #define VFD_BACK_COLOR_BLUE 4 //GPIO 19 ca720 pin163
regs0->gpio_master[3 / 16] |= (0x1 << (3 % 16));
regs0->gpio_master[2 / 16] |= (0x1 << (2 % 16));
regs0->gpio_master[4 / 16] |= (0x1 << (4 % 16));
GPIO_E_SET(3,1);
GPIO_E_SET(2,1);
GPIO_E_SET(4,1);
#endif
#ifdef CHECKPHONE //////////////////////yangli2004-10-10
regs0->sft_cfg3 &= ~((0x01)<<8); //////PIN164 use as PHONE_SW gpio58
GPIO_M_SET(58,1);
GPIO_E_SET(58,0);
#endif
#ifdef AUDIO_MUTE_2
regs0->sft_cfg1 |= (0x7 << 0);
regs0->sft_cfg1 &= ~(0x1 << 3);
regs0->gpio_master[ 2/16 ] |= 0x1 << (2%16);
regs0->gpio_master[ 3/16 ] |= 0x1 << (3%16);
regs0->gpio_oe[ 2/16 ] |= 0x1 << (2%16);
regs0->gpio_out[2/16 ] &= ~(0x1 << (2%16));
regs0->gpio_oe[ 3/16 ] |= 0x1 << (3%16);
regs0->gpio_out[3/16 ] &= ~(0x1 << (3%16));
delay_1ms(1000);
regs0->gpio_out[3/16 ] |= (0x1<<(3%16));
delay_1ms(1000);
regs0->gpio_out[2/16 ] |= (0x1<<(2%16));
#endif
#ifdef USE_PIN151CN_LED //freyman 2004-3-16 11:19 for wuxi oritron
regs0->sft_cfg6 &= ~(0x1 << 5);
GPIO_M_SET(18,1);
GPIO_E_SET(18,1);
GPIO_O_SET(18,0);
#endif
#if defined(SUPPORT_AUDIO_RESET)&&defined(HANYANG_4340_AUDRESET)
//#ifdef SUPPORT_AUDIO_RESET //2004-4-27 01:03?ÓîM
GpioResetAudio();
#endif
#if defined(SCART_TV)&&defined(ORI_SCART_TV)
// GPIO39 (ROM_ADDR22) = SCART_SIGNAL_MODE
// GPIO38 (ROM_ADDR21) = SCART_DISPLAY_MODE
// GPIO37 (ROM_ADDR20) = SCART_RELEASE_TV
regs0->sft_cfg0 &= ~(0x3f << 1);
regs0->gpio_oe[37 / 16] |= (0x7 << (37 % 16));
regs0->gpio_out[37 / 16] &= ~(0x1 << (37 % 16));
regs0->gpio_out[38 / 16] &= ~(0x1 << (38 % 16));
regs0->gpio_out[39 / 16] &= ~(0x1 << (39 % 16));
#elif defined(KSD_SCART_TV)
regs0->sft_cfg3 &= ~(0x1 << 5);//PIN163 use as SCART_RGB gpio57
regs0->sft_cfg6 &= ~(0x1 << 5);//PIN151 use as SCART_SW gpio18
GPIO_M_SET(57,1);
GPIO_E_SET(57,1);
GPIO_O_SET(57,0);
GPIO_M_SET(18,1);
GPIO_E_SET(18,1);
GPIO_O_SET(18,0);
#elif defined(SCART_TV_2) //wanghaoying 2003-8-13 15:11 added
regs0->sft_cfg3 &= ~(0x1 << 5);//PIN163 use as SCART_RGB gpio57
regs0->sft_cfg6 &= ~(0x1 << 5);//PIN151 use as SCART_SW gpio18
GPIO_M_SET(57,1);
GPIO_E_SET(57,1);
GPIO_O_SET(57,0);
GPIO_M_SET(18,1);
GPIO_E_SET(18,1);
GPIO_O_SET(18,0);
#ifdef NIN_SCART_TV //fangang added 4-2-11 17:13
GPIO_M_SET(2,1); //pin28 use as scart_standby gpio2
GPIO_E_SET(2,1);
GPIO_O_SET(2,0);
#endif
#ifdef YILI_SCART_TV //hq add for ngailik 1003, 4-2-17 10:03
GPIO_M_SET(4,1); //pin31 use as scart_standby gpio2
GPIO_E_SET(4,1);
GPIO_O_SET(4,0);
#endif
#ifdef GBM_USE_A11_AS_SCART_TV_RELEASE
regs0->sft_cfg6 &= ~(0x1 << 4);
GPIO_M_SET(14, 1);
GPIO_E_SET(14, 1);
GPIO_O_SET(14, 0);
#endif
#ifdef SCART_TV_2_ADD_RELEASE //David 2003-12-6 10:25
regs0->sft_cfg1 &= ~(0x01 << 2); // pin71 GPIO36
GPIO_M_SET(36,1);
GPIO_E_SET(36,1);
GPIO_O_SET(36,0);
#endif
#elif defined(SCART_TV_3)
regs0->sft_cfg3 &= ~(0x1 << 5);//PIN163 use as SCART_RGB gpio57
regs0->sft_cfg6 &= ~(0x1 << 5);//PIN151 use as SCART_SW gpio18
regs0->sft_cfg6 &= ~(0x1 << 4);//PIN109 use as SCART_SW1 gpio14
#if defined(SKYWORTH_DVD)
GPIO_M_SET(57,1);
GPIO_E_SET(57,1);
GPIO_O_SET(57,0);
#else
GPIO_M_SET(57,1);
GPIO_E_SET(57,1);
GPIO_O_SET(57,1);
#endif
GPIO_M_SET(18,1);
GPIO_E_SET(18,1);
GPIO_O_SET(18,0);
GPIO_M_SET(14,1);
GPIO_E_SET(14,1);
GPIO_O_SET(14,0);
#elif defined(SCART_TV_4) //nono 2003-9-26 1:23 for himage HJ-018
regs0->sft_cfg1 |= (0x7 << 0);//pin28 use as SCART_TV gpio2//SCART_SW1
regs0->sft_cfg1 &= ~(0x1 << 3);//pin29 use as SCART_RGB gpio3
GPIO_M_SET(2,1);
GPIO_E_SET(2,1);
GPIO_O_SET(2,0);
GPIO_M_SET(3,1);
GPIO_E_SET(3,1);
GPIO_O_SET(3,0);
GPIO_M_SET(4,1);//pin31 use as SCART_SW gpio4
GPIO_E_SET(4,1);
GPIO_O_SET(4,0);
#elif defined(SCART_TV_5)//wangfeng 2003-12-2 11:43 for himage HJ-023
SetScartTV5();
GPIO_O_SET(62,0);
GPIO_O_SET(63,0);
//GPIO_O_SET(2,0);
#elif defined(XQ_SCART_TV)//xyy 2004-4-29
regs0->sft_cfg6 &= ~(0x1 << 5);//used to set pin151(GPIO18),SCART_DISPLAY
GPIO_M_SET(SCART_RELEASE,1);
GPIO_E_SET(SCART_RELEASE,1);
GPIO_M_SET(SCART_SIG,1);
GPIO_E_SET(SCART_SIG,1);
GPIO_M_SET(SCART_DISPLAY,1);
GPIO_E_SET(SCART_DISPLAY,1);
#endif
#ifndef DVD_SERVO
regs0->sft_cfg2 |=1; // for 8200 real chip + ATAPI loader
#endif
#ifdef SUPPORT_VIDEO_BUFFER_STANDBY //kenny 2003/5/13
video_buff_power_on();
#endif
#ifdef SUPPORT_EXTERNAL_MIC
extern_mic_detect_on();
#endif
SFT_CFG_GPIO();
GPIO_MUTE();
#ifdef SUPPORT_SCART_TV//SPHE8202//nono 4-3-26 23:45
SET_SCART_GPIO_SFT_CFG_CTRL();
SCART_TV_SET_TO_CVBS();
SCART_TV_SET_TO_DVDPLAYER();
SCART_TV_SET_TO_DISPLAY_4B3();
#endif//SPHE8202
/*deleted by xyy 2004-8-12*/
#ifdef SUPPORT_COAXIAL_IN//xyy 2004-4-29 10:22 for XQ
GPIO_M_SET(OPT_COAX_SEL,1);//GPIO48: OPTICAL/COAXIAL SEL
GPIO_E_SET(OPT_COAX_SEL,1);
#endif
#ifndef SUPPORT_EXT_MCU
#ifdef SUPPORT_EXT_ADC//xyy 2004-4-29
GPIO_M_SET(EXT_ADC_RESET,1);
GPIO_E_SET(EXT_ADC_RESET,1);
#endif
#endif
#ifdef PROVIEW_GPIO_KEY
//#define DVD_LED_GPIO 56 // VFD_DATA
//#define CD_LED_GPIO 54 // VFD_CLK
//#define MP3_LED_GPIO 55 // VFD_STB
//#define NEXT_KEY_GPIO 2 // CARD_RESET
//#define PREV_KEY_GPIO 14
//#define STOP_KEY_GPIO 3 // CF_SENSE
//#define PAUSEPLAY_KEY_GPIO 15
//#define EJECT_KEY_GPIO 32
regs0->sft_cfg0 &= ~(0x1 << 0); // pin 66 as GPIO 32
regs0->sft_cfg1 &= ~(0x1 << 3); // CS4 as GPIO3
regs0->sft_cfg6 &= ~(0x1 << 4); // A11 as GPIO14
regs0->sft_cfg6 &= ~(0x1 << 6); // BA1 as GPIO15
#ifndef PROVIEW_GPIO_KEY_527
regs0->gpio_master[NEXT_KEY_GPIO / 16] |= (0x1 << (NEXT_KEY_GPIO % 16));
regs0->gpio_master[PREV_KEY_GPIO / 16] |= (0x1 << (PREV_KEY_GPIO % 16));
#endif // PROVIEW_GPIO_KEY_527
regs0->gpio_master[STOP_KEY_GPIO / 16] |= (0x1 << (STOP_KEY_GPIO % 16));
regs0->gpio_master[PAUSEPLAY_KEY_GPIO / 16] |= (0x1 << (PAUSEPLAY_KEY_GPIO % 16));
regs0->gpio_master[EJECT_KEY_GPIO / 16] |= (0x1 << (EJECT_KEY_GPIO % 16));
#ifndef PROVIEW_GPIO_KEY_527
regs0->gpio_master[DVD_LED_GPIO / 16] |= (0x1 << (DVD_LED_GPIO % 16));
regs0->gpio_master[CD_LED_GPIO / 16] |= (0x1 << (CD_LED_GPIO % 16));
regs0->gpio_master[MP3_LED_GPIO / 16] |= (0x1 << (MP3_LED_GPIO % 16));
#else
regs0->gpio_master[RED_LED_GPIO / 16] |= (0x1 << (RED_LED_GPIO % 16));
regs0->gpio_master[GREEN_LED_GPIO / 16] |= (0x1 << (GREEN_LED_GPIO % 16));
#endif // PROVIEW_GPIO_KEY_527
#ifndef PROVIEW_GPIO_KEY_527
regs0->gpio_oe[NEXT_KEY_GPIO / 16] &= ~(0x1 << (NEXT_KEY_GPIO % 16));
regs0->gpio_oe[PREV_KEY_GPIO / 16] &= ~(0x1 << (PREV_KEY_GPIO % 16));
#endif // PROVIEW_GPIO_KEY_527
regs0->gpio_oe[STOP_KEY_GPIO / 16] &= ~(0x1 << (STOP_KEY_GPIO % 16));
regs0->gpio_oe[PAUSEPLAY_KEY_GPIO / 16] &= ~(0x1 << (PAUSEPLAY_KEY_GPIO % 16));
regs0->gpio_oe[EJECT_KEY_GPIO / 16] &= ~(0x1 << (EJECT_KEY_GPIO % 16));
#ifndef PROVIEW_GPIO_KEY_527
regs0->gpio_oe[DVD_LED_GPIO / 16] |= (0x1 << (DVD_LED_GPIO % 16));
regs0->gpio_oe[CD_LED_GPIO / 16] |= (0x1 << (CD_LED_GPIO % 16));
regs0->gpio_oe[MP3_LED_GPIO / 16] |= (0x1 << (MP3_LED_GPIO % 16));
#else
regs0->gpio_oe[RED_LED_GPIO / 16] |= (0x1 << (RED_LED_GPIO % 16));
regs0->gpio_oe[GREEN_LED_GPIO / 16] |= (0x1 << (GREEN_LED_GPIO % 16));
#endif // PROVIEW_GPIO_KEY_527
#ifndef PROVIEW_GPIO_KEY_527
#ifdef LED_HIGH_LIGHT
GPIO_O_SET(DVD_LED_GPIO, 0); // DVD
GPIO_O_SET(CD_LED_GPIO, 0); // CD
GPIO_O_SET(MP3_LED_GPIO, 0); // MP3
#else
GPIO_O_SET(DVD_LED_GPIO, 1); // DVD
GPIO_O_SET(CD_LED_GPIO, 1); // CD
GPIO_O_SET(MP3_LED_GPIO, 1); // MP3
#endif
#else
#ifdef LED_HIGH_LIGHT
GPIO_O_SET(RED_LED_GPIO, 0);
GPIO_O_SET(GREEN_LED_GPIO, 0);
#else
GPIO_O_SET(RED_LED_GPIO, 1);
GPIO_O_SET(GREEN_LED_GPIO, 1);
#endif
#endif
#endif
#ifdef ROTARY_VOLUME
#ifdef HJ_8202_8408
regs0->sft_cfg1 &= ~(0x1 << 3);//GPIO16
regs0->sft_cfg1 &= ~(0x1 << 2);//GPIO17
GPIO_M_SET(16,1);
GPIO_M_SET(17,1);
GPIO_E_SET(16,0);
GPIO_E_SET(17,0);
#else
regs0->sft_cfg6 &= ~(0x1 << 6);
regs0->sft_cfg6 &= ~(0x1 << 4);
regs0->gpio_master[14/16] |= (0x3 << (14%16));
regs0->gpio_oe[14/16] &= ~(0x3 << (14%16) );
//regs0->gpio_out[14/16] &= ~(0x3 << (14%16) );
#endif
#endif
#ifdef GPIO14_STANDBY_LED //for Ngailik LCD1003_6ch, hq, 2004-3-20 14:06
regs0->sft_cfg6 &= ~(0x1 << 4);
GPIO_M_SET(14,1);
GPIO_E_SET(14,1);
GPIO_O_SET(14,0);
#endif
#ifdef GPIO15_STANDBY_LED //for Ngailik LCD1003, liudan, 2005-1-12 11:35
GPIO_M_SET(15,1);
GPIO_E_SET(15,1);
GPIO_O_SET(15,0);
#endif
#if defined(QSI_PORTABLE_DVD) && defined(QSI_PLATFORM) //qsi: merge by johnson 20040712
//#ifdef MA0QS1_SLM
GPIO_M_SET(GPIO_IS_FOR_SLED_OP_SW,1);
GPIO_E_SET(GPIO_IS_FOR_SLED_OP_SW,0);
GPIO_M_SET(GPIO_IS_FOR_EJECT_BUTTON,1);
GPIO_E_SET(GPIO_IS_FOR_EJECT_BUTTON,0);
GPIO_M_SET(GPIO_IS_FOR_SYSTEM_LED,1);
GPIO_E_SET(GPIO_IS_FOR_SYSTEM_LED,1);
GPIO_O_SET(GPIO_IS_FOR_SYSTEM_LED,0);
//#endif
//qsi: add by sharon
#endif
#ifdef DVI_AUDIO_MUTE
#ifdef SPHE8202
#else /*SPHE8202*/
#define AUDIO_MUTE_GPIO 37
regs0->sft_cfg0 &= ~(0x3f << 1);
GPIO_M_SET(AUDIO_MUTE_GPIO, 1); //audio_mute is gpio 37,pin129
GPIO_E_SET(AUDIO_MUTE_GPIO, 1);
GPIO_O_SET(AUDIO_MUTE_GPIO, 1);
#endif /*SPHE8202*/
#endif
#ifdef RESET_TO_DVI311 //tjf 04-05-06
#ifdef SPHE8202
#else /*SPHE8202*/
#define RESET_DVI311_GPIO 40
regs0->sft_cfg0 &= ~(0xfff<<3); //ra21~ra26 is gpio
GPIO_M_SET(RESET_DVI311_GPIO, 1); //dvi311_reset is gpio 37,pin129
GPIO_E_SET(RESET_DVI311_GPIO, 1);
GPIO_O_SET(RESET_DVI311_GPIO, 1);
#endif/*SPHE8202*/
#endif
#ifdef USE_GPIO52_AS_HEADPHONE_SENSE //xyy add for Oritron 2004-8-13
GPIO_M_SET(HEADPHONE_SENSE,1);
GPIO_E_SET(HEADPHONE_SENSE,0);
#endif
#ifdef MINTON_8202_601 //heqiang added,2004-9-8 20:53
SFT_CFG_GPIO56();
#endif
#ifdef PMP_DVD //wthsin added,2004/11/9 02:47
PMP_gpio_init();
#endif //#if defined(PMP_DVD)
#ifdef HANYANG_DP02CD_WF_8202S_16//added by wangwei,2005-2-3 11:41
//use VFD pin
GPIO_M_SET(21, 1);
GPIO_E_SET(21, 0);
GPIO_M_SET(22, 1);
GPIO_E_SET(22, 0);
GPIO_M_SET(23, 1);
GPIO_E_SET(23, 0);
GPIO_M_SET(15, 1);
GPIO_E_SET(15, 0);
/*
regs0->sft_cfg1 &= ~(0x1 << 3);
regs0->sft_cfg1 &= ~(0x1 << 7);
regs0->sft_cfg8 &= ~(0x1 << 9);*/
GPIO_M_SET(16, 1);
GPIO_E_SET(16, 0);
#endif//HANYANG_DP02CD_WF_8202S_16
#ifdef GBM_AP_DVD_16//added by wangwei,2005-2-25 13:06//for 8200
regs0->sft_cfg0 &= ~(0xfff << 3);//ra21~ra26//pin 130~131, pin 133~136
GPIO_M_SET(43,1);
GPIO_M_SET(42,1);
GPIO_M_SET(41,1);
GPIO_M_SET(40,1);
GPIO_E_SET(43,0);
GPIO_E_SET(42,0);
GPIO_E_SET(41,0);
GPIO_E_SET(40,0);
#endif
#ifdef HANYANG_DP02CD_WG_8202S_16//added by wangwei,2005-3-11 14:21
// Use VFD_CLK/VFD_STB/VFD_DATA/PIN65/PIN66 to scan key.
// VFD_DATA/PIN65/PIN66---PULL LOW,INPUT PIN.
// VFD_CLK/VFD_STB---PULL HIGH,OUPUT PIN.
//regs0->sft_cfg6 &= ~(0x1 << 6);// BA1 as GPIO15
regs0->sft_cfg1 &= ~(0x1 << 3);// GPIO16
GPIO_M_SET(23, 1);// VFD_DATA
GPIO_E_SET(23, 0);
//GPIO_O_SET(23, 1);
GPIO_M_SET(15, 1);// PIN65
GPIO_E_SET(15, 0);
//GPIO_O_SET(15, 0);
GPIO_M_SET(16, 1);// PIN66
GPIO_E_SET(16, 0);
//GPIO_O_SET(16, 1);
GPIO_M_SET(21, 1);// VFD_CLK
GPIO_E_SET(21, 1);
//GPIO_O_SET(21, 1);
GPIO_M_SET(22, 1);// VFD_STB
GPIO_E_SET(22, 1);
//GPIO_O_SET(22, 1);
#endif//HANYANG_DP02CD_WG_8202S_16
#ifdef IC_8202D
#if defined(EMU_BOARD_216_PIN) || defined(MP_BOARD_216_PIN) || defined(MP_BOARD_216_PIN_NON_SHARE)
int i;
regs0->sdc_data_cnt[6][0] |= (1<<3)|(1<<2); // group 41, reg #12, bit #2~3 = 1
for (i=92;i<=100;i++)
{
GPIO_M_SET(i,1);
GPIO_E_SET(i,1);
GPIO_O_SET(i,0);
}
#endif
#endif
#ifdef THJK_GPIO_KEY
GPIO_M_SET(34, 1);
GPIO_E_SET(34, 1);
GPIO_O_SET(34, 1);
GPIO_M_SET(35, 1);
GPIO_E_SET(35, 1);
GPIO_O_SET(35, 1);
GPIO_M_SET(36, 1);
GPIO_E_SET(36, 1);
GPIO_O_SET(36, 1);
GPIO_M_SET(37, 1);
GPIO_E_SET(37, 1);
GPIO_O_SET(37, 1);
#endif
#ifdef TFT_BACKLIGHT_GPIO
regs0->sft_cfg4 &= ~(0x1 << 6);
GPIO_M_SET(TFT_BACKLIGHT_GPIO, 1);
GPIO_E_SET(TFT_BACKLIGHT_GPIO, 1);
GPIO_O_SET(TFT_BACKLIGHT_GPIO, 1);
#endif
#ifdef FM_POWER_GPIO
GPIO_M_SET(FM_POWER_GPIO, 1);
GPIO_E_SET(FM_POWER_GPIO, 1);
GPIO_O_SET(FM_POWER_GPIO, 0);
GPIO_M_SET(FM_SET_GPIO1, 1);
GPIO_E_SET(FM_SET_GPIO1, 1);
GPIO_O_SET(FM_SET_GPIO1, 1);
GPIO_M_SET(FM_SET_GPIO2, 1);
GPIO_E_SET(FM_SET_GPIO2, 1);
GPIO_O_SET(FM_SET_GPIO2, 1);
GPIO_M_SET(FM_SET_GPIO3, 1);
GPIO_E_SET(FM_SET_GPIO3, 1);
GPIO_O_SET(FM_SET_GPIO3, 1);
#endif
#ifdef DSA_COM_CONTROL
regs0->sft_cfg0 &= ~(0x1<<7); //pin173-- gpio48
regs0->sft_cfg1 &= ~(0x1<<5); //pin174-- gpio49
#endif
#ifdef AV_IN_OUT_GPIO
regs0->sft_cfg3 &= ~(0x1<<5); //pin193-- gpio50
GPIO_M_SET(AV_IN_OUT_GPIO, 1);
GPIO_E_SET(AV_IN_OUT_GPIO, 1);
GPIO_O_SET(AV_IN_OUT_GPIO, 1);
#endif
}
#if defined(GPIO_KEY_LIGHT)
void init_keylight_io(void)
{
#if defined(USE_VFD_GAME_PORT_TO_KEYBOARD_HJ)
init_hj_keylight_io();
#elif defined(USE_VFDPORT_TO_KEYLIGHT_GBM)
init_gbm_keylight_io();
#elif defined(USE_VFDPORT_TO_KEYLIGHT_MINTON) //wanghaoying 2003-8-19 20:00
init_minton_keylight_io();
#elif defined(USE_VFDPORT_TO_KEYLIGHT_IDALL)
init_idall_keylight_io();
#elif defined(USE_VFDPORT_TO_KEYLIGHT_THAKRAL)
init_thakral_keylight_io();
#elif defined(USE_GPIO_TO_KEYLIGHT_WINGSUM)
init_wingsum_keylight_io();
#elif defined(OP_SCAN_KEY_USE_GPIO)//lijd 2005-6-13 18:45
init_op_hk_keylight_io();
#endif//#if defined(USE_VFD_GAME_PORT_TO_KEYBOARD_HJ)
}
#if defined(OP_SCAN_KEY_USE_GPIO)//lijd 2005-6-13 18:42
void init_op_hk_keylight_io(void)
{
GPIO_M_SET(STB, 1);
GPIO_M_SET(CLK, 1);
GPIO_M_SET(DAT, 1);
GPIO_E_SET(STB, 0);
GPIO_E_SET(CLK, 0);
GPIO_E_SET(DAT, 0);
}
#endif
#if defined(USE_GPIO_TO_KEYLIGHT_WINGSUM)
void init_wingsum_keylight_io(void)
{
regs0->sft_cfg1 &= ~(0x1 <<1);//to set gpio16 ---> pin66
GPIO_M_SET(16,1);
GPIO_E_SET(16,0);
GPIO_M_SET(14,1);
GPIO_E_SET(14,0);
GPIO_M_SET(13,1);
GPIO_E_SET(13,0);
}
#endif
#if defined(USE_VFD_GAME_PORT_TO_KEYBOARD_HJ)
void init_hj_keylight_io(void)
{
regs0->sft_cfg6 &= ~(0x1 << 6);//gpio15
regs0->sft_cfg6 &= ~(0x1 << 4);//gpio14
regs0->gpio_master[54 / 16] |= (0x7 << (54 % 16)); // gpio[54~56]
//regs0->gpio_master[4 / 16] |= (0x1 << (4 % 16));
regs0->gpio_master[14 / 16] |= (0x3 << (14 % 16));
regs0->gpio_oe[54 / 16] &= ~(0x7 << (54 % 16));
regs0->gpio_oe[14 / 16] &= ~(0x3 << (14 % 16));
// regs0->gpio_oe[4 / 16] &= ~(0x1 << (4 % 16));
//printf("1.regs0->gpio_out[3]=%x\n", regs0->gpio_out[3]);
}
#elif defined(USE_VFDPORT_TO_KEYLIGHT_GBM)
void init_gbm_keylight_io(void)
{
regs0->gpio_master[54 / 16] |= (0x7 << (54 % 16)); // gpio[54~56]
// vfd gpio IN/OUT(for 720)
// DATA gpio56 IN/OUT
// STB gpio55 IN/OUT
// CLK gpio54 IN/OUT
regs0->gpio_master[54 / 16] |= (0x7 << (54 % 16));//pin151
regs0->gpio_oe[54 / 16] |= (0x7 << (54 % 16));
regs0->gpio_out[54 / 16] &= ~(0x7 << (54 % 16));
}
#elif defined(USE_VFDPORT_TO_KEYLIGHT_GBM_2)
void init_gbm_keylight_io(void)
{
//PIN141(GPIO45):GPIO1->LED1
//PIN138(GPIO44):GPIO2->LED2
//PIN136(GPIO43):GPIO3->PLAY/PAUSE
//PIN135(GPIO42):GPIO4->STOP
//PIN134(GPIO41):GPIO5->F.F.(NEXT)
//PIN133(GPIO40):GPIO6->F.R.(PREV)
//PIN131(GPIO39):GPIO7->reversed
//PIN130(GPIO38):GPIO8->reversed
regs0->sft_cfg0 &= ~(0xfff << 3);//ra21~ra26//pin 130~131, pin 133~136
regs0->gpio_master[38 / 16] |= (0xff << (38 % 16)); // gpio[38~45]
// vfd gpio IN/OUT(for 720)
// DATA gpio56 IN/OUT
// STB gpio55 IN/OUT
// CLK gpio54 IN/OUT
regs0->gpio_oe[44 / 16] |= (0x3 << (44 % 16));
regs0->gpio_oe[38 / 16] |= (0x3f << (38 % 16));
}
#elif defined(USE_VFDPORT_TO_KEYLIGHT_MINTON)
void init_minton_keylight_io(void)
{
//regs0->sft_cfg6 &= ~(0x1 << 6);
regs0->sft_cfg6 &= ~(0x1 << 4);
regs0->gpio_master[54 / 16] |= (0x7 << (54 % 16)); // gpio[54~56]
regs0->gpio_master[14 / 16] |= (0x1 << (14 % 16));
//regs0->gpio_oe[54 / 16] &= ~(0x7 << (54 % 16));
regs0->gpio_oe[14 / 16] |= (0x1 << (14 % 16));
}
#elif defined(USE_VFDPORT_TO_KEYLIGHT_IDALL)
void init_idall_keylight_io(void)
{
regs0->sft_cfg6 &= ~(0x1 << 4); // SA11 as GPIO 14, pin 109
regs0->gpio_master[14/16] |= (0x1<<(14%16));
regs0->gpio_oe[14/16] &= ~(0x1<<(14%16));
regs0->sft_cfg1 &= ~(0x1 << 2); //ROM_CS3 as GPIO 36, pin 71
regs0->gpio_master[36/16] |= (0x1<<(36%16));
regs0->gpio_oe[36/16] &= ~(0x1<<(36%16));
regs0->gpio_master[54/16] |= (0x7<<(54%16));//VFD_CLK as GPIO54, pin154
regs0->gpio_oe[54/16] &= ~(0x1<<(54%16));
regs0->gpio_oe[55/16] |= (0x1<<(55%16));
regs0->gpio_oe[56/16] |= (0x1<<(56%16));
}
#elif defined(USE_VFDPORT_TO_KEYLIGHT_THAKRAL)
void init_thakral_keylight_io(void)
{
regs0->gpio_master[54 / 16] |= (0x7 << (54 % 16)); // gpio[54~56]
// vfd gpio IN/OUT(for 720)
// DATA gpio56 IN/OUT
// STB gpio55 IN/OUT
// CLK gpio54 IN/OUT
regs0->gpio_master[54 / 16] |= (0x7 << (54 % 16));//pin151
regs0->gpio_oe[54 / 16] &= ~(0x7 << (54 % 16));
regs0->sft_cfg1 &= ~(0x1 << 2);
//ROM_CS3 as GPIO 36, pin 71
//ROM_CS2 as GPIO 35, pin 70
regs0->gpio_master[35/16] |= (0x3<<(36%16));
regs0->gpio_oe[36/16] &= ~(0x1<<(36%16));
regs0->gpio_oe[35/16] |= (0x1<<(35%16));
//regs0->gpio_out[35 /16] |= (0x1 << (35 % 16));
/*
regs0->gpio_oe[54 / 16] |= (0x7 << (54 % 16));
regs0->gpio_out[54 / 16] |= (0x7<<(54 % 16));
regs0->gpio_oe[36 / 16] |= (0x1 << (36 % 16));
regs0->gpio_out[36 /16] |= (0x1 << (36 % 16));
regs0->gpio_oe[35 / 16] |= (0x1 << (35 % 16));
regs0->gpio_out[35 /16] |= (0x1 << (35 % 16));
*/
}
#endif//#if defined(USE_VFD_GAME_PORT_TO_KEYBOARD_HJ)
#endif//defined(GPIO_KEY_LIGHT)
#ifdef SUPPORT_AUDIO_RESET
void GpioResetAudio(void)
{
// QISHENG_DVD use pin 151(GPIO 18) to reset audio DAC
#ifdef QISHENG_DVD // alan, 2003/9/8 10:40¤W¤È
regs0->sft_cfg6 &= 0xFFDF; // SBA12 disable
regs0->gpio_master[18 / 16] |= (0x01 << (18 % 16));
regs0->gpio_oe[18 / 16] |= (0x01 << (18 % 16));
delay_srv_10ms(30);
regs0->gpio_out[18 / 16] |= (0x01 << (18 % 16));
#elif 0//defined(HANYANG_DVD) //2004-4-27 01:02?ÓîM
regs0->sft_cfg3 &= ~(0x1 << 4);
regs0->gpio_master[60 / 16] |= (0x01 << (60 % 16));
regs0->gpio_oe[60 / 16] |= (0x01 << (60 % 16));
regs0->gpio_out[60 / 16] &= ~(0x01 << (60 % 16));
//delay_srv_10ms(100);
//regs0->gpio_out[60 / 16] |= (0x01 << (60 % 16));
#else
regs0->sft_cfg6 &= 0xFFBF; // SBA1 disable
regs0->gpio_master[15 / 16] |= (0x01 << (15 % 16));
regs0->gpio_oe[15 / 16] |= (0x01 << (15 % 16));
delay_srv_10ms(30);
regs0->gpio_out[15 / 16] |= (0x01 << (15 % 16));
#endif
}
#endif
#ifdef TCL_VFD_GPIO//2004-3-22 12:52 lijd
void tcl_led(void)
{
regs0->gpio_master[DVD_LED_GPIO / 16] |= (0x1 << (DVD_LED_GPIO % 16));
regs0->gpio_master[CD_LED_GPIO / 16] |= (0x1 << (CD_LED_GPIO % 16));
regs0->gpio_master[MP3_LED_GPIO / 16] |= (0x1 << (MP3_LED_GPIO % 16));
switch(cd_type_loaded)
{
case CDDVD:
GPIO_O_SET(DVD_LED_GPIO, 0); // DVD
GPIO_O_SET(CD_LED_GPIO, 1); // CD
GPIO_O_SET(MP3_LED_GPIO, 1); // MP3
break;
case CDDA:
GPIO_O_SET(DVD_LED_GPIO, 1); // DVD
GPIO_O_SET(CD_LED_GPIO, 0); // CD
GPIO_O_SET(MP3_LED_GPIO, 1); // MP3
break;
case CDSVCD:
case CDVCD10:
case CDVCD20:
case CDROM:
GPIO_O_SET(DVD_LED_GPIO, 1); // DVD
GPIO_O_SET(CD_LED_GPIO, 1); // CD
GPIO_O_SET(MP3_LED_GPIO, 0); // MP3
break;
default:
GPIO_O_SET(DVD_LED_GPIO, 1); // DVD
GPIO_O_SET(CD_LED_GPIO, 1); // CD
GPIO_O_SET(MP3_LED_GPIO, 1); // MP3
break;
}
}
#endif
#ifdef SUPPORT_EXTERNAL_MIC
void extern_mic_detect_on(void)
{
regs0->sft_cfg3 &=0xffdf ;
regs0->gpio_oe[EXTERN_MIC_DECT / 16] &= ~(0x1 << (EXTERN_MIC_DECT % 16));
regs0->sft_cfg6 &=0xffdf ;
regs0->gpio_oe[EXTERN_MIC_MUTE / 16] |= (0x1 << (EXTERN_MIC_MUTE % 16));
regs0->gpio_out[EXTERN_MIC_MUTE / 16] |= (0x1 << (EXTERN_MIC_MUTE % 16));
}
void extern_mic_unmute(void)
{
regs0->gpio_out[EXTERN_MIC_MUTE / 16] &= ~(0x1 << (EXTERN_MIC_MUTE % 16));
}
void extern_mic_mute(void)
{
regs0->gpio_out[EXTERN_MIC_MUTE / 16] |= (0x1 << (EXTERN_MIC_MUTE % 16));
}
int extern_mic_is_detected(void)
{
if((regs0->gpio_in[EXTERN_MIC_DECT / 16]>>(EXTERN_MIC_DECT % 16))&0x1)
return 1;
else
return 0;
}
#endif
#ifdef SUPPORT_VIDEO_BUFFER_STANDBY //kenny 2003/5/13
void video_buff_power_off(void)
{
regs0->gpio_oe[STANDBY_GPIO / 16] |= (0x1 << (STANDBY_GPIO % 16));
regs0->gpio_out[STANDBY_GPIO / 16] &= ~(0x1 << (STANDBY_GPIO % 16));
}
void video_buff_power_on(void)
{
regs0->gpio_oe[STANDBY_GPIO / 16] |= (0x1 << (STANDBY_GPIO % 16));
regs0->gpio_out[STANDBY_GPIO / 16] |= (0x1 << (STANDBY_GPIO % 16));
}
#endif
#ifdef YI_XIAN_TONG//zhaoyanhua add 03-11-3 22:04
#define AUDIOMODE_GPIO 14
void GpioStereoOutput(void)
{
regs0->sft_cfg6 &= ~(0x1 << 4); // SA11 as GPIO 14, pin 109
GPIO_M_SET(AUDIOMODE_GPIO ,1); //set master
GPIO_E_SET(AUDIOMODE_GPIO ,1); //enable output
GPIO_O_SET(AUDIOMODE_GPIO ,1); //set ouput high
}
void Gpio5ChOutput(void)
{
regs0->sft_cfg6 &= ~(0x1 << 4); // SA11 as GPIO 14, pin 109
GPIO_M_SET(AUDIOMODE_GPIO,1);//set master
GPIO_E_SET(AUDIOMODE_GPIO,1);//enable output
GPIO_O_SET(AUDIOMODE_GPIO,0);//set output low
}
#endif
/*
#define I2C_SDA 59 // GPIOE[0]
#define I2C_SCL 60 // GPIOE[1]
#define I2C_SCL_SET(d) GPIO_O_SET(I2C_SCL,d)
#define I2C_SDA_SET(d) GPIO_O_SET(I2C_SDA,d)
#define I2C_SDA_GET() GPIO_I_GET(I2C_SDA)
#define I2C_SCL_IN() GPIO_E_SET(I2C_SCL,0)
#define I2C_SDA_IN() GPIO_E_SET(I2C_SDA,0)
#define I2C_SCL_OUT() GPIO_E_SET(I2C_SCL,1)
#define I2C_SDA_OUT() GPIO_E_SET(I2C_SDA,1)
static void delay_gpio(int i)
{
do
{
int j =1000;
do
{
asm volatile ("nop");
} while (--j >= 0);
} while (--i >= 0);
}
#define delay_i2c(i) delay_gpio(i)
void write_i2c(int add, int aa, int data)
{
int i;
add = (add << 1) | 0; // write_BIT
I2C_SCL_SET(1); delay_i2c(1); // scl -- high
I2C_SDA_SET(0); delay_i2c(1); // (start)
for (i=7; i>=0; i--)
{
I2C_SCL_SET(0); delay_i2c(1); // scl -> low
I2C_SDA_SET((add>>i) & 0x01); delay_i2c(1);// scl -- low
I2C_SCL_SET(1); delay_i2c(1); // scl -> high
}
I2C_SCL_SET(0); delay_i2c(1); // scl -> low
I2C_SDA_IN(); delay_i2c(1); // scl -- low
I2C_SCL_SET(1); delay_i2c(1); // scl -> high
if (I2C_SDA_GET()) {
#ifdef GPIO_DBG
epp_write("fail\n");
#endif
} // (ack)
// address
for (i=7; i>=0; i--)
{
I2C_SCL_SET(0); delay_i2c(1); // scl -> low
I2C_SDA_SET((aa>>i) & 0x01); delay_i2c(1);// scl -- low
I2C_SDA_OUT(); delay_i2c(1); // scl -- low
I2C_SCL_SET(1); delay_i2c(1); // scl -> high
}
I2C_SCL_SET(0); delay_i2c(1); // scl -> low
I2C_SDA_IN(); delay_i2c(1); // scl -- low
I2C_SCL_SET(1); delay_i2c(1); // scl -> high
if (I2C_SDA_GET()) {
#ifdef GPIO_DBG
epp_write("fail\n");
#endif
} // (ack)
// data
for (i=7; i>=0; i--)
{
I2C_SCL_SET(0); delay_i2c(1); // scl -> low
I2C_SDA_SET((data>>i) & 0x01); delay_i2c(1);// scl -- low
I2C_SDA_OUT(); delay_i2c(1); // scl -- low
I2C_SCL_SET(1); delay_i2c(1); // scl -> high
}
I2C_SCL_SET(0); delay_i2c(1); // scl -> low
I2C_SDA_IN(); delay_i2c(1); // scl -- low
I2C_SCL_SET(1); delay_i2c(1); // scl -> high
if (I2C_SDA_GET()) {
#ifdef GPIO_DBG
epp_write("fail\n");
#endif
} // (ack)
I2C_SCL_SET(0); delay_i2c(1); // scl -> low
I2C_SDA_SET(0); delay_i2c(1); // scl -- low
I2C_SDA_OUT(); delay_i2c(1); // scl -- low
I2C_SCL_SET(1); delay_i2c(1); // scl -> high
I2C_SDA_SET(1); delay_i2c(1); // (stop)
}
*/
#ifdef SCART_TV_5 //wangfeng 2003-12-2 11:43 for himage HJ-023
void SetScartTV5(void)//As Scart
{
regs0->sft_cfg2 &= ~(0x7 << 2);//GPIO62 63 pin175 176 use as not uart
regs0->sft_cfg3 &= ~(0x3 << 14);//GPIO62 63 pin175 176 use as gpio
//regs0->sft_cfg1 |= (0x7 << 0);//pin28 use as SCART_TV gpio2//SCART_SW1
//1 risc use
GPIO_M_SET(62,1);
GPIO_M_SET(63,1);
//GPIO_M_SET(2,1);
// 1 output
GPIO_E_SET(62,1);
GPIO_E_SET(63,1);
//GPIO_E_SET(2,1);
// GPIO_O_SET(62,0);
// GPIO_O_SET(63,0);
// GPIO_O_SET(2,0);
}
void ReSetScartTV5(void)//As V/H SYNC
{
//regs0->sft_cfg2 &= ~(0x7 << 2);//GPIO62 63 pin175 176 use as not uart
regs0->sft_cfg3 &= ~(0x1 << 15);//GPIO62 63 pin175 176 use as h/v sync
regs0->sft_cfg3 |= (0x1 << 14);//GPIO62 63 pin175 176 use as h/v sync
}
#endif
#ifdef SUPPORT_T100_LCD_PANEL
#define T100_RESET_GPIO 22 //11//39//98
//#define T100_BL_EN_GPIO 97//97
#define TW100 0x50
//#include "init_t100_lg.c"
//#include "init_t100_au.c"
#include "T102_i2c.c"
#include "init_t102_au.c"
//#include "t100_lcd_pannel.c"
#ifdef TFT_FORMAT_CHANGE_SPECIAL_DEAL
extern BYTE switch_format_flag;
#endif
#ifdef T100_RESET_GPIO
static void delay_lay(int i)
{
do {
int j =6;//kevin change add it to 100 it should be also OK if setted to 2 without HDCP
do {
asm volatile ("nop");
} while (--j>=0);
} while (--i>=0);
}
void Reset_T100_LCD_PANEL(void)
{
// regs0->sft_cfg0 &= ~(0x1 << 4);
GPIO_M_SET(T100_RESET_GPIO,1);
GPIO_E_SET(T100_RESET_GPIO,1);
GPIO_O_SET(T100_RESET_GPIO,0);
delay_lay(500);
//delay_srv_10ms(5);
GPIO_O_SET(T100_RESET_GPIO,1);
delay_lay(500);
//delay_srv_10ms(2);
}
#endif
void T100_Write_TCONData(void)
{
init_command_tcondata();
}
void T100_Close_Panel(void)
{
BYTE data=0;
//BL_EN=1;
//GPIO_M_SET(T100_BL_EN_GPIO,1);
//GPIO_E_SET(T100_BL_EN_GPIO,1);
// GPIO_O_SET(T100_BL_EN_GPIO,1);
ReadFromddc(TW100, 0xC2,&data,1);
data|=0x12;
WriteToDDC(TW100, 0xC2,&data,1);
data=0x87;
WriteToDDC(TW100, 0x91,&data,1);
}
void T100_Open_Panel(void)
{
BYTE data=0;
ReadFromddc(TW100, 0xC2,&data,1);
data&=0xed;
WriteToDDC(TW100, 0xC2,&data,1);
ReadFromddc(TW100, 0x91,&data,1);
data&=~0x80;
WriteToDDC(TW100, 0x91,&data,1);
delay_srv_10ms(2);
//BL_EN=0;
//GPIO_O_SET(T100_BL_EN_GPIO,0);
}
void T100_Write_T100Init(void)
{
init_command_t100init();
}
void T100_Write_GAMMAData(void)
{
init_command_gammadata();
}
void T100_Write_FilterData(void)
{
init_command_filterdata();
}
#if 1
void T100_Set_Mode(BYTE tv_mode,BYTE tft_mode,BYTE av_switch)
{
BYTE data=0;
//NTSC
data=0x01;
WriteToDDC(TW100+4,0x3F,&data,1);//reset
if(tv_mode == TFT_NTSC)
{
if(tft_mode == TFT_16_9)
{
init_command_ntsc_fulldata();
}
else
{
init_command_ntsc_43data();
}
data=0x03;
WriteToDDC(TW100+4,0x03,&data,1);
//////////////////////////////////////
#ifdef AV_SWITCH_DEAL
if (av_switch==1)
//{
// if(GPIO_I_GET(16)==0)//tft cvbs av in.
{
data=0x00; // cvbs
WriteToDDC(TW100+4,0x00,&data,1);
}
else
{
data=0x01; // svideo
WriteToDDC(TW100+4,0x00,&data,1);
}
//}
#endif
/////////////////////////////////
}
else if( tv_mode == TFT_PAL)
{
//PAL
if(tft_mode == TFT_16_9)
{
init_command_pal_fulldata();
}
else
{
init_command_pal_43data();
}
data=0x03;
WriteToDDC(TW100+4,0x03,&data,1);
#ifdef AV_SWITCH_DEAL
if (av_switch==1)
//{
// if(GPIO_I_GET(16)==0)//tft cvbs av in.
{
data=0x32; // cvbs
WriteToDDC(TW100+4,0x00,&data,1);
}
else
{
data=0x33; // svideo
WriteToDDC(TW100+4,0x00,&data,1);
}
//}
#endif
}
delay_1ms(10);
data=0x00;
WriteToDDC(TW100+4,0x3F,&data,1);
}
#else
void T100_Set_Mode(void)
{
BYTE data=0;
//NTSC
init_command_ntsc_fulldata();
data=0x03;
WriteToDDC(TW100+4,0x03,&data,1);
data=0x01;
WriteToDDC(TW100+4,0x00,&data,1);
}
#endif
void T100_Set_Source(BYTE source)
{
BYTE data=0;
data=0x01;
WriteToDDC(TW100+4,0x3F,&data,1);//reset
if(!source)
{
//init_command_cvbs2data();
//init_command_cvbs3data();
//init_command_cvbs4data();
init_command_svideodata();
//init_command_cvbsdata();
delay_1ms(10);
}
else
{init_command_cvbsdata();
delay_1ms(10);
}
data=0x00;
WriteToDDC(TW100+4,0x3F,&data,1);
}
/*
void T100_Set_Source(void)
{
BYTE data=0;
data=0x01;
WriteToDDC(TW100+4,0x3F,&data,1);//reset
//init_command_cvbs2data();
//init_command_cvbs3data();
//init_command_cvbs4data();
init_command_svideodata();
delay_1ms(10);
data=0x00;
WriteToDDC(TW100+4,0x3F,&data,1);
}
*/
void T100_Set_UD_LR(void)
{
BYTE data =0xf4; /*0xf4 pansnic au; 0xAC lg*/
WriteToDDC(TW100,0xe1,&data,1);
}
void T100_Set_DU_RL(void)
{
BYTE data =0xbc; /*0xf4 pansnic au; 0xAC lg*/
WriteToDDC(TW100,0xe1,&data,1);
}
void init_panel_ntsc(void)
{
BYTE data=0;
#ifdef TFT_FORMAT_CHANGE_SPECIAL_DEAL
if (switch_format_flag)
{
GPIO_M_SET(TFT_BL_CTL_GPIO, 1);
GPIO_E_SET(TFT_BL_CTL_GPIO, 1);
GPIO_O_SET(TFT_BL_CTL_GPIO, 0);
}
#endif
data=0x01;
WriteToDDC(TW100+4,0x3F,&data,1);//reset
init_command_ntsc_fulldata();
data=0x03;
WriteToDDC(TW100+4,0x03,&data,1);
if(tft_var.av_mode==AV_IN)//wool add
// if(GPIO_I_GET(16)==0)//tft cvbs av in.
{
data=0x00; // cvbs
WriteToDDC(TW100+4,0x00,&data,1);
}
else
{
data=0x01; // svideo
WriteToDDC(TW100+4,0x00,&data,1);
}
delay_1ms(10);
data=0x00;
WriteToDDC(TW100+4,0x3F,&data,1);
#ifdef TFT_RATIO_AUTO_TOGGLE_WHEN_FORMAT_CHANGE
// ReadFromI2c(0xa0,202,(BYTE *)&tft_ratio_flag,sizeof(tft_ratio_flag));
if(tft_ratio_flag==1)
{
T100_Set_Mode(TFT_NTSC,TFT_4_3,0);//4 /*4:3*/
}
else if(tft_ratio_flag==2)
{
T100_Set_Mode(TFT_NTSC,TFT_16_9,0);/*16:9*/
}
#endif
}
void init_panel_pal(void)
{
BYTE data=0;
#ifdef TFT_FORMAT_CHANGE_SPECIAL_DEAL
if (switch_format_flag)
{
GPIO_M_SET(TFT_BL_CTL_GPIO, 1);
GPIO_E_SET(TFT_BL_CTL_GPIO, 1);
GPIO_O_SET(TFT_BL_CTL_GPIO, 0);
}
#endif
data=0x01;
WriteToDDC(TW100+4,0x3F,&data,1);//reset
init_command_pal_fulldata();
//init_command_pal_43data();
data=0x03;
WriteToDDC(TW100+4,0x03,&data,1);
// if(GPIO_I_GET(16)==0)//tft cvbs av in.
if(tft_var.av_mode==AV_IN)//wool add
{
data=0x32; // cvbs
WriteToDDC(TW100+4,0x00,&data,1);
}
else
{
data=0x33;
WriteToDDC(TW100+4,0x00,&data,1);
}
delay_1ms(10);
data=0x00;
WriteToDDC(TW100+4,0x3F,&data,1);
#ifdef TFT_RATIO_AUTO_TOGGLE_WHEN_FORMAT_CHANGE
// ReadFromI2c(0xa0,202,(BYTE *)&tft_ratio_flag,sizeof(tft_ratio_flag));
if (tft_ratio_flag==1)
{
T100_Set_Mode(TFT_PAL,TFT_4_3,0);//4 /*4:3*/
}
else if(tft_ratio_flag==2)
{
T100_Set_Mode(TFT_PAL,TFT_16_9,0);/*16:9*/
}
#endif
}
#ifdef AUTO_DETECT_NTSC_PAL
BYTE source_pre=0;
//BYTE v_signal=0;
void DetectNTSC_PAL(void)
{
BYTE Rdata;
ReadFromddc(TW100+4, 0x3C,&Rdata,1);
if (source_pre!=Rdata)
{
source_pre=Rdata;
#ifdef TFT_FORMAT_CHANGE_SPECIAL_DEAL
switch_format_flag=2;
GPIO_M_SET(TFT_BL_CTL_GPIO, 1);
GPIO_E_SET(TFT_BL_CTL_GPIO, 1);
GPIO_O_SET(TFT_BL_CTL_GPIO, 0);
#endif
if((Rdata & 0x07) == 0) // NTSC
{
T100_Set_Mode(TFT_NTSC,TFT_16_9,1);
}
else //PAL
{
T100_Set_Mode(TFT_PAL,TFT_16_9,1);
}
delay_1ms(20);
}
/*
ReadFromddc(TW100+4, 0x3A,(BYTE *)&Rdata,1);
Rdata&=0x01;
if (v_signal!=Rdata)
{
if (Rdata) WriteI2c(TW100, 0x91, 0x87, 1);
else WriteI2c(TW100, 0x91, 0x07, 1);
v_signal=Rdata;
}
*/
}
#endif
/////////////////////////////////////////////////
void Detect_Sig(BYTE detect)
{
BYTE tmp;
ReadFromddc(TW100+4, 0x3A,(BYTE *)&tmp,1);
if(tmp&0x01) // No signal
{
// if(detect) // When switch to signal lost input or Signal lost
// {
BYTE temp;
temp= ReadFromddc(TW100, 0xC2,(BYTE *)&temp,1);
WriteI2c(TW100, 0xC2, temp|0x12,1);
WriteI2c(TW100, 0x9d, 0x10,1);
WriteI2c(TW100, 0x9e, 0xff,1);
WriteI2c(TW100, 0x9f, 0x50,1);
WriteI2c(TW100, 0x91, 0x87,1);
// }
}
/*else
{
if(detect) //When video switch and signal is normal
T100_Open_Panel();
else //if (NoSignal!=tmp) //Not video switch and signal recover
{
BYTE temp,temp1;
temp= ReadFromddc(TW100, 0xC2,(BYTE *)&temp,1);
WriteI2c(TW100, 0xC2, temp&~0x12,1);
// SourceSelect();
WriteI2c(TW100, 0x9d, 0x10,1);
WriteI2c(TW100, 0x9e, 0x80,1);
WriteI2c(TW100, 0x9f, 0x80,1);
temp1= ReadFromddc(TW100, 0xC2,(BYTE *)&temp1,1);
WriteI2c(TW100, 0x91, temp1&~0x80,1);
}
}
*/
}
/////////////////////////////////////////////////
void Switch_video_source(BYTE source)
{
BYTE data;
if (source==1)
{
WriteI2c(TW100, 0x91, 0x07, 1);
// ReadFromddc(0xa0,202,(BYTE *)&tft_ratio_flag,sizeof(tft_ratio_flag));
// if (tv_format==TV_FORMAT_PAL)
// T100_Set_Mode(TFT_PAL,tft_ratio_flag-1,1);//4 /*4:3*/
// else
// T100_Set_Mode(TFT_NTSC,tft_ratio_flag-1,1);//4
}
else if (!source)
{
if (tv_format==TV_FORMAT_PAL)
T100_Set_Mode(TFT_PAL,TFT_16_9,1);
else
T100_Set_Mode(TFT_NTSC,TFT_16_9,1);/*16:9*/
}
}
//extern void load_t102_factory_default_value(void);
//extern void Write_Gamma_table(void);
//extern void Write_Gamma_value(void);
extern void load_t102_factory_value(void);
void Init_T100_LCD_PANEL(void)
{
Reset_T100_LCD_PANEL();
T100_Write_TCONData();
T100_Close_Panel();
T100_Write_T100Init();
//Write_Gamma_table();//wool add
T100_Write_GAMMAData();
// Write_Gamma_value();
T100_Write_FilterData();
T100_Set_Source(tft_var.av_mode);
T100_Set_UD_LR();
T100_Open_Panel();
change_t100_as_setup(); //bonnie 050912
//load_e2prom_panel_setting();
//write_panel_setting();
//load_t102_factory_value();
//load_t102_factory_default_value();
}
void set_tft_format_mode(BYTE mode) // 0 ntsc 1 pal
{
if(mode)
{
// init_panel_pal();
T100_Set_Mode(TFT_PAL,tft_var.ratio_type,0);//wool add
}
else
{
// init_panel_ntsc();
T100_Set_Mode(TFT_NTSC,tft_var.ratio_type,0);
}
}
void change_t100_as_setup(void)
{
if (tv_format==MODE_PAL)
{
// init_panel_pal();
T100_Set_Mode(TFT_PAL,tft_var.ratio_type,0);//wool add
}
else //if(tv_format==MODE_NTSC)
{// init_panel_ntsc();
T100_Set_Mode(TFT_NTSC,tft_var.ratio_type,0);
}
}
#endif//end SUPPORT_T100_LCD_PANEL
#ifdef SUPPORT_I2C_LCD_Panel
void init_I2C_panel_4094(void)
{
int i;
const Data4094[8]={0,0,0,0,0,0,0,0};
regs0->sft_cfg0 &= ~(0xfffc << 1); //Disable ra20~ra26 pin 129~131, pin 133~136
GPIO_M_SET(42,1);
GPIO_E_SET(42,1);
GPIO_O_SET(42,1); //Set TFT_SB to H ,Enable TFT 9V.
GPIO_M_SET(41,1);
GPIO_E_SET(41,1);
GPIO_O_SET(41,0); //Set STROBE to L
GPIO_M_SET(0,1); //Set I2C_CLK to RISC
GPIO_E_SET(0,1);
GPIO_O_SET(0,1); //Set I2C_CLK to L
GPIO_M_SET(1,1); //Set I2C_DATA to RISC
GPIO_E_SET(1,1);
GPIO_O_SET(1,1); //Set I2C_DATA to H
delay_1us(100);
GPIO_O_SET(41,1); //Set STROBE to H for 4094 transfer data
delay_1us(10);
GPIO_O_SET(0,0); //Set I2C_CLK to L
delay_1us(7);
for(i=0;i<8;i++)
{
GPIO_O_SET(1,Data4094[i]);
delay_1us(7);
GPIO_O_SET(0,1);
delay_1us(7);
GPIO_O_SET(0,0);
delay_1us(7);
}
GPIO_O_SET(41,0);
delay_1us(10);
}
void init_I2C_command(void)
{
GPIO_M_SET(0,0); //Set I2C_CLK to IOP
GPIO_M_SET(1,0); //Set I2C_DATA to IOP
WriteI2c(0x88,0x01,0xc0,1);
WriteI2c(0x88,0x02,0x80,1);
WriteI2c(0x88,0x03,0xb0,1);
WriteI2c(0x88,0x04,0xc8,1);
WriteI2c(0x88,0x05,0xd5,1);
WriteI2c(0x88,0x06,0x4c,1);
WriteI2c(0x88,0x07,0xc0,1);
WriteI2c(0x88,0x08,0x98,1);
WriteI2c(0x88,0x09,0x99,1);
WriteI2c(0x88,0x0a,0xf0,1);
WriteI2c(0x88,0x0b,0x80,1);
WriteI2c(0x88,0x0c,0x50,1);
WriteI2c(0x88,0x0d,0x9b,1);
WriteI2c(0x88,0x0e,0x48,1);
WriteI2c(0x88,0x0f,0x3c,1);
WriteI2c(0x88,0x10,0x80,1);
WriteI2c(0x88,0x11,0x05,1);
WriteI2c(0x88,0x12,0x92,1);
WriteI2c(0x88,0x13,0x8c,1);
WriteI2c(0x88,0x14,0x47,1);
WriteI2c(0x88,0x15,0x40,1);
WriteI2c(0x88,0x16,0x5d,1);
WriteI2c(0x88,0x17,0x8f,1);
WriteI2c(0x88,0x18,0x2d,1);
}
void init_I2C_panel(void)
{
//For EDOM Panasonic LCD Panel test
init_I2C_panel_4094();
init_I2C_command();
GPIO_M_SET(0,0); //Set I2C_CLK to IOP
GPIO_M_SET(1,0); //Set I2C_DATA to IOP
WriteI2c(0x88,0x03,0xb0,1);
WriteI2c(0x88,0x0d,0x9b,1);
WriteI2c(0x88,0x06,0x4c,1);
delay_1us(100);
init_I2C_panel_4094();
init_I2C_panel_4094();
init_I2C_panel_4094();
GPIO_M_SET(0,0); //Set I2C_CLK to IOP
GPIO_M_SET(1,0); //Set I2C_DATA to IOP
WriteI2c(0x88,0x16,0x5d,1);
}
#endif
#ifdef EASTWIN
void init_an2526h(void)
{
if(tv_format == MODE_NTSC) //NTSC system
{
NTSC_SET();
init_an2526h_ntsc();
}
else // PAL system
{
PAL_SET();
init_an2526h_pal();
}
}
void init_an2526h_ntsc(void)
{
color_drv_data[1] = color_drv_data[1] | 0x80; /* NTSC system */
color_drv_data[2] = color_drv_data[2] | 0x80; /* NTSC system */
//color_drv_data[1] = color_drv_data[1] | 0x91; /* NTSC system *///MAPLE
/* retrieve the color parameter setting from EEPROM */
ReadFromI2c(I2C_ID_MEMORY, COLOR_ADDR,&color_value,1);
an2526h_value_change(COLOR_ADJ, color_value);
/* retrieve the brightness parameter setting from EEPROM */
ReadFromI2c(I2C_ID_MEMORY, BRIGHTNESS_ADDR,&brightness_value,1);
an2526h_value_change(BRIGHTNESS_ADJ, brightness_value);
an2526h_send_data();
}
void init_an2526h_pal(void)
{
color_drv_data[1] = color_drv_data[1] & 0x7F; /* PAL system */
color_drv_data[2] = color_drv_data[2] | 0x80; /* PAL system */
//color_drv_data[1] = color_drv_data[1] | 0x11; /* NTSC system *///MAPLE
/* retrieve the color parameter setting from EEPROM */
ReadFromI2c(I2C_ID_MEMORY, COLOR_ADDR,&color_value,1);
an2526h_value_change(COLOR_ADJ, color_value);
/* retrieve the brightness parameter setting from EEPROM */
ReadFromI2c(I2C_ID_MEMORY, BRIGHTNESS_ADDR,&brightness_value,1);
an2526h_value_change(BRIGHTNESS_ADJ, brightness_value);
an2526h_send_data();
}
void an2526h_send_data(void)
{
unsigned char index;
GPIO_M_SET(0,0); //Set I2C_CLK to IOP
GPIO_M_SET(1,0); //Set I2C_DATA to IOP
for(index=0;index<16;index++)
{
WriteI2c(AN2526H_ADDR,data_refresh_mode|index,color_drv_data[index],1); /* Data refresh mode */
}
}
void an2526h_value_change(unsigned char para,unsigned char value)
{
#ifdef AN2546H
if(para == COLOR_ADJ) /* color adjustment */
{
if(value == 8)
color_drv_data[2]=0x80;
else if(value < 8)
color_drv_data[2]=(0x80)-(8-value)*7;
else if(value > 8)
color_drv_data[2]=(0x80)+(value-8)*7;
}
else if(para == BRIGHTNESS_ADJ) /* brightness adjustment */
{
if(value == 8)
color_drv_data[5]=0x38;
else if(value < 8)
color_drv_data[5]=(0x38)-(8-value)*7;
else if(value > 8)
color_drv_data[5]=(0x38)+(value-8)*7;
}
#else //AN2526H
if(para == COLOR_ADJ) /* color adjustment */
{
if(value == 8)
color_drv_data[5]=0xca;
else if(value < 8)
color_drv_data[5]=(0xca)-(8-value)*4;
else if(value > 8)
color_drv_data[5]=(0xca)+(value-8)*5;
}
else if(para == BRIGHTNESS_ADJ) /* brightness adjustment */
{
if(value == 8)
color_drv_data[8]=0x5f;
else if(value < 8)
color_drv_data[8]=(0x5f)-(8-value)*8;
else if(value > 8)
color_drv_data[8]=(0x5f)+(value-8)*8;
}
#endif
}
void load_customer_default(void)
{
unsigned char default_view_mode,default_brightness_value,default_color_value;
default_brightness_value = 8; // default brightness value
default_color_value = 8; // default color value
default_view_mode = FULL_MODE; // default view mode value
WriteToI2c(I2C_ID_MEMORY,BRIGHTNESS_ADDR,&default_brightness_value,1);
WriteToI2c(I2C_ID_MEMORY,COLOR_ADDR,&default_color_value,1);
WriteToI2c(I2C_ID_MEMORY,VIEWMODE_ADDR,&default_view_mode,1);
}
void check_customer_default(void)
{
unsigned char eeprom_been_used;
ReadFromI2c(I2C_ID_MEMORY, BEEN_USED_ADDR,&eeprom_been_used,1);
if( eeprom_been_used != E2PROM_BEEN_USED)
{
eeprom_been_used = E2PROM_BEEN_USED;
WriteToI2c(I2C_ID_MEMORY,BEEN_USED_ADDR,&eeprom_been_used,1);
load_customer_default();
}
}
void init_lcd_display_mode(void)
{
unsigned char view_mode;
ReadFromI2c(I2C_ID_MEMORY,VIEWMODE_ADDR,&view_mode,1);
if( view_mode == NORMAL_MODE)
{
//PrintOsdMsg(STR_OS_VIEW_MODE_NORMAL,REGION2,1,0);
LCD_VIEW_MODE_NORMAL();
}
else
{
//PrintOsdMsg(STR_OS_VIEW_MODE_FULL,REGION2,1,0);
LCD_VIEW_MODE_FULL();
}
}
#endif
#ifdef SUPPORT_Auo_2inch_Digital_panel //add for auo 2" ccir656 panel
//define Auo panel I2c GPIO pin
#define AUO_CSB 0 //pin57 GPIO 0
#define AUO_SCL 1 //pin58 GPIO 1
#define AUO_SDA 2 //pin59 GPIO 1
/********************************************************************/
/* Function: init_auo_digital_interface() */
/* */
/* Initual the I2C GPIO */
/********************************************************************/
void init_auo_digital_interface(void)
{
regs0->sysclk_div_sel|=(1<<5); //set data output in ccir656 clock low
regs0->sft_cfg4&=~(1<<0);
regs0->sft_cfg4&=~(1<<1);
regs0->sft_cfg4&=~(1<<2);
GPIO_M_SET(AUO_SCL,1); //Set AUO_SCL to RISC
GPIO_M_SET(AUO_SDA,1); //Set AUO_SDA to RISC
GPIO_M_SET(AUO_CSB,1); //Set AUO_CSB to RISC
GPIO_E_SET(AUO_SCL,1);
GPIO_E_SET(AUO_SDA,1);
GPIO_E_SET(AUO_CSB,1);
}
void send_auo_panel_cmd(UINT16 set_comd)
{
int i;
GPIO_O_SET(AUO_CSB,0); //Set AUO_CSB to L
delay_1us(1);
for(i=15;i>=0;i--)
{
GPIO_O_SET(AUO_SCL,0);
if((set_comd>>i)&0x01)
{
GPIO_O_SET(AUO_SDA,1);
}
else
{
GPIO_O_SET(AUO_SDA,0);
}
// delay_1us(1);
GPIO_O_SET(AUO_SCL,1);
delay_1us(1);
}
GPIO_O_SET(AUO_CSB,1); //Set AUO_CSB to H
}
void init_auo_digital_panel(void)
{
init_auo_digital_interface();
send_auo_panel_cmd(0x000f);
send_auo_panel_cmd(0x4003);
send_auo_panel_cmd(0x6007);
send_auo_panel_cmd(0xc006);
}
#endif
#ifdef SUPPORT_Auo_UPS053_Digital_panel //add for auo 3.5" ccir656 panel
//define Auo panel I2c GPIO pin
#define AUO_CSB 0 //pin57 GPIO 0
#define AUO_SCL 1 //pin58 GPIO 1
#define AUO_SDA 2 //pin59 GPIO 2
/********************************************************************/
/* Function: init_auo_digital_interface() */
/* */
/* Initual the I2C GPIO */
/********************************************************************/
void init_auo_digital_interface(void)
{
regs0->sysclk_div_sel|=(1<<5); //set data output in ccir656 clock low
#ifndef PMP_KEYBOARD//olive add 2005-1-24
regs0->sft_cfg4&=~(1<<0);
regs0->sft_cfg4&=~(1<<1);
regs0->sft_cfg4&=~(1<<2);
GPIO_M_SET(AUO_SCL,1); //Set AUO_SCL to RISC
GPIO_M_SET(AUO_SDA,1); //Set AUO_SDA to RISC
GPIO_M_SET(AUO_CSB,1); //Set AUO_CSB to RISC
GPIO_E_SET(AUO_SCL,1);
GPIO_E_SET(AUO_SDA,1);
GPIO_E_SET(AUO_CSB,1);
GPIO_O_SET(AUO_CSB,1);
GPIO_O_SET(AUO_SDA,1);
GPIO_O_SET(AUO_SCL,1);
#endif
regs0->sft_cfg1 = regs0->sft_cfg1 & (~(1<<1));
GPIO_M_SET(17,1);
GPIO_E_SET(17,1);
GPIO_O_SET(17,1);
}
void write_auo_i2c_page(int iDevAdd, int iSubAdd, BYTE *iSetData ,int len)
{
int i,j;
GPIO_O_SET(AUO_CSB,1);
GPIO_O_SET(AUO_SDA,1);
GPIO_O_SET(AUO_SCL,1);
delay_1ms(2);
GPIO_O_SET(AUO_SDA,0);
delay_1us(7);
GPIO_O_SET(AUO_SCL,0);
delay_1us(7);
for(i=7;i>=0;i--)
{
if((iDevAdd>>i)&0x01)
GPIO_O_SET(AUO_SDA,1);
else
GPIO_O_SET(AUO_SDA,0);
delay_1us(3);
GPIO_O_SET(AUO_SCL,1);
delay_1us(1);
GPIO_O_SET(AUO_SCL,0);
delay_1us(1);
if((iDevAdd>>i)&0x01)
GPIO_O_SET(AUO_SDA,0);
if(i>0)
delay_1us(11);
else
delay_1us(9);
}
//wait for ack
GPIO_O_SET(AUO_SCL,1);
delay_1us(6);
GPIO_O_SET(AUO_SCL,0);
GPIO_O_SET(AUO_SDA,1);
delay_1us(1);
GPIO_O_SET(AUO_SDA,0);
delay_1us(12);
//set sub address
for(i=7;i>=0;i--)
{
if((iSubAdd>>i)&0x01)
GPIO_O_SET(AUO_SDA,1);
else
GPIO_O_SET(AUO_SDA,0);
delay_1us(3);
GPIO_O_SET(AUO_SCL,1);
delay_1us(1);
GPIO_O_SET(AUO_SCL,0);
delay_1us(1);
if((iSubAdd>>i)&0x01)
GPIO_O_SET(AUO_SDA,0);
if(i>0)
delay_1us(11);
else
delay_1us(9);
}
//wait for ack
GPIO_O_SET(AUO_SCL,1);
delay_1us(6);
GPIO_O_SET(AUO_SCL,0);
GPIO_O_SET(AUO_SDA,1);
delay_1us(1);
GPIO_O_SET(AUO_SDA,0);
delay_1us(31);
for(j=0;j=0;i--)
{
if((*(iSetData+j)>>i)&0x01)
GPIO_O_SET(AUO_SDA,1);
else
GPIO_O_SET(AUO_SDA,0);
delay_1us(3);
GPIO_O_SET(AUO_SCL,1);
delay_1us(1);
GPIO_O_SET(AUO_SCL,0);
delay_1us(1);
if((*(iSetData+j)>>i)&0x01)
GPIO_O_SET(AUO_SDA,0);
if(i>0)
delay_1us(11);
else
delay_1us(9);
}
//wait for ack
GPIO_O_SET(AUO_SCL,1);
delay_1us(6);
GPIO_O_SET(AUO_SCL,0);
GPIO_O_SET(AUO_SDA,1);
delay_1us(1);
GPIO_O_SET(AUO_SDA,0);
if(j<=24)
delay_1us(34);
else
delay_1us(15);
}
GPIO_O_SET(AUO_SCL,1);
delay_1us(66);
GPIO_O_SET(AUO_SDA,1);
}
void init_auo_ups053_digital_panel(void)
{
int i;
watchdog_onoff(0);
init_auo_digital_interface();
for(i=0;i<2;i++)
{
#ifdef PMP_KEYBOARD//olive mod 2005-1-24
WriteToI2c(0x58,0x00,&auo_053_ntsc[0],25);
#else
write_auo_i2c_page(0x58,0x00,&auo_053_ntsc[0],25);
#endif
}
watchdog_onoff(1);
}
#endif
#ifdef SUPPORT_Auo_UPS018_Digital_panel
void init_auo_ups018_digital_panel(void)
{
int iRts,kk;
GPIO_O_SET(CUT_PANEL_POWER ,1);
delay_1ms(100);
kk=WriteToI2c(0x58,0x00,auo_018_ntsc,5); //////////yangli add for write ups018 I2C,05/02/15
if(kk == 1) /////////////////////for debug
printf("write UPS018 ok!\n");
else
printf("write UPS018 error!\n");
iRts=WriteToI2c(0x88,0,an2526_data_ntsc,16); /* Data refresh mode */
if(iRts == 1)
printf("write an2526 ok!\n");
else
printf("write an2526 error!\n");
}
#endif
#ifdef SUPPORT_VX1818_TOSHIBA_PANEL
BYTE VX1818_ntsc_data[8]={0x5a,0x7d,0x94,0x11,0xd9,0xf8,0xd6,0x01};
BYTE VX1818_ntsc_Addr[8]={0x01,0xc0,0x3c,0x22,0x05,0xc1,0x3b,0x02};
void init_xv1818_toshiba_panel(void)
{
int i=0;
for(i=0,i<8,i++)
WriteToI2c(0xd8,VX1818_ntsc_Addr[i],&VX181_ntsc_data[i],1);
}
#endif
#ifdef LOWBAT_STR_FLASH
static BYTE flicker_count1=0;
void lowbat_flash(void)
{
if(++flicker_count1>10) flicker_count1=0;
if(flicker_count1>5)
{
PrintOsdMsg(STR_OS_LOWBAT, 1, 1, 1); //bonnie 041122
}
else
{
ClearOsdMsg(1); //bonnie 041122 //bonnie 041122
}
}
#endif
#ifdef SUPPORT_SHARP_TFT_RB5
BYTE TFT_color_level/*=12*/;
BYTE TFT_bright_level/*=12*/;
BYTE TFT_contrast_level/*=12*/;
#ifdef TFT_FACTORY_ADJUST_VALUE
BYTE tft_reg_val[15];
#endif
void write_A3820_tft(BYTE tft_cmd,BYTE tft_data)
{
BYTE i;
UINT16 data = (UINT16)tft_cmd<<8|tft_data;
GPIO_O_SET(GPIO_TFT_CLK,0);
GPIO_O_SET(GPIO_TFT_CS,1);
for(i=0;i<16;i++)
{
GPIO_O_SET(GPIO_TFT_CLK,0);
delay_1us(10);
if(data&0x8000)
GPIO_O_SET(GPIO_TFT_DI,1);
else
GPIO_O_SET(GPIO_TFT_DI,0);
delay_1us(10);
GPIO_O_SET(GPIO_TFT_CLK,1);
delay_1us(8);
data<<=1;
}
GPIO_O_SET(GPIO_TFT_CS,0);
GPIO_O_SET(GPIO_TFT_CLK,0);
delay_1us(150);
}
void write_sharp_tft(BYTE tft_cmd, BYTE tft_data)
{
BYTE i;
UINT16 data = (UINT16)tft_data<<8 | tft_cmd;
GPIO_O_SET(GPIO_TFT_CS,0);
GPIO_O_SET(GPIO_TFT_CLK,0);
for(i=0; i<16; i++)
{
GPIO_O_SET(GPIO_TFT_CLK,0);
//delay_1us(10);
if(data&0x0001)
GPIO_O_SET(GPIO_TFT_DI,1);
else
GPIO_O_SET(GPIO_TFT_DI,0);
//delay_1us(10);
GPIO_O_SET(GPIO_TFT_CLK,1);
//delay_1us(10);
data>>=1;
}
GPIO_O_SET(GPIO_TFT_CS,0);
GPIO_O_SET(GPIO_TFT_CLK,1);
}
void init_sharp_tft(void)
{
GPIO_M_SET(GPIO_TFT_CS,1);
GPIO_M_SET(GPIO_TFT_CLK,1);
GPIO_M_SET(GPIO_TFT_DI,1);
GPIO_E_SET(GPIO_TFT_CS,1);
GPIO_E_SET(GPIO_TFT_CLK,1);
GPIO_E_SET(GPIO_TFT_DI,1);
GPIO_O_SET(GPIO_TFT_CS,0);
GPIO_O_SET(GPIO_TFT_CLK,0);
GPIO_O_SET(GPIO_TFT_DI,0);
#ifndef TFT_REG_STORE_START
write_A3820_tft(0x04,0xf6);//0x04f2
write_A3820_tft(0x08,0x80);//0x0080 hue
write_A3820_tft(0x10,0x64);//0x005e y aperture
write_A3820_tft(0x18,tft_var.brightness/*0x00*/);//0x002c luminnace --------------bright
write_A3820_tft(0x20,tft_var.color/*0x00*/);//0x0028 color 0x0028TFT_color -------------color
write_A3820_tft(0x28,tft_var.contrast/*0x4f*/);//0x0054 rgb contrast 0x0054 TFT_contrast ------------contrast
write_A3820_tft(0x30,0x79);//0x0083 g_ch
write_A3820_tft(0x38,0x83);//0x0064 r_ch
write_A3820_tft(0x40,0x70);//0x006a b_ch
write_A3820_tft(0x48,0xec);//gamma1
write_A3820_tft(0x50,0xff);//gamma2
write_A3820_tft(0x58,0x64);//white peak
write_A3820_tft(0x60,0x99);//comac
write_A3820_tft(0x68,0x3b);//daco
write_A3820_tft(0x70,0x00);//0x0080 hue
write_A3820_tft(0x78,0x64);//0x005e y aperture
write_A3820_tft(0x80|0x02,0x58);//0x002c luminnace
write_A3820_tft(0x88|0x01,0x70);//0x0028 color 0x0028TFT_color
write_A3820_tft(0x90|0x01,0x6b);//0x0054 rgb contrast 0x0054 TFT_contrast
write_A3820_tft(0x98,0x16);//0x0064 r_ch
write_A3820_tft(0xa0|0x03,0x84);//0x006a b_ch
write_A3820_tft(0xa8,0x20);//gamma1
write_A3820_tft(0xb0,0x5c);//gamma2
write_A3820_tft(0xb8|0x03,0x91);//white peak
write_A3820_tft(0xc0|0x03,0x20);//comac
write_A3820_tft(0xc8|0x03,0xf8);//daco
write_A3820_tft(0xd0|0x01,0xc9);//comac
write_A3820_tft(0xd8|0x07,0x93);//horizoidal display position
write_A3820_tft(0xe5,0xf8);//ctr1 01b8
write_A3820_tft(0xe8|0x03,0x90);//ctr2
#else
ReadFromI2c(I2C_SLAVE_ADDRESS,TFT_REG_STORE_START,tft_reg_val,15);
write_A3820_tft(0x04,0xf6);//0x04f2
write_A3820_tft(0x08,tft_reg_val[1]);//0x0080 hue
write_A3820_tft(0x10,tft_reg_val[2]);//0x005e y aperture
write_A3820_tft(0x18,tft_var.brightness);//0x002c luminnace
write_A3820_tft(0x20,tft_var.color);//0x0028 color 0x0028TFT_color
write_A3820_tft(0x28,tft_var.contrast);//0x0054 rgb contrast 0x0054 TFT_contrast
write_A3820_tft(0x30,tft_reg_val[6]);//0x0083 g_ch
write_A3820_tft(0x38,tft_reg_val[7]);//0x0064 r_chg
write_A3820_tft(0x40,tft_reg_val[8]);//0x006a b_ch
write_A3820_tft(0x48,tft_reg_val[9]);//gamma1
write_A3820_tft(0x50,tft_reg_val[10]);//gamma2
write_A3820_tft(0x58,tft_reg_val[11]);//white peak
write_A3820_tft(0x60,tft_reg_val[12]);//comac
write_A3820_tft(0x68,tft_reg_val[13]);//daco
write_A3820_tft(0x70,0x00);//0x0080 hue
write_A3820_tft(0x78,0x64);//0x005e y aperture
write_A3820_tft(0x80|0x02,0x58);//0x002c luminnace
write_A3820_tft(0x88|0x05,0x70);//0x0028 color 0x0028TFT_color
write_A3820_tft(0x90|0x01,0x6b);//0x0054 rgb contrast 0x0054 TFT_contrast
write_A3820_tft(0x98,0x16);//0x0064 r_ch
write_A3820_tft(0xa0|0x03,0x84);//0x006a b_ch
write_A3820_tft(0xa8,0x19);//gamma1
write_A3820_tft(0xb0,0x55);//gamma2
write_A3820_tft(0xb8|0x03,0x92);//white peak
write_A3820_tft(0xc0|0x03,0x20);//comac
write_A3820_tft(0xc8|0x03,0xf8);//daco
write_A3820_tft(0xd0|0x01,0xc9);//comac
write_A3820_tft(0xd8|0x07,tft_reg_val[14]);//horizoidal display position
write_A3820_tft(0xe5,0xba/*fa*/);//ctr1 01b8
write_A3820_tft(0xe8|0x02,0x90);//ctr2
#endif
}
void set_tft_input_mode(BYTE mode)
{
if(mode) //setup
write_sharp_tft(0x20,0x19);
else
write_sharp_tft(0x20,0x18);
}
BYTE tft_input_mod=1;
BYTE dvd_standby=0;
void check_tft_input_mode()
{
GPIO_E_SET(37, 1);
GPIO_O_SET(37, 1);
GPIO_E_SET(37, 0);
if(GPIO_I_GET(37)&&!tft_input_mod)
{
set_tft_input_mode(1);
tft_input_mod = 1;
if(!dvd_standby) dvd_standby=1;
}
else
{
if((!GPIO_I_GET(37)) && tft_input_mod)
{
set_tft_input_mode(0);
tft_input_mod = 0;
if(!dvd_standby) dvd_standby=2;
}
}
}
#ifdef TFT_REG_STORE_START
extern BYTE tft_col_mid,tft_bri_mid,tft_con_mid;
#endif
void set_I2C_TFT_UPSXXX(BYTE set_mode, BYTE direct,BYTE steps)
{
#ifdef TFT_REG_STORE_START
BYTE tft_step_low,tft_step_high;
if (tft_var.mode==TFT_COLOR)
{
tft_step_low= tft_col_mid/13;
tft_step_high=(255-tft_col_mid)/14-5;
}
else if (tft_var.mode==TFT_BRIGHTNESS)
{
tft_step_low= tft_bri_mid/13;
tft_step_high=(255-tft_bri_mid)/14;
}
else if (tft_var.mode==TFT_CONTRAST)
{
tft_step_low= tft_con_mid/13;
tft_step_high=(255-tft_con_mid)/14-7;
}
#endif
switch(tft_var.mode)
{
case TFT_COLOR:
if(direct)
{
if(TFT_color_level<12)
#ifndef TFT_REG_STORE_START
tft_var.color-=3*steps;
else
tft_var.color-=13*steps;
#else
tft_var.color-=tft_step_low*steps;
else
tft_var.color-=tft_step_high*steps;
#endif
}
else
{
if(TFT_color_level<=12)
#ifndef TFT_REG_STORE_START
tft_var.color+=3*steps;
else
tft_var.color+=13*steps;
#else
tft_var.color+=tft_step_low*steps;
else
tft_var.color+=tft_step_high*steps;
#endif
}
write_A3820_tft(0x20,tft_var.color);
WriteI2c(0xa0, 203, tft_var.color, 1);
break;
case TFT_BRIGHTNESS:
if(direct)
{
if(TFT_bright_level<12)
#ifndef TFT_REG_STORE_START
tft_var.brightness-=7*steps;
else
tft_var.brightness-=12*steps;
#else
tft_var.brightness-=tft_step_low*steps;
else
tft_var.brightness-=tft_step_high*steps;
#endif
}
else
{
if(TFT_bright_level<=12)
#ifndef TFT_REG_STORE_START
tft_var.brightness+=7*steps;
else
tft_var.brightness+=12*steps;
#else
tft_var.brightness+=tft_step_low*steps;
else
tft_var.brightness+=tft_step_high*steps;
#endif
}
write_A3820_tft(0x18,tft_var.brightness);
WriteI2c(0xa0, 204, tft_var.brightness, 1);
break;
case TFT_CONTRAST:
if(direct)
{
if(TFT_contrast_level<12)
#ifndef TFT_REG_STORE_START
tft_var.contrast-=5*steps;
else
tft_var.contrast-=13*steps;
#else
tft_var.contrast-=tft_step_low*steps;
else
tft_var.contrast-=tft_step_high*steps;
#endif
}
else
{
if(TFT_contrast_level<=12)
#ifndef TFT_REG_STORE_START
tft_var.contrast+=5*steps;
else
tft_var.contrast+=13*steps;
#else
tft_var.contrast+=tft_step_low*steps;
else
tft_var.contrast+=tft_step_high*steps;
#endif
}
write_A3820_tft(0x28,tft_var.contrast);
WriteI2c(0xa0, 205, tft_var.contrast, 1);
break;
case TFT_RATIO_TYPE:
if (tft_var.ratio_type==TFT_4_3)
{
tft_var.ratio_type=TFT_16_9;
write_A3820_tft(0xe5,0xba/*0xfa*/);
}
else if (tft_var.ratio_type==TFT_16_9)
{
tft_var.ratio_type=TFT_4_3;
write_A3820_tft(0xe5,0xb9/*0xf9*/);
}
break;
case TFT_DISP_MODE:
if (tft_var.disp_mode==DISP_NORMAL)
{
tft_var.disp_mode=DISP_UPSIDE_DOWN;
write_A3820_tft(0xe8|0x02,0x20);
}
else if (tft_var.disp_mode==DISP_UPSIDE_DOWN)
{
tft_var.disp_mode=DISP_NORMAL;
write_A3820_tft(0xe8|0x02,0x90);;
}
break;
default:
break;
}
WriteI2c(0xa0, 199, 0x88, 1);
}
void set_tft_to_default(void)
{
TFT_color_level=12;//12;
TFT_bright_level=12;
TFT_contrast_level=12;
#ifndef TFT_REG_STORE_START
tft_var.color=0x28;//0x32;
tft_var.brightness=0x5f;
tft_var.contrast=0x58;//0x3f;
#else
ReadFromI2c(I2C_SLAVE_ADDRESS, TFT_REG_STORE_START+4, (BYTE*)&tft_var.color, 1);
ReadFromI2c(I2C_SLAVE_ADDRESS, TFT_REG_STORE_START+3, (BYTE*)&tft_var.brightness, 1);
ReadFromI2c(I2C_SLAVE_ADDRESS, TFT_REG_STORE_START+5, (BYTE*)&tft_var.contrast, 1);
#endif
WriteI2c(0xa0, 200, 12,1);
WriteI2c(0xa0, 201, 12,1);
WriteI2c(0xa0, 202, 12,1);
write_A3820_tft(0x20,tft_var.color);//63);
WriteI2c(0xa0, 203, tft_var.color, 1); //init colors
write_A3820_tft(0x18,tft_var.brightness);
WriteI2c(0xa0, 204, tft_var.brightness, 1); //init bright
write_A3820_tft(0x28,tft_var.contrast);
WriteI2c(0xa0, 205, tft_var.contrast, 1); //init contrast
write_A3820_tft(0xe5,0xfa);
write_A3820_tft(0xe8|0x03,0x90);
}
#endif
/*
#ifdef PDVD_USE_KEY_SETUP_TFT
void init_panel_value_default(void)
{
cust_scrn=0;
tft_var.mode=0;
//tft_var.brightness=BRIGHTNESS_DEFAULT;
//tft_var.hue=HUE_DEFAULT;
//tft_var.contrast=CONTRAST_DEFAULT;
//tft_var.color=COLOR_DEFAULT;
tft_var.ratio_type=RATIO_DEFAULT;
tft_var.disp_mode=DISP_NORMAL;
tft_var.av_mode=AV_OUT;
tft_var.volume_value=DEFAULT_VOL;
}
#endif //#ifdef PDVD_USE_KEY_SETUP_TFT
*/
#ifdef SUPPORT_T100_LCD_PANEL
void init_panel_value_default(void)
{
cust_scrn=0;
tft_var.mode=0;
tft_var.brightness=BRIGHTNESS_DEFAULT;
tft_var.color=COLOR_DEFAULT;
// tft_var.hue=HUE_DEFAULT;
tft_var.contrast=CONTRAST_DEFAULT;
tft_var.ratio_type=DISPMODE_DEFAULT;
tft_var.av_mode=AV_OUT;//wool
tft_var.dispmode=DISP_NORMAL;
tft_var.volume_value=DEFAULT_VOL;
//tft_ratio_flag=2;
}
/*
** Function:load_e2prom_panel_setting()
** Purpose:load panel setting from e2prom and store in the global var.
** tjf 2004-11-05
*/
//#ifdef TFT_LOADUSERSET_POWERON //tjf 2005-2-25 17:00
void load_e2prom_panel_setting(void)
{
//GPIO_M_SET(95,0); //Set I2C_CLK to IOP
// GPIO_M_SET(96,0); //Set I2C_DATA to IOP
ReadFromI2c(I2C_ID_MEMORY,BRIGHTNESS_ADDR,&tft_var.brightness,1);
delay_1ms(2);//2004-12-30 11:47
ReadFromI2c(I2C_ID_MEMORY,COLOR_ADDR,&tft_var.color,1);
delay_1ms(2);//2004-12-30 11:47
//ReadFromI2c(I2C_ID_MEMORY,HUE_ADDR,&tft_var.hue,1);
//delay_1ms(2);//2004-12-30 11:48
ReadFromI2c(I2C_ID_MEMORY,CONTRAST_ADDR,&tft_var.contrast,1);
delay_1ms(2);//2004-12-30 11:48
//ReadFromI2c(I2C_ID_MEMORY,DISPMODE_ADDR,&tft_var.ratio_type,1);
delay_1ms(1);//2004-12-30 11:48
//tjf 2004-12-10 16:42 add for protecting system halt because the value error
if((tft_var.brightness>170)||(tft_var.brightness==0))
{
tft_var.brightness=BRIGHTNESS_DEFAULT;
WriteI2c(I2C_ID_MEMORY,BRIGHTNESS_ADDR,tft_var.brightness,1);
}
if((tft_var.color>170)||(tft_var.color==0))
{
tft_var.color=COLOR_DEFAULT;
WriteI2c(I2C_ID_MEMORY,COLOR_ADDR,tft_var.color,1);
}
/* if((tft_var.hue>170)||(tft_var.hue==0))
{
tft_var.hue=HUE_DEFAULT;
WriteI2c(I2C_ID_MEMORY,HUE_ADDR,tft_var.hue,1);
}
*/
if((tft_var.contrast>170)||(tft_var.contrast==0))
{
tft_var.contrast=CONTRAST_DEFAULT;
WriteI2c(I2C_ID_MEMORY,CONTRAST_ADDR,tft_var.contrast,1);
}
update_panel_color();
//update_panel_hue();
update_panel_brightness();
update_panel_contrast();
//if(tft_var.dispmode)
// tft_var.dispmode=TFT_16_9;
#ifdef GPIO_DBG
printf("============= load_e2prom_panel_setting() =============\n");
printf("tft.brightness:%d\n",tft_var.brightness);
printf("tft.color:%d\n",tft_var.color);
// printf("tft.hue:%d\n",tft_var.hue);
printf("tft.contrast:%d\n",tft_var.contrast);
printf("tft.dispmode:%d\n",tft_var.dispmode);
#endif
}
//#endif
void update_panel_color(void)
{
BYTE temp=0;
temp = (tft_var.color+0x00);
WriteToDDC(TW100,COLOR_REG,&temp,1);
#ifdef GPIO_DBG
printf("============= update_panel_color() =============\n");
printf("tft_var.color:%02x\n",temp);
#endif
}
/*
void update_panel_hue(void)
{
BYTE temp=0;
temp = (tft_var.hue+0x00);
//WriteToDDC(TW100+4,HUE_REG,&temp,1);//wool change
WriteToDDC(TW100,HUE_REG,&temp,1);
#ifdef GPIO_DBG
printf("============= update_panel_hue() =============\n");
printf("tft_var.hue:%02x\n",temp);
#endif
}
*/
void update_panel_brightness(void)
{
BYTE temp=0;
temp = (tft_var.brightness+0x00);
WriteToDDC(TW100,BRIGHTNESS_REG,&temp,1);
#ifdef GPIO_DBG
printf("============= update_panel_brightness() =============\n");
printf("tft_var.brightness:%02x\n",temp);
#endif
}
void update_panel_contrast(void)
{
BYTE temp=0;
temp = (tft_var.contrast+0x00);
WriteToDDC(TW100,CONTRAST_REG,&temp,1);
#ifdef GPIO_DBG
printf("============= update_panel_contrast() =============\n");
printf("tft_var.contrast:%02x\n",temp);
#endif
}
/*
** Function:write_panel_setting()
** Purpose:write the tft register(brightness,color,hue,contrast,display mode)
** tjf 2004-11-05
*/
void write_panel_setting(void)
{
//GPIO_M_SET(DDC_SCL,1); //Set I2C_CLK to IOP
// GPIO_M_SET(DDC_SDA,1); //Set I2C_DATA to IOP
update_panel_brightness();
delay_1us(150);
update_panel_color();
delay_1us(150);
// update_panel_hue();
// delay_1us(150);
update_panel_contrast();
delay_1us(150);
T100_Set_Mode(TFT_NTSC,tft_var.ratio_type,0);
delay_1us(150);
T100_Set_UD_LR();
//init_command_cd4094b(TFT_NTSC,tft_var.dispmode);
}
/*
** Function:store_panel_setting()
** Purpose:
** tjf 2004-11-05
*/
void store_panel_setting(void)
{
//GPIO_M_SET(95,0); //Set I2C_CLK to IOP
// GPIO_M_SET(96,0); //Set I2C_DATA to IOP
WriteI2c(I2C_ID_MEMORY,BRIGHTNESS_ADDR,tft_var.brightness,1);
WriteI2c(I2C_ID_MEMORY,COLOR_ADDR,tft_var.color,1);
// WriteI2c(I2C_ID_MEMORY,HUE_ADDR,tft_var.hue,1);
WriteI2c(I2C_ID_MEMORY,CONTRAST_ADDR,tft_var.contrast,1);
// WriteI2c(I2C_ID_MEMORY,DISPMODE_ADDR,tft_var.ratio_type,1);
}
void load_panel_value_default(void)
{
cust_scrn=0;
tft_var.mode=0;
tft_var.brightness=BRIGHTNESS_DEFAULT;
tft_var.color=COLOR_DEFAULT;
// tft_var.hue=HUE_DEFAULT;
tft_var.contrast=CONTRAST_DEFAULT;
tft_var.ratio_type=DISPMODE_DEFAULT;
}
void write_panel_real_value(void)
{ WriteToDDC( 0x50, BRIGHTNESS_REG, &tft_var.brightness, 1);
WriteToDDC( 0x50, COLOR_REG, &tft_var.color, 1);
// WriteToDDC( 0x50, HUE_REG, &tft_var.hue, 1);
WriteToDDC( 0x50, CONTRAST_REG, &tft_var.contrast, 1);
WriteI2c(I2C_SLAVE_ADDRESS, TFT_REG_STORE_START+2, tft_var.contrast, 1);
WriteI2c(I2C_SLAVE_ADDRESS, TFT_REG_STORE_START+3, tft_var.brightness, 1);
// WriteI2c(I2C_SLAVE_ADDRESS, TFT_REG_STORE_START+4, tft_var.hue, 1);
WriteI2c(I2C_SLAVE_ADDRESS, TFT_REG_STORE_START+5, tft_var.color, 1);
}
void load_panel_real_value(void)
{
ReadFromddc( 0x50, BRIGHTNESS_REG, &tft_var.brightness, 1);
ReadFromddc( 0x50, COLOR_REG, &tft_var.color, 1);
// ReadFromddc( 0x50, HUE_REG, &tft_var.hue, 1);
ReadFromddc( 0x50, CONTRAST_REG, &tft_var.contrast, 1);
if((tft_var.brightness>170)||(tft_var.brightness==0))
{
tft_var.brightness=BRIGHTNESS_DEFAULT;
WriteToDDC(0x50, BRIGHTNESS_REG, &tft_var.brightness, 1);
}
if((tft_var.color>170)||(tft_var.color==0))
{
tft_var.color=COLOR_DEFAULT;
WriteToDDC( 0x50, COLOR_REG, &tft_var.color, 1);
}
// if((tft_var.hue>170)||(tft_var.hue==0))
// {
// tft_var.hue=HUE_DEFAULT;
// WriteToDDC( 0x50, HUE_REG, &tft_var.hue, 1);
// }
if((tft_var.contrast>170)||(tft_var.contrast==0))
{
tft_var.contrast=CONTRAST_DEFAULT;
WriteToDDC( 0x50, CONTRAST_REG, &tft_var.contrast, 1);
}
}
/* Function:reset_panel_setting()
** Purpose:
** tjf 2004-11-05
*/
void reset_panel_setting(void)
{
#ifdef GPIO_DBG
printf("===reset_panel_setting()===\n");
//printf("tft_var.mode:%02d\n",tft_var.mode);
#endif
//load_panel_value_default();
init_panel_value_default();
write_panel_setting();
//store_panel_setting();
}
/* Function:update_panel_data()
** Purpose:write panel some register data if someone need
** tjf 2004-11-03
*/
void update_panel_data(void)
{
//GPIO_M_SET(DDC_SCL,1); //Set I2C_CLK to IOP
// GPIO_M_SET(DDC_SDA,1); //Set I2C_DATA to IOP
switch(tft_var.mode)
{
case TFT_BRIGHTNESS:
update_panel_brightness();
break;
case TFT_COLOR:
update_panel_color();
break;
//case TFT_HUE:
// update_panel_hue();
// break;
case TFT_CONTRAST:
update_panel_contrast();
break;
case TFT_RATIO_TYPE:
if(tv_format==MODE_PAL)//wool change
T100_Set_Mode(TFT_PAL,tft_var.ratio_type,0);
else if(tv_format == MODE_NTSC)
T100_Set_Mode(TFT_NTSC,tft_var.ratio_type,0);
//T100_Set_Mode(TFT_NTSC,tft_var.ratio_type,0);
//init_command_cd4094b(TFT_NTSC,tft_var.dispmode);
break;
default:
break;
}
//store_panel_setting();
}
#endif //#ifdef PDVD_USE_KEY_SETUP_TFT
#ifdef TFT_FACTORY_ADJUST_VALUE
void update_tft_reg_val(void)
{
#if 0
if (tft_reg_address==14)
write_A3820_tft((tft_reg_address+13)<<3|0x07,tft_reg_value);
else
write_A3820_tft(tft_reg_address<<3,tft_reg_value);
#endif
#ifdef TFT_REG_STORE_START
WriteI2c(I2C_SLAVE_ADDRESS, TFT_REG_STORE_START+tft_reg_address, tft_reg_value, 1);
#endif
if (tft_reg_address==3)
{
tft_var.brightness=tft_reg_value;
WriteI2c(0xa0, 204, tft_var.brightness, 1);
WriteI2c(0xa0, 201, 12,1);
}
else if (tft_reg_address==4)
{
tft_var.color=tft_reg_value;
WriteI2c(0xa0, 203, tft_var.color, 1);
WriteI2c(0xa0, 200, 12,1);
}
else if (tft_reg_address==5)
{
tft_var.contrast=tft_reg_value;
WriteI2c(0xa0, 205, tft_var.contrast, 1);
WriteI2c(0xa0, 202, 12,1);
}
}
#endif