Lines Matching refs:chip
309 struct nand_chip *chip, uint8_t *buf, in denali_check_erased_page() argument
313 uint8_t *ecc_code = chip->buffers->ecccode; in denali_check_erased_page()
314 int ecc_steps = chip->ecc.steps; in denali_check_erased_page()
315 int ecc_size = chip->ecc.size; in denali_check_erased_page()
316 int ecc_bytes = chip->ecc.bytes; in denali_check_erased_page()
319 ret = mtd_ooblayout_get_eccbytes(mtd, ecc_code, chip->oob_poi, 0, in denali_check_erased_page()
320 chip->ecc.total); in denali_check_erased_page()
331 chip->ecc.strength); in denali_check_erased_page()
350 struct nand_chip *chip = mtd_to_nand(mtd); in denali_hw_ecc_fixup() local
364 *uncor_ecc_flags = GENMASK(chip->ecc.steps - 1, 0); in denali_hw_ecc_fixup()
630 static void denali_oob_xfer(struct mtd_info *mtd, struct nand_chip *chip, in denali_oob_xfer() argument
638 uint8_t *bufpoi = chip->oob_poi; in denali_oob_xfer()
639 int ecc_steps = chip->ecc.steps; in denali_oob_xfer()
640 int ecc_size = chip->ecc.size; in denali_oob_xfer()
641 int ecc_bytes = chip->ecc.bytes; in denali_oob_xfer()
647 chip->cmdfunc(mtd, start_cmd, writesize, page); in denali_oob_xfer()
649 chip->write_buf(mtd, bufpoi, oob_skip); in denali_oob_xfer()
651 chip->read_buf(mtd, bufpoi, oob_skip); in denali_oob_xfer()
664 chip->cmdfunc(mtd, rnd_cmd, pos, -1); in denali_oob_xfer()
666 chip->write_buf(mtd, bufpoi, len); in denali_oob_xfer()
668 chip->read_buf(mtd, bufpoi, len); in denali_oob_xfer()
672 chip->cmdfunc(mtd, rnd_cmd, writesize + oob_skip, -1); in denali_oob_xfer()
674 chip->write_buf(mtd, bufpoi, len); in denali_oob_xfer()
676 chip->read_buf(mtd, bufpoi, len); in denali_oob_xfer()
682 len = oobsize - (bufpoi - chip->oob_poi); in denali_oob_xfer()
683 chip->cmdfunc(mtd, rnd_cmd, size - len, -1); in denali_oob_xfer()
685 chip->write_buf(mtd, bufpoi, len); in denali_oob_xfer()
687 chip->read_buf(mtd, bufpoi, len); in denali_oob_xfer()
690 static int denali_read_page_raw(struct mtd_info *mtd, struct nand_chip *chip, in denali_read_page_raw() argument
696 int ecc_steps = chip->ecc.steps; in denali_read_page_raw()
697 int ecc_size = chip->ecc.size; in denali_read_page_raw()
698 int ecc_bytes = chip->ecc.bytes; in denali_read_page_raw()
731 uint8_t *oob = chip->oob_poi; in denali_read_page_raw()
758 len = oobsize - (oob - chip->oob_poi); in denali_read_page_raw()
765 static int denali_read_oob(struct mtd_info *mtd, struct nand_chip *chip, in denali_read_oob() argument
768 denali_oob_xfer(mtd, chip, page, 0); in denali_read_oob()
773 static int denali_write_oob(struct mtd_info *mtd, struct nand_chip *chip, in denali_write_oob() argument
781 denali_oob_xfer(mtd, chip, page, 1); in denali_write_oob()
783 chip->cmdfunc(mtd, NAND_CMD_PAGEPROG, -1, -1); in denali_write_oob()
784 status = chip->waitfunc(mtd, chip); in denali_write_oob()
789 static int denali_read_page(struct mtd_info *mtd, struct nand_chip *chip, in denali_read_page() argument
810 ret = denali_read_oob(mtd, chip, page); in denali_read_page()
814 stat = denali_check_erased_page(mtd, chip, buf, in denali_read_page()
821 static int denali_write_page_raw(struct mtd_info *mtd, struct nand_chip *chip, in denali_write_page_raw() argument
827 int ecc_steps = chip->ecc.steps; in denali_write_page_raw()
828 int ecc_size = chip->ecc.size; in denali_write_page_raw()
829 int ecc_bytes = chip->ecc.bytes; in denali_write_page_raw()
865 const uint8_t *oob = chip->oob_poi; in denali_write_page_raw()
892 len = oobsize - (oob - chip->oob_poi); in denali_write_page_raw()
899 static int denali_write_page(struct mtd_info *mtd, struct nand_chip *chip, in denali_write_page() argument
908 static void denali_select_chip(struct mtd_info *mtd, int chip) in denali_select_chip() argument
912 denali->active_bank = chip; in denali_select_chip()
915 static int denali_waitfunc(struct mtd_info *mtd, struct nand_chip *chip) in denali_waitfunc() argument
1120 static int denali_ecc_setup(struct mtd_info *mtd, struct nand_chip *chip, in denali_ecc_setup() argument
1130 if (chip->ecc.size && chip->ecc.strength) in denali_ecc_setup()
1131 return nand_check_ecc_caps(chip, denali->ecc_caps, oobavail); in denali_ecc_setup()
1137 if (!(chip->ecc.options & NAND_ECC_MAXIMIZE)) { in denali_ecc_setup()
1138 ret = nand_match_ecc_req(chip, denali->ecc_caps, oobavail); in denali_ecc_setup()
1144 return nand_maximize_ecc(chip, denali->ecc_caps, oobavail); in denali_ecc_setup()
1153 struct nand_chip *chip = mtd_to_nand(mtd); in denali_ooblayout_ecc() local
1159 oobregion->length = chip->ecc.total; in denali_ooblayout_ecc()
1168 struct nand_chip *chip = mtd_to_nand(mtd); in denali_ooblayout_free() local
1173 oobregion->offset = chip->ecc.total + denali->oob_skip_bytes; in denali_ooblayout_free()
1186 struct nand_chip *chip = &denali->nand; in denali_multidev_fixup() local
1187 struct mtd_info *mtd = nand_to_mtd(chip); in denali_multidev_fixup()
1221 chip->chipsize <<= 1; in denali_multidev_fixup()
1222 chip->page_shift += 1; in denali_multidev_fixup()
1223 chip->phys_erase_shift += 1; in denali_multidev_fixup()
1224 chip->bbt_erase_shift += 1; in denali_multidev_fixup()
1225 chip->chip_shift += 1; in denali_multidev_fixup()
1226 chip->pagemask <<= 1; in denali_multidev_fixup()
1227 chip->ecc.size <<= 1; in denali_multidev_fixup()
1228 chip->ecc.bytes <<= 1; in denali_multidev_fixup()
1229 chip->ecc.strength <<= 1; in denali_multidev_fixup()
1237 struct nand_chip *chip = &denali->nand; in denali_init() local
1238 struct mtd_info *mtd = nand_to_mtd(chip); in denali_init()
1250 chip->flash_node = dev_of_offset(denali->dev); in denali_init()
1255 chip->select_chip = denali_select_chip; in denali_init()
1256 chip->read_byte = denali_read_byte; in denali_init()
1257 chip->write_byte = denali_write_byte; in denali_init()
1258 chip->read_word = denali_read_word; in denali_init()
1259 chip->cmd_ctrl = denali_cmd_ctrl; in denali_init()
1260 chip->dev_ready = denali_dev_ready; in denali_init()
1261 chip->waitfunc = denali_waitfunc; in denali_init()
1273 chip->setup_data_interface = denali_setup_data_interface; in denali_init()
1283 chip->buf_align = ARCH_DMA_MINALIGN; in denali_init()
1289 chip->buf_align = 4; in denali_init()
1292 chip->options |= NAND_USE_BOUNCE_BUFFER; in denali_init()
1293 chip->bbt_options |= NAND_BBT_USE_FLASH; in denali_init()
1294 chip->bbt_options |= NAND_BBT_NO_OOB; in denali_init()
1298 chip->options |= NAND_NO_SUBPAGE_WRITE; in denali_init()
1300 ret = denali_ecc_setup(mtd, chip, denali); in denali_init()
1308 chip->ecc.size, chip->ecc.strength, chip->ecc.bytes); in denali_init()
1311 FIELD_PREP(ECC_CORRECTION__VALUE, chip->ecc.strength), in denali_init()
1315 iowrite32(chip->options & NAND_BUSWIDTH_16 ? 1 : 0, in denali_init()
1317 iowrite32(chip->options & NAND_ROW_ADDR_3 ? 0 : TWO_ROW_ADDR_CYCLES__FLAG, in denali_init()
1322 iowrite32(chip->ecc.size, denali->reg + CFG_DATA_BLOCK_SIZE); in denali_init()
1323 iowrite32(chip->ecc.size, denali->reg + CFG_LAST_DATA_BLOCK_SIZE); in denali_init()
1325 iowrite32(mtd->writesize / chip->ecc.size, in denali_init()
1333 if (chip->options & NAND_BUSWIDTH_16) { in denali_init()
1334 chip->read_buf = denali_read_buf16; in denali_init()
1335 chip->write_buf = denali_write_buf16; in denali_init()
1337 chip->read_buf = denali_read_buf; in denali_init()
1338 chip->write_buf = denali_write_buf; in denali_init()
1340 chip->ecc.options |= NAND_ECC_CUSTOM_PAGE_ACCESS; in denali_init()
1341 chip->ecc.read_page = denali_read_page; in denali_init()
1342 chip->ecc.read_page_raw = denali_read_page_raw; in denali_init()
1343 chip->ecc.write_page = denali_write_page; in denali_init()
1344 chip->ecc.write_page_raw = denali_write_page_raw; in denali_init()
1345 chip->ecc.read_oob = denali_read_oob; in denali_init()
1346 chip->ecc.write_oob = denali_write_oob; in denali_init()
1347 chip->erase = denali_erase; in denali_init()