OneNAND support (take #2)
Subsystems (4)
PATCH 3/3 OneNAND support (take #2)
[PATCH 3/3] OneNAND support (take #2)
OneNAND support at U-Boot
Signed-off-by Kyungmin Park <[email protected]>
---
Makefile +1 -0
@@ -211,6 +211,7 @@ LIBS += drivers/libdrivers.a LIBS += drivers/bios_emulator/libatibiosemu.a LIBS += drivers/nand/libnand.a LIBS += drivers/nand_legacy/libnand_legacy.a +LIBS += drivers/onenand/libonenand.a LIBS += drivers/net/libnet.a ifeq ($(CPU),mpc83xx) LIBS += drivers/qe/qe.a
common/Makefile +2 -1
@@ -37,13 +37,14 @@ COBJS = main.o ACEX1K.o altera.o bedbug.o circbuf.o cmd_autoscript.o \ cmd_load.o cmd_log.o \ cmd_mem.o cmd_mii.o cmd_misc.o cmd_mmc.o \ cmd_nand.o cmd_net.o cmd_nvedit.o \ + cmd_onenand.o \ cmd_pci.o cmd_pcmcia.o cmd_portio.o \ cmd_reginfo.o cmd_reiser.o cmd_sata.o cmd_scsi.o cmd_spi.o \ cmd_universe.o cmd_usb.o cmd_vfd.o \ command.o console.o cyclon2.o devices.o dlmalloc.o docecc.o \ environment.o env_common.o \ env_nand.o env_dataflash.o env_flash.o env_eeprom.o \ - env_nvram.o env_nowhere.o \ + env_onenand.o env_nvram.o env_nowhere.o \ exports.o \ fdt_support.o flash.o fpga.o ft_build.o \ hush.o kgdb.o lcd.o lists.o lynxkdi.o \
common/cmd_nvedit.c +6 -3
@@ -57,8 +57,9 @@ DECLARE_GLOBAL_DATA_PTR; !defined (CFG_ENV_IS_IN_FLASH ) && \ !defined (CFG_ENV_IS_IN_DATAFLASH ) && \ !defined (CFG_ENV_IS_IN_NAND ) && \ + !defined (CFG_ENV_IS_IN_ONENAND ) && \ !defined(CFG_ENV_IS_NOWHERE) -# error Define one of CFG_ENV_IS_IN_{NVRAM|EEPROM|FLASH|DATAFLASH|NOWHERE} +# error Define one of CFG_ENV_IS_IN_{NVRAM|EEPROM|FLASH|DATAFLASH|ONENAND|NOWHERE}#endif #define XMK_STR (x) #x
@@ -553,7 +554,8 @@ int getenv_r (char *name, char *buf, unsigned len)#if defined(CFG_ENV_IS_IN_NVRAM ) || defined(CFG_ENV_IS_IN_EEPROM ) \ || (defined(CONFIG_CMD_ENV ) && defined(CONFIG_CMD_FLASH )) \ - || (defined(CONFIG_CMD_ENV ) && defined(CONFIG_CMD_NAND )) + || (defined(CONFIG_CMD_ENV ) && defined(CONFIG_CMD_NAND )) \ + || (defined(CONFIG_CMD_ENV ) && defined(CONFIG_CMD_ONENAND ))int do_saveenv (cmd_tbl_t *cmdtp,int flag,int argc,char *argv[]) {extern char * env_name_spec;
@@ -608,7 +610,8 @@ U_BOOT_CMD(#if defined(CFG_ENV_IS_IN_NVRAM ) || defined(CFG_ENV_IS_IN_EEPROM ) \ || (defined(CONFIG_CMD_ENV ) && defined(CONFIG_CMD_FLASH )) \ - || (defined(CONFIG_CMD_ENV ) && defined(CONFIG_CMD_NAND )) + || (defined(CONFIG_CMD_ENV ) && defined(CONFIG_CMD_NAND )) \ + || (defined(CONFIG_CMD_ENV ) && defined(CONFIG_CMD_ONENAND )) U_BOOT_CMD( saveenv, 1, 0, do_saveenv, "saveenv - save environment variables to persistent storage\n",
common/cmd_onenand.c new file +155 -0
155 lines not on this page · raw message
common/env_onenand.c new file +134 -0
134 lines not on this page · raw message
include/config_cmd_all.h +1 -0
@@ -59,6 +59,7 @@#define CONFIG_CMD_NAND /* NAND support */ #define CONFIG_CMD_NET /* bootp, tftpboot, rarpboot */ #define CONFIG_CMD_NFS /* NFS support */ +#define CONFIG_CMD_ONENAND /* OneNAND support */ #define CONFIG_CMD_PCI /* pciinfo */ #define CONFIG_CMD_PCMCIA /* PCMCIA support */ #define CONFIG_CMD_PING /* ping support */
include/linux/mtd/bbm.h new file +127 -0
127 lines not on this page · raw message
include/linux/mtd/onenand.h new file +143 -0
143 lines not on this page · raw message
include/linux/mtd/onenand_regs.h new file +181 -0
181 lines not on this page · raw message
include/onenand_uboot.h new file +39 -0
@@ -0,0 +1,39 @@ +/* +* Header file for OneNAND support for U-Boot +* +* Adaptation from kernel to U-Boot +* +* Copyright (C) 2005-2007 Samsung Electronics +* Kyungmin Park <[email protected]> +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License version 2 as +* published by the Free Software Foundation. +*/ + +#ifndef __UBOOT_ONENAND_H +#define __UBOOT_ONENAND_H + +struct kvec { +void *iov_base; +size_t iov_len; +}; + +typedef int spinlock_t ; +typedef int wait_queue_head_t ; + +/* Functions */ +extern void onenand_init (void ); +extern int onenand_read (struct mtd_info *mtd,loff_t from,size_t len, +size_t * retlen,u_char * buf); +extern int onenand_read_oob (struct mtd_info *mtd,loff_t from,size_t len, +size_t * retlen,u_char * buf); +extern int onenand_write (struct mtd_info *mtd,loff_t from,size_t len, +size_t * retlen,const u_char * buf); +extern int onenand_erase (struct mtd_info *mtd,struct erase_info *instr); + +extern int onenand_unlock (struct mtd_info *mtd,loff_t ofs,size_t len); + +extern void onenand_print_device_info (int device,int verbose); + +#endif /* __UBOOT_ONENAND_H */
lib_arm/board.c +8 -0
@@ -58,6 +58,10 @@ DECLARE_GLOBAL_DATA_PTR;void nand_init (void );#endif +#if defined(CONFIG_CMD_ONENAND ) +void onenand_init (void ); +#endif +ulong monitor_flash_len;#ifdef CONFIG_HAS_DATAFLASH
@@ -301,6 +305,10 @@ void start_armboot (void)nand_init ();/* go init the NAND */ #endif +#if defined(CONFIG_CMD_ONENAND ) +onenand_init (); +#endif +#ifdef CONFIG_HAS_DATAFLASH AT91F_DataflashInit ();dataflash_print_info ();