mirror of https://gitee.com/openkylin/linux.git
mtd: sunxi_nand: Select the chip in sunxi_nand_chip_init_timings()
nand_scan_ident() leaves the chip deselected. So just issuing some commands from the sunxi driver does not work. We need to select the chip before writing the commands to the NAND device. This patch takes care of this. Set the new timing on all dies implemented as suggested by Boris. This was detected on the in-circuit ICnova-A20 SoM equipped with the Micron MT29F32G08CBACAWP (4GiB) ONFI NAND device. Signed-off-by: Stefan Roese <sr@denx.de> Cc: Hans de Goede <hdegoede@redhat.com> Cc: Maxime Ripard <maxime.ripard@free-electrons.com> Cc: Roy Spliet <r.spliet@ultimaker.com> Acked-by: Boris Brezillon <boris.brezillon@free-electrons.com> [Brian: fixup whitespace] Signed-off-by: Brian Norris <computersforpeace@gmail.com>
This commit is contained in:
parent
a9cadf72bf
commit
7eadd47fd7
|
@ -978,17 +978,23 @@ static int sunxi_nand_chip_init_timings(struct sunxi_nand_chip *chip,
|
|||
mode = chip->nand.onfi_timing_mode_default;
|
||||
} else {
|
||||
uint8_t feature[ONFI_SUBFEATURE_PARAM_LEN] = {};
|
||||
int i;
|
||||
|
||||
mode = fls(mode) - 1;
|
||||
if (mode < 0)
|
||||
mode = 0;
|
||||
|
||||
feature[0] = mode;
|
||||
ret = chip->nand.onfi_set_features(&chip->mtd, &chip->nand,
|
||||
for (i = 0; i < chip->nsels; i++) {
|
||||
chip->nand.select_chip(&chip->mtd, i);
|
||||
ret = chip->nand.onfi_set_features(&chip->mtd,
|
||||
&chip->nand,
|
||||
ONFI_FEATURE_ADDR_TIMING_MODE,
|
||||
feature);
|
||||
if (ret)
|
||||
return ret;
|
||||
chip->nand.select_chip(&chip->mtd, -1);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
timings = onfi_async_timing_mode_to_sdr_timings(mode);
|
||||
|
|
Loading…
Reference in New Issue