Commit 03e2ecf6 authored by Stephen Warren's avatar Stephen Warren Committed by Tom Rini

fs: separate CONFIG_FS_{FAT, EXT4} from CONFIG_CMD_{FAT, EXT*}

This makes the FAT and ext4 filesystem implementations build if
CONFIG_FS_{FAT,EXT4} are defined, rather than basing the build on
whether CONFIG_CMD_{FAT,EXT*} are defined. This will allow the
filesystems to be built separately from the filesystem-specific commands
that use them. This paves the way for the creation of filesystem-generic
commands that used the filesystems, without requiring the filesystem-
specific commands.

Minor documentation changes are made for this change.

The new config options are automatically selected by the old config
options to retain backwards-compatibility.
Signed-off-by: default avatarStephen Warren <swarren@nvidia.com>
Reviewed-by: default avatarBenoît Thébaudeau <benoit.thebaudeau@advansee.com>
parent 672ee211
......@@ -807,9 +807,11 @@ The following options need to be configured:
CONFIG_CMD_EEPROM * EEPROM read/write support
CONFIG_CMD_ELF * bootelf, bootvx
CONFIG_CMD_EXPORTENV * export the environment
CONFIG_CMD_EXT2 * ext2 command support
CONFIG_CMD_EXT4 * ext4 command support
CONFIG_CMD_SAVEENV saveenv
CONFIG_CMD_FDC * Floppy Disk Support
CONFIG_CMD_FAT * FAT partition support
CONFIG_CMD_FAT * FAT command support
CONFIG_CMD_FDOS * Dos diskette Support
CONFIG_CMD_FLASH flinfo, erase, protect
CONFIG_CMD_FPGA FPGA device initialization support
......
This patch series adds support for ext4 ls,load and write features in uboot
Journaling is supported for write feature.
To enable support for the ext4 (and ext2) filesystem implementation,
#define CONFIG_FS_EXT4
If you want write support,
#define CONFIG_EXT4_WRITE
To Enable ext2 ls and load commands, modify the board specific config file with
#define CONFIG_CMD_EXT2
This automatically defines CONFIG_FS_EXT4 for you.
To Enable ext4 ls and load commands, modify the board specific config file with
#define CONFIG_CMD_EXT4
This automatically defines CONFIG_FS_EXT4 for you.
To enable ext4 write command, modify the board specific config file with
#define CONFIG_CMD_EXT4
#define CONFIG_CMD_EXT4_WRITE
These automatically define CONFIG_FS_EXT4 and CONFIG_EXT4_WRITE for you.
Also relevant are the generic filesystem commands,
#define CONFIG_CMD_FS_GENERIC
This does not automatically enable EXT4 support for you.
Steps to test:
......
......@@ -30,11 +30,8 @@ include $(TOPDIR)/config.mk
LIB = $(obj)libext4fs.o
AOBJS =
COBJS-$(CONFIG_CMD_EXT4) := ext4fs.o ext4_common.o dev.o
ifndef CONFIG_CMD_EXT4
COBJS-$(CONFIG_CMD_EXT2) := ext4fs.o ext4_common.o dev.o
endif
COBJS-$(CONFIG_CMD_EXT4_WRITE) += ext4_journal.o crc16.o
COBJS-$(CONFIG_FS_EXT4) := ext4fs.o ext4_common.o dev.o
COBJS-$(CONFIG_EXT4_WRITE) += ext4_journal.o crc16.o
SRCS := $(AOBJS:.o=.S) $(COBJS-y:.o=.c)
OBJS := $(addprefix $(obj),$(AOBJS) $(COBJS-y))
......
......@@ -56,7 +56,7 @@ int ext4fs_indir3_blkno = -1;
struct ext2_inode *g_parent_inode;
static int symlinknest;
#if defined(CONFIG_CMD_EXT4_WRITE)
#if defined(CONFIG_EXT4_WRITE)
uint32_t ext4fs_div_roundup(uint32_t size, uint32_t n)
{
uint32_t res = size / n;
......
......@@ -37,7 +37,7 @@
#include <ext4fs.h>
#include <malloc.h>
#include <asm/errno.h>
#if defined(CONFIG_CMD_EXT4_WRITE)
#if defined(CONFIG_EXT4_WRITE)
#include "ext4_journal.h"
#include "crc16.h"
#endif
......@@ -71,7 +71,7 @@ int ext4fs_find_file(const char *path, struct ext2fs_node *rootnode,
int ext4fs_iterate_dir(struct ext2fs_node *dir, char *name,
struct ext2fs_node **fnode, int *ftype);
#if defined(CONFIG_CMD_EXT4_WRITE)
#if defined(CONFIG_EXT4_WRITE)
uint32_t ext4fs_div_roundup(uint32_t size, uint32_t n);
int ext4fs_checksum_update(unsigned int i);
int ext4fs_get_parent_inode_num(const char *dirname, char *dname, int flags);
......
......@@ -196,7 +196,7 @@ int ext4fs_read(char *buf, unsigned len)
return ext4fs_read_file(ext4fs_file, 0, len, buf);
}
#if defined(CONFIG_CMD_EXT4_WRITE)
#if defined(CONFIG_EXT4_WRITE)
static void ext4fs_update(void)
{
short i;
......
......@@ -24,11 +24,11 @@ include $(TOPDIR)/config.mk
LIB = $(obj)libfat.o
AOBJS =
COBJS-$(CONFIG_CMD_FAT) := fat.o
COBJS-$(CONFIG_FS_FAT) := fat.o
COBJS-$(CONFIG_FAT_WRITE):= fat_write.o
ifndef CONFIG_SPL_BUILD
COBJS-$(CONFIG_CMD_FAT) += file.o
COBJS-$(CONFIG_FS_FAT) += file.o
endif
SRCS := $(AOBJS:.o=.S) $(COBJS-y:.o=.c)
......
......@@ -13,4 +13,17 @@
#define CONFIG_SYS_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
#endif
#if defined(CONFIG_CMD_FAT) && !defined(CONFIG_FS_FAT)
#define CONFIG_FS_FAT
#endif
#if (defined(CONFIG_CMD_EXT4) || defined(CONFIG_CMD_EXT2)) && \
!defined(CONFIG_FS_EXT4)
#define CONFIG_FS_EXT4
#endif
#if defined(CONFIG_CMD_EXT4_WRITE) && !defined(CONFIG_EXT4_WRITE)
#define CONFIG_EXT4_WRITE
#endif
#endif /* __CONFIG_FALLBACKS_H */
......@@ -116,7 +116,7 @@ struct ext_filesystem {
extern struct ext2_data *ext4fs_root;
extern struct ext2fs_node *ext4fs_file;
#if defined(CONFIG_CMD_EXT4_WRITE)
#if defined(CONFIG_EXT4_WRITE)
extern struct ext2_inode *g_parent_inode;
extern int gd_index;
extern int gindex;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment