Add FAT32 support
This commit is contained in:
@ -104,6 +104,31 @@ int32_t vfs_init_fat16(VfsMountPoint *mp, bool format) {
|
|||||||
return E_OK;
|
return E_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32_t vfs_init_fat32(VfsMountPoint *mp, bool format) {
|
||||||
|
mp->fs.fatfs.instance.extra = mp;
|
||||||
|
fl_init(&mp->fs.fatfs.instance);
|
||||||
|
int err = fl_attach_media(&mp->fs.fatfs.instance, &portfatfs_diskio_read, &portfatfs_diskio_write);
|
||||||
|
if (err != FAT_INIT_OK) {
|
||||||
|
ERR("vfs", "FAT32 mount failed %d\n", err);
|
||||||
|
return E_MOUNTERR;
|
||||||
|
}
|
||||||
|
if (format) {
|
||||||
|
fatfs_format_fat32(&mp->fs.fatfs.instance,
|
||||||
|
&mp->fs.fatfs.instance._fs,
|
||||||
|
mp->backingsd->capacity(mp->backingsd) / FAT_SECTOR_SIZE,
|
||||||
|
"MOP2 FAT32"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
mp->cleanup = &fatfs_cleanup;
|
||||||
|
mp->open = &fatfs_open;
|
||||||
|
mp->stat = &fatfs_stat;
|
||||||
|
mp->fetchdirent = &fatfs_fetchdirent;
|
||||||
|
mp->mkdir = &fatfs_mkdir;
|
||||||
|
mp->delete = &fatfs_delete;
|
||||||
|
return E_OK;
|
||||||
|
}
|
||||||
|
|
||||||
int32_t vfs_stat(char *mountpoint, const char *path, FsStat *stat) {
|
int32_t vfs_stat(char *mountpoint, const char *path, FsStat *stat) {
|
||||||
VfsMountPoint *mp = NULL;
|
VfsMountPoint *mp = NULL;
|
||||||
|
|
||||||
@ -188,6 +213,9 @@ int32_t vfs_mount(char *mountpoint, int32_t fstype, StoreDev *backingsd, bool fo
|
|||||||
case VFS_FAT16:
|
case VFS_FAT16:
|
||||||
err = vfs_init_fat16(mp, format);
|
err = vfs_init_fat16(mp, format);
|
||||||
break;
|
break;
|
||||||
|
case VFS_FAT32:
|
||||||
|
err = vfs_init_fat32(mp, format);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return E_UNKNOWN_FSTYPE;
|
return E_UNKNOWN_FSTYPE;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user