Merge SD stuff into fusee-secondary. Switch diskio to single-sector reads temporarily
This commit is contained in:
@@ -51,7 +51,12 @@ DRESULT disk_read (
|
||||
UINT count /* Number of sectors to read */
|
||||
)
|
||||
{
|
||||
return sdmmc_read(&sd_mmc, buff, sector, count) == 0 ? RES_OK : RES_ERROR;
|
||||
for (unsigned int i = 0; i < count; i++) {
|
||||
if (sdmmc_read(&sd_mmc, buff + 0x200 * i, sector + i, 1) != 0) {
|
||||
return RES_ERROR;
|
||||
}
|
||||
}
|
||||
return RES_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
/
|
||||
/----------------------------------------------------------------------------*/
|
||||
|
||||
#pragma GCC diagnostic ignored "-Wunused-function"
|
||||
|
||||
#include "ff.h" /* Declarations of FatFs API */
|
||||
#include "diskio.h" /* Declarations of device I/O functions */
|
||||
|
||||
@@ -102,6 +102,7 @@ int main(void) {
|
||||
args->lfb = (uint32_t *)lfb_base;
|
||||
args->console_col = video_get_col();
|
||||
args->console_row = video_get_row();
|
||||
save_sd_state(&args->sd_mmc, &args->sd_fs);
|
||||
|
||||
|
||||
/* Jump to Stage 2. */
|
||||
|
||||
@@ -10,6 +10,17 @@ FATFS sd_fs;
|
||||
static int initialized_sd = 0;
|
||||
static int mounted_sd = 0;
|
||||
|
||||
void save_sd_state(void **mmc, void **ff) {
|
||||
*mmc = &sd_mmc;
|
||||
*ff = &ff;
|
||||
}
|
||||
void resume_sd_state(void *mmc, void *ff) {
|
||||
sd_mmc = *(struct mmc *)mmc;
|
||||
sd_fs = *(FATFS *)ff;
|
||||
initialized_sd = 1;
|
||||
mounted_sd = 1;
|
||||
}
|
||||
|
||||
int initialize_sd(void) {
|
||||
if (initialized_sd) {
|
||||
return 1;
|
||||
|
||||
@@ -2,6 +2,11 @@
|
||||
#define FUSEE_SD_UTILS_H
|
||||
|
||||
#include "utils.h"
|
||||
#include "sdmmc.h"
|
||||
#include "ff.h"
|
||||
|
||||
void save_sd_state(void **mmc, void **ff);
|
||||
void resume_sd_state(void *mmc, void *ff);
|
||||
|
||||
size_t read_sd_file(void *dst, size_t dst_size, const char *filename);
|
||||
|
||||
|
||||
@@ -26,6 +26,8 @@ typedef struct {
|
||||
uint32_t *lfb;
|
||||
uint32_t console_row;
|
||||
uint32_t console_col;
|
||||
void *sd_mmc;
|
||||
void *sd_fs;
|
||||
} stage2_args_t;
|
||||
|
||||
const char *stage2_get_program_path(void);
|
||||
|
||||
Reference in New Issue
Block a user