Look up a nand chip by id in the static table before trying to obtain
ONFI parameters. This allows a static table entry to provide valid data for chips known to provide invalid ONFI data.
This commit is contained in:
parent
ac79eedf85
commit
ff00fd81aa
@ -195,8 +195,27 @@ nandbus_attach(device_t dev)
|
||||
if (chip_id.man_id == 0xff)
|
||||
continue;
|
||||
|
||||
/* Check if chip is ONFI compliant */
|
||||
if (nand_probe_onfi(dev, &onfi) != 0) {
|
||||
/*
|
||||
* First try to get info from the table. If that fails, see if
|
||||
* the chip can provide ONFI info. We check the table first to
|
||||
* allow table entries to override info from chips that are
|
||||
* known to provide bad ONFI data.
|
||||
*/
|
||||
onfi = 0;
|
||||
chip_params = nand_get_params(&chip_id);
|
||||
if (chip_params == NULL) {
|
||||
nand_probe_onfi(dev, &onfi);
|
||||
}
|
||||
|
||||
/*
|
||||
* At this point it appears there is a chip at this chipselect,
|
||||
* so if we can't work with it, whine about it.
|
||||
*/
|
||||
if (chip_params == NULL && onfi == 0) {
|
||||
if (bootverbose || (nand_debug_flag & NDBG_BUS))
|
||||
printf("Chip params not found, chipsel: %d "
|
||||
"(manuf: 0x%0x, chipid: 0x%0x, onfi: %d)\n",
|
||||
cs, chip_id.man_id, chip_id.dev_id, onfi);
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -218,15 +237,6 @@ nandbus_attach(device_t dev)
|
||||
continue;
|
||||
}
|
||||
|
||||
chip_params = nand_get_params(&chip_id);
|
||||
if (chip_params == NULL) {
|
||||
nand_debug(NDBG_BUS,"Chip description not found! "
|
||||
"(manuf: 0x%0x, chipid: 0x%0x)\n",
|
||||
chip_id.man_id, chip_id.dev_id);
|
||||
free(ivar, M_NAND);
|
||||
continue;
|
||||
}
|
||||
|
||||
ivar->cs = cs;
|
||||
ivar->cols = 1;
|
||||
ivar->rows = 2;
|
||||
|
Loading…
Reference in New Issue
Block a user