srgb.c
上传用户:caisangzi8
上传日期:2013-10-25
资源大小:15756k
文件大小:12k
- /**************************************************************************
- * *
- * Copyright (c) 2002 by Sunplus Technology Co., Ltd. *
- * *
- * This software is copyrighted by and is the property of Sunplus *
- * Technology Co., Ltd. All rights are reserved by Sunplus Technology *
- * Co., Ltd. This software may only be used in accordance with the *
- * corresponding license agreement. Any unauthorized use, duplication, *
- * distribution, or disclosure of this software is expressly forbidden. *
- * *
- * This Copyright notice MUST not be removed or modified without prior *
- * written consent of Sunplus Technology Co., Ltd. *
- * *
- * Sunplus Technology Co., Ltd. reserves the right to modify this *
- * software without notice. *
- * *
- * Sunplus Technology Co., Ltd. *
- * 19, Innovation First Road, Science-Based Industrial Park, *
- * Hsin-Chu, Taiwan, R.O.C. *
- **************************************************************************/
- /*--------------------------------------------------------------------------
- | File Name : srgb.c
- |
- | Description : 8202 Serial RGB interface
- |
- | Version : 0.1
- |
- |
- | Rev Date Author(s) Status & Comments
- |---------------------------------------------------------------------------------
- | 0.1 2005/1/5 wthsin Creating
- |--------------------------------------------------------------------------------*/
- #include "config.h"
- #include "global.h"
- #include "macro.h"
- #include "regmap.h"
- #include "emuio.h"
-
- #ifdef SERIAL_RGB
- #ifndef DVDRELEASE
- #define SERIAL_RGB_DBG 1
- #endif
- #define D printf("INFO: __%d__(%s:%s)n",__LINE__,__FILE__,__FUNCTION__);
- #ifndef SERIAL_RGB_DBG
- #undef printf
- #undef print_block
- #define printf(f, a...) do {} while (0)
- #define print_block(x,y) do {} while (0)
- #endif
-
- /**************************************************************************
- * *
- * Function Name: SetSRGB_MODE *
- * *
- * Purposes: *
- * set SerialRGB Mode *
- * Descriptions: *
- * set SerialRGB Mode *
- * Arguments: *
- * ModeType: *
- * PANEL_MODE_280 0 *
- * PANEL_MODE_480 1 *
- * PANEL_MODE_528 2 *
- * PANEL_MODE_960 3 *
- * PANEL_MODE_1152 4 *
- * PANEL_MODE_1440 5 *
- * Returns: *
- * None *
- * See also: *
- * None *
- **************************************************************************/
- void setSRGB_MODE(UINT32 ModeType)
- {
- UINT16 rgb_period,sample_seq,order_odd,order_even;
- switch(ModeType)
- {
- case PANEL_MODE_280:
- rgb_period=4;
- sample_seq=0x01;
- order_odd=0;
- order_even=2;
- break;
- case PANEL_MODE_480:
- rgb_period=2;
- sample_seq=0x01;
- order_odd=0;
- order_even=2;
- break;
- case PANEL_MODE_528:
- rgb_period=7;
- sample_seq=0x49;
- order_odd=0;
- order_even=2;
- break;
- case PANEL_MODE_960:
- rgb_period=2;
- sample_seq=0x05;
- order_odd=0;
- order_even=0;
- break;
- case PANEL_MODE_1152:
- rgb_period=4;
- sample_seq=0x0f;
- order_odd=0;
- order_even=0;
- break;
- case PANEL_MODE_1440:
- rgb_period=14;
- sample_seq=0x7FF;
- order_odd=0;
- order_even=0;
- break;
- }
- regs0->srgb_mode[1] = ((order_even&0x07)<<7)&((order_odd&0x07)<<4)&(rgb_period&0x0f);
- regs0->srgb_mode[2] = sample_seq;
- }
- /**************************************************************************
- * *
- * Function Name: SRGB_Output_Switch *
- * *
- * Purposes: *
- * Enable/Disable SRGB output *
- * Descriptions: *
- * Enable/Disable SRGB output *
- * Arguments: *
- * srgbonoff: *
- * SRGB_OFF 0 *
- * SRGB_ON 1 *
- * lcd_tcon_mode: *
- * UPS051 0 *
- * UPS052 1 *
- * Returns: *
- * None *
- * See also: *
- * None *
- **************************************************************************/
- void SRGB_Output_Switch(UINT32 srgbonoff,UINT32 lcd_tcon_mode)
- {
- regs0->srgb_mode[0]= (regs0->srgb_mode[0]&0xFFFC)+(lcd_tcon_mode<<1+srgbonoff);
- }
- /**************************************************************************
- * *
- * Function Name: setSRGB_para *
- * *
- * Purposes: *
- * setup SRGB parameter *
- * Descriptions: *
- * setup SRGB parameter *
- * Arguments: *
- * F_S(2 bit)/HV_NEG(1 bit)/CP(1 bit)/VBEN(1 bit) *
- * /VBEN(1 bit)/UHEN(1 bit) (See register doc) *
- * Returns: *
- * None *
- * See also: *
- * None *
- **************************************************************************/
- void setSRGB_para(UINT8 F_S,UINT8 HV_NEG,UINT8 CP,UINT8 VBEN,UINT8 VAEN,UINT8 UHEN)
- {
- UINT16 value=0;
- value=F_S<<5 +HV_NEG<<4 +CP<<3 +VBEN<<2 +VAEN<<1 +UHEN;
- regs0->srgb_mode[0]= (regs0->srgb_mode[0]&0xFE03)+(value<<2);
- }
- /**************************************************************************
- * *
- * Function Name: SRGB_HV *
- * *
- * Purposes: *
- * setup SRGB HV parameter *
- * Descriptions: *
- * setup SRGB HV parameter *
- * Arguments: *
- * SRGB_V_MODE = 1 : Active vertical line number = 234 *
- * SRGB_V_MODE = 0 : Active vertical line number = 220 *
- * PAL_NTSC = 1 : PAL *
- * PAL_NTSC = 0 : NTSC *
- * Returns: *
- * None *
- * See also: *
- * None *
- **************************************************************************/
- void SRGB_HV ( UINT32 PAL_NTSC, UINT8 SRGB_V_MODE)
- {
- UINT32 Display_Period;
- UINT32 Total_V_Period;
- UINT32 SRGB_H_EDGE1_PNT;
-
- if (SRGB_V_MODE) Display_Period = 240;
- else Display_Period = 220;
-
- if (PAL_NTSC) Total_V_Period = 313;//313
- else Total_V_Period = 262;//263
-
- ////////////////////////////////////////
-
- if (PAL_NTSC) SRGB_H_EDGE1_PNT = 311;
- else SRGB_H_EDGE1_PNT = 260;
- UINT32 SRGB_H_EDGE2_PNT = SRGB_H_EDGE1_PNT+4;
-
- UINT32 SRGB_V_EDGE1_LT;
- if (PAL_NTSC) SRGB_V_EDGE1_LT = 27;
- else SRGB_V_EDGE1_LT = 15;
-
- UINT32 SRGB_V_EDGE2_LT = SRGB_V_EDGE1_LT + 1;
- UINT32 SRGB_V_EDGE1_LB = SRGB_V_EDGE1_LT + Total_V_Period;
- UINT32 SRGB_V_EDGE2_LB = SRGB_V_EDGE1_LB + 1;
-
- UINT32 SRGB_V_START_LT = SRGB_V_EDGE2_LT + 3;
- UINT32 SRGB_V_END_LT = SRGB_V_START_LT + Display_Period;
-
- UINT32 SRGB_V_START_LB = SRGB_V_EDGE2_LB + 3;
- UINT32 SRGB_V_END_LB = SRGB_V_START_LB + Display_Period;
-
- ////////////////////////////////////////
-
- regs0->tv_pccon[0] = SRGB_H_EDGE1_PNT;
- regs0->tv_pccon[1] = SRGB_H_EDGE2_PNT;
- regs0->tv_pccon[2] = SRGB_V_START_LT;
- regs0->tv_pccon[3] = SRGB_V_END_LT;
- regs0->tv_pccon[4] = SRGB_V_START_LB;
- regs0->tv_pccon[5] = SRGB_V_END_LB;
- regs0->tv_pccon[6] = SRGB_V_EDGE1_LT;
- regs0->tv_pccon[7] = SRGB_V_EDGE2_LT;
- regs0->tv_pccon[8] = SRGB_V_EDGE1_LB;
- regs0->tv_pccon[9] = SRGB_V_EDGE2_LB;
- }
- #endif //#ifdef SERIAL_RGB