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: Stephen Warren <swarren@nvidia.com>
Reviewed-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com>
This commit is contained in:
Stephen Warren 2012-10-22 06:43:50 +00:00 committed by Tom Rini
parent 672ee2110c
commit 03e2ecf6b8
9 changed files with 38 additions and 13 deletions

4
README
View File

@ -807,9 +807,11 @@ The following options need to be configured:
CONFIG_CMD_EEPROM * EEPROM read/write support CONFIG_CMD_EEPROM * EEPROM read/write support
CONFIG_CMD_ELF * bootelf, bootvx CONFIG_CMD_ELF * bootelf, bootvx
CONFIG_CMD_EXPORTENV * export the environment CONFIG_CMD_EXPORTENV * export the environment
CONFIG_CMD_EXT2 * ext2 command support
CONFIG_CMD_EXT4 * ext4 command support
CONFIG_CMD_SAVEENV saveenv CONFIG_CMD_SAVEENV saveenv
CONFIG_CMD_FDC * Floppy Disk Support 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_FDOS * Dos diskette Support
CONFIG_CMD_FLASH flinfo, erase, protect CONFIG_CMD_FLASH flinfo, erase, protect
CONFIG_CMD_FPGA FPGA device initialization support CONFIG_CMD_FPGA FPGA device initialization support

View File

@ -1,15 +1,28 @@
This patch series adds support for ext4 ls,load and write features in uboot This patch series adds support for ext4 ls,load and write features in uboot
Journaling is supported for write feature. 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 To Enable ext2 ls and load commands, modify the board specific config file with
#define CONFIG_CMD_EXT2 #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 To Enable ext4 ls and load commands, modify the board specific config file with
#define CONFIG_CMD_EXT4 #define CONFIG_CMD_EXT4
This automatically defines CONFIG_FS_EXT4 for you.
To enable ext4 write command, modify the board specific config file with To enable ext4 write command, modify the board specific config file with
#define CONFIG_CMD_EXT4 #define CONFIG_CMD_EXT4
#define CONFIG_CMD_EXT4_WRITE #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: Steps to test:

View File

@ -30,11 +30,8 @@ include $(TOPDIR)/config.mk
LIB = $(obj)libext4fs.o LIB = $(obj)libext4fs.o
AOBJS = AOBJS =
COBJS-$(CONFIG_CMD_EXT4) := ext4fs.o ext4_common.o dev.o COBJS-$(CONFIG_FS_EXT4) := ext4fs.o ext4_common.o dev.o
ifndef CONFIG_CMD_EXT4 COBJS-$(CONFIG_EXT4_WRITE) += ext4_journal.o crc16.o
COBJS-$(CONFIG_CMD_EXT2) := ext4fs.o ext4_common.o dev.o
endif
COBJS-$(CONFIG_CMD_EXT4_WRITE) += ext4_journal.o crc16.o
SRCS := $(AOBJS:.o=.S) $(COBJS-y:.o=.c) SRCS := $(AOBJS:.o=.S) $(COBJS-y:.o=.c)
OBJS := $(addprefix $(obj),$(AOBJS) $(COBJS-y)) OBJS := $(addprefix $(obj),$(AOBJS) $(COBJS-y))

View File

@ -56,7 +56,7 @@ int ext4fs_indir3_blkno = -1;
struct ext2_inode *g_parent_inode; struct ext2_inode *g_parent_inode;
static int symlinknest; 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 ext4fs_div_roundup(uint32_t size, uint32_t n)
{ {
uint32_t res = size / n; uint32_t res = size / n;

View File

@ -37,7 +37,7 @@
#include <ext4fs.h> #include <ext4fs.h>
#include <malloc.h> #include <malloc.h>
#include <asm/errno.h> #include <asm/errno.h>
#if defined(CONFIG_CMD_EXT4_WRITE) #if defined(CONFIG_EXT4_WRITE)
#include "ext4_journal.h" #include "ext4_journal.h"
#include "crc16.h" #include "crc16.h"
#endif #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, int ext4fs_iterate_dir(struct ext2fs_node *dir, char *name,
struct ext2fs_node **fnode, int *ftype); 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); uint32_t ext4fs_div_roundup(uint32_t size, uint32_t n);
int ext4fs_checksum_update(unsigned int i); int ext4fs_checksum_update(unsigned int i);
int ext4fs_get_parent_inode_num(const char *dirname, char *dname, int flags); int ext4fs_get_parent_inode_num(const char *dirname, char *dname, int flags);

View File

@ -196,7 +196,7 @@ int ext4fs_read(char *buf, unsigned len)
return ext4fs_read_file(ext4fs_file, 0, len, buf); 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) static void ext4fs_update(void)
{ {
short i; short i;

View File

@ -24,11 +24,11 @@ include $(TOPDIR)/config.mk
LIB = $(obj)libfat.o LIB = $(obj)libfat.o
AOBJS = AOBJS =
COBJS-$(CONFIG_CMD_FAT) := fat.o COBJS-$(CONFIG_FS_FAT) := fat.o
COBJS-$(CONFIG_FAT_WRITE):= fat_write.o COBJS-$(CONFIG_FAT_WRITE):= fat_write.o
ifndef CONFIG_SPL_BUILD ifndef CONFIG_SPL_BUILD
COBJS-$(CONFIG_CMD_FAT) += file.o COBJS-$(CONFIG_FS_FAT) += file.o
endif endif
SRCS := $(AOBJS:.o=.S) $(COBJS-y:.o=.c) SRCS := $(AOBJS:.o=.S) $(COBJS-y:.o=.c)

View File

@ -13,4 +13,17 @@
#define CONFIG_SYS_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 } #define CONFIG_SYS_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
#endif #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 */ #endif /* __CONFIG_FALLBACKS_H */

View File

@ -116,7 +116,7 @@ struct ext_filesystem {
extern struct ext2_data *ext4fs_root; extern struct ext2_data *ext4fs_root;
extern struct ext2fs_node *ext4fs_file; 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 struct ext2_inode *g_parent_inode;
extern int gd_index; extern int gd_index;
extern int gindex; extern int gindex;