2009-01-16 08:51:51 +01:00
|
|
|
#ifndef __IPC_H__
|
|
|
|
#define __IPC_H__
|
|
|
|
|
|
|
|
#include "types.h"
|
|
|
|
|
2009-02-26 09:54:15 +01:00
|
|
|
#define IPC_FAST 0x01
|
|
|
|
#define IPC_SLOW 0x00
|
2009-01-16 08:51:51 +01:00
|
|
|
|
2009-01-30 13:43:35 +01:00
|
|
|
#define IPC_DEV_SYS 0x00
|
2009-01-27 13:32:39 +01:00
|
|
|
#define IPC_DEV_NAND 0x01
|
2009-01-30 13:43:35 +01:00
|
|
|
#define IPC_DEV_SD 0x02
|
2009-01-27 13:32:39 +01:00
|
|
|
#define IPC_DEV_KEYS 0x03
|
2009-01-30 13:43:35 +01:00
|
|
|
#define IPC_DEV_AES 0x04
|
2009-02-26 09:54:15 +01:00
|
|
|
#define IPC_DEV_BOOT2 0x05
|
2009-01-16 08:51:51 +01:00
|
|
|
|
2009-01-25 04:04:19 +01:00
|
|
|
#define IPC_SYS_PING 0x0000
|
|
|
|
#define IPC_SYS_JUMP 0x0001
|
2009-01-16 08:51:51 +01:00
|
|
|
#define IPC_SYS_WRITE32 0x0100
|
|
|
|
#define IPC_SYS_WRITE16 0x0101
|
|
|
|
#define IPC_SYS_WRITE8 0x0102
|
|
|
|
#define IPC_SYS_READ32 0x0103
|
|
|
|
#define IPC_SYS_READ16 0x0104
|
|
|
|
#define IPC_SYS_READ8 0x0105
|
|
|
|
#define IPC_SYS_SET32 0x0106
|
|
|
|
#define IPC_SYS_SET16 0x0107
|
|
|
|
#define IPC_SYS_SET8 0x0108
|
|
|
|
#define IPC_SYS_CLEAR32 0x0109
|
|
|
|
#define IPC_SYS_CLEAR16 0x010a
|
|
|
|
#define IPC_SYS_CLEAR8 0x010b
|
|
|
|
#define IPC_SYS_MASK32 0x010c
|
|
|
|
#define IPC_SYS_MASK16 0x010d
|
|
|
|
#define IPC_SYS_MASK8 0x010e
|
|
|
|
|
2009-01-27 13:32:39 +01:00
|
|
|
#define IPC_NAND_RESET 0x0000
|
|
|
|
#define IPC_NAND_GETID 0x0001
|
|
|
|
#define IPC_NAND_READ 0x0002
|
|
|
|
#define IPC_NAND_WRITE 0x0003
|
|
|
|
#define IPC_NAND_ERASE 0x0004
|
2009-03-07 13:19:16 +01:00
|
|
|
#define IPC_NAND_STATUS 0x0005
|
2009-01-27 13:32:39 +01:00
|
|
|
|
2009-02-01 11:50:59 +01:00
|
|
|
#define IPC_SD_MOUNT 0x0000
|
|
|
|
#define IPC_SD_SELECT 0x0001
|
|
|
|
#define IPC_SD_GETSTATE 0x0002
|
2009-03-07 13:19:16 +01:00
|
|
|
#define IPC_SD_READ 0x0003
|
2009-01-27 13:32:39 +01:00
|
|
|
#define IPC_SD_WRITE 0x0004
|
2009-03-18 12:38:19 +01:00
|
|
|
#define IPC_SD_GETSIZE 0x0005
|
2009-01-27 13:32:39 +01:00
|
|
|
|
|
|
|
#define IPC_KEYS_GETOTP 0x0000
|
|
|
|
#define IPC_KEYS_GETEEP 0x0001
|
|
|
|
|
2009-01-30 13:43:35 +01:00
|
|
|
#define IPC_AES_RESET 0x0000
|
|
|
|
#define IPC_AES_SETIV 0x0001
|
|
|
|
#define IPC_AES_SETKEY 0x0002
|
|
|
|
#define IPC_AES_DECRYPT 0x0003
|
|
|
|
|
2009-02-26 09:54:15 +01:00
|
|
|
#define IPC_BOOT2_RUN 0x0000
|
2009-01-27 13:32:39 +01:00
|
|
|
|
2009-01-16 08:51:51 +01:00
|
|
|
#define IPC_CODE (f,d,r) (((f)<<24)|((d)<<16)|(r))
|
|
|
|
|
2009-01-25 04:04:19 +01:00
|
|
|
#define IPC_IN_SIZE 32
|
|
|
|
#define IPC_OUT_SIZE 32
|
|
|
|
#define IPC_SLOW_SIZE 128
|
|
|
|
|
2009-01-16 08:51:51 +01:00
|
|
|
typedef struct {
|
|
|
|
union {
|
|
|
|
struct {
|
|
|
|
u8 flags;
|
|
|
|
u8 device;
|
|
|
|
u16 req;
|
|
|
|
};
|
|
|
|
u32 code;
|
|
|
|
};
|
|
|
|
u32 tag;
|
|
|
|
u32 args[6];
|
|
|
|
} ipc_request;
|
|
|
|
|
2009-01-25 04:04:19 +01:00
|
|
|
typedef const struct {
|
|
|
|
char magic[3];
|
|
|
|
char version;
|
|
|
|
void *mem2_boundary;
|
|
|
|
volatile ipc_request *ipc_in;
|
|
|
|
u32 ipc_in_size;
|
|
|
|
volatile ipc_request *ipc_out;
|
|
|
|
u32 ipc_out_size;
|
|
|
|
} ipc_infohdr;
|
|
|
|
|
2009-01-16 08:51:51 +01:00
|
|
|
void ipc_irq(void);
|
|
|
|
|
|
|
|
void ipc_initialize(void);
|
|
|
|
void ipc_shutdown(void);
|
|
|
|
void ipc_post(u32 code, u32 tag, u32 num_args, ...);
|
2009-03-18 18:21:00 +01:00
|
|
|
void ipc_flush(void);
|
2009-01-16 08:51:51 +01:00
|
|
|
void ipc_process_slow(void);
|
|
|
|
|
|
|
|
#endif
|