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

📄 intr.c

📁 台湾凌阳方案300万数码相机源代码
💻 C
📖 第 1 页 / 共 2 页
字号:



		//Joe@2003.3.22 10:46 add begin
		G_AutoPowerOffCount = 0;
		//Joe@2003.3.22 10:46 add end

		//patch4.5@richie@eject
		G_USBMSDC_ucEject = 0;

		//patch5.0@richie@usb key
		G_KeyScan = 1;
	}
	else if ((XBYTE[0x2078] & 0x02) == 0x02) //check usb power falling
	{
		XBYTE[0x2078] &= 0xfd;
		//printf("plug in\n");

		G_UI_USBConnect = K_UI_USB_CONNECT; //yichang
L2_SetGPIOBit(14,0);     //Power off
		//Joe@2003.3.22 10:46 add begin
		G_AutoPowerOffCount = 0;
		//Joe@2003.3.22 10:46 add end

		//patch4.5@richie@cardlock begin
		//detect card WP
		if (G_Card_Type == K_MEDIA_SDF)
		{
			UCHAR tmp;
			XBYTE[0x2405] &= 0xef;
			tmp = XBYTE[0x2409];
			tmp &= 0x80;
			if (tmp)
			{
				//printf("WP!!!\n");
				G_USBMSDC_ucCardLock = 1;
			}
			else
			{
				//printf("NOT WP\n");
				G_USBMSDC_ucCardLock = 0;
			}
		}
		else if (G_Card_Type == K_MEDIA_SMC)
		{
			UCHAR tmp;
			XBYTE[0x2406] &= 0xfd;
			tmp = XBYTE[0x240A];
			tmp &= 0x02;
			if (tmp)
			{
				//printf("1NOT WP\n");
				G_USBMSDC_ucCardLock = 0;
			}
			else
			{
				//printf("1WP!!!\n");
				G_USBMSDC_ucCardLock = 1;
			}
		}
		//patch4.5@richie@cardlock end
	}
	//patch4.5@richie@msdc plug out exception end

        INTR_Leave();

        INTR_EnableInterrupt();
}

//-----------------------------------------------------------------------------
//INTR_Enter
//-----------------------------------------------------------------------------
void INTR_Enter(void) USING_1
/*++

Routine Description:

        pre-processing in service routine of interrupt 0

Arguments:

        none

Return Value:

        none

--*/
{
}

//-----------------------------------------------------------------------------
//INTR_Leave
//-----------------------------------------------------------------------------
void INTR_Leave(void) USING_1
/*++

Routine Description:

        post-processing in service routine of interrupt 0

Arguments:

        none

Return Value:

        none

--*/
{
//        POWER_UsbConnectStatusChangeInt();

}

//-----------------------------------------------------------------------------
//INTR_DisableInterrupt
//-----------------------------------------------------------------------------
void INTR_DisableInterrupt(void) USING_1
/*++

Routine Description:

        disable relative trigger of interrupt 0

Arguments:

        none

Return Value:

        none

--*/
{
		//richie
		EX0 = 0;

        XBYTE[0x25d1] &= 0xfc;          //disable change event interrupt of
                                        //      video interface alternate setting
                                        //      audio interface alternate setting

        XBYTE[0x25a0] &= 0xfc;          //NAK of (automatic done by hardware)
                                        //      EP0 Out packet
                                        //      EP0 In packet

        XBYTE[0x25d0] &= 0xf0;          //disable ACK interrupt of
                                        //      EP0 Setup packet OK
                                        //      EP0 Out packet OK
                                        //      EP0 In packet OK
                                        //      USB reset event

        XBYTE[0x25a1] &= 0xc0;          //NAK of (automatic done by hardware)
                                        //      Bulk In packet
                                        //      Bulk Out packet
                                        //      Int In packet
                                        //      Bulk In 2 packet
                                        //      Bulk Out 2 packet
                                        //      Int In 2 packet

		// richie@1210
        //XBYTE[0x25d2] &= 0xc0;          //disable ACK interrupt of
/////        XBYTE[0x25d2] &= 0xc3;          //disable ACK interrupt of
                                        //      Bulk In packet OK
                                        //      Bulk Out packet OK
                                        //      Int In packet OK
                                        //      Bulk In 2 packet OK
                                        //      Bulk Out 2 packet OK
                                        //      Int In 2 packet OK
}

//-----------------------------------------------------------------------------
//INTR_EnableInterrupt
//-----------------------------------------------------------------------------
void INTR_EnableInterrupt(void) USING_1
/*++

Routine Description:

        enable relative trigger of interrupt 0

Arguments:

        none

Return Value:

        none

--*/
{
        XBYTE[0x25d1] |= 0x03;          //enable change event interrupt of
                                        //      video interface alternate setting
                                        //      audio interface alternate setting

//      XBYTE[0x25a0] |= 0x03;          //ACK of
//                                      //      EP0 Out packet
//                                      //      EP0 In packet
        //OHCI update by cch            //cch@10/30
        if (XBYTE[0x25c0] & 0x01)
        {
		//patch4.3@richie@oh0530 mark
                //XBYTE[0x25a0] &= 0xfc;  //NAK of
                                        //      EP0 Out packet
                                        //      EP0 In packet

		//patch4.3@richie@oh0530
                XBYTE[0x25c0] = 0xf9;   //clear EP0InAck
        }
	//patch4.4@richie@usbvd
	else if (G_btEP0Intr == 1)
        {
		//patch4.4@richie@usbvd
		G_btEP0Intr = 0;

		//patch4.3@richie@oh0530
		if(G_ucCtrlPhase==K_OutDataPhase)
			XBYTE[0x25a0] |= 0x01;
		else
                	XBYTE[0x25a0] |= 0x03;  //ACK of
                                        //      EP0 Out packet
                                        //      EP0 In packet
        }

        XBYTE[0x25d0] |= 0x07;          //enable ACK interrupt of
                                        //      EP0 Setup packet OK
                                        //      EP0 Out packet OK
                                        //      EP0 In packet OK

		//richie
    if (G_btBulkIntr == 1)
	{
//P1 = G_ucBulkPhase;
        switch (G_ucBulkPhase)
        {
                case K_CommandPhase:
                case K_OutDataPhase:
				//richie@0114
		//richie@mi 0409 mark
                //case K_OutDataPhaseWrite:
                case K_OutResponsePhase:
                        //DbgPrint(">>>>>>>>>>>    Out open\n");
			//richie ??? 02 or 06
                        XBYTE[0x25a1] |= K_USB_CLASS_OUT_OPEN;//0x06;   //ACK of
                                                //      Bulk Out packet
                                                //      Int In packet
                        XBYTE[0x25d2] |= K_USB_CLASS_OUT_ACK_MASK;//0x06;   //enable ACK interrupt of
                                                //      Bulk Out packet OK
                                                //      Int In packet OK
                        break;

                case K_InDataPhase:
		//richie@mi 0409 mark
                //case K_InDataPhaseRead:
                case K_InResponsePhase:
                case K_InCompletionPhase:
                        //DbgPrint("<<<<<<<<<<<    in open\n");
			//richie ??? 01 or 05
                        XBYTE[0x25a1] |= K_USB_CLASS_IN_OPEN;//0x05;   //ACK of
                                                //      Bulk In packet
                                                //      Int In packet
                        XBYTE[0x25d2] |= K_USB_CLASS_IN_ACK_MASK;//0x05;   //enable ACK interrupt of
                                                //      Bulk In packet OK
                                                //      Int In packet OK
                        break;

		//richie@mi 0409 begin
                case K_InDataPhaseRead:
			break;
                case K_OutDataPhaseWrite:
		        break;
		//richie@mi 0409 end

                default:
                        break;
        }
        //richie
        G_btBulkIntr = 0;
	}

	EX0 = 1;

}

⌨️ 快捷键说明

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