|
@@ -26,42 +26,6 @@ static void nand_denali_wp_disable(void)
|
|
|
#endif
|
|
|
}
|
|
|
|
|
|
-static void nand_denali_fixup(void)
|
|
|
-{
|
|
|
-#if defined(CONFIG_NAND_DENALI) && \
|
|
|
- (defined(CONFIG_MACH_PH1_SLD8) || defined(CONFIG_MACH_PH1_PRO4))
|
|
|
- /*
|
|
|
- * The Denali NAND controller on some of UniPhier SoCs does not
|
|
|
- * automatically query the device parameters. For those SoCs,
|
|
|
- * some registers must be set after the device is probed.
|
|
|
- */
|
|
|
- void __iomem *denali_reg = (void __iomem *)CONFIG_SYS_NAND_REGS_BASE;
|
|
|
- struct mtd_info *mtd;
|
|
|
- struct nand_chip *chip;
|
|
|
-
|
|
|
- if (nand_curr_device < 0 ||
|
|
|
- nand_curr_device >= CONFIG_SYS_MAX_NAND_DEVICE) {
|
|
|
- /* NAND was not detected. Just return. */
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- mtd = &nand_info[nand_curr_device];
|
|
|
- chip = mtd->priv;
|
|
|
-
|
|
|
- writel(mtd->erasesize / mtd->writesize, denali_reg + PAGES_PER_BLOCK);
|
|
|
- writel(0, denali_reg + DEVICE_WIDTH);
|
|
|
- writel(mtd->writesize, denali_reg + DEVICE_MAIN_AREA_SIZE);
|
|
|
- writel(mtd->oobsize, denali_reg + DEVICE_SPARE_AREA_SIZE);
|
|
|
- writel(1, denali_reg + DEVICES_CONNECTED);
|
|
|
-
|
|
|
- /*
|
|
|
- * chip->scan_bbt in nand_scan_tail() has been skipped.
|
|
|
- * It should be done in here.
|
|
|
- */
|
|
|
- chip->scan_bbt(mtd);
|
|
|
-#endif
|
|
|
-}
|
|
|
-
|
|
|
int board_late_init(void)
|
|
|
{
|
|
|
puts("MODE: ");
|
|
@@ -70,7 +34,6 @@ int board_late_init(void)
|
|
|
case BOOT_DEVICE_MMC1:
|
|
|
printf("eMMC Boot\n");
|
|
|
setenv("bootmode", "emmcboot");
|
|
|
- nand_denali_fixup();
|
|
|
break;
|
|
|
case BOOT_DEVICE_NAND:
|
|
|
printf("NAND Boot\n");
|
|
@@ -80,7 +43,6 @@ int board_late_init(void)
|
|
|
case BOOT_DEVICE_NOR:
|
|
|
printf("NOR Boot\n");
|
|
|
setenv("bootmode", "norboot");
|
|
|
- nand_denali_fixup();
|
|
|
break;
|
|
|
default:
|
|
|
printf("Unsupported Boot Mode\n");
|