Files
banban/ql-bootloader/common/src/bsp_tavor.c

119 lines
4.0 KiB
C

#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;
}