⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iop.c

📁 Sunplus 8202S source code.
💻 C
📖 第 1 页 / 共 2 页
字号:
/**************************************************************************
 *                                                                        *
 *         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   : iop.c
|
|  Description : This file main contains three parts.
|                1. Include 8200 and 8202 iop normal play inc.
|                2. Include iop normal and standby reset function.
|                3. Include I2C(24C02) read and write function.
|
|  Version    :  0.1  
| 
| 
|  Rev	Date	        Author(s)      Status & Comments
|---------------------------------------------------------------------------------
|       2004/12/20        Lijd           Updating
|--------------------------------------------------------------------------------*/
#include "config.h"
#include "regmap.h"
#include "global.h"
#include "dma.h"
#include "gpio.h"
#include "iop.h"
#include "iophw.h"
#include "user_init.h"
#include "ircode.h"
#include "stdlib.h"

#include "lbc.h"

#if defined(SUPPORT_CARD_STORAGE) && defined(CARD_HOT_PLUG)
#include "cardfs.h"
#endif

#ifdef SUPPORT_RDS_FUNCTION//xyy 2003-12-4 16:05
#include "radio_rds.h"
#endif

#ifndef DVDRELEASE
//#define IOP_DEBUG_INFO        1
#endif

#ifdef  IOP_DEBUG_INFO
#include "sio.h"
#include "emuio.h"
#endif

#if defined(DVI_I2C_SET)&&defined(SPHE8202)//Modifed by ChenZhao on 2004-9-21 15:59  
#define K_loopMax 100//chenzhao on 2004-12-14 17:2  
//#include "c_i2c.c"
#endif//defined(DVI_I2C_SET)&&defined(SPHE8202)

#define IOP_RDY_WAIT        4000000

#if defined(TEAC_PORTABLE_DVD)//TEAC 
   #ifdef MP_BOARD_216_PIN_NON_SHARE     
		#include "ioprom_spi_teac_8202_216.inc"//TEAC
   #else     
        #include "ioprom_spi_teac_8202.inc"//TEAC
   #endif
#elif defined(SUPPORT_SPI_QSI)
        #include "ioprom_spi_qsi.inc"

#else  //support spi qsi

#ifdef OLD_I2C_DEFINE // with IR_NEC
    #include "ioprom22_oldi2c.inc"
#elif defined (SPHE8202)
    
	#ifdef MP_BOARD_256_PIN_NON_SHARE
	    #ifdef SDRAM_BUS_32BITS
               	#ifdef HJ_8202_5401    //fengjl add for himage 8202 ad7312 driver 2004-07-01 13:22
               		#include "ioprom22_v_256_ns_ad7312_key01_688.inc"
               	#elif defined(HJ_8202_8408)     
               		#include "ioprom22_256_ns_ad7312_key08_688.inc"
                #elif defined(IR_GBM_PHILIPS)||defined(IR_PHILIPS)//gbm yth add,2004-7-28 14:11
                    #include "ioprom22_8202_256pin_ns_32bit_philips.inc"      
                #elif defined(IR_M3004) //LIJD 2004-12-27 14:27 
               		#include "ioprom22_v_8202_256pin_ns_32bit_16312_game_m3004_5b8.inc" 
               	#elif defined(IR_KONKA) 
               		#include "ioprom22_v_8202_256pin_ns_32bit_16312_game_konka_5b8.inc"//LIJD 2005-2-4 13:23	     
            	#else
			#include "ioprom22_8202_256pin_ns_32bit_game_588.inc"
    	    	#endif
	    #else//#ifdef SDRAM_BUS_32BITS
		#ifdef EASTECH_DVD
            #ifdef EASTECH_DVD_TOP_DOOR_LOADER
				#include "ioprom22_8202_256pin_ns_16bit_eastech_2030.inc"
			#else
                #include "ioprom22_8202_256pin_ns_16bit_eastech_30H0.inc"
            #endif
        #elif defined(SDRAM_128Mx1)//#ifdef EASTECH_DVD //mimitsai add 2004-12-07
	    #include "ioprom22_8202_256pin_ns_16bit_midi_sy_m5.inc"
        #elif defined(IR_GBM_PHILIPS)//gbm yth add,2004-7-28 14:11
            #include "ioprom22_8202_256pin_ns_16bit_philips.inc"
        #elif defined(SUPPORT_IR_GAME)
            #include "ioprom22_8202_256pin_ns_16bit_nogame.inc"
        #elif defined(TTE_HOST_DVD)
            #include "ioprom22_8202_256pin_ns_16bit_pca9564.inc"
        #elif defined(PMP_DVD)   
          #include  "ioprom22_8202PMP_256_ns_16bit_MCU810_new_I2C.inc"  
          // #include "ioprom22_8202PMP_256_ns_16bit_MCU810.inc"         		
        #elif defined(IR_M3004)  
            #include "ioprom22_v_256pin_ns_16bit_m3004_121.5_5b8.inc"         		
		#else//#ifdef EASTECH_DVD
			//#include "ioprom22_8202_256pin_ns_16bit.inc"
			#include "ioprom22_8202_256pin_ns_16bit_game_16312_588.inc" //2004-6-23 14:05 lijd
		#endif//#ifdef EASTECH_DVD
	    #endif//#ifdef SDRAM_BUS_32BITS	
	#elif defined(MP_BOARD_216_PIN_NON_SHARE)//kenny 2004/7/14	
		#ifdef IC_8202E_216_PIN_NON_SHARE_CD_DVD_MP_BOARD
			#include "ioprom22_8202E_216pin_ns_16bit_game.inc"
	        #elif defined(IR_KONKA)//LIJD 2005-2-4 13:38
	                #include "ioprom22_v_8202S_16bit_konka_16312_5b8.inc"
		#else
			#include "ioprom22_8202_216pin_ns_16bit_game.inc"
			//#include "ioprom22_8202_216pin_ns_16bit.inc"
		#endif
	#elif defined(MP_BOARD_256_PIN_SHARE)
        #include "ioprom22_8202_256pin.inc"
    #else//MP_BOARD_256_PIN_NON_SHARE
    #include "ioprom22_8202.inc"
    #endif//MP_BOARD_256_PIN_NON_SHARE

#elif defined (SPHE1000)
    #include "ioprom22_1000.inc"
#else


#ifdef IR_NEC
#ifdef USE_C_IOP//2004-3-15 11:45 lijd
#if (VFD_DRIVER==NEC16312)
#include "../cc65/iopc_inc/iopc_16312.inc"
#endif
#else//USE_C_IOP
#if (VFD_DRIVER==NEC16312)
    #ifdef MICO_DVD
        #include "ioprom22_v_mico.inc"
    #elif defined(F94_5)
        #include "ioprom22_v_945.inc"
    #elif defined(GAME_D0_D1_EXCHANGE)
        #include "ioprom22_v_new_2.inc"  //gerry.2003-12-1 9:41
    #elif defined(GBM_PORTABLE_DVD)
        #include "ioprom_portable.inc"
    #elif defined(SUPPORT_I2C_LCD_Panel)
        #include "ioprom_portable_slowI2C.inc"
    #elif defined(SUPPORT_RECEIVER) //huziqin 2004-2-26
        #include "ioprom_receiver.inc"
        //#include "ioprom_gbm_receiver_588.inc" //huziqin 2004-4-29.key scan not work.I will handle it later
    #elif defined(BBK_DSS_555_PANNEL)    //fengjl add 4-1-13 13:12
    #include "ioprom22_v_16312_sw.inc"
    //#include "ioprom22_v_16312_pt6961_sm1623.inc"  //ljd 03/9/19
    #elif defined(PANDA_DVD_16) //gerry,2004-3-16 13:31
        #include "ioprom22_v_16312_sw.inc"//for read nec16312 sw  2004-2-13 12:36 LIJD
    #elif defined (SUPPORT_SPI)
        #include "ioprom_spi.inc"
    #elif defined(HUAJIA_DVD)
//               #include "ioprom22_v_16312_huajia_5a8.inc"
               #include "ioprom22_v_16312_huajia_5b8.inc"
    #else //default
         #include "ioprom22_v_16312_game_5b8_rsr.inc"   //for process 8200-1 sometimes risc death when first time 2004-7-28 16:47 lijd
         //#include "ioprom22_v_16312_sw_game_5b8.inc" //for 16312+game+switch 2004-6-25 11:12                
         //#include "ioprom22_v_16312_SW_5B8.inc"  //only for 16312+ read switch  not have game function
    #endif
#elif (VFD_DRIVER == AD7312)
    #include "ioprom22_v_ad7312_658.inc"
#elif (VFD_DRIVER==HT1621)
    #include "ioprom22_v_ht1621.inc" //used  for 121.5 MHZ
    // #include "ioprom22_v_HT1621_94_5.inc" //used  for 94.5 MHZ
#elif (VFD_DRIVER==SPL10)
    #include "ioprom22_v_spl10.inc"
#elif (VFD_DRIVER==HC164)
    #include "ioprom22_v_hc164.inc"
#elif (VFD_DRIVER==GT1128)
    #include "ioprom22_v_gt1128_game_5d8.inc"
#elif (VFD_DRIVER==PT6554)
    #include "ioprom22_v_pt6554.inc"
#endif
#endif//USE_C_IOP
#elif defined(IR_PHILIPS)
    #include "ioprom22_v_p.inc" //new iop for philip IR
#elif defined(IR_THOMSON)
    #include "ioprom22_v_thomson_16312_588.inc"
#elif defined(IR_M50560)
    #include "ioprom22_v_m50560_16312_588.inc"
#elif defined(IR_AS1213)
    #include "ioprom22_v_as1213_8200_16312_sw_game_5b8.inc"
#else
    #include "ioprom22_v_16312_pt6961_sm1623.inc"   //2004-2-8 16:38 LIJD
#endif
#endif
#endif //for spi qsi


#define IOP_RESET() (regs0->iop_control = IOPHW_RESET)
#define IOP_GO()    (regs0->iop_control = 0)


#ifdef SOFT_UART_OUT 
    int PutSoftUartChar(BYTE *,int);
    int GetSoftUartChar(BYTE *,int);    
    BYTE bResetIop=0;       
#endif  

BYTE bSleepFlag = 0; // keep standby mode flag

extern const BYTE ir_mapcode[256];
extern const BYTE vfd_keycode[40];

extern void LoadModual(UINT16);

/**************************************************************************
 *  Function Name: void reset_iop(void)                                   *
 *  Purposes:                                                             *
 *              Reset iop for normal / standby mode.                      *
 *  Descriptions:                                                         *
 *              This function contains three parts                        *   
 *              1.   reset iop                                            *
 *              2.   Set I2C,VFD,IR,GAME GPIOS for iop use.               *
 *                   if system is coming into standby mode. then pass     *
 *                   the IR or VFD power key value and flag to reset code.*
 *              3.   LoadModual(MODUAL_IOP_RESET) /LoadModual(MODUAL_IOP) *
 *  Arguments:                                                            *
 *              (None)                                                    *
 *  Returns:                                                              *
 *              (None)                                                    *
 *  See also:                                                             *
 *              (None)                                                    *

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -