Lines Matching full:chip

291 	 * Some commands are followed by chip->dev_ready or chip->waitfunc.  in denali_cmd_ctrl()
308 struct nand_chip *chip, uint8_t *buf, in denali_check_erased_page() argument
312 uint8_t *ecc_code = chip->buffers->ecccode; in denali_check_erased_page()
313 int ecc_steps = chip->ecc.steps; in denali_check_erased_page()
314 int ecc_size = chip->ecc.size; in denali_check_erased_page()
315 int ecc_bytes = chip->ecc.bytes; in denali_check_erased_page()
318 ret = mtd_ooblayout_get_eccbytes(mtd, ecc_code, chip->oob_poi, 0, in denali_check_erased_page()
319 chip->ecc.total); in denali_check_erased_page()
330 chip->ecc.strength); in denali_check_erased_page()
349 struct nand_chip *chip = mtd_to_nand(mtd); in denali_hw_ecc_fixup() local
363 *uncor_ecc_flags = GENMASK(chip->ecc.steps - 1, 0); in denali_hw_ecc_fixup()
629 static void denali_oob_xfer(struct mtd_info *mtd, struct nand_chip *chip, in denali_oob_xfer() argument
637 uint8_t *bufpoi = chip->oob_poi; in denali_oob_xfer()
638 int ecc_steps = chip->ecc.steps; in denali_oob_xfer()
639 int ecc_size = chip->ecc.size; in denali_oob_xfer()
640 int ecc_bytes = chip->ecc.bytes; in denali_oob_xfer()
646 chip->cmdfunc(mtd, start_cmd, writesize, page); in denali_oob_xfer()
648 chip->write_buf(mtd, bufpoi, oob_skip); in denali_oob_xfer()
650 chip->read_buf(mtd, bufpoi, oob_skip); in denali_oob_xfer()
663 chip->cmdfunc(mtd, rnd_cmd, pos, -1); in denali_oob_xfer()
665 chip->write_buf(mtd, bufpoi, len); in denali_oob_xfer()
667 chip->read_buf(mtd, bufpoi, len); in denali_oob_xfer()
671 chip->cmdfunc(mtd, rnd_cmd, writesize + oob_skip, -1); in denali_oob_xfer()
673 chip->write_buf(mtd, bufpoi, len); in denali_oob_xfer()
675 chip->read_buf(mtd, bufpoi, len); in denali_oob_xfer()
681 len = oobsize - (bufpoi - chip->oob_poi); in denali_oob_xfer()
682 chip->cmdfunc(mtd, rnd_cmd, size - len, -1); in denali_oob_xfer()
684 chip->write_buf(mtd, bufpoi, len); in denali_oob_xfer()
686 chip->read_buf(mtd, bufpoi, len); in denali_oob_xfer()
689 static int denali_read_page_raw(struct mtd_info *mtd, struct nand_chip *chip, in denali_read_page_raw() argument
695 int ecc_steps = chip->ecc.steps; in denali_read_page_raw()
696 int ecc_size = chip->ecc.size; in denali_read_page_raw()
697 int ecc_bytes = chip->ecc.bytes; in denali_read_page_raw()
730 uint8_t *oob = chip->oob_poi; in denali_read_page_raw()
757 len = oobsize - (oob - chip->oob_poi); in denali_read_page_raw()
764 static int denali_read_oob(struct mtd_info *mtd, struct nand_chip *chip, in denali_read_oob() argument
767 denali_oob_xfer(mtd, chip, page, 0); in denali_read_oob()
772 static int denali_write_oob(struct mtd_info *mtd, struct nand_chip *chip, in denali_write_oob() argument
780 denali_oob_xfer(mtd, chip, page, 1); in denali_write_oob()
782 chip->cmdfunc(mtd, NAND_CMD_PAGEPROG, -1, -1); in denali_write_oob()
783 status = chip->waitfunc(mtd, chip); in denali_write_oob()
788 static int denali_read_page(struct mtd_info *mtd, struct nand_chip *chip, in denali_read_page() argument
809 ret = denali_read_oob(mtd, chip, page); in denali_read_page()
813 stat = denali_check_erased_page(mtd, chip, buf, in denali_read_page()
820 static int denali_write_page_raw(struct mtd_info *mtd, struct nand_chip *chip, in denali_write_page_raw() argument
826 int ecc_steps = chip->ecc.steps; in denali_write_page_raw()
827 int ecc_size = chip->ecc.size; in denali_write_page_raw()
828 int ecc_bytes = chip->ecc.bytes; in denali_write_page_raw()
864 const uint8_t *oob = chip->oob_poi; in denali_write_page_raw()
891 len = oobsize - (oob - chip->oob_poi); in denali_write_page_raw()
898 static int denali_write_page(struct mtd_info *mtd, struct nand_chip *chip, in denali_write_page() argument
907 static void denali_select_chip(struct mtd_info *mtd, int chip) in denali_select_chip() argument
911 denali->active_bank = chip; in denali_select_chip()
914 static int denali_waitfunc(struct mtd_info *mtd, struct nand_chip *chip) in denali_waitfunc() argument
1119 static int denali_ecc_setup(struct mtd_info *mtd, struct nand_chip *chip, in denali_ecc_setup() argument
1129 if (chip->ecc.size && chip->ecc.strength) in denali_ecc_setup()
1130 return nand_check_ecc_caps(chip, denali->ecc_caps, oobavail); in denali_ecc_setup()
1133 * We want .size and .strength closest to the chip's requirement in denali_ecc_setup()
1136 if (!(chip->ecc.options & NAND_ECC_MAXIMIZE)) { in denali_ecc_setup()
1137 ret = nand_match_ecc_req(chip, denali->ecc_caps, oobavail); in denali_ecc_setup()
1143 return nand_maximize_ecc(chip, denali->ecc_caps, oobavail); in denali_ecc_setup()
1152 struct nand_chip *chip = mtd_to_nand(mtd); in denali_ooblayout_ecc() local
1158 oobregion->length = chip->ecc.total; in denali_ooblayout_ecc()
1167 struct nand_chip *chip = mtd_to_nand(mtd); in denali_ooblayout_free() local
1172 oobregion->offset = chip->ecc.total + denali->oob_skip_bytes; in denali_ooblayout_free()
1185 struct nand_chip *chip = &denali->nand; in denali_multidev_fixup() local
1186 struct mtd_info *mtd = nand_to_mtd(chip); in denali_multidev_fixup()
1220 chip->chipsize <<= 1; in denali_multidev_fixup()
1221 chip->page_shift += 1; in denali_multidev_fixup()
1222 chip->phys_erase_shift += 1; in denali_multidev_fixup()
1223 chip->bbt_erase_shift += 1; in denali_multidev_fixup()
1224 chip->chip_shift += 1; in denali_multidev_fixup()
1225 chip->pagemask <<= 1; in denali_multidev_fixup()
1226 chip->ecc.size <<= 1; in denali_multidev_fixup()
1227 chip->ecc.bytes <<= 1; in denali_multidev_fixup()
1228 chip->ecc.strength <<= 1; in denali_multidev_fixup()
1236 struct nand_chip *chip = &denali->nand; in denali_init() local
1237 struct mtd_info *mtd = nand_to_mtd(chip); in denali_init()
1249 chip->flash_node = dev_of_offset(denali->dev); in denali_init()
1254 chip->select_chip = denali_select_chip; in denali_init()
1255 chip->read_byte = denali_read_byte; in denali_init()
1256 chip->write_byte = denali_write_byte; in denali_init()
1257 chip->read_word = denali_read_word; in denali_init()
1258 chip->cmd_ctrl = denali_cmd_ctrl; in denali_init()
1259 chip->dev_ready = denali_dev_ready; in denali_init()
1260 chip->waitfunc = denali_waitfunc; in denali_init()
1272 chip->setup_data_interface = denali_setup_data_interface; in denali_init()
1282 chip->buf_align = ARCH_DMA_MINALIGN; in denali_init()
1288 chip->buf_align = 4; in denali_init()
1291 chip->options |= NAND_USE_BOUNCE_BUFFER; in denali_init()
1292 chip->bbt_options |= NAND_BBT_USE_FLASH; in denali_init()
1293 chip->bbt_options |= NAND_BBT_NO_OOB; in denali_init()
1297 chip->options |= NAND_NO_SUBPAGE_WRITE; in denali_init()
1299 ret = denali_ecc_setup(mtd, chip, denali); in denali_init()
1307 chip->ecc.size, chip->ecc.strength, chip->ecc.bytes); in denali_init()
1310 FIELD_PREP(ECC_CORRECTION__VALUE, chip->ecc.strength), in denali_init()
1314 iowrite32(chip->options & NAND_BUSWIDTH_16 ? 1 : 0, in denali_init()
1316 iowrite32(chip->options & NAND_ROW_ADDR_3 ? 0 : TWO_ROW_ADDR_CYCLES__FLAG, in denali_init()
1321 iowrite32(chip->ecc.size, denali->reg + CFG_DATA_BLOCK_SIZE); in denali_init()
1322 iowrite32(chip->ecc.size, denali->reg + CFG_LAST_DATA_BLOCK_SIZE); in denali_init()
1323 /* chip->ecc.steps is set by nand_scan_tail(); not available here */ in denali_init()
1324 iowrite32(mtd->writesize / chip->ecc.size, in denali_init()
1332 if (chip->options & NAND_BUSWIDTH_16) { in denali_init()
1333 chip->read_buf = denali_read_buf16; in denali_init()
1334 chip->write_buf = denali_write_buf16; in denali_init()
1336 chip->read_buf = denali_read_buf; in denali_init()
1337 chip->write_buf = denali_write_buf; in denali_init()
1339 chip->ecc.options |= NAND_ECC_CUSTOM_PAGE_ACCESS; in denali_init()
1340 chip->ecc.read_page = denali_read_page; in denali_init()
1341 chip->ecc.read_page_raw = denali_read_page_raw; in denali_init()
1342 chip->ecc.write_page = denali_write_page; in denali_init()
1343 chip->ecc.write_page_raw = denali_write_page_raw; in denali_init()
1344 chip->ecc.read_oob = denali_read_oob; in denali_init()
1345 chip->ecc.write_oob = denali_write_oob; in denali_init()
1346 chip->erase = denali_erase; in denali_init()