mtd: nand: remove gotos in `check_create()'
This is a second step in restructuring `check_create()'. When we don't rely on goto statements for our main functionality, the code will become a little easier to manipulate. Signed-off-by: Brian Norris <computersforpeace@gmail.com> Signed-off-by: Artem Bityutskiy <artem.bityutskiy@intel.com>
This commit is contained in:
parent
c5e8ef9c21
commit
b61bf5bbf6
|
@ -875,7 +875,7 @@ static inline int nand_memory_bbt(struct mtd_info *mtd, struct nand_bbt_descr *b
|
||||||
*/
|
*/
|
||||||
static int check_create(struct mtd_info *mtd, uint8_t *buf, struct nand_bbt_descr *bd)
|
static int check_create(struct mtd_info *mtd, uint8_t *buf, struct nand_bbt_descr *bd)
|
||||||
{
|
{
|
||||||
int i, chips, writeops, chipsel, res;
|
int i, chips, writeops, create, chipsel, res;
|
||||||
struct nand_chip *this = mtd->priv;
|
struct nand_chip *this = mtd->priv;
|
||||||
struct nand_bbt_descr *td = this->bbt_td;
|
struct nand_bbt_descr *td = this->bbt_td;
|
||||||
struct nand_bbt_descr *md = this->bbt_md;
|
struct nand_bbt_descr *md = this->bbt_md;
|
||||||
|
@ -889,6 +889,7 @@ static int check_create(struct mtd_info *mtd, uint8_t *buf, struct nand_bbt_desc
|
||||||
|
|
||||||
for (i = 0; i < chips; i++) {
|
for (i = 0; i < chips; i++) {
|
||||||
writeops = 0;
|
writeops = 0;
|
||||||
|
create = 0;
|
||||||
rd = NULL;
|
rd = NULL;
|
||||||
rd2 = NULL;
|
rd2 = NULL;
|
||||||
/* Per chip or per device? */
|
/* Per chip or per device? */
|
||||||
|
@ -896,8 +897,8 @@ static int check_create(struct mtd_info *mtd, uint8_t *buf, struct nand_bbt_desc
|
||||||
/* Mirrored table available? */
|
/* Mirrored table available? */
|
||||||
if (md) {
|
if (md) {
|
||||||
if (td->pages[i] == -1 && md->pages[i] == -1) {
|
if (td->pages[i] == -1 && md->pages[i] == -1) {
|
||||||
|
create = 1;
|
||||||
writeops = 0x03;
|
writeops = 0x03;
|
||||||
goto create;
|
|
||||||
} else if (td->pages[i] == -1) {
|
} else if (td->pages[i] == -1) {
|
||||||
rd = md;
|
rd = md;
|
||||||
td->version[i] = md->version[i];
|
td->version[i] = md->version[i];
|
||||||
|
@ -921,25 +922,27 @@ static int check_create(struct mtd_info *mtd, uint8_t *buf, struct nand_bbt_desc
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (td->pages[i] == -1) {
|
if (td->pages[i] == -1) {
|
||||||
|
create = 1;
|
||||||
writeops = 0x01;
|
writeops = 0x01;
|
||||||
goto create;
|
} else {
|
||||||
|
rd = td;
|
||||||
}
|
}
|
||||||
rd = td;
|
|
||||||
}
|
}
|
||||||
goto writecheck;
|
|
||||||
create:
|
|
||||||
/* Create the bad block table by scanning the device? */
|
|
||||||
if (!(td->options & NAND_BBT_CREATE))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
/* Create the table in memory by scanning the chip(s) */
|
if (create) {
|
||||||
if (!(this->bbt_options & NAND_BBT_CREATE_EMPTY))
|
/* Create the bad block table by scanning the device? */
|
||||||
create_bbt(mtd, buf, bd, chipsel);
|
if (!(td->options & NAND_BBT_CREATE))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
/* Create the table in memory by scanning the chip(s) */
|
||||||
|
if (!(this->bbt_options & NAND_BBT_CREATE_EMPTY))
|
||||||
|
create_bbt(mtd, buf, bd, chipsel);
|
||||||
|
|
||||||
|
td->version[i] = 1;
|
||||||
|
if (md)
|
||||||
|
md->version[i] = 1;
|
||||||
|
}
|
||||||
|
|
||||||
td->version[i] = 1;
|
|
||||||
if (md)
|
|
||||||
md->version[i] = 1;
|
|
||||||
writecheck:
|
|
||||||
/* Read back first? */
|
/* Read back first? */
|
||||||
if (rd)
|
if (rd)
|
||||||
read_abs_bbt(mtd, buf, rd, chipsel);
|
read_abs_bbt(mtd, buf, rd, chipsel);
|
||||||
|
|
Reference in New Issue