fs: Move ls and read methods into ext4, fat

It doesn't make a lot of sense to have these methods in fs.c. They are
filesystem-specific, not generic code. Add each to the relevant
filesystem and remove the associated #ifdefs in fs.c.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Tom Rini <trini@ti.com>
diff --git a/fs/fs.c b/fs/fs.c
index 0cbec99..95c882e 100644
--- a/fs/fs.c
+++ b/fs/fs.c
@@ -50,110 +50,6 @@
 {
 }
 
-#ifdef CONFIG_FS_FAT
-static int fs_probe_fat(block_dev_desc_t *fs_dev_desc,
-			disk_partition_t *fs_partition)
-{
-	return fat_set_blk_dev(fs_dev_desc, fs_partition);
-}
-
-static void fs_close_fat(void)
-{
-}
-
-#define fs_ls_fat file_fat_ls
-
-static int fs_read_fat(const char *filename, void *buf, int offset, int len)
-{
-	int len_read;
-
-	len_read = file_fat_read_at(filename, offset, buf, len);
-	if (len_read == -1) {
-		printf("** Unable to read file %s **\n", filename);
-		return -1;
-	}
-
-	return len_read;
-}
-#else
-static inline int fs_probe_fat(void)
-{
-	return -1;
-}
-
-static inline void fs_close_fat(void)
-{
-}
-
-#define fs_ls_fat fs_ls_unsupported
-#define fs_read_fat fs_read_unsupported
-#endif
-
-#ifdef CONFIG_FS_EXT4
-static int fs_probe_ext(block_dev_desc_t *fs_dev_desc,
-			disk_partition_t *fs_partition)
-{
-	ext4fs_set_blk_dev(fs_dev_desc, fs_partition);
-
-	if (!ext4fs_mount(fs_partition->size)) {
-		ext4fs_close();
-		return -1;
-	}
-
-	return 0;
-}
-
-static void fs_close_ext(void)
-{
-	ext4fs_close();
-}
-
-#define fs_ls_ext ext4fs_ls
-
-static int fs_read_ext(const char *filename, void *buf, int offset, int len)
-{
-	int file_len;
-	int len_read;
-
-	if (offset != 0) {
-		printf("** Cannot support non-zero offset **\n");
-		return -1;
-	}
-
-	file_len = ext4fs_open(filename);
-	if (file_len < 0) {
-		printf("** File not found %s **\n", filename);
-		ext4fs_close();
-		return -1;
-	}
-
-	if (len == 0)
-		len = file_len;
-
-	len_read = ext4fs_read(buf, len);
-	ext4fs_close();
-
-	if (len_read != len) {
-		printf("** Unable to read file %s **\n", filename);
-		return -1;
-	}
-
-	return len_read;
-}
-#else
-static inline int fs_probe_ext(void)
-{
-	return -1;
-}
-
-static inline void fs_close_ext(void)
-{
-}
-
-#define fs_ls_ext fs_ls_unsupported
-#define fs_read_ext fs_read_unsupported
-#endif
-
 struct fstype_info {
 	int fstype;
 	int (*probe)(block_dev_desc_t *fs_dev_desc,
@@ -167,19 +63,19 @@
 #ifdef CONFIG_FS_FAT
 	{
 		.fstype = FS_TYPE_FAT,
-		.probe = fs_probe_fat,
-		.close = fs_close_fat,
+		.probe = fat_set_blk_dev,
+		.close = fat_close,
 		.ls = file_fat_ls,
-		.read = fs_read_fat,
+		.read = fat_read_file,
 	},
 #endif
 #ifdef CONFIG_FS_EXT4
 	{
 		.fstype = FS_TYPE_EXT,
-		.probe = fs_probe_ext,
-		.close = fs_close_ext,
+		.probe = ext4fs_probe,
+		.close = ext4fs_close,
 		.ls = ext4fs_ls,
-		.read = fs_read_ext,
+		.read = ext4_read_file,
 	},
 #endif
 	{
@@ -248,6 +144,7 @@
 	struct fstype_info *info = fs_get_info(fs_type);
 
 	info->close();
+
 	fs_type = FS_TYPE_ANY;
 }
 
@@ -259,6 +156,7 @@
 
 	ret = info->ls(dirname);
 
+	fs_type = FS_TYPE_ANY;
 	fs_close();
 
 	return ret;