Add FAT32 support
This commit is contained in:
@ -104,6 +104,31 @@ int32_t vfs_init_fat16(VfsMountPoint *mp, bool format) {
|
||||
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) {
|
||||
VfsMountPoint *mp = NULL;
|
||||
|
||||
@ -188,6 +213,9 @@ int32_t vfs_mount(char *mountpoint, int32_t fstype, StoreDev *backingsd, bool fo
|
||||
case VFS_FAT16:
|
||||
err = vfs_init_fat16(mp, format);
|
||||
break;
|
||||
case VFS_FAT32:
|
||||
err = vfs_init_fat32(mp, format);
|
||||
break;
|
||||
default:
|
||||
return E_UNKNOWN_FSTYPE;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user