/* Initialization code to bring the device up to a known good state */ static void denali_hw_init(struct denali_nand_info *denali) { /* * The REVISION register may not be reliable. Platforms are allowed to * override it. */ if (!denali->revision) denali->revision = swab16(ioread32(denali->flash_reg + REVISION)); /* * tell driver how many bit controller will skip before writing * ECC code in OOB. This is normally used for bad block marker */ writel(CONFIG_NAND_DENALI_SPARE_AREA_SKIP_BYTES, denali->flash_reg + SPARE_AREA_SKIP_BYTES); detect_max_banks(denali); denali_nand_reset(denali); writel(0x0F, denali->flash_reg + RB_PIN_ENABLED); writel(CHIP_EN_DONT_CARE__FLAG, denali->flash_reg + CHIP_ENABLE_DONT_CARE); writel(0xffff, denali->flash_reg + SPARE_AREA_MARKER); /* Should set value for these registers when init */ writel(0, denali->flash_reg + TWO_ROW_ADDR_CYCLES); writel(1, denali->flash_reg + ECC_ENABLE); denali_nand_timing_set(denali); denali_irq_init(denali); }
static void denali_hw_init(struct denali_nand_info *denali) { denali->bbtskipbytes = ioread32(denali->flash_reg + SPARE_AREA_SKIP_BYTES); detect_max_banks(denali); denali_nand_reset(denali); iowrite32(0x0F, denali->flash_reg + RB_PIN_ENABLED); iowrite32(CHIP_EN_DONT_CARE__FLAG, denali->flash_reg + CHIP_ENABLE_DONT_CARE); iowrite32(0xffff, denali->flash_reg + SPARE_AREA_MARKER); iowrite32(0, denali->flash_reg + TWO_ROW_ADDR_CYCLES); iowrite32(1, denali->flash_reg + ECC_ENABLE); denali_nand_timing_set(denali); denali_irq_init(denali); }
/* Initialization code to bring the device up to a known good state */ static void denali_hw_init(struct denali_nand_info *denali) { /* tell driver how many bit controller will skip before * writing ECC code in OOB, this register may be already * set by firmware. So we read this value out. * if this value is 0, just let it be. * */ denali->bbtskipbytes = ioread32(denali->flash_reg + SPARE_AREA_SKIP_BYTES); detect_max_banks(denali); denali_nand_reset(denali); iowrite32(0x0F, denali->flash_reg + RB_PIN_ENABLED); iowrite32(CHIP_EN_DONT_CARE__FLAG, denali->flash_reg + CHIP_ENABLE_DONT_CARE); iowrite32(0xffff, denali->flash_reg + SPARE_AREA_MARKER); /* Should set value for these registers when init */ iowrite32(0, denali->flash_reg + TWO_ROW_ADDR_CYCLES); iowrite32(1, denali->flash_reg + ECC_ENABLE); denali_nand_timing_set(denali); denali_irq_init(denali); }