SceSdif

From Vita Development Wiki
Jump to navigation Jump to search

SceSdif is a kernel module that is primary responsible for communicating with SD devices. This includes onboard eMMC, game card MMC, wi-fi/bluetooth SDIO devices. To communicate with particular device SceSdif module uses device index (sd_ctx_index)

Device Index Type Description
0 MMC onboard eMMC
1 MMC game card
2 SDIO wi-fi/bluetooth

Module

Known NIDs

Version Name World Privilege NID
1.69 SceSdif Non-secure Kernel 0xCA882EE3
3.60 SceSdif ? Kernel 0x2E7C52F7

Libraries

Known NIDs

Version Name World Visibility NID
1.69 SceSdifForDriver Non-secure Kernel 0x96D306FA
3.60 SceSdifForDriver ? Kernel 0x96D306FA

Data segment layout

Address Size Description
0x0000 0x40 unknown
0x0040 0x24C0 sd_context_global eMMC
0x2500 0x24C0 sd_context_global game card
0x49C0 0x24C0 sd_context_global wlan/bt
0x6E80 0x0x398 sd_context_part eMMC
0x7218 0x398 sd_context_part game card
0x75B0 0x1CB0 unknown
0x9260 0x398 sd_context_part wlan/bt
0x95F8 0x888 unknown
0x9E80 0x118 some wlan/bt data

SceSdifForDriver


typedef struct output_23a4ef01
{
    uint32_t unk_0;
    uint32_t unk_4;
    uint32_t unk_8;
    uint32_t unk_C;
};

typedef struct output_24
{
    uint32_t unk_0;
    uint32_t unk_4;
    uint32_t unk_8;
    uint32_t unk_C;
    uint32_t unk_10;
    uint8_t unk_14;
    uint8_t unk_15;
    uint8_t unk_16;
    uint8_t unk_17;
    uint32_t unk_18;
    uint32_t unk_1C;
    uint32_t unk_20;
    uint32_t unk_24;
};

typedef struct output_76d2b87b
{
    uint32_t unk_0;
    uint32_t unk_4;
    uint16_t unk_8;
};

typedef struct cmd_input // size is 0x240
{
   uint32_t size; // 0x240
   uint32_t unk_4;
   uint32_t command;
   uint32_t argument;
   
   uint8_t data0[0x50];   
   
   struct cmd_input* next_cmd;
   uint32_t unk_64;
   uint32_t unk_68;
   uint32_t unk_6C;
   
   uint32_t unk_70;
   uint32_t unk_74;
   struct sd_context_global* gctx_ptr;
   uint32_t unk_7C;
   
   uint8_t data1[0x1C0];
} cmd_input;

typedef struct sd_context_data // size is 0xC0
{
    struct cmd_input* cmd_ptr;
    struct cmd_input* cmd_ptr_next;
    uint32_t unk_8;
    uint32_t unk_C;
    
    uint32_t sd_index;
    struct sd_context_part* ctx;
    uint32_t unk_18;
    uint32_t unk_1C;
       
    uint8_t data[0xA0];
} sd_context_data;

typedef struct sd_context_part // size is 0x398
{
   struct sd_context_global* gctx_ptr;
   
   uint8_t data[0x38C];
   
   void* unk_390;
   uint32_t unk_394;
} sd_context_part;

typedef struct sd_context_global // size is 0x24C0
{
    struct cmd_input commands[16];
    struct sd_context_data ctx_data;
} sd_context_global;

module_start

Version NID
3.60 0x935cd196
int module_start();

init

Version NID
3.60 0x0eb0ef86
int init();

deinit

Version NID
3.60 0xe5e5f42e
int deinit();

return_error

Version NID
3.60 0x235ad556
int return_error();

enable_slow_mode

Version NID
3.60 0xf37cf8e5
int enable_slow_mode();

get_card_insert_state1

Version NID
3.60 0x36a2b01b
int get_card_insert_state1(int sd_ctx_index);

get_card_insert_state2

Version NID
3.60 0xfd9e5cfa
int get_card_insert_state2(int sd_ctx_index);

gc_cmd56_response

Version NID
3.60 0x134e06c4
int gc_cmd56_response(sd_context_part* ctx, char* buffer, int length);

gc_cmd56_request

Version NID
3.60 0xb0996641
int gc_cmd56_request(sd_context_part* ctx, char* buffer, int length);

get_sd_context_global

Version NID
3.60 0xdc8f52f8
sd_context_global* get_sd_context_global(int sd_ctx_index);

get_sd_context_part_emmc

Version NID
3.60 0x6a71987f
sd_context_part* get_sd_context_part_emmc(int sd_ctx_index);

get_sd_context_part_game_cart

Version NID
3.60 0xb9ea5b1e
sd_context_part* get_sd_context_part_game_cart(int sd_ctx_index);

get_sd_context_part_wlan_bt

Version NID
3.60 0x6a8235fc
sd_context_part* get_sd_context_part_wlan_bt(int sd_ctx_index);

initialize_sd_context_part

Version NID
3.60 0x22c82e79
int initialize_sd_context_part(int sd_ctx_index, sd_context_part** result);

wlan_bt_cmd52_sdio

Version NID
3.60 0x3428884d
int wlan_bt_cmd52_sdio(wlan_context* wlan_ctx);

wlan_bt_cmd52_sdio

Version NID
3.60 0xe80293ef
int wlan_bt_cmd52_sdio(wlan_context* wlan_ctx);

wlan_bt_cmd52_sdio

Version NID
3.60 0xd0f78d9b
int wlan_bt_cmd52_sdio(wlan_context* wlan_ctx, int num0, int num1, void* unk2, int num3);

wlan_bt_cmd52_sdio

Version NID
3.60 0x3c4cdc8b
int wlan_bt_cmd52_sdio(wlan_context* wlan_ctx, int num0, int num1, void* unk2, int num3);

wlan_bt_cmd52_sdio

Version NID
3.60 0x733bc373
int wlan_bt_cmd52_sdio(wlan_context* wlan_ctx, int num);

wlan_bt_cmd52_sdio

Version NID
3.60 0xdece963b
int wlan_bt_cmd52_sdio(sd_context_part* ctx, int num0, int num1, void* unk2);

wlan_bt_cmd52_sdio

Version NID
3.60 0x5d65e66b
int wlan_bt_cmd52_sdio(sd_context_part* ctx, int num0, int num1, void* unk2);

wlan_bt_cmd52_sdio

Version NID
3.60 0xbc45c83d
int wlan_bt_cmd52_sdio(sd_context_part* ctx, int num);

wlan_bt_cmd3_cmd52_sdio_cmd0_cmd5_sdio_cmd55_acmd41_cmd7_cmd8

Version NID
3.60 0xaabaa0f0
int wlan_bt_cmd3_cmd52_sdio_cmd0_cmd5_sdio_cmd55_acmd41_cmd7_cmd8(int sd_ctx_index, sd_context_part** ctx);

wlan_bt

Version NID
3.60 0x855c95e1
int wlan_bt(wlan_context* wlan_ctx, void* unk0, void* unk1);

wlan_bt

Version NID
3.60 0x0c66e36f
int wlan_bt(sd_context_part* ctx, void* unk0);

wlan_bt_cmd7

Version NID
3.60 0xab0222f2
int wlan_bt_cmd7(sd_context_part* ctx);

wlan_bt_cmd52_sdio

Version NID
3.60 0x55baeb2d
int wlan_bt_cmd52_sdio(wlan_context* wlan_ctx);

wlan_bt_cmd52_sdio

Version NID
3.60 0xfe6f3e7b
int wlan_bt_cmd52_sdio(wlan_context* wlan_ctx);

wlan_bt_cmd52_sdio

Version NID
3.60 0xf1a24edd
int wlan_bt_cmd52_sdio(wlan_context* wlan_ctx);

wlan_bt_cmd52_sdio

Version NID
3.60 0x1847b18c
int wlan_bt_cmd52_sdio(wlan_context* wlan_ctx);

wlan_bt_cmd52_sdio

Version NID
3.60 0xd3c1e2b6
int wlan_bt_cmd52_sdio(wlan_context* wlan_ctx, int unk0, int unk1, int unk2);

wlan_bt_cmd52_sdio

Version NID
3.60 0x5bac6e70
int wlan_bt_cmd52_sdio(wlan_context* wlan_ctx, int unk0, int unk1, int unk2);

wlan_bt_cmd52_sdio

Version NID
3.60 0x01e8eb6c
int wlan_bt_cmd52_sdio(sd_context_part* ctx, char* output, int destLength_100);

wlan_bt_cmd52_sdio

Version NID
3.60 0x763f1075
int wlan_bt_cmd52_sdio(sd_context_part* ctx);

wlan_bt_cmd3_cmd52_sdio_cmd0_cmd5_sdio_cmd55_acmd41_cmd7_cmd8

Version NID
3.60 0x53962379
int wlan_bt_cmd3_cmd52_sdio_cmd0_cmd5_sdio_cmd55_acmd41_cmd7_cmd8(int sd_ctx_index);

wlan_bt_cmd0

Version NID
3.60 0x3b6ab29e
int wlan_bt_cmd0(wlan_context* wlan_ctx, void* unk0, int* result);

wlan_bt_cmd0_cmd52_sdio

Version NID
3.60 0x180e7395
int wlan_bt_cmd0_cmd52_sdio(wlan_context* wlan_ctx, char* output, int destLength_100);

wlan_bt

Version NID
3.60 0x0f157f49
int wlan_bt(wlan_context* wlan_ctx);

wlan_bt

Version NID
3.60 0x849e3216
int wlan_bt(wlan_context* wlan_ctx);

wlan_bt

Version NID
3.60 0xb05eff68
int wlan_bt(wlan_context *wlan_ctx, int unk0);

sdstor_read_sector_async

Version NID
3.60 0x6f8d529b
int sdstor_read_sector_async(sd_context_part* ctx, int sector, char* buffer, int nSectors);

sdstor_read_sector

Version NID
3.60 0xb9593652
int sdstor_read_sector(sd_context_part* ctx, int sector, char* buffer, int nSectors);

sdstor_write_sector_async

Version NID
3.60 0x175543d2
int sdstor_write_sector_async(sd_context_part* ctx, int sector, char* buffer, int nSectors);

sdstor_write_sector

Version NID
3.60 0xe0781171
int sdstor_write_sector(sd_context_part* ctx, int sector, char* buffer, int nSectors);

sdstor_copy_ctx

Version NID
3.60 0x23a4ef01
int sdstor_copy_ctx(sd_context_part* ctx, output_23a4ef01* unk0);

sdstor_cmd0

Version NID
3.60 0x6cc8e28d
int sdstor_cmd0(int sd_ctx_index);

sdstor_cmd32_cmd33_cmd38_sdio

Version NID
3.60 0x35ba9df8
int sdstor_cmd32_cmd33_cmd38_sdio(int sd_ctx_index, int unk0);

sdstor_cmd0_cmd2_cmd3_cmd5_sdio_cmd6_cmd55_acmd41_cmd9_cmd7_cmd16_cmd8

Version NID
3.60 0xc1271539
int sdstor_cmd0_cmd2_cmd3_cmd5_sdio_cmd6_cmd55_acmd41_cmd9_cmd7_cmd16_cmd8(int sd_ctx_index, int* result);

sdstor_cmd6_cmd30

Version NID
3.60 0x995748ea
int sdstor_cmd6_cmd30(sd_context_part *input, int unk0, int unk1, void *unk2);

sdstor

Version NID
3.60 0xe091ba2e
int sdstor(sd_context_part* unk, int unk0, int unk1, int* unk2);

sdif_write

Version NID
3.60 0x60642f49
int sdif_write(sd_context_part *ctx, int unk0, int unk1);

sdif_write

Version NID
3.60 0x0203ecdc
int sdif_write(sd_context_part *ctx, int unk0, int unk1);

sdif

Version NID
3.60 0x29a71e7f
int sdif();

sdif_cmd0_cmd13

Version NID
3.60 0x53518827
int sdif_cmd0_cmd13(sd_context_global *ctx, int *result);

sdif_cmd0

Version NID
3.60 0x475d8e45
int sdif_cmd0(int sd_ctx_index);

sdif

Version NID
3.60 0x3df7e207
int sdif(int sd_ctx_index, output_24* result);

sdif

Version NID
3.60 0x76d2b87b
int sdif(int sd_ctx_index, output_76d2b87b* result);

sdif

Version NID
3.60 0xb83f7518
int sdif(int sd_ctx_index, output_24* result);

sdif_cmd16

Version NID
3.60 0xb32776c7
int sdif_cmd16(sd_context_part* ctx, int num_200);

sdif_cmd0_cmd16

Version NID
3.60 0xaf702fe7
int sdif_cmd0_cmd16(sd_context_part* ctx, int num_200);