mirror of
https://github.com/CTCaer/hekate
synced 2024-12-22 19:31:12 +00:00
nyx: clear nand patrol for resized emummc
On used eMMCs, the usage size might exceed the new resized size. In such cases if the nand patrol points there, it will cause the sd card to timeout because of out of bounds access. Clearing that allows resized emuMMC to always have the same speed as full sized emuMMC.
This commit is contained in:
parent
9ba867f19e
commit
792a3511da
1 changed files with 10 additions and 6 deletions
|
@ -38,8 +38,9 @@
|
||||||
#include <utils/sprintf.h>
|
#include <utils/sprintf.h>
|
||||||
#include <utils/util.h>
|
#include <utils/util.h>
|
||||||
|
|
||||||
#define NUM_SECTORS_PER_ITER 8192 // 4MB Cache.
|
|
||||||
#define OUT_FILENAME_SZ 128
|
#define OUT_FILENAME_SZ 128
|
||||||
|
#define NAND_PATROL_SECTOR 0xC20
|
||||||
|
#define NUM_SECTORS_PER_ITER 8192 // 4MB Cache.
|
||||||
|
|
||||||
extern hekate_config h_cfg;
|
extern hekate_config h_cfg;
|
||||||
extern volatile boot_cfg_t *b_cfg;
|
extern volatile boot_cfg_t *b_cfg;
|
||||||
|
@ -590,9 +591,8 @@ static int _dump_emummc_raw_part(emmc_tool_gui_t *gui, int active_part, int part
|
||||||
|
|
||||||
manual_system_maintenance(false);
|
manual_system_maintenance(false);
|
||||||
|
|
||||||
retryCount = 0;
|
|
||||||
|
|
||||||
// Write data to SD card.
|
// Write data to SD card.
|
||||||
|
retryCount = 0;
|
||||||
while (!sdmmc_storage_write(&sd_storage, sd_sector_off + lba_curr, num, buf))
|
while (!sdmmc_storage_write(&sd_storage, sd_sector_off + lba_curr, num, buf))
|
||||||
{
|
{
|
||||||
s_printf(gui->txt_buf,
|
s_printf(gui->txt_buf,
|
||||||
|
@ -668,9 +668,9 @@ static int _dump_emummc_raw_part(emmc_tool_gui_t *gui, int active_part, int part
|
||||||
manual_system_maintenance(true);
|
manual_system_maintenance(true);
|
||||||
|
|
||||||
// Format USER partition.
|
// Format USER partition.
|
||||||
u8 *buf = malloc(0x400000);
|
u8 *buff = malloc(0x400000);
|
||||||
int mkfs_error = f_mkfs("emu:", FM_FAT32 | FM_SFD | FM_PRF2, 16384, buf, 0x400000);
|
int mkfs_error = f_mkfs("emu:", FM_FAT32 | FM_SFD | FM_PRF2, 16384, buff, 0x400000);
|
||||||
free(buf);
|
free(buff);
|
||||||
|
|
||||||
// Mount sd card back.
|
// Mount sd card back.
|
||||||
sd_mount();
|
sd_mount();
|
||||||
|
@ -745,6 +745,10 @@ static int _dump_emummc_raw_part(emmc_tool_gui_t *gui, int active_part, int part
|
||||||
// Write MBR.
|
// Write MBR.
|
||||||
sdmmc_storage_write(&sd_storage, sd_sector_off, 1, &mbr);
|
sdmmc_storage_write(&sd_storage, sd_sector_off, 1, &mbr);
|
||||||
|
|
||||||
|
// Clear nand patrol.
|
||||||
|
memset(buf, 0, NX_EMMC_BLOCKSIZE);
|
||||||
|
sdmmc_storage_write(&sd_storage, sd_part_off + NAND_PATROL_SECTOR, 1, buf);
|
||||||
|
|
||||||
free(gpt);
|
free(gpt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue