summaryrefslogtreecommitdiff
path: root/arm9/lib/include/CARD_common.h
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/lib/include/CARD_common.h')
-rw-r--r--arm9/lib/include/CARD_common.h233
1 files changed, 0 insertions, 233 deletions
diff --git a/arm9/lib/include/CARD_common.h b/arm9/lib/include/CARD_common.h
deleted file mode 100644
index 1ae31b7a..00000000
--- a/arm9/lib/include/CARD_common.h
+++ /dev/null
@@ -1,233 +0,0 @@
-#ifndef POKEDIAMOND_CARD_COMMON_H
-#define POKEDIAMOND_CARD_COMMON_H
-
-#include "nitro/types.h"
-#include "OS_thread.h"
-#include "OS_system.h"
-#include "MI_dma.h"
-#include "PXI_fifo.h"
-
-#define CARD_PXI_COMMAND_MASK 0x3f
-#define CARD_PXI_COMMAND_PULLED_OUT 0x0011
-#define CARD_PXI_COMMAND_TERMINATE 0x0001
-
-#define CARD_THREAD_PRIORITY_DEFAULT 4
-
-#define CARD_BACKUP_TYPE_DEVICE_SHIFT 0
-#define CARD_BACKUP_TYPE_DEVICE_MASK 0xFF
-#define CARD_BACKUP_TYPE_DEVICE_EEPROM 1
-#define CARD_BACKUP_TYPE_DEVICE_FLASH 2
-#define CARD_BACKUP_TYPE_DEVICE_FRAM 3
-#define CARD_BACKUP_TYPE_SIZEBIT_SHIFT 8
-#define CARD_BACKUP_TYPE_SIZEBIT_MASK 0xFF
-#define CARD_BACKUP_TYPE_VENDER_SHIFT 16
-#define CARD_BACKUP_TYPE_DEFINE(type, size, vender) \
- (((CARD_BACKUP_TYPE_DEVICE_ ## type) << CARD_BACKUP_TYPE_DEVICE_SHIFT) | \
- ((size) << CARD_BACKUP_TYPE_SIZEBIT_SHIFT) | \
- ((vender) << CARD_BACKUP_TYPE_VENDER_SHIFT))
-
-#define ALIGN_MASK(a) ((a) - 1)
-#define CARD_ALIGN_HI_BIT(n) (((u32)(n)) & ~ALIGN_MASK(CARD_ROM_PAGE_SIZE))
-#define CARD_ALIGN_LO_BIT(n) (((u32)(n)) & ALIGN_MASK(CARD_ROM_PAGE_SIZE))
-
-#define CARD_BACKUP_CAPS_AVAILABLE (u32)(CARD_BACKUP_CAPS_READ - 1)
-#define CARD_BACKUP_CAPS_READ (u32)(1 << CARD_REQ_READ_BACKUP)
-#define CARD_BACKUP_CAPS_WRITE (u32)(1 << CARD_REQ_WRITE_BACKUP)
-#define CARD_BACKUP_CAPS_PROGRAM (u32)(1 << CARD_REQ_PROGRAM_BACKUP)
-#define CARD_BACKUP_CAPS_VERIFY (u32)(1 << CARD_REQ_VERIFY_BACKUP)
-#define CARD_BACKUP_CAPS_ERASE_PAGE (u32)(1 << CARD_REQ_ERASE_PAGE_BACKUP)
-#define CARD_BACKUP_CAPS_ERASE_SECTOR (u32)(1 << CARD_REQ_ERASE_SECTOR_BACKUP)
-#define CARD_BACKUP_CAPS_ERASE_CHIP (u32)(1 << CARD_REQ_ERASE_CHIP_BACKUP)
-
-typedef enum
-{
- CARD_BACKUP_TYPE_EEPROM_4KBITS = CARD_BACKUP_TYPE_DEFINE(EEPROM, 9, 0),
- CARD_BACKUP_TYPE_EEPROM_64KBITS = CARD_BACKUP_TYPE_DEFINE(EEPROM, 13, 0),
- CARD_BACKUP_TYPE_EEPROM_512KBITS = CARD_BACKUP_TYPE_DEFINE(EEPROM, 16, 0),
- CARD_BACKUP_TYPE_FLASH_2MBITS = CARD_BACKUP_TYPE_DEFINE(FLASH, 18, 0),
- CARD_BACKUP_TYPE_FLASH_4MBITS = CARD_BACKUP_TYPE_DEFINE(FLASH, 19, 0),
- CARD_BACKUP_TYPE_FLASH_8MBITS = CARD_BACKUP_TYPE_DEFINE(FLASH, 20, 0),
- CARD_BACKUP_TYPE_FRAM_256KBITS = CARD_BACKUP_TYPE_DEFINE(FRAM, 15, 0),
- CARD_BACKUP_TYPE_NOT_USE = 0
-} CARDBackupType;
-
-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_TARGET_NONE,
- CARD_TARGET_ROM,
- CARD_TARGET_BACKUP
-} CARDTargetMode;
-
-typedef enum
-{
- CARD_REQ_INIT = 0,
- CARD_REQ_ACK,
- CARD_REQ_IDENTIFY,
- CARD_REQ_READ_ID,
- CARD_REQ_READ_ROM,
- CARD_REQ_WRITE_ROM,
- CARD_REQ_READ_BACKUP,
- CARD_REQ_WRITE_BACKUP,
- CARD_REQ_PROGRAM_BACKUP,
- CARD_REQ_VERIFY_BACKUP,
- CARD_REQ_ERASE_PAGE_BACKUP,
- CARD_REQ_ERASE_SECTOR_BACKUP,
- CARD_REQ_ERASE_CHIP_BACKUP,
- CARD_REQ_MAX
-} CARDRequest;
-
-typedef enum
-{
- CARD_REQUEST_MODE_RECV,
- CARD_REQUEST_MODE_SEND,
- CARD_REQUEST_MODE_SEND_VERIFY,
- CARD_REQUEST_MODE_SPECIAL
-} CARDRequestMode;
-
-enum
-{
- CARD_STAT_INIT = (1 << 0),
- CARD_STAT_INIT_CMD = (1 << 1),
- CARD_STAT_BUSY = (1 << 2),
- CARD_STAT_TASK = (1 << 3),
- CARD_STAT_RECV = (1 << 4),
- CARD_STAT_REQ = (1 << 5),
- CARD_STAT_CANCEL = (1 << 6)
-};
-
-typedef s32 CARDiOwner;
-
-typedef struct CARDiCommandArg
-{
- CARDResult result;
- CARDBackupType type;
- u32 id;
- u32 src;
- u32 dest;
- u32 len;
-
- struct
- {
- u32 total_size;
- u32 sect_size;
- u32 page_size;
- u32 addr_width;
- u32 program_page;
- u32 write_page;
- u32 write_page_total;
- u32 erase_chip;
- u32 erase_chip_total;
- u32 erase_sector;
- u32 erase_sector_total;
- u32 erase_page;
- u8 initial_status;
- u8 padding1[3];
- u32 caps;
- u8 padding2[16];
- } spec;
-} CARDiCommandArg;
-
-typedef struct CARDiCommon
-{
- CARDiCommandArg *cmd;
- s32 command;
-
- volatile CARDiOwner lock_owner;
- volatile s32 lock_ref;
- OSThreadQueue lock_queue[1];
- CARDTargetMode lock_target;
-
- u32 src;
- u32 dst;
- u32 len;
- u32 dma;
- CARDRequest req_type;
- s32 req_retry;
- CARDRequestMode req_mode;
- MIDmaCallback callback;
- void *callback_arg;
- void (*task_func) (struct CARDiCommon *);
-
- OSThread thread[1];
- OSThread *cur_th;
-
- u32 priority;
- OSThreadQueue busy_q[1];
-
- volatile u32 flag;
-
- u8 dummy[8];
-
- u8 backup_cache_page_buf[256] ALIGN(32);
-} CARDiCommon;
-
-static inline void CARDi_EndTask(CARDiCommon *p, BOOL is_own_task)
-{
- const MIDmaCallback func = p->callback;
- void *const arg = p->callback_arg;
-
- {
- OSIntrMode bak_psr = OS_DisableInterrupts();
-
- p->flag &= ~(CARD_STAT_BUSY | CARD_STAT_TASK | CARD_STAT_CANCEL);
- OS_WakeupThread(p->busy_q);
- if ((p->flag & CARD_STAT_RECV) != 0)
- {
- OS_WakeupThreadDirect(p->thread);
- }
- (void)OS_RestoreInterrupts(bak_psr);
- }
-
- if (is_own_task && func)
- {
- (*func)(arg);
- }
-}
-
-static inline void CARDi_WaitTask(CARDiCommon *p, MIDmaCallback callback, void *callback_arg)
-{
- OSIntrMode bak_psr = OS_DisableInterrupts();
- while ((p->flag & CARD_STAT_BUSY) != 0)
- {
- OS_SleepThread(p->busy_q);
- }
- p->flag |= CARD_STAT_BUSY;
- p->callback = callback;
- p->callback_arg = callback_arg;
- (void)OS_RestoreInterrupts(bak_psr);
-}
-
-void CARDi_SetTask(void (*task) (CARDiCommon *));
-void CARDi_InitCommon(void);
-BOOL CARD_IsEnabled(void);
-void CARD_CheckEnabled(void);
-void CARD_Enable(BOOL enable);
-BOOL CARDi_WaitAsync(void);
-BOOL CARDi_TryWaitAsync(void);
-CARDResult CARD_GetResultCode(void);
-void CARD_LockRom(u16 lock_id);
-void CARD_UnlockRom(u16 lock_id);
-void CARD_LockBackup(u16 lock_id);
-void CARD_UnlockBackup(u16 lock_id);
-
-#define CARD_RETRY_COUNT_MAX 10
-
-static inline void CARDi_SendPxi(u32 data)
-{
- while (PXI_SendWordByFifo(PXI_FIFO_TAG_FS, data, TRUE) < 0)
- ;
-}
-
-#endif //POKEDIAMOND_CARD_COMMON_H