mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-18 02:44:37 +00:00
nand: Allow reinitialization
NAND devices are destroyed in between unit tests. Provide a function to reinitialize the subsystem at the beginning of each test. Signed-off-by: Sean Anderson <seanga2@gmail.com> Reviewed-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
This commit is contained in:
parent
c203482177
commit
333d43f6a3
2 changed files with 34 additions and 7 deletions
|
@ -115,6 +115,8 @@ static void nand_init_chip(int i)
|
|||
#endif
|
||||
|
||||
#ifdef CONFIG_MTD_CONCAT
|
||||
struct mtd_info *concat_mtd;
|
||||
|
||||
static void create_mtd_concat(void)
|
||||
{
|
||||
struct mtd_info *nand_info_list[CONFIG_SYS_MAX_NAND_DEVICE];
|
||||
|
@ -129,28 +131,40 @@ static void create_mtd_concat(void)
|
|||
}
|
||||
}
|
||||
if (nand_devices_found > 1) {
|
||||
struct mtd_info *mtd;
|
||||
char c_mtd_name[16];
|
||||
|
||||
/*
|
||||
* We detected multiple devices. Concatenate them together.
|
||||
*/
|
||||
sprintf(c_mtd_name, "nand%d", nand_devices_found);
|
||||
mtd = mtd_concat_create(nand_info_list, nand_devices_found,
|
||||
c_mtd_name);
|
||||
concat_mtd = mtd_concat_create(nand_info_list,
|
||||
nand_devices_found, c_mtd_name);
|
||||
|
||||
if (mtd == NULL)
|
||||
if (!concat_mtd)
|
||||
return;
|
||||
|
||||
nand_register(nand_devices_found, mtd);
|
||||
nand_register(nand_devices_found, concat_mtd);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
static void destroy_mtd_concat(void)
|
||||
{
|
||||
if (!concat_mtd)
|
||||
return;
|
||||
|
||||
mtd_concat_destroy(concat_mtd);
|
||||
concat_mtd = NULL;
|
||||
}
|
||||
#else
|
||||
static void create_mtd_concat(void)
|
||||
{
|
||||
}
|
||||
|
||||
static void destroy_mtd_concat(void)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
unsigned long nand_size(void)
|
||||
|
@ -158,10 +172,10 @@ unsigned long nand_size(void)
|
|||
return total_nand_size;
|
||||
}
|
||||
|
||||
static int initialized;
|
||||
|
||||
void nand_init(void)
|
||||
{
|
||||
static int initialized;
|
||||
|
||||
/*
|
||||
* Avoid initializing NAND Flash multiple times,
|
||||
* otherwise it will calculate a wrong total size.
|
||||
|
@ -190,6 +204,18 @@ void nand_init(void)
|
|||
create_mtd_concat();
|
||||
}
|
||||
|
||||
void nand_reinit(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
destroy_mtd_concat();
|
||||
for (i = 0; i < CONFIG_SYS_MAX_NAND_DEVICE; i++)
|
||||
assert(!nand_info[i]);
|
||||
|
||||
initialized = 0;
|
||||
nand_init();
|
||||
}
|
||||
|
||||
unsigned int nand_page_size(void)
|
||||
{
|
||||
struct mtd_info *mtd = get_nand_dev_by_index(nand_curr_device);
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
#include <config.h>
|
||||
|
||||
extern void nand_init(void);
|
||||
void nand_reinit(void);
|
||||
unsigned long nand_size(void);
|
||||
unsigned int nand_page_size(void);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue