Lines Matching defs:anand
136 * struct anand - Defines the NAND chip related information
154 struct anand {
195 static struct anand *to_anand(struct nand_chip *nand)
197 return container_of(nand, struct anand, chip);
226 struct anand *anand = to_anand(chip);
232 val & BIT(anand->rb),
277 struct anand *anand = to_anand(chip);
282 writel_relaxed(anand->timings, nfc->base + DATA_INTERFACE_REG);
285 if (nfc->cur_clk != anand->clk) {
287 ret = clk_set_rate(nfc->bus_clk, anand->clk);
300 nfc->cur_clk = anand->clk;
333 struct anand *anand = to_anand(chip);
343 (page & 0xFF) << (8 * (anand->caddr_cycles)) |
344 (((page >> 8) & 0xFF) << (8 * (1 + anand->caddr_cycles))),
347 ADDR2_STRENGTH(anand->strength) |
348 ADDR2_CS(anand->cs),
352 CMD_PAGE_SIZE(anand->page_sz) |
354 CMD_NADDRS(anand->caddr_cycles +
355 anand->raddr_cycles),
394 memset(anand->hw_ecc, 0, chip->ecc.bytes);
395 nand_extract_bits(anand->hw_ecc, 0,
396 &chip->oob_poi[mtd->oobsize - anand->ecc_total],
397 anand->ecc_bits * step, anand->ecc_bits);
399 bf = bch_decode(anand->bch, raw_buf, chip->ecc.size,
400 anand->hw_ecc, NULL, NULL, anand->errloc);
406 if (anand->errloc[i] < (chip->ecc.size * 8)) {
407 bit = BIT(anand->errloc[i] & 7);
408 byte = anand->errloc[i] >> 3;
449 struct anand *anand = to_anand(chip);
461 (page & 0xFF) << (8 * (anand->caddr_cycles)) |
462 (((page >> 8) & 0xFF) << (8 * (1 + anand->caddr_cycles))),
465 ADDR2_STRENGTH(anand->strength) |
466 ADDR2_CS(anand->cs),
470 CMD_PAGE_SIZE(anand->page_sz) |
472 CMD_NADDRS(anand->caddr_cycles +
473 anand->raddr_cycles) |
478 writel_relaxed(anand->ecc_conf, nfc->base + ECC_CONF_REG);
480 ECC_SP_ADDRS(anand->caddr_cycles),
535 struct anand *anand = to_anand(chip);
542 nfc_op->addr2_reg = ADDR2_CS(anand->cs);
543 nfc_op->cmd_reg = CMD_PAGE_SIZE(anand->page_sz);
896 struct anand *anand = to_anand(chip);
931 anand->timings = DIFACE_SDR |
934 anand->timings = DIFACE_NVDDR |
938 anand->clk = ANFC_XLNX_SDR_DFLT_CORE_CLK;
941 anand->clk = div_u64((u64)NSEC_PER_SEC * 1000,
953 anand->clk = ANFC_XLNX_SDR_HS_CORE_CLK;
1004 struct anand *anand = to_anand(chip);
1028 anand->strength = 0x1;
1031 anand->strength = 0x2;
1034 anand->strength = 0x3;
1037 anand->strength = 0x4;
1062 anand->ecc_bits = bch_gf_mag * ecc->strength;
1063 ecc->bytes = DIV_ROUND_UP(anand->ecc_bits, 8);
1064 anand->ecc_total = DIV_ROUND_UP(anand->ecc_bits * ecc->steps, 8);
1065 ecc_offset = mtd->writesize + mtd->oobsize - anand->ecc_total;
1066 anand->ecc_conf = ECC_CONF_COL(ecc_offset) |
1067 ECC_CONF_LEN(anand->ecc_total) |
1070 anand->errloc = devm_kmalloc_array(nfc->dev, ecc->strength,
1071 sizeof(*anand->errloc), GFP_KERNEL);
1072 if (!anand->errloc)
1075 anand->hw_ecc = devm_kmalloc(nfc->dev, ecc->bytes, GFP_KERNEL);
1076 if (!anand->hw_ecc)
1080 anand->bch = bch_init(bch_gf_mag, ecc->strength, bch_prim_poly, true);
1081 if (!anand->bch)
1092 struct anand *anand = to_anand(chip);
1098 anand->caddr_cycles = 1;
1100 anand->caddr_cycles = 2;
1103 anand->raddr_cycles = 3;
1105 anand->raddr_cycles = 2;
1109 anand->page_sz = 0;
1112 anand->page_sz = 5;
1115 anand->page_sz = 1;
1118 anand->page_sz = 2;
1121 anand->page_sz = 3;
1124 anand->page_sz = 4;
1153 struct anand *anand = to_anand(chip);
1155 if (anand->bch)
1156 bch_free(anand->bch);
1168 struct anand *anand;
1173 anand = devm_kzalloc(nfc->dev, sizeof(*anand), GFP_KERNEL);
1174 if (!anand)
1201 anand->cs = cs;
1202 anand->rb = rb;
1204 chip = &anand->chip;
1229 list_add_tail(&anand->node, &nfc->chips);
1236 struct anand *anand, *tmp;
1240 list_for_each_entry_safe(anand, tmp, &nfc->chips, node) {
1241 chip = &anand->chip;
1245 list_del(&anand->node);