Export CFI Flash to the MTD and support it in UBI
Following patches allow for CFI Flash support in UBI and other MTD based parts of U-Boot. This is done by adding cfi_mtd driver which exports CFI Flash to the MTD layer.
First patch adds cfi_mtd driver to the U-Boot. Second cleans printf() in MTD layer. The last one adds proof-of-concept CFI Flash support to the UBI.
The baseline of the following patches is the 'testing' branch in the 'u-boot-ubi' repo.
Best regards,
Piotr Ziecik
PATCH 1/3 cfi-mtd: Add cfi-mtd driver.
Add cfi-mtd driver, which exports CFI flash to MTD layer. This allows CFI flash devices to be used from MTD layer.
Building of the new driver is controlled by CONFIG_FLASH_CFI_MTD option. Initialization is done by calling cfi_mtd_init() from flash_init().
---
This patch requires following (already posted) patches:
- flash: Exported flash_sector_size() function.
- flash: Added interface for flash verbosity control.
README | 5 + drivers/mtd/Makefile | 1 + drivers/mtd/cfi_flash.c | 5 + drivers/mtd/cfi_mtd.c | 202 +++++++++++++++++++++++++++++++++++++++++++++++ include/flash.h | 8 ++ 5 files changed, 221 insertions(+), 0 deletions(-) create mode 100644 drivers/mtd/cfi_mtd.c
README +5 -0
@@ -2155,6 +2155,11 @@ Configuration Settings: This option also enables the building of the cfi_flash driver in the drivers directory +- CONFIG_FLASH_CFI_MTD + This option enables the building of the cfi_mtd driver + in the drivers directory. The driver exports CFI flash + to the MTD layer. + - CONFIG_SYS_FLASH_USE_BUFFER_WRITE Use buffered writes to flash.
drivers/mtd/Makefile +1 -0
@@ -28,6 +28,7 @@ LIB := $(obj)libmtd.a COBJS-$(CONFIG_CMD_UBI) += mtdcore.o mtdpart.o COBJS-$(CONFIG_HAS_DATAFLASH) += at45.o COBJS-$(CONFIG_FLASH_CFI_DRIVER) += cfi_flash.o +COBJS-$(CONFIG_FLASH_CFI_MTD) += cfi_mtd.o COBJS-$(CONFIG_HAS_DATAFLASH) += dataflash.o COBJS-$(CONFIG_FLASH_CFI_LEGACY) += jedec_flash.o COBJS-$(CONFIG_MW_EEPROM) += mw_eeprom.o
drivers/mtd/cfi_flash.c +5 -0
@@ -2068,5 +2068,10 @@ unsigned long flash_init (void) flash_get_info(apl[i].start)); }#endif + +#ifdef CONFIG_FLASH_CFI_MTD +cfi_mtd_init (); +#endif +return (size); }
drivers/mtd/cfi_mtd.c new file +202 -0
202 lines not on this page · raw message
include/flash.h +8 -0
@@ -86,6 +86,9 @@ typedef unsigned long flash_sect_t;/* convert between bit value and numeric value */ #define CFI_FLASH_SHIFT_WIDTH 3 + +/* cfi-mtd device name */ +#define CFI_MTD_DEV_NAME "cfi-mtd"/* Prototypes */ extern unsigned long flash_init (void );
@@ -103,6 +106,11 @@ extern int flash_write (char *, ulong, ulong);extern flash_info_t *addr2info (ulong );extern int write_buff (flash_info_t *info,uchar *src,ulong addr,ulong cnt); +/* drivers/mtd/cfi_mtd.c */ +#ifdef CONFIG_FLASH_CFI_MTD +extern int cfi_mtd_init (void ); +#endif +/* board/?/flash.c */ #if defined(CONFIG_SYS_FLASH_PROTECTION )extern int flash_real_protect (flash_info_t *info,long sector,int prot);
Signature · 1 line
1.5.6.1
PATCH 1/3 cfi-mtd: Add cfi-mtd driver.
Quoted 8 lines · Piotr Ziecik
Add cfi-mtd driver, which exports CFI flash to MTD layer. This allows CFI flash devices to be used from MTD layer.
Building of the new driver is controlled by
CONFIG_FLASH_CFI_MTDoption. Initialization is done by callingcfi_mtd_init()fromflash_init().Signed-off-by Piotr Ziecik <[email protected]>
Applied to u-boot-cfi-flash. Thanks.
Best regards,
Stefan
=====================================================================
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office at denx.de
=====================================================================
PATCH 2/3 mtd: Remove a printf() from add_mtd_device().
In reply to Piotr ZiecikRemove a printf() from add_mtd_device(), which produces spurious output.
--- drivers/mtd/mtdcore.c | 2 -- 1 files changed, 0 insertions(+), 2 deletions(-)
drivers/mtd/mtdcore.c +0 -2
@@ -25,8 +25,6 @@ int add_mtd_device(struct mtd_info *mtd) mtd->index = i; mtd->usecount =0 ; -printf ("mtd: Giving out device %d to %s\n" , - i, mtd->name);/* No need to get a refcount on the module containing the notifier, since we hold the mtd_table_mutex */
Signature · 1 line
1.5.6.1
Stefan Roese
AppliedPATCH 2/3 mtd: Remove a printf() from add_mtd_device().
Quoted 3 lines · Piotr Ziecik
Remove a
printf()fromadd_mtd_device(), which produces spurious output.Signed-off-by Piotr Ziecik <[email protected]>
Applied to ubi. Thanks.
Best regards,
Stefan
=====================================================================
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office at denx.de
=====================================================================
PATCH 3/3 ubi: Add proof-of-concept CFI flash support
In reply to Piotr ZiecikWith this patch UBI can be used on CFI flash chips.
---
For example to create UBI volume on empty flash partition (partition 0 on NOR device 0) use following commands:
=> setenv mtdids nor0=nor
=> mtdparts add nor0 8m at 32m nor-part
=> saveenv
=> ubi part nor nor0,0
=> ubi create ubi-vol
=> ubi info layout
common/cmd_ubi.c | 8 +++++++- 1 files changed, 7 insertions(+), 1 deletions(-)
common/cmd_ubi.c +7 -1
@@ -24,6 +24,7 @@#define DEV_TYPE_NONE 0#define DEV_TYPE_NAND 1#define DEV_TYPE_ONENAND 2 +#define DEV_TYPE_NOR 3/* Private own data */ static struct ubi_device *ubi;
@@ -485,6 +486,11 @@ static int do_ubi(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]) ubi_dev.mtd_info = &nand_info[ubi_dev.nr]; }#endif +if (strcmp (argv[2 ],"nor" ) ==0 ) { +strcpy (ubi_dev.dev_name,"NOR" ); + ubi_dev.type =DEV_TYPE_NOR ; + ubi_dev.mtd_info =get_mtd_device_nm (CFI_MTD_DEV_NAME ); + }#if defined(CONFIG_CMD_ONENAND )if (strcmp (argv[2 ],"onenand" ) ==0 ) {strcpy (ubi_dev.dev_name,"OneNAND" );
@@ -606,7 +612,7 @@ static int do_ubi(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])U_BOOT_CMD (ubi,6 ,1 , do_ubi,"ubi - ubi commands\n" , -"part [nand|onenand] [part]" +"part [nand|nor|onenand] [part]" " - Show or set current partition\n" "info [l[ayout]]" " - Display volume and ubi layout information\n"
Signature · 1 line
1.5.6.1
Stefan Roese
AppliedPATCH 3/3 ubi: Add proof-of-concept CFI flash support
Quoted 3 lines · Piotr Ziecik
With this patch UBI can be used on CFI flash chips.
Signed-off-by Piotr Ziecik <[email protected]>
Applied to ubi. Thanks.
Best regards,
Stefan
=====================================================================
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office at denx.de
=====================================================================