#include "common.h" #include "bsp.h" typedef enum { CHIP_ID_UNKNOWN = 0x00, CHIP_ID_CRANE = 0x6731, CHIP_ID_CRANE_Z1 = 0xF06731, CHIP_ID_CRANE_Z2 = 0xF16731, CHIP_ID_CRANE_A0 = 0xA06731, CHIP_ID_CRANE_A1 = 0xA16731, CHIP_ID_CRANEG = 0x3602, CHIP_ID_CRANEG_Z1 = 0x003602, CHIP_ID_CRANEG_Z2 = 0x003602, CHIP_ID_CRANEG_A0 = 0xA03603, CHIP_ID_CRANEG_A1 = 0xA13603, /*to be confirmed*/ CHIP_ID_CRANEG_AX = 0x3603, CHIP_ID_CRANEM = 0x1603, CHIP_ID_CRANEM_A0 = 0xA01603, CHIP_ID_CRANEM_A1 = 0xA11603, /*to be confirmed*/ CHIP_ID_CRANEL = 0x1606, CHIP_ID_CRANEL_Z1 = 0x001606, CHIP_ID_CRANEL_A0 = 0xA01606, CHIP_ID_CRANELS = 0x1609, CHIP_ID_CRANELS_A0= 0xA01609, CHIP_ID_CRANELR = 0x1602, CHIP_ID_CRANELG = 0x1607, CHIP_ID_CRANELRH = 0x1605, }ChipIDType; static unsigned long ChipID = 0; unsigned int GetChipID( void ) { if(ChipID == 0) ChipID = ((*(volatile UINT32*)0xD4282C00)&0xffff); return ChipID; } static unsigned long LongChipId = 0; unsigned int GetLongChipID( void ) { if(LongChipId == 0) LongChipId = ((*(volatile UINT32*)0xD4282C00)&0xffffff); return LongChipId; } static unsigned long PlatformType = 0; unsigned long GetPlatformType(void) { if(PlatformType == 0) PlatformType = ((*(volatile UINT32*)0xD4282C00)>>24)&0x7; return PlatformType; } BOOL IsChipCrane(void) {return (GetChipID() == CHIP_ID_CRANE );} BOOL IsChipCrane_A0(void) {return (GetLongChipID() == CHIP_ID_CRANE_A0 );} BOOL IsChipCrane_A1(void) {return (GetLongChipID() == CHIP_ID_CRANE_A1 );} BOOL IsChipCraneG(void) {return (( GetChipID() == CHIP_ID_CRANEG ) || ( GetChipID() == CHIP_ID_CRANEG_AX ));} BOOL IsChipCraneG_Z1(void) {return (GetLongChipID() == CHIP_ID_CRANEG_Z1);} BOOL IsChipCraneG_Z2(void) {return (GetLongChipID() == CHIP_ID_CRANEG_Z2);} BOOL IsChipCraneG_A0(void) {return (GetLongChipID() == CHIP_ID_CRANEG_A0);} BOOL IsChipCraneG_A1(void) {return (GetLongChipID() == CHIP_ID_CRANEG_A1);} BOOL IsChipCraneG_AX(void) {return (GetChipID() == CHIP_ID_CRANEG_AX); } BOOL IsChipCraneM(void) {return (GetChipID() == CHIP_ID_CRANEM );} BOOL IsChipCraneM_A0(void) {return (GetLongChipID() == CHIP_ID_CRANEM_A0);} BOOL IsChipCraneM_A1(void) {return (GetLongChipID() == CHIP_ID_CRANEM_A1);} BOOL IsChipCraneL(void) {return (GetChipID() == CHIP_ID_CRANEL );} BOOL IsChipCraneL_Z1(void) {return (GetChipID() == CHIP_ID_CRANEL_Z1);} BOOL IsChipCraneL_A0(void) {return (GetChipID() == CHIP_ID_CRANEL_A0);} BOOL IsChipCraneLS(void) {return (GetChipID() == CHIP_ID_CRANELS );} BOOL IsChipCraneLS_A0(void) {return (GetLongChipID() == CHIP_ID_CRANELS_A0 );} BOOL IsChipCraneLR(void) {return (GetChipID() == CHIP_ID_CRANELR );} BOOL IsChipCraneLG(void) {return (GetChipID() == CHIP_ID_CRANELG );} BOOL IsChipCraneLRH(void) {return (GetChipID() == CHIP_ID_CRANELRH );} BOOL IsChip_Crane_A0_or_Above(void) { static BOOL retVal=0xff; if (retVal != 0xff) return retVal; switch (GetLongChipID()) { case CHIP_ID_CRANE_Z1: case CHIP_ID_CRANE_Z2: retVal = FALSE; break; default: //This applies for Crane A0/A1 and later silicon. retVal = TRUE; break; } return retVal; } BOOL IsChip_CraneG_A0_or_Above(void) { static BOOL retVal=0xff; if (retVal != 0xff) return retVal; switch (GetLongChipID()) { /*case CHIP_ID_CRANEG_Z1: */ case CHIP_ID_CRANEG_Z2: //same ID as Z1 retVal = FALSE; break; default: //This applies for CraneG A0/A1 and later silicon. retVal = TRUE; break; } return retVal; }