📄 iop.c
字号:
/**************************************************************************
* *
* 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 + -