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

📄 iop.c

📁 Sunplus 8202S source code.
💻 C
📖 第 1 页 / 共 2 页
字号:
 **************************************************************************/

void reset_iop(void)
{
    int     i;
    //int       len;
    //UINT32    *p, *q;

#ifdef PORTABLE_DVD//nono add 2005-2-18 16:44
#ifdef MP_BOARD_216_PIN_NON_SHARE//TEAC
	//use ioprom_spi_teac_8202_216.inc
    GPIO_M_SET(9, 0);//TEAC 8202 216 pin
    GPIO_M_SET(10, 0);//TEAC 8202 216 pin
    GPIO_M_SET(16, 0);//TEAC 8202 216 pin
#else
	//use ioprom_spi_teac_8202.inc
    GPIO_M_SET(21, 0);//TEAC 8202 256 pin
    GPIO_M_SET(22, 0);//TEAC 8202 256 pin
    GPIO_M_SET(23, 0);//TEAC 8202 256 pin
#endif
#endif//#ifdef PORTABLE_DVD
    
    // reset iop
    IOP_RESET();
    #ifdef PMP_MCU810
     // gpio 21, 22, 23 for VFD
        GPIO_M_SET(21, 0);
        GPIO_M_SET(22, 0);
        GPIO_M_SET(23, 0);
    #endif
    // setup IOP interface / GPIO
#ifdef OLD_I2C_DEFINE
    // select GPIO 35,36 for I2C
    regs0->gpio_master[35 / 16] &= ~(0x3 << (35 % 16));
#else
    #ifdef SPHE8202
        #if defined(MP_BOARD_256_PIN_NON_SHARE)||defined(MP_BOARD_256_PIN_SHARE)//NONO 4-3-23 22:19
			#if defined(SDRAM_BUS_32BITS)||defined(SDRAM_128Mx1) //mimitsai add 2004-12-07
                                // gpio 48(pin173), 49(pin174) for I2C
                                regs0->sft_cfg0 &= ~(0x1 << 7);//GPIO48
                                regs0->sft_cfg1 &= ~(0x1 << 5);//GPIO49 
                                GPIO_M_SET(48, 0);
                                GPIO_M_SET(49, 0);
            #elif defined(PMP_I2C_NEW)    //////////////YANGLI ADD FOR PMP 2002\12\29
                 regs0->sft_cfg4 &= ~(0x1 << 5);//I2C DATA PIN62   
                 GPIO_M_SET(5, 0);//I2C DATA PIN62
                 GPIO_M_SET(6, 0);//I2C CLK  PIN63                   
			#else
				//gpio 95(pin228), 96(pin229) for I2C
				GPIO_M_SET(95, 0);
				GPIO_M_SET(96, 0);			
			#endif
			
		#elif defined(MP_BOARD_216_PIN_NON_SHARE)	//kenny 2004/7/14
				// gpio 17(pin67), 18(pin68) for I2C
				regs0->sft_cfg1 &= ~(0x1 << 2);//GPIO17
                regs0->sft_cfg1 &= ~(0x1 << 1);//GPIO18
				GPIO_M_SET(17, 0);
				GPIO_M_SET(18, 0);			
        #else//MP_BOARD_256_PIN_NON_SHARE
                        // gpio 17, 18 for I2C
                        GPIO_M_SET(17, 0);
                        GPIO_M_SET(18, 0);
        #endif//MP_BOARD_256_PIN_NON_SHARE
    #elif defined(SPHE1000)
    // select GPIO44,45 for I2C
    GPIO_M_SET(44,0);
    GPIO_M_SET(45,0);
    #else
    // select GPIO 0,1 for I2C
    regs0->gpio_master[0 / 16] &= ~(0x3 << (0 % 16));
    #endif
#endif

#ifdef SUPPORT_SPI
    regs0->gpio_master[SPI_DATAIN / 16] &= ~(0x1 << (SPI_DATAIN % 16)); //SPI IN
    regs0->gpio_master[SPI_CLK / 16] &= ~(0x1 << (SPI_CLK % 16)); // SPI CLK
    regs0->gpio_master[SPI_DATAOUT / 16] &= ~(0x1 << (SPI_DATAOUT % 16)); // SPI OUT

    //regs0->gpio_master[49 / 16] |= (0x1 << (49 % 16)); //50 SPI IN
    //regs0->gpio_master[51 / 16] |= (0x1 << (51 % 16)); //51 SPI CLK
    //regs0->gpio_master[52 / 16] |= (0x1 << (52 % 16)); //52 SPI OUT
//while(1)
//{
//  GPIO_E_SET(49, 1);
//  GPIO_O_SET(49, 0);
    //GPIO_O_SET(49, 1);
//  GPIO_E_SET(49, 0);
//  delay_1ms(100);
//}
    //GPIO_E_SET(51, 1);
    //GPIO_O_SET(51, 1);
    
    //GPIO_E_SET(52, 1);
    //GPIO_O_SET(52, 1);
#endif

//  set GPIO97(GAME_D1) for PS/2 mouse DATA and GPIO98(GAME_D0) for PS/2 mouse CLK
#if defined(SUPPORT_PS2) && !defined(SUPPORT_GAMEPAD_MOUSE)
	GPIO_M_SET(97, 0);
	GPIO_M_SET(98, 0);
#endif

    // select GPIO 40,41,42,43 for game pad
#if defined(SUPPORT_NESGAME)||defined(SUPPORT_SPG_GAME) || defined(SUPPORT_GAMEPAD_MOUSE)
#ifndef SUPPORT_IR_GAME
#ifdef SPHE8202
	#if defined(MP_BOARD_256_PIN_NON_SHARE)
		#if defined(SDRAM_BUS_32BITS)||defined(SDRAM_128Mx1) //mimitsai add 2004-12-07
		regs0->gpio_master[98 / 16] &= ~(0x1 << (98 % 16)); //D0  gpio 98 PIN 231
		regs0->gpio_master[97 / 16] &= ~(0x1 << (97 % 16)); //D1  gpio 97 PIN 230
		regs0->gpio_master[99 / 16] &= ~(0x1 << (99 % 16)); //CLK   gpio 99 PIN 232
		regs0->gpio_master[96 / 16] &= ~(0x1 << (96 % 16)); //LATCH gpio 96 PIN 229
		#else
		regs0->gpio_master[98 / 16] &= ~(0x1 << (98 % 16)); //D0  gpio 98 PIN 231
		regs0->gpio_master[97 / 16] &= ~(0x1 << (97 % 16)); //D1  gpio 97 PIN 230
		regs0->gpio_master[99 / 16] &= ~(0x1 << (99 % 16)); //CLK   gpio 99 PIN 232
		regs0->gpio_master[100 / 16] &= ~(0x1 << (100 % 16)); //LATCH gpio 100 PIN 233
		#endif	
	#elif defined(MP_BOARD_216_PIN_NON_SHARE)	//rbhung for 8202S/D 216pin 2005-01-13
		#ifdef IC_8202E_216_PIN_NON_SHARE_CD_DVD_MP_BOARD
		regs0->gpio_master[15 / 16] &= ~(0x1 << (15 % 16)); //D0  gpio 15 PIN 65
		regs0->gpio_master[16 / 16] &= ~(0x1 << (16 % 16)); //D1  gpio 16 PIN 66
		regs0->gpio_master[11 / 16] &= ~(0x1 << (11 % 16)); //CLK   gpio 11 PIN 59
		regs0->gpio_master[10 / 16] &= ~(0x1 << (10 % 16)); //LATCH gpio 10 PIN 58
		#else
		regs0->gpio_master[13 / 16] &= ~(0x1 << (13 % 16)); //D0  gpio 13 PIN 62
		regs0->gpio_master[14 / 16] &= ~(0x1 << (14 % 16)); //D1  gpio 14 PIN 63
		regs0->gpio_master[11 / 16] &= ~(0x1 << (11 % 16)); //CLK   gpio 11 PIN 59
		regs0->gpio_master[12 / 16] &= ~(0x1 << (12 % 16)); //LATCH gpio 12 PIN 61
		#endif
	#else
		regs0->gpio_master[87 / 16] &= ~(0x1 << (87 % 16)); //D0  gpio 87 PIN 181
		regs0->gpio_master[86 / 16] &= ~(0x1 << (86 % 16)); //D1  gpio 86 PIN 180
		regs0->gpio_master[88 / 16] &= ~(0x1 << (88 % 16)); //CLK   gpio 88 PIN 183
		regs0->gpio_master[89 / 16] &= ~(0x1 << (89 % 16)); //LATCH gpio 89 PIN 184
	#endif
#else

#ifdef GBM_PORTABLE_DVD
    regs0->gpio_master[45 / 16] &= ~(0x1 << (45 % 16)); //D0  gpio 45 PIN 140
    regs0->gpio_master[17 / 16] &= ~(0x1 << (17 % 16)); //D1  gpio 17 PIN 141
    regs0->gpio_master[54 / 16] &= ~(0x1 << (54 % 16)); // CLK   gpio 54 PIN 154
    regs0->gpio_master[55 / 16] &= ~(0x1 << (55 % 16)); // LATCH gpio 55 PIN 155
#else
    #ifndef SDRAM_16Mb_Mode
    regs0->sft_cfg1 &= ~(0x1 << 3); // CS4 as GPIO3
    regs0->gpio_master[2 / 16] &= ~(0x1 << (2 % 16)); //D0  gpio 2 PIN 28
    regs0->gpio_master[3 / 16] &= ~(0x1 << (3 % 16)); //D1 gpio 3 PIN 29
        
    regs0->gpio_master[4 / 16] &= ~(0x1 << (4 % 16)); // clk  gpio 4 PIN 31
    regs0->gpio_master[35 / 16] &= ~(0x1 << (35 % 16)); // latch  gpio 35PIN 70

    #else

    // select GPIO 40,41,42,43 for game pad
    regs0->sft_cfg0 &= ~(0xff << 7);
    regs0->gpio_master[40 / 16] &= ~(0xf << (40 % 16));

    #endif
#endif
#endif	//SPHE8202
#endif  //SUPPORT_IR_GAME
#endif	//SUPPORT_NESGAME

#ifdef SPHE8202
    // gpio 20 as IR
    GPIO_M_SET(20, 0);
#elif defined(SPHE1000)
    // gpio 26 as IR
    GPIO_M_SET(26, 0);
#else
    // GPIO 53 as IR, GPIO 54,55,56 as VFD
    regs0->gpio_master[53 / 16] &= ~(0x1 << (53 % 16));
#endif

#ifdef SUPPORT_VFD
    #ifdef SPHE8202
        // gpio 21, 22, 23 for VFD
        GPIO_M_SET(21, 0);
        GPIO_M_SET(22, 0);
        GPIO_M_SET(23, 0);
	#elif defined(SPHE1000)
	// GPIO 26 as IR, GPIO 27,28,29 as VFD
        GPIO_M_SET(27, 0);
	GPIO_M_SET(28, 0);
	GPIO_M_SET(29, 0);
    #else
        // GPIO 53 as IR, GPIO 54,55,56 as VFD
        regs0->gpio_master[54 / 16] &= ~(0x7 << (54 % 16));
    #endif
#endif

    #ifdef TTE_HOST_DVD      //for TTE PCA964  LIJD 2004-11-11 20:02       
        regs0->sft_cfg0 &= ~(0x1 << 7);//GPIO48   
        regs0->sft_cfg1 &= ~(0x1 << 5);//GPIO49    
        GPIO_M_SET(32, 0);
        GPIO_M_SET(33, 0);
        GPIO_M_SET(35, 0); 
        GPIO_M_SET(36, 0);
        GPIO_M_SET(37, 0);        
        GPIO_M_SET(40, 0);
        GPIO_M_SET(41, 0);
        GPIO_M_SET(42, 0);
        GPIO_M_SET(43, 0);
        GPIO_M_SET(44, 0);
        GPIO_M_SET(45, 0);
        GPIO_M_SET(46, 0);
        GPIO_M_SET(47, 0);   
        GPIO_M_SET(48, 0);         
        GPIO_M_SET(49, 0);
    #endif

    // reset IOP/RISC interface
    for (i = 0; i < 7; i++) regs0->iop_data[i] = 0;

// below registers' value are used only for first time gotten by IOP
// regs0->iop_data[1]: in standby mode or not (1:Y, 0:N)
// regs0->iop_data[2]: store IR power key value
// regs0->iop_data[3]: store VFD power key value
// regs0->iop_data[4]: IR power key exist or not
// regs0->iop_data[5]: VFD power key exist or not
//
    if (bSleepFlag)
    {
        BYTE nIndex, bVFD_MASK, nIndex2 = 0;

        regs0->iop_data[1] = 1;
#if defined(DP2030_SCAN_KEY)//eastech2030
    GPIO_M_SET(23,0);
    GPIO_M_SET(100,0);
#elif defined(DP30H0_KEY_SCAN)//eastech2030
regs0->sft_cfg1 &= ~(0x1 << 5); 
    GPIO_M_SET(94,0);
    GPIO_M_SET(97,0);
#endif
#ifdef USE_VFDPORT_TO_KEYLIGHT_GBM
        regs0->gpio_master[54 / 16] &= ~(0x7 << (54 % 16));//NONO 2003-8-3 15:34
#endif//USE_VFDPORT_TO_KEYLIGHT_GBM
#ifdef VTREK_MINI_DVD      //linrc add for vtreck mini dvd 2004-3-27 16:50
    regs0->gpio_master[54 / 16] &= ~(0x7 << (54 % 16));//linrc 2003-8-3 15:34
    GPIO_M_SET(55,0);
#endif //endif VTREK_MINI_DVD
#ifdef USE_PIN31_CONTROL_POWER_LED
        regs0->gpio_master[4 / 16] &= ~(0x1 << (4 % 16));//gerry,2004/2/11 05:32

⌨️ 快捷键说明

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