diff options
Diffstat (limited to 'arm9/lib/include')
-rw-r--r-- | arm9/lib/include/CARD_backup.h | 34 | ||||
-rw-r--r-- | arm9/lib/include/CARD_common.h | 45 | ||||
-rw-r--r-- | arm9/lib/include/MATH_crc.h | 7 | ||||
-rw-r--r-- | arm9/lib/include/MI_memory.h | 4 |
4 files changed, 90 insertions, 0 deletions
diff --git a/arm9/lib/include/CARD_backup.h b/arm9/lib/include/CARD_backup.h index d2cbc231..7cb5f820 100644 --- a/arm9/lib/include/CARD_backup.h +++ b/arm9/lib/include/CARD_backup.h @@ -2,7 +2,41 @@ #define NITRO_CARD_BACKUP_H_ #include "nitro/types.h" +#include "MI_dma.h" +#include "CARD_common.h" BOOL CARD_TryWaitBackupAsync(void); +BOOL CARD_WaitBackupAsync(void); +void CARD_CancelBackupAsync(void); +void CARD_UnlockBackup(u16 lock_id); +void CARD_LockBackup(u16 lock_id); +BOOL CARD_IdentifyBackup(u16 lock_id); + +BOOL CARDi_RequestStreamCommand( + u32 src, + u32 dst, + u32 len, + MIDmaCallback callback, + void * arg, + BOOL is_async, + CARDRequest req_type, + int req_retry, + CARDRequestMode req_mode +); + +static inline BOOL CARDi_ReadBackup(u32 src, void * dst, u32 len, MIDmaCallback callback, void * arg, BOOL is_async) +{ + return CARDi_RequestStreamCommand((u32)src, (u32)dst, len, callback, arg, is_async, CARD_REQ_READ_BACKUP, 1, CARD_REQUEST_MODE_RECV); +} + +static inline BOOL CARDi_WriteBackup(u32 dst, void * src, u32 len, MIDmaCallback callback, void * arg, BOOL is_async) +{ + return CARDi_RequestStreamCommand((u32)src, (u32)dst, len, callback, arg, is_async, CARD_REQ_WRITE_BACKUP, CARD_RETRY_COUNT_MAX, CARD_REQUEST_MODE_SEND); +} + +static inline BOOL CARDi_WriteAndVerifyBackup(u32 dst, void * src, u32 len, MIDmaCallback callback, void * arg, BOOL is_async) +{ + return CARDi_RequestStreamCommand((u32)src, (u32)dst, len, callback, arg, is_async, CARD_REQ_WRITE_BACKUP, CARD_RETRY_COUNT_MAX, CARD_REQUEST_MODE_SEND_VERIFY); +} #endif //NITRO_CARD_BACKUP_H_ diff --git a/arm9/lib/include/CARD_common.h b/arm9/lib/include/CARD_common.h index 1396de12..9cedac4f 100644 --- a/arm9/lib/include/CARD_common.h +++ b/arm9/lib/include/CARD_common.h @@ -1,6 +1,51 @@ #ifndef NITRO_CARD_COMMON_H_ #define NITRO_CARD_COMMON_H_ +typedef enum +{ + CARD_RESULT_SUCCESS = 0, + CARD_RESULT_FAILURE, + CARD_RESULT_INVALID_PARAM, + CARD_RESULT_UNSUPPORTED, + CARD_RESULT_TIMEOUT, + CARD_RESULT_ERROR, + CARD_RESULT_NO_RESPONSE, + CARD_RESULT_CANCELED +} +CARDResult; + +typedef enum +{ + CARD_REQ_INIT = 0, /* initialize (setting from ARM9)*/ + CARD_REQ_ACK, /* request done (acknowledge from ARM7)*/ + CARD_REQ_IDENTIFY, /* CARD_IdentifyBackup*/ + CARD_REQ_READ_ID, /* CARD_ReadRomID (TEG && ARM9)*/ + CARD_REQ_READ_ROM, /* CARD_ReadRom (TEG && ARM9)*/ + CARD_REQ_WRITE_ROM, /* (reserved)*/ + CARD_REQ_READ_BACKUP, /* CARD_ReadBackup*/ + CARD_REQ_WRITE_BACKUP, /* CARD_WriteBackup*/ + CARD_REQ_PROGRAM_BACKUP, /* CARD_ProgramBackup*/ + CARD_REQ_VERIFY_BACKUP, /* CARD_VerifyBackup*/ + CARD_REQ_ERASE_PAGE_BACKUP, /* CARD_EraseBackupPage*/ + CARD_REQ_ERASE_SECTOR_BACKUP, /* CARD_EraseBackupSector*/ + CARD_REQ_ERASE_CHIP_BACKUP, /* CARD_EraseBackupChip*/ + CARD_REQ_MAX +} +CARDRequest; + +typedef enum +{ + CARD_REQUEST_MODE_RECV, /* Data reception*/ + CARD_REQUEST_MODE_SEND, /* Send data (Including single verify)*/ + CARD_REQUEST_MODE_SEND_VERIFY, /* Send data + verify*/ + CARD_REQUEST_MODE_SPECIAL /* special operations like sector deletion*/ +} +CARDRequestMode; + +CARDResult CARD_GetResultCode(void); + +#define CARD_RETRY_COUNT_MAX 10 + void CARD_Init(void); #endif //NITRO_CARD_COMMON_H_ diff --git a/arm9/lib/include/MATH_crc.h b/arm9/lib/include/MATH_crc.h index f15a2e32..4f06fa75 100644 --- a/arm9/lib/include/MATH_crc.h +++ b/arm9/lib/include/MATH_crc.h @@ -7,6 +7,8 @@ typedef u8 MATHCRC8Context; typedef u16 MATHCRC16Context; typedef u32 MATHCRC32Context; +#define MATH_CRC16_CCITT_POLY 0x1021 + struct MATHCRC8Table { u8 table[256]; }; @@ -35,4 +37,9 @@ void MATHi_CRC16InitTable(struct MATHCRC16Table *table, u16 poly); void MATHi_CRC8Update(const struct MATHCRC8Table *table, MATHCRC8Context *context, const void *input, u32 length); void MATHi_CRC8InitTable(struct MATHCRC8Table *table, u8 poly); +static inline void MATH_CRC16InitTable(struct MATHCRC16Table * table) +{ + MATHi_CRC16InitTable(table, MATH_CRC16_CCITT_POLY); +} + #endif diff --git a/arm9/lib/include/MI_memory.h b/arm9/lib/include/MI_memory.h index d79e9dcb..981fdc81 100644 --- a/arm9/lib/include/MI_memory.h +++ b/arm9/lib/include/MI_memory.h @@ -5,6 +5,10 @@ void MI_CpuFill8(void *dest, u8 data, u32 size); void MI_CpuCopy8(void const *src, void *dest, u32 size); +void MIi_CpuClearFast(u32 data, void *destp, u32 size); +static inline void MI_CpuClearFast(void *destp, u32 size) { + MIi_CpuClearFast(0, destp, size); +} static inline void MI_CpuClear8(void *dest, u32 size) { MI_CpuFill8(dest, 0, size); } |