Misc diskio.c / start.s improvements

This commit is contained in:
d0k3 2016-05-01 15:38:57 +02:00
parent 3aada172b9
commit 6bd1cace1f
3 changed files with 16 additions and 17 deletions

View File

@ -63,9 +63,9 @@ _start:
mcr p15, 0, r5, c7, c10, 4 @ drain write buffer mcr p15, 0, r5, c7, c10, 4 @ drain write buffer
@ Fixes mounting of SDMC @ Fixes mounting of SDMC
ldr r0, =0x10000020 ldr r0, =0x10000020
mov r1, #0x340 mov r1, #0x340
str r1, [r0] str r1, [r0]
bl main bl main

View File

@ -93,12 +93,12 @@ _start:
mcr p15, 0, r5, c7, c10, 4 @ drain write buffer mcr p15, 0, r5, c7, c10, 4 @ drain write buffer
@ Fixes mounting of SDMC @ Fixes mounting of SDMC
ldr r0, =0x10000020 ldr r0, =0x10000020
mov r1, #0x340 mov r1, #0x340
str r1, [r0] str r1, [r0]
ldr sp,=0x22160000 ldr sp, =0x22160000
ldr r3, =main ldr r3, =main
blx r3 blx r3
.pool .pool

View File

@ -130,18 +130,17 @@ DSTATUS disk_initialize (
) )
{ {
if (pdrv == 0) { // a mounted SD card is the preriquisite for everything else if (pdrv == 0) { // a mounted SD card is the preriquisite for everything else
if (!sdmmc_sdcard_init()) if (!sdmmc_sdcard_init()) return STA_NODISK;
return RES_PARERR;
} else if (pdrv < 4) { } else if (pdrv < 4) {
nand_type_sys = CheckNandType(NAND_SYSNAND); nand_type_sys = CheckNandType(NAND_SYSNAND);
if (!nand_type_sys) return RES_PARERR; if (!nand_type_sys) return STA_NODISK;
} else if (pdrv < 7) { } else if (pdrv < 7) {
nand_type_emu = CheckNandType(NAND_EMUNAND); nand_type_emu = CheckNandType(NAND_EMUNAND);
if (!nand_type_emu) return RES_PARERR; if (!nand_type_emu) return STA_NODISK;
} else if (pdrv < 10) { } else if (pdrv < 10) {
if (!GetMountState()) return RES_PARERR; if (!GetMountState()) return STA_NODISK;
nand_type_img = CheckNandType(NAND_IMGNAND); nand_type_img = CheckNandType(NAND_IMGNAND);
if (!nand_type_img) return RES_PARERR; if ((!nand_type_img) && (pdrv != 7)) return STA_NODISK;
} }
return RES_OK; return RES_OK;
} }
@ -246,13 +245,13 @@ DRESULT disk_ioctl (
if (type == TYPE_SDCARD) { // SD card if (type == TYPE_SDCARD) { // SD card
*((DWORD*) buff) = getMMCDevice(1)->total_size; *((DWORD*) buff) = getMMCDevice(1)->total_size;
} else if (type == TYPE_IMAGE) { // FAT image } else if (type == TYPE_IMAGE) { // FAT image
*((DWORD*) buff) = GetMountSize(); *((DWORD*) buff) = GetMountSize() / 0x200;
} else if (type != TYPE_NONE) { // NAND } else if (type != TYPE_NONE) { // NAND
*((DWORD*) buff) = get_subtype_desc(pdrv)->size; *((DWORD*) buff) = get_subtype_desc(pdrv)->size;
} }
return RES_OK; return RES_OK;
case GET_BLOCK_SIZE: case GET_BLOCK_SIZE:
*((DWORD*) buff) = 0x2000; *((DWORD*) buff) = (type == TYPE_IMAGE) ? 0x1 : 0x2000;
return RES_OK; return RES_OK;
case CTRL_SYNC: case CTRL_SYNC:
if ((type == TYPE_IMAGE) || (type == TYPE_IMGNAND)) if ((type == TYPE_IMAGE) || (type == TYPE_IMGNAND))