nand: Add function to unregister NAND devices

This performs the opposite of nand_register, allowing drivers to unregister
nand devices. This is probably unnecessary for most regular drivers, but we
expect sandbox drivers to get repeatedly bound/unbound, so this will help
avoid dangling pointers.

Signed-off-by: Sean Anderson <seanga2@gmail.com>
Reviewed-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
This commit is contained in:
Sean Anderson 2023-11-04 16:37:49 -04:00 committed by Tom Rini
parent b37a9208a2
commit c203482177
2 changed files with 18 additions and 0 deletions

View File

@ -74,6 +74,23 @@ int nand_register(int devnum, struct mtd_info *mtd)
return 0;
}
void nand_unregister(struct mtd_info *mtd)
{
int devnum = nand_mtd_to_devnum(mtd);
if (devnum < 0)
return;
if (nand_curr_device == devnum)
nand_curr_device = -1;
total_nand_size -= mtd->size / 1024;
del_mtd_device(nand_info[devnum]);
nand_info[devnum] = NULL;
}
#if !CONFIG_IS_ENABLED(SYS_NAND_SELF_INIT)
static void nand_init_chip(int i)
{

View File

@ -22,6 +22,7 @@ int nand_mtd_to_devnum(struct mtd_info *mtd);
#if CONFIG_IS_ENABLED(SYS_NAND_SELF_INIT)
void board_nand_init(void);
int nand_register(int devnum, struct mtd_info *mtd);
void nand_unregister(struct mtd_info *mtd);
#else
struct nand_chip;