- Visual C++源码
- Visual Basic源码
- C++ Builder源码
- Java源码
- Delphi源码
- C/C++源码
- PHP源码
- Perl源码
- Python源码
- Asm源码
- Pascal源码
- Borland C++源码
- Others源码
- SQL源码
- VBScript源码
- JavaScript源码
- ASP/ASPX源码
- C#源码
- Flash/ActionScript源码
- matlab源码
- PowerBuilder源码
- LabView源码
- Flex源码
- MathCAD源码
- VBA源码
- IDL源码
- Lisp/Scheme源码
- VHDL源码
- Objective-C源码
- Fortran源码
- tcl/tk源码
- QT源码
UiUsbDevice.c
资源名称:SDK_M5661.rar [点击查看]
上传用户:hjhsjcl
上传日期:2020-09-25
资源大小:11378k
文件大小:45k
源码类别:
压缩解压
开发平台:
C++ Builder
- /*==========================================================================
- Copyright (c) 2004 ALi Corporation. All Rights Reserved
- File: UiCommon.c
- content: user interface for usb module
- History: Created by TNE 2004/8/17
- ==========================================================================*/
- #define _UI_USB_H_
- #include <DP8051XP.H>
- #include "TypeDef.h"
- #include "Const.h"
- #include "Reg5661.h"
- #include "Common.h"
- #include "UiCommon.h"
- #include "UiSysStr.h"
- #include "Usb.h"
- #include "OledString.h"
- #if(_PM_MTP_)
- #include "FileSystem.h"
- #include "Mtp.h" //050418 allen
- #include "MtpDataBase.h" //Allen060419#1
- #include "Drm.h" //050418 allen
- #endif
- #include "DDM.h"
- #include "NandFlash.h"
- #include "OLED.h"
- #include "IconDefine.h"
- #include "UiUsbDevice.h" //allen051101#4 add
- #if(USE_STEP_UP_CONVERTER)
- #include "StepUp.h"
- #endif
- #if(USE_FW_CHARGER) //060918Renshuo //Ted 1013
- #include "Charger.h"
- #endif
- /* //allen050608#1
- Note:
- 1. Key Hold (Write Protect):
- gfWPFlag_Hw: indicate current WP state.
- GPIOH[0]=1: No-WriteProtect (SDK)
- GPIOH[0]=0: WriteProtect (SDK)
- search "obGPIOHDAT" in this file, and modify the statement.
- */
- //Walace060620#1 start
- //===========================================
- #define ST_FORCE_REFRESH 0x01
- #define ST_BACKGROUND 0x02
- #define ST_BATTERY 0x04
- #define ST_RW_STATUS 0x08
- #define ST_DISP_CMD 0x70
- #define ST_DISP_SUSPEND 0x10
- #define ST_DISP_RESUME 0x20
- void UiFlashDisk(BYTE bStatus); //allen051101#4
- //=============================================
- //Walace060620#1 end
- void UsbSaveMtpMode(BYTE fMtpMode) large;
- extern void SD_POWER_OFF(void);
- extern CBYTE cbDeviceDescriptor[];
- extern XBYTE gbSecureClockState;
- BOOL gfKeyReady;
- ////allen051101#3: move from main()
- XBYTE xbUiState=UI_USB_IDLE;
- XBYTE xbUiCurState=UI_USB_IDLE;
- XBYTE gxbUiRwIconStep; //tne 2007/01/04 #2
- XBYTE gxbUiRwIconDelay; //tne 2007/01/04 #2
- //tne 2005/08/24 //use xbUiBattCounter for temp variable (to get RTC counter)
- XBYTE xbUiBattCounter;
- WORD ConvertToV(BYTE bSarAdc); // Jeff070411#1 for charge Debug
- void ChargerDebug(void) large; // Jeff070411#1 for charge Debug
- #if(_PM_MTP_|USE_RTC_COUNTER) //David060412 start, prevent lost RTC interrupt //Ted 1013
- XBYTE gxbTemp;
- #endif //David060412 end
- #if(!ONE_BATT_MODE)
- BYTE bTimeTemp; //add by Rojam 070202
- #endif
- #if(COST_DOWN_CIRCUIT)
- XBYTE xbUsbFlag=0;
- #endif
- void UiCheckAlarm(void); //Walace061019#1
- #if(SYS_USE_KEY_HOLD) //modify by Rojam 2007-05-18 17:27
- BOOL CheckWPKey(void) //Allen060511#0 new_nf
- {
- if(gfWPFlag_Sw)
- {
- return TRUE; // Write-protect
- }
- if(obGPIOHDAT&0x01)
- return FALSE; // non-Write-protect
- else
- return TRUE; // Write-protect
- }
- #endif
- /*--------------------------------------------------------------------------
- Description:
- Main program for TARGET UsbFlashDisk
- Arguments:
- Global arguments:
- Returns:
- --------------------------------------------------------------------------*/
- #if(DRM_MODE_EN)
- BOOL CheckModeKey(void)//David 050518
- {
- BYTE bKeyRept;
- if(!(obUSBMISCCTL & 0x10))//Nick060605#2 add it
- return FALSE;
- //0001 11xx
- bKeyRept=0x10;
- while(bKeyRept)
- {
- if(!(obGPIOBDAT&0x28)) //Gpio 3(ouput low) 6(input) , key released //1001000
- {
- gfKeyReady=TRUE;
- return FALSE;
- }
- else //key pressed
- {
- if(gfKeyReady)
- {
- bKeyRept--;
- }
- else
- return FALSE;
- }
- }
- return TRUE;
- }
- #endif
- /*--------------------------------------------------------------------------
- Desciption:
- Handle USB suspend & resume
- Arguments:
- Returns:
- void
- 2004/11/05: use gbBuf as Keep Buffer
- 0,1: GPIOB
- 2,3: GPIOC
- 4,5: GPIOE
- 6,7: GPIOH
- 8: obMODSEL1
- 9: obMODSEL2
- --------------------------------------------------------------------------*/
- API void USB_Suspend(void) large//allen050610#1
- {
- //remove !_PM_MTP_ by tne 2006/12/01 #1
- #if (!(_PM_MPTEST_|SETTING_FOR_ISP_START))
- BYTE gbuf[10];
- NandFinishJob();
- obUSBDEVEPAFCTR |= EP_INI;
- obUSBDEVEPBFCTR |= EP_INI;
- /* //Walace060620#1 start
- // WHH #1 060607 (start)
- obCLKSRAMCTRL=0xD0;
- obCLKSMCTRL=0xD0;
- obCLKMCUCTRL=0xD0;
- OledCtrlEn();
- OLED_CLEAR_ALL();
- OLED_WRITE(OLED_CMD_SET_DISP_OFF) ;
- OledCtrlDis();
- obCLKMCUCTRL=0xA0;
- obCLKSRAMCTRL=0xA0;
- obCLKSMCTRL=0xA0;
- // WHH #1 060607 (end)
- */
- UiFlashDisk(ST_DISP_SUSPEND);
- //Walace060620#1 end
- // obGPIOADAT = 0x00; //Force GPIOA Howard 050812 del
- // obGPIOADIR = 0xFF;
- // obGPIOAPUEN =0x00;
- //allen041129#2 start
- gbuf[0] = obGPIOBDAT; //keep GPIOB data //David , 050517
- gbuf[1] = obGPIOBDIR;
- POWER_OFF_3V3SD();
- obGPIOBDAT = 0x01;
- obGPIOBDIR = 0xFF; //GPIOB0 => force HI => powerdown
- obGPIOBPUEN =0x00;
- //allen041129#2 end
- gbuf[2] = obGPIOCDAT; //Record GPIOC
- gbuf[3] = obGPIOCDIR;
- obGPIOCDAT = 0x00; //Force GPIOC
- obGPIOCDIR = 0xFF;
- obGPIOCPUEN =0x00;
- // obGPIODDAT = 0x00; //Force GPIOD allen051111 del
- // obGPIODDIR = 0xFF;
- // obGPIODPUEN =0x00;
- gbuf[4] = obGPIOEDAT; //Record GPIOE
- gbuf[5] = obGPIOEDIR;
- #if(COLOR_MODE!=3 ) //modify by Rojam 2007-05-17 15:37
- POWER_OFF_3V3_FM(); //Allen060224: use define
- #endif
- obGPIOEDAT = 0x40/*0x00*/; //Force GPIOE //Allen060224: power-down FM in suspend
- obGPIOEDIR = 0xFF;
- obGPIOEPUEN =0x00;
- obGPIOFDAT = 0x00; //Force GPIOF
- obGPIOFDIR = 0xFF;
- obGPIOFPUEN =0x00;
- obGPIOGDAT = 0x00; //Force GPIOG
- obGPIOGDIR = 0xFF;
- obGPIOGPUEN =0x00;
- gbuf[6] = obGPIOHDAT; //Record GPIOH
- gbuf[7] = obGPIOHDIR;
- obGPIOHDAT = 0x00; //Force GPIOH
- obGPIOHDIR = 0xFF; //Howard 1018
- obGPIOHPUEN =0x00;
- obGPIOIDAT = 0x00; //Force GPIOI
- obGPIOIDIR = 0xFF;
- obGPIOIPUEN =0x00;
- obGPIOJDAT = 0x00; //Force GPIOJ
- obGPIOJDIR = 0xFF;
- obGPIOJPUEN =0x00;
- obGPIOKDAT = 0x00; //Force GPIOK
- obGPIOKDIR = 0xFF;
- obGPIOKPUEN =0x00;
- obGPIOLDAT = 0x00; //Force GPIOL
- obGPIOLDIR = 0xFF;
- obGPIOLPUEN =0x00;
- obGPIOMDAT = 0x00; //Force GPIOM
- obGPIOMDIR = 0xFF;
- obGPIOMPUEN =0x00;
- gbuf[8] = obMODSEL1;
- obMODSEL1 = 0x00; //PWD_ALL 1105
- gbuf[9] = obMODSEL2;
- obMODSEL2 = 0x00; //PWD_ALL 1105
- PIN_SD_PDDAT|=SD_PD; //Force SD_PD PIN ON (POWER OFF), Vicky1005 add
- PIN_SD_PDDIR|=SD_PD; //SD_PD(Output), Vicky1005 add
- gfSDinit=FALSE; //Vicky061213#1
- #if(_PM_MTP_)
- gxbStorAvailable[SD_LUN]=STORAGE_NOT_EXIST; //Vicky061213#1
- #endif
- UsbSuspend_DPLL(); //<- code stop here
- //
- // Restore Gpio State
- //
- obGPIOBDIR = gbuf[1]; //Restore GPIOB
- #if(USE_STEP_UP_CONVERTER)
- #if(_C_MODE_)
- gxbDrawUsbUi|=0x01;
- #else
- gxbDrawUsbUi|=0x07;
- #endif
- #endif
- obGPIOBDAT = gbuf[0];
- obGPIOCDAT = gbuf[2]; //Restore GPIOC
- obGPIOCDIR = gbuf[3];
- obGPIOEDAT = gbuf[4]; //Restore GPIOE
- obGPIOEDIR = gbuf[5];
- obGPIOHDAT = gbuf[6]; //Restore GPIOH
- obGPIOHDIR = gbuf[7];
- obMODSEL1 = gbuf[8];
- obMODSEL2 = gbuf[9];
- UsbSuspend_WaitCmd(); //050610
- UiFlashDisk(ST_DISP_RESUME); //Walace060620#1
- #endif
- }
- bit GetUsbConfig(void) //Allen060622 new_nf
- {
- BOOL fAutoRun = FALSE; //Nick060706
- //vicky061128#1
- #define MTP_PID_0 0x06
- #define MTP_PID_1 0x11
- //End
- bit fRet=FALSE;
- #if(NEW_FLASH)
- obSYSSOFTRSTCTRL |= USB_RST_DIS;
- obUSBOTGCTRL &= 0xFD; //DPLL normal
- obMODSEL3 |= MOD_USB_EN; //USB Clock EN
- #endif
- if(NandReadPhySec(gxwAddrPMI,1,SRAM_USB_DESC_ADDR)) //read PMI
- {
- *((BYTE *)&gwRomIdx+1) = gxbConfig[PM_CONFIG]; //get config address
- *((BYTE *)&gwRomIdx) = gxbConfig[PM_CONFIG+1];
- //060426: set clk from config
- if(NandReadPhySec(gwRomIdx,1,SRAM_USB_DESC_ADDR)) //read config data
- {
- #if(USE_FW_CHARGER) //Ted 1013 // Jason 20070119#1 // Jeff070303#1 // Jeff070411#1
- GetChargerStageInf();
- #endif
- if(gxbConfig[1] == 3) //Nick060706
- fAutoRun = TRUE; //Nick060706
- if((gxbConfig[0x0E]==0x61)&&(gxbConfig[0x0F]==0x56))
- {
- #if(NEW_FLASH)
- //SM Clock
- obCLKSMDIVF=gxbConfig[17];
- obCLKSMCTRL=gxbConfig[16];
- //MCU Clock
- obCLKMCUCTRL=0xD0; //12MHz
- obCLKMCUDIVF=gxbConfig[19];
- obCLKMCUCTRL=gxbConfig[18];
- //RA Clock
- obCLKSRAMDIVF=gxbConfig[21];
- obCLKSRAMCTRL=gxbConfig[20];
- //SM R/W Cycle
- //Walace070205#1 start
- #if 1
- gxbSmReadCyc=gxbConfig[22];
- gxbSmWriteCyc=gxbConfig[23];
- obSMREADCYC = gxbSmReadCyc; // SM_READ_CYCLE
- obSMWRITECYC = gxbSmWriteCyc; // SM_WRITE_CYCLE
- #else
- obSMREADCYC=gxbConfig[22];
- obSMWRITECYC=gxbConfig[23];
- #endif
- #if(USE_STEP_UP_CONVERTER) //Walace070131#1
- StepUpConverterDutyCycleSetting();
- #endif
- #endif
- //Walace070205#1 end
- gwRomIdx++; // 2nd sector is Usb Desc
- gxwUsbDescIndex=gwRomIdx; //Allen060529 add
- if(NandReadPhySec(gwRomIdx,1,SRAM_USB_DESC_ADDR)) //read config data
- {
- if((gxbConfig[0]==0x61)&&(gxbConfig[1]==0x56)&&(gxbConfig[2]==0xAA)&&(gxbConfig[3]==0x55)&&(gxbConfig[510]==0x55)&&(gxbConfig[511]==0xAA))
- {
- *((BYTE *)&gwRomIdx+1) = gxbConfig[INDEX_OF_MODE_SELECT];
- *((BYTE *)&gwRomIdx) = gxbConfig[INDEX_OF_MODE_SELECT+1];
- gxbMaxLUN = gxbConfig[gwRomIdx+1];
- gxbMscMaxLUN = gxbMaxLUN;//Nick060706
- gbDescriptorSource =SRAM;
- *((BYTE *)&gwRomIdx+1) = gxbConfig[INEDX_OF_DEVICE_DESP];
- *((BYTE *)&gwRomIdx) = gxbConfig[INEDX_OF_DEVICE_DESP+1];
- //vicky061128#1
- /*
- #if(_PM_MTP_) //050407 allen: MTP's PID = UMS's PID + 1 //Allen060612
- if((gxbConfig[gwRomIdx+11]==0x56)&(gxbConfig[gwRomIdx+10]==0x61))
- {
- gxbUsbPID[0]=0x06; //allen060529
- gxbUsbPID[1]=0x11;
- }
- else
- {
- gxbUsbPID[0]=gxbConfig[gwRomIdx+11]; //allen060529
- gxbUsbPID[1]=gxbConfig[gwRomIdx+10]+1;
- }
- #else
- gxbUsbPID[0]=gxbConfig[gwRomIdx+11]; //Allen060612
- gxbUsbPID[1]=gxbConfig[gwRomIdx+10];
- #endif
- */
- #if(DRM_MODE_EN)
- if((gxbConfig[gwRomIdx+11]==0x56)&(gxbConfig[gwRomIdx+10]==0x61))
- {
- #if (_PM_MTP_)
- gxbUsbPID[0]=MTP_PID_0;
- gxbUsbPID[1]=MTP_PID_1;
- #else // MSC Mode
- if(gfHostSupportMTP)
- {
- gxbUsbPID[0]=gxbConfig[gwRomIdx+11];
- gxbUsbPID[1]=gxbConfig[gwRomIdx+10];
- }
- else
- {
- gxbUsbPID[0]=MTP_PID_0;
- gxbUsbPID[1]=MTP_PID_1;
- }
- #endif
- }
- else
- {
- gxbUsbPID[0]=gxbConfig[gwRomIdx+11];
- gxbUsbPID[1]=gxbConfig[gwRomIdx+10];
- #if (_PM_MTP_)
- gxbUsbPID[1]++;
- #else //MSC Mode
- if(!gfHostSupportMTP)
- {
- gxbUsbPID[1]++;
- }
- #endif
- }
- #else
- gxbUsbPID[0]=gxbConfig[gwRomIdx+11];
- gxbUsbPID[1]=gxbConfig[gwRomIdx+10];
- #endif
- //End
- //Nick060706 start
- gbLUNType[0] = NAND_LUN;
- gbLUNType[2] = 0xFF;//initial value
- if(fAutoRun)
- {
- gxbMscMaxLUN++;//Auto Run LUN
- // gxdwDebug = gxbMaxLUN;//for debug
- if(gxbMscMaxLUN == 3)
- {
- gbLUNType[1] = SD_LUN;
- gbLUNType[2] = CDROM_LUN;
- }
- else if(gxbMscMaxLUN == 2)
- {
- gbLUNType[1] = CDROM_LUN;
- }
- }
- else
- gbLUNType[1] = SD_LUN;
- //Nick060706 end
- fRet=TRUE;
- }
- }
- }
- }
- }
- if(!fRet)
- {
- #if(NEW_FLASH)
- //SM Clock
- obCLKSMDIVF=0x00;
- obCLKSMCTRL=0xA0;
- //MCU Clock
- obCLKMCUCTRL=0xD0; //12MHz
- obCLKMCUDIVF=0x00;
- obCLKMCUCTRL=0xA0;
- //RA Clock
- obCLKSRAMDIVF=0x00;
- obCLKSRAMCTRL=0xA0;
- //SM R/W Cycle
- //Walace070205#1 start
- #if 1
- gxbSmReadCyc=0x02;
- gxbSmWriteCyc=0x02;
- obSMREADCYC = gxbSmReadCyc; // SM_READ_CYCLE
- obSMWRITECYC = gxbSmWriteCyc; // SM_WRITE_CYCLE
- #else
- obSMREADCYC=0x02;
- obSMWRITECYC=0x02;
- #endif
- #if(USE_STEP_UP_CONVERTER) //Walace070131#1
- StepUpConverterDutyCycleSetting();
- #endif
- //Walace070205#1 end
- #endif
- gxbMaxLUN =1;
- gxbMscMaxLUN = 1;//Nick060706
- gbDescriptorSource = ROM; // Initial config Descriptor from ROM
- }
- #if(NEW_FLASH)
- //dsp source from usb
- obCLKDSPCTRL=0x20; //USB 48Mhz and Disable
- obCLKDSPDIVF=0x00;
- obCLKCODECCTRL=0x20; //USB 48Mhz and Disable
- obCLKCODECDIVF=0x00;
- obDCVARRD=0x04;
- obDCVWRDATA=0xf2; //disable dcv clock
- obDCVARRD=0x14;
- obDCVWRDATA=obDCVRDDATA|0x01; //disable DC-DC
- #endif
- return fRet;
- }
- //allen050812
- #if(USB_DISP_CHARGING)
- void UiShowBattCharging(BYTE bLevel) large //0~7
- {
- /* BYTE bClkCtrlTmp=obCLKMCUCTRL; allen060223
- obCLKMCUCTRL=0xD0; //MCU clock use XTALI 12MHz //v03210#1*/
- #if(USB_DISPCOUNTER)
- if(gxwDelayTime%4==0)
- {
- if(gxbBackLightCounter&BACKLIGHT_STS_ON)
- gxbBackLightCounter++;
- }
- #endif
- if(gxwDelayTime>=30000)
- {
- bTimeTemp++;
- gxwDelayTime=0;
- }
- if(bTimeTemp<26)//36)
- {
- PIN_SD_PDDAT&=~SD_PD; //Force SD_PD PIN ON (POWER OFF), Vicky1005 add
- PIN_SD_PDDIR|=SD_PD; //SD_PD(Output), Vicky1005 add
- #if(COLOR_MODE==3) //modify by Rojam 2007-05-17 16:4
- if((obGPIOCDAT&0x02)==0x00)
- #else
- #if(UI_CHARGE_IC)
- obGPIOADIR&=~0X02;
- if(obGPIOADAT&0X02) //add by Rojam
- #else
- obGPIOADIR&=~0X10;
- if(0)//!(obGPIOADAT&0X10)) //add by Rojam 070202
- #endif
- #endif
- {
- if(gxbBatterFullCount<BATTERY_CHARGE_FULL_COUNT)
- gxbBatterFullCount++;
- }
- else
- {
- gxbBatterFullCount=0;
- }
- if(gxbBatterFullCount>=BATTERY_CHARGE_FULL_COUNT)
- bLevel=BATTERY_LV_COUNT-1; //Walace060803#2 end
- }
- else
- {
- bLevel=BATTERY_LV_COUNT-1; //Walace060803#2 end
- }
- // ShowIcon(bLevel*154,11,7,85,0);
- gxbLastBattSts=bLevel; //050817
- UI_SHOW_BATTERY();
- // obCLKMCUCTRL=bClkCtrlTmp; allen060223
- }
- #endif
- //tne 2007/01/04 #2 start
- void UiShowUsbIconSts(BYTE bState) large
- {
- NandGpioCtrl(NAND_CS_OFF); //all off Allen051208#1: fix 2 chip nand show icon bug.
- // TODO: add display code
- //display download or upload icon
- /*#if(USE_STEP_UP_CONVERTER) //Walace070205#1
- obCLKSRAMCTRL=0xD0;
- obCLKSMCTRL=0xD0;
- McuClockCtrlAdjust(0xD0);
- #endif
- */
- switch(bState)
- {
- case UI_USB_IDLE:
- case UI_USB_BUSY:
- if(bState!=xbUiCurState)
- {
- OledShowIconNew(2,IM_USB_NO_DOT,UI_USB_RW_ICON_COLNUM,UI_USB_RW_ICON_ROWNUM);
- gxbUiRwIconStep=0;
- }
- break;
- case UI_USB_WAIT:
- //OledShowIconNew(2,IM_WAITING,0,0);
- break;
- case UI_USB_FIRST_READY:
- OledShowIconNew(2,IM_USB_BG,0,0);
- #if(_PM_MTP_)
- OledShowIconNew(2,IM_USB_MTP,UI_USB_MSC_TYPE_ICON_COL,UI_USB_MSC_TYPE_ICON_ROW);
- #else
- OledShowIconNew(2,IM_USB_MSC,UI_USB_MSC_TYPE_ICON_COL,UI_USB_MSC_TYPE_ICON_ROW);
- #endif
- case UI_USB_SEARCHING:
- //Do nothing now...
- break;
- //case UI_USB_READ:
- //case UI_USB_WRITE:
- default:
- #if(_PM_MTP_)
- for(gxbUiRwIconStep=0;gxbUiRwIconStep<UI_USB_RW_MAX_ICON_STEP;gxbUiRwIconStep++)
- {
- OledShowIconNew(2,
- IM_USB_DOT,
- UI_USB_RW_ICON_COLNUM+UI_USB_RW_ICON_INTERVAL*gxbUiRwIconStep,
- UI_USB_RW_ICON_ROWNUM);
- }
- #else
- if(gxbUiRwIconDelay>=UI_USB_RW_DELAY_NUM)
- {
- OledShowIconNew(2,IM_USB_NO_DOT,UI_USB_RW_ICON_COLNUM,UI_USB_RW_ICON_ROWNUM);
- OledShowIconNew(2,
- IM_USB_DOT,
- UI_USB_RW_ICON_COLNUM+UI_USB_RW_ICON_INTERVAL*gxbUiRwIconStep,
- UI_USB_RW_ICON_ROWNUM);
- gxbUiRwIconStep++;
- if(gxbUiRwIconStep>=UI_USB_RW_MAX_ICON_STEP)
- gxbUiRwIconStep=0;
- gxbUiRwIconDelay=0;
- }
- else
- { gxbUiRwIconDelay++; }
- #endif
- break;
- }
- xbUiCurState=xbUiState;
- }
- #if(_PM_MTP_) //allen051101#4: for MTP sendobject, getobject //modify by tne 2007/01/04 #2
- API void UiDispCtrl(BYTE bStatus) large
- {
- if(bStatus!=xbUiState)
- {
- UsbSetSysSpeed(USB_CLK_UI); //Walace070205#1
- UiShowUsbIconSts(bStatus);
- UsbSetSysSpeed(USB_CLK_UI_CANCEL); //Walace070205#1
- }
- xbUiState=bStatus;
- }
- #endif
- /*--------------------------------------------------------------------------
- Description:
- User Interface for TARGET UsbFlashDisk
- Arguments:
- Global arguments:
- IN gxbDrawUsbUi
- IN xbUiBattCounter
- Returns:
- --------------------------------------------------------------------------*/
- #if 1 //allen051101#4 Combine to 1 func
- /* //Walace060620#1
- #define ST_FORCE_REFRESH 0x01
- #define ST_BACKGROUND 0x02
- #define ST_BATTERY 0x04
- #define ST_RW_STATUS 0x08
- */
- void UiFlashDisk(BYTE bStatus)
- {
- //BYTE bClkCtrlTmp=obCLKMCUCTRL; //Walace070205#1
- #if(_PM_MTP_)
- CBYTE cbIconTemp[]={77,84,80};
- #endif
- if(gxbDrawUsbUi&0x80) //need to draw
- {
- // obCLKMCUCTRL=0xD0; //MCU clock use XTALI 12MHz //v03210#1 allen060223
- //allen060227(11)
- //Walace070205#1
- /*#if(USE_STEP_UP_CONVERTER)
- #else
- obCLKSRAMCTRL=0xD0;
- obCLKSMCTRL=0xD0;
- obCLKMCUCTRL=0xD0; //MCU clock use XTALI 12MHz //v03210#1
- #endif
- */
- //Walace060620#1 start //remove !_PM_MTP_ by tne 2006/12/01 #1
- //#if(!_PM_MTP_)
- switch(bStatus&ST_DISP_CMD)
- {
- case ST_DISP_SUSPEND:
- //Walace070205#1
- /*#if(USE_STEP_UP_CONVERTER)
- obCLKSRAMCTRL=0xD0;
- obCLKSMCTRL=0xD0;
- McuClockCtrlAdjust(0xD0);
- #endif
- */
- UsbSetSysSpeed(USB_CLK_UI); //Walace070205#1
- //Display control before enter suspend status
- // OLED_CLEAR_ALL(); //Tony070312
- LCD_RESET_EN(); //Walace060802#4
- UsbSetSysSpeed(USB_CLK_UI_CANCEL); //Walace070205#1
- break;
- case ST_DISP_RESUME:
- /* //Walace070205#1
- #if(USE_STEP_UP_CONVERTER)
- obCLKSRAMCTRL=0xD0;
- obCLKSMCTRL=0xD0;
- McuClockCtrlAdjust(0xD0);
- #endif
- */
- UsbSetSysSpeed(USB_CLK_UI); //Walace070205#1
- OledInit();
- //OledShowIcon(ICON_PC,14,16); //remove by tne 2007/01/04 #2
- //OledShowIcon(ICON_USB_STATE_IDLE,52,LINE2); //remove by tne 2007/01/04 #2
- #if(!DRM_MODE_EN) //Walace060902#1
- OledShowIconNew(2,IM_USB_MSC,0,0); //tne 2007/01/04 #2
- #endif
- UsbSetSysSpeed(USB_CLK_UI_CANCEL); //Walace070205#1
- gxwHostTimeOutCnt &= (~0x8000);
- break;
- default:
- break;
- }
- //#endif
- //Walace060620#1 end
- if(bStatus&ST_FORCE_REFRESH)
- {
- // force refresh
- #if(_C_MODE_)
- gxbDrawUsbUi|=0x01;
- #else
- gxbDrawUsbUi|=0x07;
- #endif
- }
- if(bStatus&ST_BACKGROUND)
- {
- if(gxbDrawUsbUi&0x7F)
- {
- //
- // Show "PC & Device"
- //
- //Walace060620#1 start
- /*
- //Walace060501#3 start
- OledInit(); //Walace060607#2
- //OledSetBrightness(gxbLcdContrast);
- //OLED_SET_CONTRAST_HI();
- //Walace060501#3 end
- OLED_CLEAR_ALL();
- OledShowIcon(ICON_PC,14,16);
- OledShowIcon(ICON_USB_STATE_IDLE,52,LINE2);
- #if(_PM_MTP_)
- OledShowIcon(ICON_USB_MTP,SEG8,LINE2);
- #else
- OledShowIcon(ICON_USB_MASS,SEG8,LINE2);
- #endif
- */ //Walace060620#1 end
- //
- // Show Battery Frame
- //
- #if(USB_DISP_CHARGING)
- //Walace070205#1
- /*#if(USE_STEP_UP_CONVERTER)
- obCLKSRAMCTRL=0xD0;
- obCLKSMCTRL=0xD0;
- McuClockCtrlAdjust(0xD0);
- #endif
- */
- UsbSetSysSpeed(USB_CLK_UI);//Walace070205#1
- UiShowBattCharging(0); //050812
- UsbSetSysSpeed(USB_CLK_UI_CANCEL); //Walace070205#1
- #endif
- gxbDrawUsbUi--;
- }
- }
- #if(SHOW_NOW_TIME) //For debug usage
- if((gxbShowTimeCounter++)>0xF0)
- {
- UsbSetSysSpeed(USB_CLK_UI);//Walace070205#1
- OledShowNumber((WORD)(gxdwNowTime&0xFFFF),WORD0,LINE0,6);
- UsbSetSysSpeed(USB_CLK_UI_CANCEL); //Walace070205#1
- gxbShowTimeCounter=0;
- }
- #endif
- if(bStatus&(ST_RW_STATUS|ST_BATTERY)) //Allen051221#2
- {
- /* Determine ISP Start */
- if(gxbAtaAtapiCmd==OP_ISP_START)
- {
- xbUiState=UI_USB_ISP_START;
- // TODO: Display ISP Start
- }
- if(gxbAtaAtapiCmd==OP_ISP_FINISH)
- {
- xbUiState=UI_USB_ISP_END;
- // TODO: Display ISP Finish
- }
- /* Determine R/W Status */
- if((gxbLcdCounter>80)&&(xbUiState!=UI_USB_ISP_START))
- {
- gxbLcdCounter=0;
- UsbSetSysSpeed(USB_CLK_UI);//Walace070205#1
- #if(_PM_USB_MSC_)
- if(gxbAtaAtapiCmd==OP_READ10)
- xbUiState=UI_USB_READ;
- else if(gxbAtaAtapiCmd==OP_WRITE10)
- xbUiState=UI_USB_WRITE;
- else
- xbUiState=UI_USB_IDLE;
- gxbAtaAtapiCmd=OP_TEST_UNIT_READY; //allen051028: win98 r/w issue
- #else
- /* MTP only show BUSY or IDLE */
- if(gxbMtpState&MTP_SESSIONOPEN) //Open Session
- xbUiState=UI_USB_BUSY;
- else //Close Session
- xbUiState=UI_USB_IDLE;
- #endif
- //tne 2007/01/04 #2 start
- #if(_PM_USB_MSC_)
- if(xbUiCurState!=xbUiState)
- gxbUiRwIconDelay=UI_USB_RW_DELAY_NUM; //Update right now
- #endif
- UiShowUsbIconSts(xbUiState);
- //tne 2007/01/04 #2 end
- //Allen051221#2
- // TODO: display show battery charging
- xbUiBattCounter++;
- #if(1)//DRM_MODE_EN)//Nick060605#2 // modify by Rojam 2007-04-13 15:17
- if(!(obUSBMISCCTL & 0x10))
- {
- /* //tne 2007/01/04 #2
- NandGpioCtrl(NAND_CS_OFF);//all off Allen051208#1: fix 2 chip nand show icon bug.
- #if(USE_STEP_UP_CONVERTER)
- obCLKSRAMCTRL=0xD0;
- obCLKSMCTRL=0xD0;
- McuClockCtrlAdjust(0xD0);
- #endif
- */
- UiShowUsbIconSts(UI_USB_SEARCHING);
- }
- else if(!(gxwHostTimeOutCnt&0x8000))
- {
- gxwHostTimeOutCnt |= 0x8000;
- gxbHostTimeOutRetry = 0;//reset retry
- /* //tne 2007/01/04 #2
- #if(USE_STEP_UP_CONVERTER)
- obCLKSRAMCTRL=0xD0;
- obCLKSMCTRL=0xD0;
- McuClockCtrlAdjust(0xD0);
- #endif
- */
- UiShowUsbIconSts(UI_USB_FIRST_READY);
- }
- #endif
- #if(USB_DISP_CHARGING)
- NandGpioCtrl(NAND_CS_OFF); //all off Allen051208#1: fix 2 chip nand show icon bug.
- //UiShowBattCharging((xbUiBattCounter&0x0007)); //Walace070205#1
- /*#if(USE_STEP_UP_CONVERTER)
- obCLKSRAMCTRL=0xD0;
- obCLKSMCTRL=0xD0;
- McuClockCtrlAdjust(0xD0);
- #endif
- */
- UiShowBattCharging(xbUiBattCounter%BATTERY_LV_COUNT); //Walace060803#2
- #endif
- UsbSetSysSpeed(USB_CLK_UI_CANCEL);//Walace070205#1
- //obCLKSMCTRL|=0x80; Walace debug
- }
- }
- /* //Walace070205#1
- //#if(USE_STEP_UP_CONVERTER)
- McuClockCtrlAdjust(bClkCtrlTmp);// WHH #1 061017
- //#else
- //obCLKMCUCTRL=bClkCtrlTmp; //MCU clock use XTALI 12MHz //v03210#1
- //#endif
- obCLKSRAMCTRL=bClkCtrlTmp;
- obCLKSMCTRL=bClkCtrlTmp;
- */
- }
- }
- #else
- void UiFlashDisk(void) //allen041201 add error handle
- {
- BYTE bClkCtrlTmp=obCLKMCUCTRL;
- #if(_PM_MTP_)
- CBYTE cbIconTemp[]={77,84,80};
- #endif
- /* //tne 2005/09/02
- if(!NandReadPhySec(gxwAddrPMI,1,SRAM_DATA_ADDR)) //read font index
- return;
- gxwFontTable[FONT_SYS]=(((WORD)gxbFsData[PM_FONT_SYS+1])<<8)|gxbFsData[PM_FONT_SYS];//keep system font index
- */
- #if(_PM_MTP_)
- if(!NandReadPhySec(gxwAddrPMI,1,SRAM_DATA_ADDR)) //read font index
- return;
- gxwMtpConstSec=(((WORD)gxbFsData[PM_MTP_CONST+1])<<8)|gxbFsData[PM_MTP_CONST]; //David 050504
- #endif
- /*
- #if(_PM_MTP_)
- gxwUniBig5Table=(((WORD)gxbFsData[PM_TABLE_UNI_BIG5+1])<<8)|gxbFsData[PM_TABLE_UNI_BIG5];
- #endif
- */
- obCLKMCUCTRL=0xD0; //MCU clock use XTALI 12MHz //v03210#1
- OledInit();
- //OLED_CLEAR_ALL(); //Tony070312
- OledShowIcon(ICON_PC,14,16);
- OledShowIcon(ICON_USB_STATE_IDLE,52,LINE2);
- #if(_PM_MTP_)
- OledShowIcon(ICON_USB_MTP,SEG8,LINE2);
- #else
- OledShowIcon(ICON_USB_MASS,SEG8,LINE2);
- #endif
- #if(USB_DISP_CHARGING)
- UiShowBattCharging(0); //050812
- #endif
- gxbDrawUsbUi--;
- GetUsbConfig();
- obCLKMCUCTRL=bClkCtrlTmp;
- }
- #endif
- #if(!(_PM_MTP_|_PM_USB_))
- void UiShowString(BYTE bState) large
- {
- BYTE bClkCtrlTmp=obCLKMCUCTRL;
- CBYTE cbIconTemp[4][5]={ {'R','D',' ',' ',' '},
- {'W','R',' ',' ',' '},
- {'I','S','P',' ',' '},
- {'E','n','d',' ',' '},};
- // #if(USE_STEP_UP_CONVERTER)
- McuClockCtrlAdjust(0xD0);// WHH #1 061017
- //#else
- // obCLKMCUCTRL=0xD0; //MCU clock use XTALI 12MHz //v03210#1
- //#endif
- //#if(USE_STEP_UP_CONVERTER)
- McuClockCtrlAdjust(bClkCtrlTmp);// WHH #1 061017
- //#else
- // obCLKMCUCTRL=bClkCtrlTmp; //MCU clock use XTALI 12MHz //v03210#1
- //#endif
- }
- #endif
- /*--------------------------------------------------------------------------
- Description:
- Check FW Charger Batt SADC change, when Batt SADC is stable then send Mtp Event to PC
- Arguments:
- Global arguments:
- gxbBatUnChg: Batt SADC
- gxbBattStableValue: Mtp return Value
- Returns:
- //Chris070521#1 MTP update Batt lv
- --------------------------------------------------------------------------*/
- #if (_PM_MTP_)
- void UpdateBattValue(void)
- {
- BYTE bBattValue;
- #if(ONE_BATT_MODE)
- bBattValue=BattCheck();
- if ((bBattValue > BATTERY_LV_MAX)||(bBattValue < gxbBattMin))
- {
- gxbBattValue = gxbBattMin;
- }
- // Normal Battery Value
- else
- {
- gxbBattValue = bBattValue;
- }
- //Stable Delay, and Update Event send
- if (gxbBattKeep != gxbBattValue)
- {
- gxbBattKeep = gxbBattValue;
- gxwBattStableDelay = (gfBattFirstSet)? FirstDelay: StableDelay;
- }
- else
- {
- gxwBattStableDelay--;
- if (gxwBattStableDelay == 0)
- {
- if ((gxbBattStableValue!=gxbBattKeep))
- {
- #if (MTP_SUPPORT_EVENT)
- if ((gfMtpEventReady) && ((gxbMtpState&MTP_SESSIONOPEN)==MTP_SESSIONOPEN))
- SendEvent(16, PTP_EVENTCODE_DEVICEPROPCHANGED, 0x01500000);
- #endif
- gxbBattStableValue = gxbBattKeep;
- gfBattFirstSet = FALSE;
- }
- gxwBattStableDelay = StableDelay;
- }
- }
- #else // Li-Ion
- if ((gxbChargerState == CHG_STAGE_END) && (gfBattChargerEnd))
- return;
- gfBattChargerEnd = FALSE;
- #if(USE_FW_CHARGER)
- bBattValue=gxbBatUnChg;
- #else
- bBattValue=BattCheck();
- #endif
- // UnNormal Battery Status or No Battery
- if ((bBattValue > BATTERY_LV_MAX)||(bBattValue < gxbBattMin)||(gxbChargerState & 0xF0 == CHG_STAGE_NO_BAT))
- {
- gxbBattValue = gxbBattMin;
- }
- // Costant Voltage Charge
- else if ((bBattValue > gxbBattMax) && (gxbChargerState & 0xF0 != CHG_STAGE_END)) // Jeff070522#1
- {
- gxbBattValue = gxbBattMax-1;
- }
- // Charging Battery Value
- else
- {
- gxbBattValue = bBattValue;
- }
- //Stable Delay, and Update Event send
- if (gxbBattKeep != gxbBattValue)
- {
- gxbBattKeep = gxbBattValue;
- gxwBattStableDelay = (gfBattFirstSet)? FirstDelay: StableDelay;
- }
- else
- {
- gxwBattStableDelay--;
- if (gxwBattStableDelay == 0)
- {
- if ((gxbBattStableValue!=gxbBattKeep) ||(gxbChargerState & 0xF0 == CHG_STAGE_END))
- {
- if (gxbChargerState & 0xF0 == CHG_STAGE_END)
- {
- gfBattChargerEnd = TRUE;
- if (gxbBattKeep != gxbBattMin)
- {
- SramWrite(SRAM_CHARGER_STOP_SADC,&gxbBattKeep);
- gxbBattMax = gxbBattKeep;
- }
- }
- #if (MTP_SUPPORT_EVENT)
- if ((gfMtpEventReady) && ((gxbMtpState&MTP_SESSIONOPEN)==MTP_SESSIONOPEN))
- SendEvent(16, PTP_EVENTCODE_DEVICEPROPCHANGED, 0x01500000);
- #endif
- gxbBattStableValue = gxbBattKeep;
- gfBattFirstSet = FALSE;
- }
- gxwBattStableDelay = StableDelay;
- }
- }
- #endif
- }
- #endif
- /*--------------------------------------------------------------------------
- Description:
- Check Hardware Charger's status as Charging or End
- Arguments:
- Global arguments:
- gxbChargerState: Charge Status
- Returns:
- --------------------------------------------------------------------------*/
- #if (_PM_USB_&&!USE_FW_CHARGER)
- void CheckHardwareChargerStatus(void) //Jeff070523#1
- {
- obGPIOADIR &= (~0x01);
- if(obGPIOADAT&0x01)
- {
- gxbChargerState = CHG_STAGE_CHARGE;
- }
- else
- {
- if(BattCheck()<BATTERY_LV_LOW)
- gxbChargerState = CHG_STAGE_NO_BAT;
- else
- gxbChargerState = CHG_STAGE_END;
- }
- }
- #endif
- main(void)
- {
- #if(USB_DISPCOUNTER)
- XBYTE bKey ;
- #endif
- #if(!UI_CHARGE_IC)
- XBYTE bChargeCount;
- #endif
- #if(COST_DOWN_CIRCUIT)
- Usb_reset:
- #endif
- #if(_PM_MTP_)
- gxdwMtpGUIDSN = 0x00000000; //Chris for GUID 060727
- //xbUiBattCounter=obDCV_INT_FLAG; //Ted 1013
- gxbMtpMultiBank=FALSE; //Scott060720
- #endif
- xbUiBattCounter=obDCV_INT_FLAG; //Ted 1013
- xbUiBattCounter = 0x00;
- gxbLcdLimitCol=MAX_COLNUM; //tne lcd scroll2
- gfHaveSaveModifyFlag=FALSE; //tne CDB
- gxbUiRwIconStep=0; //tne 2007/01/04 #2
- gxbUiRwIconDelay=0; //tne 2007/01/04 #2
- //#if(USE_FW_CHARGER) //060918Renshuo //Ted 1013 //WHH070304(mark)
- //ChargerInit();
- //#endif
- #if(SETTING_FOR_ISP_START)
- CKCON &= 0xF8;
- CKCON |= 0x07; // STRECH = 111
- obREADYENL=SM_EN|USB_EN|SD_EN;
- obREADYENH=(SRAMRA_EN|RA_EN|SYSREG_EN)|0xF0;
- //CKCON &= 0xF9; // STRECH = 001 //David 050406
- CKCON &= 0xF8; // STRECH = 000
- IE = 0;
- EA = 1;
- IP = 0;
- PX0 = 1;
- TMOD = 0x10;
- TCON = 0;
- T2CON= 0;
- TA=0xAA;
- TA=0x55;
- WDCON =0;
- // Context_Switch from BR.
- // 1. MCUCLK from USB, (120/4)
- // 2. SRAMCLK from USB, (120/4)
- // 3. SMCLK Disable, but from DCV
- // 4. DCVCLK disable
- // 5. Do not Reset Pipe
- obCLKLCDCTRL|=0x20; //Div2 Enable
- obDCVARRD = 0x04; //DCV clock
- obDCVWRDATA = 0xe1; //147 MHz
- obCLKSMCTRL=0xA0; //48Mhz
- obCLKSMDIVF=0x00;
- obSMREADCYC = 0x02;
- obSMWRITECYC = 0x02;
- obSMHOLDTIME = 0x00;
- obDCVARRD=0x04;
- obDCVWRDATA=0xf1; //disable dcv clock
- gxbNandInitStage=NDINIT_INIT; //Allen060609 new_nf
- NandGpioInit();
- NandInit(NDINIT_IDENT_DONE);
- gxbMaxLUN =1;
- gbDescriptorSource = ROM; // Initial config Descriptor from ROM
- UsbDeviceInit();
- gxbDrawUsbUi = 0x00; //ISP don't draw UI
- UiFlashDisk(ST_FORCE_REFRESH|ST_BACKGROUND); //dummy call
- gxbUsbWPStatus=FALSE;
- gxbSWCBW = 0x00;
- #else //SETTING_FOR_ISP_START
- #if(SETTING_FOR_ICE_START)
- SettingForIceStart();
- gxbDeviceMode=DEV_INIT;
- //David050627
- #if(_PM_MTP_)
- gxbDrmOptionMode|=USB_MTP;
- #else
- gxbDrmOptionMode&=~USB_MTP;
- #endif
- //David050705#1
- //SM Clock
- obCLKSMCTRL=0xD0;
- gxbNandInitStage=NDINIT_INIT;
- NandGpioInit();
- NandInit(NDINIT_IDENT_DONE);
- #endif
- #if(_NAND_API_RELOADWLC_) //060718
- NandReloadCnt(); //Allen060624
- #ifdef _WL_DEBUG_
- gxdwDoWlNumber=0;
- gxwWLCReset=0;
- gxwProgramError=0;
- gxwEraseError=0;
- gxbUsbWriteFail=0; //060628
- gxbUsbReadFail=0; //060628
- gxbSaveLutFail=0; //060628
- gxbBadBlockNum=0; //060629
- #endif
- #endif
- IE = 0;
- EA = 1;
- // TODO: add Variable Initial code here
- //allen051101#2
- #if(SYS_USE_KEY_HOLD) //modify by Rojam 2007-05-18 17:30
- gxbUsbWPStatus=CheckWPKey();
- #else
- gxbUsbWPStatus=FALSE;
- #endif
- OLED_DISP_MASK_INIT();
- //add by tne 2005/05/07
- //device mode itself, it's swaping mode after format
- #if(_PM_MTP_)
- MtpVariableInit();// 060108 //Allen060419#1
- //allen051101#3: Var Init
- // fForwardReadFileSec=FALSE;
- // fOpenWithLongName=FALSE;
- fDeleteContinuous=FALSE; //060721
- #if(SETTING_FOR_ICE_START)
- // fOpenWithLongName=FALSE;
- gxbExtRtc=0;
- gxbStorage=STOR_NAND;
- gxbStorType=STOR_NAND;
- NandInit(); //050517
- if(FsInit())
- {
- INIT_FSFILEInf();
- FsRecInit();
- }
- else
- {
- gbFsUnableUse=TRUE;
- }
- #else
- // INIT_FSFILEInf();
- #endif
- //
- // Get Config & gxbMaxLUN Allen051110#1
- //
- if(GetUsbConfig())
- gxbDrawUsbUi = 0x80;
- else
- gxbDrawUsbUi = 0x00;
- #if(SETTING_FOR_ICE_START) //David050705#1
- gxbStorLun=NAND_LUN;
- gxbMtpInitMode=MTPINIT_NEED_USBINIT;
- gxbStorAvailable[gxbStorLun]=STORAGE_FSINIT_DONE;
- #endif
- MtpDeviceInit(); //allen051101#2 Allen051110#1
- //tne 2005/08/22
- //check secure clock state //David 050425
- if(gxbDrmOptionMode&S_CLOCK_READY_MODE) //if SRAM indicate s-clk ready
- gbSecureClockState = SECURE_CLOCK_NEED_REFRESH;
- else
- gbSecureClockState = SECURE_CLOCK_NOT_SET;
- obDCV_INT_MASK |= RTC_COUNTER_EN;
- if(gxbMtpInitMode&MTPINIT_NEED_USBINIT)
- {
- gxbMtpInitMode&=~MTPINIT_NEED_USBINIT;
- // TODO: every plugin will execute here one time.
- UsbSaveMtpMode(DRM_OPTION_MTP_ON); //tne 2005/08/17
- obUSBOTGSPEED &= USB_OFFJ;
- // WalaceMerge060612
- obSYSSOFTRSTCTRL &= 0x7F; //Usb Reset //Nick060531
- obSYSSOFTRSTCTRL |= 0x80; //Usb Reset dis //Nick060531
- UsbDeviceInit();
- UiFlashDisk(ST_FORCE_REFRESH|ST_BACKGROUND);
- }
- MTPLicScan(); //Chris 060918 #1
- EnableExtInt0(); //Walace060524#2
- #if ENABLE_SD_FUNCTION
- if(gxbStorAvailable[SD_LUN]==STORAGE_NOT_EXIST) //Chris for SD 061110 #7 //Chris070521#1
- {
- CardDetect(FALSE); //Chris 061222#1
- }
- #endif
- //Chris070111#4 for send finished check
- for (gbVar1 = 0; gbVar1 < MAX_LUN; gbVar1++)
- {
- gbVar2 = 0x56;
- SramWrite(SRAM_MTP_SEND_FINISH - gbVar1, &gbVar2);
- }
- #else
- /* MSC Start */
- //Yen_Lung050721
- //obUSBOTGSPEED &= USB_OFFJ; //David 050414
- #if(USE_RTC_COUNTER)
- obDCV_INT_MASK |= RTC_COUNTER_EN; //Ted 1013
- #endif
- #if(NEW_FLASH)
- NandInit(NDINIT_IDENT_DONE);
- if(GetUsbConfig())
- gxbDrawUsbUi = 0x80;
- else
- gxbDrawUsbUi = 0x00;
- UsbDeviceInit();
- NandInit(NDINIT_DONE);
- #else
- UsbDeviceInit();
- if(GetUsbConfig())
- gxbDrawUsbUi = 0x80;
- else
- gxbDrawUsbUi = 0x00;
- #endif
- if(gxbSWCBW&0x01)//Yen_Lung050721: Mtp auto-switch to Msc
- {
- CheckReceiveCBW();
- gxbUsbSetupFlag=TRUE; //Walace060527#2
- }
- UiFlashDisk(ST_FORCE_REFRESH|ST_BACKGROUND);
- #endif // (_PM_MTP_)
- #endif //SETTING_FOR_ISP_START
- #if(_PM_USB_MSC_) //allen060528: variable init
- #if(NEW_FLASH)
- gxbMscCachePath[0]=SRAM_CACHE_0_PATH;
- gxbMscCachePath[1]=SRAM_CACHE_1_PATH;
- gxbMscKeptModified[0]=0; //Allen060611 fix
- gxbMscKeptModified[1]=0; //Allen060611 fix
- #endif
- if (gdwCapacity[0]!=0) //Walace060527#1: fixed "Eject" bug
- gfStartStop = 0;
- else
- gfStartStop = 1;
- #endif
- #if(!_PM_MTP_)
- gxbRestoreCMD = FinishAllBlk;//Nick061120 //NandRestore
- NandRestore(); //Scott061114
- #endif
- obUSBOTGSPEED |= USB_ON;
- //Key Init
- obGPIOBDAT = 0xfc;
- obGPIOBDIR |= 0x1C; //set GPIOB_2,3,4 output //XXX1 1100
- obGPIOBDIR &= 0x1F/*0x1C*/; //set GPIOB_5,6,7 input Allen060224: GPIOB0 Output //000X XXXX
- obGPIOBDAT &= 0xf7; //let GPIO_B_3 output low
- POWER_ON_3V3SD(); //Allen060224:
- gfKeyReady=FALSE;
- #if(DRM_MODE_EN)
- gxwHostTimeOutCnt = 0x7FFF;//Nick060605#1
- #endif
- gxbLcdCounter=0; //050811
- #if(USB_DISP_CHARGING)
- gxbBatterFullCount=0; //Walace060803#2
- #endif
- #if(PLAY_IN_ADAPTOR)
- gxwWaitUsbSetupCnt = 0; //Alan060921 // Jason 20070119#1
- #endif
- ET0 = 1; // enable Timer0
- #if(_PM_USB_MSC_)//Nick060706#1 for ansuring auto run function on win2K
- gxbCdRomSts = 0;//STSMediaNotPresent;
- #endif
- #if((!UI_CHARGE_IC)&&(COLOR_MODE!=3))// modify by Rojam 2007-05-17 16:23
- obGPIOADIR&=~0X10;
- obGPIOADIR |= 0x02;
- obGPIOADAT &= (~0x02);
- #endif
- gxwDelayTime=0; //add by Rojam 070202
- bTimeTemp=0; //add by Rojam 070202
- #if(COLOR_MODE==0)
- obGPIOCDIR|=0x04;
- obGPIOCDAT&=~0x04;
- #else
- obGPIOADIR|=0x01;
- obGPIOADAT&=~0x01;
- obGPIOBDIR|=0x80;
- obGPIOBDAT&=~0x80;
- #endif
- #if(COLOR_MODE==3 ) //modify by Rojam 2007-05-17 15:37
- obGPIOADIR|=0x01;
- obGPIOADIR&=~0x02;
- obGPIOADAT|=0x02;
- obGPIOCDIR&=~0x02;
- obGPIOCDAT|=0x02;
- #endif
- #if(USB_DISPCOUNTER)
- gxbBackLightTime=5;
- gxbBackLightCounter=BACKLIGHT_STS_ON;
- #endif
- while(1)
- {
- UiCheckAlarm(); //Walace061019#1
- obDCVARRD=0x14; //Power Control
- obDCVWRDATA=(obDCVRDDATA|0x01); //VREG_BAT use VDDA
- #if(_PM_MTP_|USE_RTC_COUNTER) //Ted 1013
- gxbTemp=obDCV_INT_FLAG;
- #endif
- #if(COLOR_MODE==3 ) //modify by Rojam 2007-05-17 15:37
- if(((obGPIOADAT&0x02)==0x00)||(obGPIOCDAT&0x02)==0x00)
- {
- obGPIOADAT&=~0x01;
- }
- else
- obGPIOADAT|=0x01;
- #endif
- #if(!SETTING_FOR_ISP_START) //060718
- #if(USE_FW_CHARGER) //060918Renshuo //Ted 1013
- ChargerSenseVoltage();
- #else
- #if(!ONE_BATT_MODE)
- CheckHardwareChargerStatus(); //Chris070521#1
- #endif
- #endif
- #if (_PM_MTP_)
- UpdateBattValue(); //Chris070521#1 MTP show Batt lv
- #endif
- #if (DRM_MODE_EN)
- //David 050517, MTP/UMS mode changable
- //if(CheckModeKey())//Nick060605#1 mark it
- //WHH070307#5(start)
- #if(PLAY_IN_ADAPTOR)
- if(gfHostSupportMTP &&
- ((CheckModeKey()&&gxbUsbSetupFlag)|| (gxwHostTimeOutCnt==TimeOutCnt&&gxbHostTimeOutRetry<3)))//Nick060605#1 add it
- #else
- if(gfHostSupportMTP &&
- (CheckModeKey() || (gxwHostTimeOutCnt==TimeOutCnt&&gxbHostTimeOutRetry<3)))//Nick060605#1 add it
- #endif
- //WHH070307#5(end)
- {
- while ((obUSBDEVEPAFCTR & EP_STS_ALLEMP) != EP_STS_ALLEMP) {} //Nick060605#1 add it
- obUSBOTGSPEED &= USB_OFFJ;
- obSYSSOFTRSTCTRL &= 0x7F; //Usb Reset //David060602
- obSYSSOFTRSTCTRL |= ~0x7F; //Usb Normal //David060602
- NandFinishJob();
- #if(USE_FW_CHARGER) //Ted 1013
- CHG_CTRL_DIR |=0x01;
- CHG_CTRL_DAT &=0xFE; //set GPIOA0 to low to active charge
- //gxbChargerFlag = INIT_READY; //Jason 20070119#1 start // Jeff070303#1
- #endif
- gbSpecialRW=RW_NORMAL;//Nick060706
- UiShowUsbIconSts(UI_USB_WAIT); //tne 2007/01/04 #2
- if((gxbDrmOptionMode&DRM_OPTION_MTP_MODE)==USB_MASS_STORAGE)
- {
- if(gxwHostTimeOutCnt==TimeOutCnt)//Nick060605#1
- {
- gxbHostTimeOutRetry++;
- LoadProgram(PM_USB,NORMAL_CODE); //load USB program
- }
- gxbDrmOptionMode|=USB_MTP;
- SramWrite(SRAM_DRM_OPTION_MODE,&gxbDrmOptionMode);
- //gxbDeviceMode=DEV_INIT; //050601 //Walace070205#1
- gxbDeviceMode=DEV_USB;//Walace070205#1
- LoadProgram(PM_MTP_INIT,NORMAL_CODE); //load MTP program
- }
- else //if(gxbDrmOptionMode==1)
- {
- if(gxwHostTimeOutCnt==TimeOutCnt)//Nick060605#1
- {
- gxbHostTimeOutRetry++;
- LoadProgram(PM_MTP_INIT,NORMAL_CODE); //load MTP program
- }
- gxbDrmOptionMode&=(~USB_MTP);
- SramWrite(SRAM_DRM_OPTION_MODE,&gxbDrmOptionMode);
- #if(_PM_MTP_)
- UsbSaveMtpMode(DRM_OPTION_MTP_OFF); //tne 2005/08/17
- #endif
- LoadProgram(PM_USB,NORMAL_CODE); //load USB program
- }
- }
- #endif
- //if(!VbusCheck()) //if disconnect //Walace060901#2
- if(VbusCheck(CHECK_VBUS_OFF)) //if disconnect //Walace060901#2
- {
- obUSBOTGSPEED &= USB_OFFJ;
- EX0=0;
- #if(COST_DOWN_CIRCUIT)
- xbUsbFlag=1;
- #endif
- /*
- obCLKLCDCTRL|=0x20; //Div2 Enable
- obDCVARRD=0x04; //DCV clock
- obDCVWRDATA=0xe1; //147 MHz
- //Mcu Clock
- obCLKMCUDIVF=0x03;
- obCLKMCUCTRL=0xb8; //73(67)/5=14.6(13.4)
- //Ra Clock
- obCLKSRAMDIVF=0x03;
- obCLKSRAMCTRL=0xb8; //73(67)/5=14.6(13.4)
- //SM Clock
- obCLKSMDIVF=0x03;
- obCLKSMCTRL=0xb8; //73(67)/5=14.6(13.4)
- SD_POWER_OFF();
- obCLKCODECCTRL=0x50;
- obCLKSDCTRL=0x50;
- obUSBOTGCTRL |= 0x02; //DPLL power down
- obMODSEL3 &= 0xBF; //USB Disable
- obSYSSOFTRSTCTRL &= 0x7F; //Usb Reset
- obSYSSOFTRSTCTRL=SM_RST_DIS|RA_RST_DIS; //reset all, but not SM, RA
- obSYSSOFTRSTCTRL2=0x00;
- obMODSEL1=0x08;
- obMODSEL3=0x08;
- LoadProgram(PM_INIT,NORMAL_CODE);
- */
- }
- // Jason 20070119#1 start
- //**************For Adapter initialize Use****************//
- #if(PLAY_IN_ADAPTOR)
- if(gxwWaitUsbSetupCnt >= USB_SETUP_TIMEOUT) // USB_SETUP_TIMEOUT=600
- {
- //if(!gxbUsbSetupFlag)
- if((!gxbUsbSetupFlag)&&(gxbAdaptorPlugIn==ADAPTER_DEFAULT_STATE)) //WHH070307#5
- {
- gxbAdaptorPlugIn = ADAPTER_PLUG_IN; // judge adapter flag //WHH070307#5
- EX0=0;
- obUSBOTGSPEED &= USB_OFFJ; //USB stop
- obDCVARRD=0x04;//DCV clock
- obDCVWRDATA=0xe1; //147 MHz
- //Mcu Clock
- obCLKMCUDIVF=0x08;
- obCLKMCUCTRL=0xC8; //73(67)/5=14.6(13.4)
- #if(USE_STEP_UP_CONVERTER) //WHH 070117
- StepUpConverterDutyCycleSetting( );
- #endif
- //Ra Clock
- obCLKSRAMDIVF=0x08;
- obCLKSRAMCTRL=0xC8; //73(67)/5=14.6(13.4)
- //SM Clock
- obCLKSMDIVF=0x08;
- obCLKSMCTRL=0xC8; //73(67)/5=14.6(13.4)
- //DSP clock
- obCLKDSPCTRL=0xd0; //12M
- obCLKCODECCTRL=0x50; //Codec 12M
- obCLKSDCTRL=0x50; //SD 12M
- obSYSSOFTRSTCTRL &= 0x7F; //Usb Reset
- obUSBOTGCTRL |= 0x02; //DPLL power down
- obMODSEL3 &= 0xBF; //USB Disable
- obSYSSOFTRSTCTRL2=0x00; //reset
- //obSYSSOFTRSTCTRL=SM_RST_DIS|RA_RST_DIS; //reset all, but not SM, RA
- //GPIOC2_DEBUG(9);
- obMODSEL1=0x08; // 8bit SM
- obMODSEL3=0x08; //internal ROM Disable
- //gxbChargerFlag=0;// charging Flag//WHH070309#1
- //GPIOC2_DEBUG(10);
- LoadProgram(PM_INIT, NORMAL_CODE);
- }
- else
- {
- gxbAdaptorPlugIn=ADAPTER_USB_PLUG_IN;//WHH070307#5
- UiFlashDisk(ST_BACKGROUND|ST_BATTERY|ST_RW_STATUS); //Usb Flash Disk display allen051101#4
- }
- }
- else
- {
- UiFlashDisk(ST_BACKGROUND|ST_BATTERY|ST_RW_STATUS); //Usb Flash Disk display allen051101#4
- }
- #endif
- //***************END***************//
- // Jason 20070119#1 end
- #if(COST_DOWN_CIRCUIT)
- if(VbusCheck(CHECK_VBUS_ON))
- {
- if(xbUsbFlag==1)
- {
- xbUsbFlag=0;
- goto Usb_reset;
- }
- }
- #endif
- UiFlashDisk(ST_BACKGROUND|ST_BATTERY|ST_RW_STATUS); //Usb Flash Disk display allen051101#4
- //tne CDB
- #if(!_PM_MTP_)
- if(!gfHaveSaveModifyFlag)
- {
- if( (gxbAtaAtapiCmd==OP_WRITE10) && (gbLUNType[gbCBWLUN]==NAND_LUN) ) //tne CDB for SD //Nick060706
- UsbSaveModifyFlag();
- }
- #endif
- #endif
- UsbDevice();
- #if(_PM_MTP_)
- #if ENABLE_SD_FUNCTION
- //050601: Detect Card Plug-In
- CardDetect(TRUE); //Chris 061222#1 //Chris070521#1
- #endif
- #endif
- #if(USB_DISPCOUNTER)
- obGPIOBDAT |= 0x7c; //Let all key's GPIO pins be high
- obGPIOBDIR &=(~0x60); //GPIOB_5,6,input
- obGPIOBDIR |= 0x1C; //GPIOB_2,3,4,output
- obGPIOBDAT&=~0x1c;
- #if(COLOR_MODE==1)
- /*============Del by Rojam 2007-04-20 15:53===============
- obGPIOBDIR &= (~0x80);
- if((!(obGPIOBDAT&0x80))&((obGPIOBDAT&0x20)==0x20)&((obGPIOBDAT&0x40)==0x40))
- bKey=0x00;
- else
- bKey=0x01;
- obGPIOBDIR|=0x80;
- obGPIOBDAT&=~0x80;
- =========================== end Del ========================*/
- //==================modify by Rojam 070208 =======================
- if(((obGPIOBDAT&0x20)==0x00)||((obGPIOBDAT&0x40)==0x00))
- bKey=0x01;
- else
- bKey=0x00;
- //============================end============================
- #else
- obGPIOADIR &= (~0x04);
- if((!(obGPIOADAT&0x04))&((obGPIOBDAT&0x20)==0x20)&((obGPIOBDAT&0x40)==0x40))
- bKey=0x00;
- else
- bKey=0x01;
- #endif
- if(bKey!=0x00)
- {
- //backlight on
- if(gxbBackLightTime!=LCD_BACKLIGHT_MIN_NUM)
- {
- gxbBackLightCounter=BACKLIGHT_STS_ON; //Set state on and clen counter
- BACKLIGHT_ON();
- }
- }
- else // if(bKey==KEY_INVALID)
- {
- //backlight off
- if(gxbBackLightTime!=LCD_BACKLIGHT_MAX_NUM)
- {
- if(gxbBackLightCounter&BACKLIGHT_STS_ON)
- {
- if((gxbBackLightCounter&BACKLIGHT_COUNTER_VAL)>=gxbBackLightTime)
- {
- gxbBackLightCounter=BACKLIGHT_STS_OFF; //set state off and cleaner counter
- BACKLIGHT_OFF();
- }
- }
- }
- }
- #endif
- #if((!UI_CHARGE_IC)&&(COLOR_MODE!=3))// modify by Rojam 2007-05-17 16:23
- if(1)//obGPIOADAT&0X10) //add by Rojam
- {
- if(bChargeCount>6)
- {
- bChargeCount=0;
- obGPIOADIR |= 0x02;
- obGPIOADAT &= (~0x02);
- }
- else
- {
- bChargeCount++;
- obGPIOADIR |= 0x02;
- obGPIOADAT |= (0x02);
- }
- }
- #endif
- #if(SETTING_FOR_ISP_START)
- gxbUsbWPStatus=FALSE;
- #else
- //Allen060511#0: always check WP in super loop new_nf
- #if(SYS_USE_KEY_HOLD) //modify by Rojam 2007-05-18 17:30
- if(CheckWPKey()) //WP
- {
- if(!gxbUsbWPStatus)
- {
- gxbUsbWPStatus=TRUE;
- gbErrorMsg = SENSE_CHANGEMEDIUM_WP;
- }
- }
- else
- {
- if(gxbUsbWPStatus)
- {
- gxbUsbWPStatus=FALSE;
- gbErrorMsg = SENSE_CHANGEMEDIUM_WP;
- }
- }
- #endif
- #endif
- if(gfTimeout)
- {
- gfTimeout=FALSE;//allen060511#4
- #if(_PM_MTP_)
- MtpFinishJob();
- #else
- NandFinishJob();
- #endif
- #if(!_PM_MTP_) //Nick061208 //NandRestore start
- if(gxbRestoreBlkNum)
- {
- gxbRestoreCMD = FullStep;
- NandRestore();
- }
- #endif //NandRestore end
- }
- }
- }
- //tne 2005/08/17
- #if(_PM_MTP_)
- void UsbSaveMtpMode(BYTE fMtpMode) large
- {
- NandPrivateEn();
- FsRead(SAVE_SETTING_NAND_ADD,1,FS_DATA_0_0);
- SRAM_DAT_ACCESS(SRAM_LAST_DRM_OPTION) = ((gxbDrmOptionMode&(~DRM_OPTION_MTP_MODE)) | fMtpMode);
- FsWrite(SAVE_SETTING_NAND_ADD,1,FS_DATA_0_0);
- NandPrivateDis();
- NandFinishJob();
- }
- #endif
- //Walace061019#1 start
- void UiCheckAlarm(void)
- {
- if(!gfAlarmTimeUp)
- return;
- UiSysGetAlarmTime();
- //Disable alarm
- obDCVARRD=0x03;
- obDCVWRDATA=(obDCVRDDATA&RTC_ALARM_DIS);
- //Reset alarm time
- UiSetNewAlarmTime();
- //Eisable alarm
- obDCVARRD=0x03;
- obDCVWRDATA=(obDCVRDDATA|RTC_ALARM_EN);
- gfAlarmTimeUp=FALSE;
- }
- //Walace061019#1 end