emummc: add GetSocType/GetHardwareType utils

This commit is contained in:
Michael Scire 2020-11-15 22:45:31 -08:00
parent 1525c66de7
commit c77b76fbd2
3 changed files with 47 additions and 0 deletions

View file

@ -59,6 +59,35 @@ Result smcGetConfig(SplConfigItem config_item, u64 *out_config)
return rc; return rc;
} }
SplHardwareType splGetHardwareType(void)
{
u64 value;
Result rc = smcGetConfig(SplConfigItem_HardwareType, &value);
if (rc != 0)
{
fatal_abort(Fatal_BadResult);
}
return (SplHardwareType)value;
}
SplSocType splGetSocType(void)
{
switch (splGetHardwareType())
{
case SplHardwareType_Icosa:
case SplHardwareType_Copper:
return SplSocType_Erista;
case SplHardwareType_Hoag:
case SplHardwareType_Iowa:
case SplHardwareType_Calcio:
case SplHardwareType_Five:
return SplSocType_Mariko;
default:
fatal_abort(Fatal_InvalidEnum);
}
}
Result smcCopyToIram(uintptr_t iram_addr, const void *src_addr, u32 size) Result smcCopyToIram(uintptr_t iram_addr, const void *src_addr, u32 size)
{ {
SecmonArgs args; SecmonArgs args;

View file

@ -37,6 +37,20 @@ typedef enum {
SplConfigItem_HasRcmBugPatch = 65004, SplConfigItem_HasRcmBugPatch = 65004,
} SplConfigItem; } SplConfigItem;
typedef enum {
SplSocType_Erista = 0,
SplSocType_Mariko = 1,
} SplSocType;
typedef enum {
SplHardwareType_Icosa = 0,
SplHardwareType_Copper = 1,
SplHardwareType_Hoag = 2,
SplHardwareType_Iowa = 3,
SplHardwareType_Calcio = 4,
SplHardwareType_Five = 5,
} SplHardwareType;
typedef enum { typedef enum {
EXO_EMUMMC_TYPE_NONE = 0, EXO_EMUMMC_TYPE_NONE = 0,
EXO_EMUMMC_TYPE_PARTITION = 1, EXO_EMUMMC_TYPE_PARTITION = 1,
@ -69,6 +83,9 @@ typedef struct {
Result smcGetConfig(SplConfigItem config_item, u64 *out_config); Result smcGetConfig(SplConfigItem config_item, u64 *out_config);
SplHardwareType splGetHardwareType(void);
SplSocType splGetSocType(void);
void smcRebootToRcm(void); void smcRebootToRcm(void);
void smcRebootToIramPayload(void); void smcRebootToIramPayload(void);
void smcPerformShutdown(void); void smcPerformShutdown(void);

View file

@ -35,6 +35,7 @@ enum FatalReason
Fatal_FatfsMount, Fatal_FatfsMount,
Fatal_FatfsFileOpen, Fatal_FatfsFileOpen,
Fatal_FatfsMemExhaustion, Fatal_FatfsMemExhaustion,
Fatal_InvalidEnum,
Fatal_Max Fatal_Max
}; };