SceSdif: Difference between revisions
Jump to navigation
Jump to search
Line 695: | Line 695: | ||
<source lang="c">int sdif();</source> | <source lang="c">int sdif();</source> | ||
=== | === sdif_cmd0_cmd13=== | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 703: | Line 703: | ||
|} | |} | ||
<source lang="c">int | <source lang="c">int sdif_cmd0_cmd13(sd_context_global *ctx, int *result);</source> | ||
=== sdif_cmd0=== | === sdif_cmd0=== |
Revision as of 04:13, 25 January 2017
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
Version | NID |
---|---|
3.60 | 0xb32776c7 |
int sdif(sd_context_part* ctx, int num_200);
sdif_cmd0
Version | NID |
---|---|
3.60 | 0xaf702fe7 |
int sdif_cmd0(sd_context_part* ctx, int num_200);