Lines Matching full:nfc

152 	struct ingenic_nfc *nfc = to_ingenic_nfc(nand->chip.controller);  in ingenic_nand_ecc_calculate()  local
166 return ingenic_ecc_calculate(nfc->ecc, &params, dat, ecc_code); in ingenic_nand_ecc_calculate()
173 struct ingenic_nfc *nfc = to_ingenic_nfc(nand->chip.controller); in ingenic_nand_ecc_correct() local
180 return ingenic_ecc_correct(nfc->ecc, &params, dat, read_ecc); in ingenic_nand_ecc_correct()
186 struct ingenic_nfc *nfc = to_ingenic_nfc(chip->controller); in ingenic_nand_attach_chip() local
199 if (!nfc->ecc) { in ingenic_nand_attach_chip()
200 dev_err(nfc->dev, "HW ECC selected, but ECC controller not found\n"); in ingenic_nand_attach_chip()
209 dev_info(nfc->dev, "using %s (strength %d, size %d, bytes %d)\n", in ingenic_nand_attach_chip()
210 (nfc->ecc) ? "hardware ECC" : "software ECC", in ingenic_nand_attach_chip()
214 dev_info(nfc->dev, "not using ECC\n"); in ingenic_nand_attach_chip()
217 dev_err(nfc->dev, "ECC mode %d not supported\n", in ingenic_nand_attach_chip()
230 dev_err(nfc->dev, in ingenic_nand_attach_chip()
243 if (nfc->soc_info->oob_first) in ingenic_nand_attach_chip()
249 else if (nfc->soc_info->oob_layout) in ingenic_nand_attach_chip()
250 mtd_set_ooblayout(mtd, nfc->soc_info->oob_layout); in ingenic_nand_attach_chip()
262 struct ingenic_nfc *nfc = to_ingenic_nfc(chip->controller); in ingenic_nand_exec_instr() local
268 cs->base + nfc->soc_info->cmd_offset); in ingenic_nand_exec_instr()
273 cs->base + nfc->soc_info->addr_offset); in ingenic_nand_exec_instr()
278 ioread8_rep(cs->base + nfc->soc_info->data_offset, in ingenic_nand_exec_instr()
282 ioread16_rep(cs->base + nfc->soc_info->data_offset, in ingenic_nand_exec_instr()
289 iowrite8_rep(cs->base + nfc->soc_info->data_offset, in ingenic_nand_exec_instr()
293 iowrite16_rep(cs->base + nfc->soc_info->data_offset, in ingenic_nand_exec_instr()
316 struct ingenic_nfc *nfc = to_ingenic_nfc(nand->chip.controller); in ingenic_nand_exec_op() local
324 cs = &nfc->cs[op->cs]; in ingenic_nand_exec_op()
325 jz4780_nemc_assert(nfc->dev, cs->bank, true); in ingenic_nand_exec_op()
334 jz4780_nemc_assert(nfc->dev, cs->bank, false); in ingenic_nand_exec_op()
345 struct ingenic_nfc *nfc, in ingenic_nand_init_chip() argument
357 cs = &nfc->cs[chipnr]; in ingenic_nand_init_chip()
365 jz4780_nemc_set_type(nfc->dev, cs->bank, JZ4780_NEMC_BANK_NAND); in ingenic_nand_init_chip()
401 chip->controller = &nfc->controller; in ingenic_nand_init_chip()
415 list_add_tail(&nand->chip_list, &nfc->chips); in ingenic_nand_init_chip()
420 static void ingenic_nand_cleanup_chips(struct ingenic_nfc *nfc) in ingenic_nand_cleanup_chips() argument
426 while (!list_empty(&nfc->chips)) { in ingenic_nand_cleanup_chips()
427 ingenic_chip = list_first_entry(&nfc->chips, in ingenic_nand_cleanup_chips()
437 static int ingenic_nand_init_chips(struct ingenic_nfc *nfc, in ingenic_nand_init_chips() argument
446 if (num_chips > nfc->num_banks) { in ingenic_nand_init_chips()
448 num_chips, nfc->num_banks); in ingenic_nand_init_chips()
453 ret = ingenic_nand_init_chip(pdev, nfc, np, i); in ingenic_nand_init_chips()
455 ingenic_nand_cleanup_chips(nfc); in ingenic_nand_init_chips()
470 struct ingenic_nfc *nfc; in ingenic_nand_probe() local
479 nfc = devm_kzalloc(dev, struct_size(nfc, cs, num_banks), GFP_KERNEL); in ingenic_nand_probe()
480 if (!nfc) in ingenic_nand_probe()
483 nfc->soc_info = device_get_match_data(dev); in ingenic_nand_probe()
484 if (!nfc->soc_info) in ingenic_nand_probe()
491 nfc->ecc = of_ingenic_ecc_get(dev->of_node); in ingenic_nand_probe()
492 if (IS_ERR(nfc->ecc)) in ingenic_nand_probe()
493 return PTR_ERR(nfc->ecc); in ingenic_nand_probe()
495 nfc->dev = dev; in ingenic_nand_probe()
496 nfc->num_banks = num_banks; in ingenic_nand_probe()
498 nand_controller_init(&nfc->controller); in ingenic_nand_probe()
499 INIT_LIST_HEAD(&nfc->chips); in ingenic_nand_probe()
501 ret = ingenic_nand_init_chips(nfc, pdev); in ingenic_nand_probe()
503 if (nfc->ecc) in ingenic_nand_probe()
504 ingenic_ecc_release(nfc->ecc); in ingenic_nand_probe()
508 platform_set_drvdata(pdev, nfc); in ingenic_nand_probe()
514 struct ingenic_nfc *nfc = platform_get_drvdata(pdev); in ingenic_nand_remove() local
516 if (nfc->ecc) in ingenic_nand_remove()
517 ingenic_ecc_release(nfc->ecc); in ingenic_nand_remove()
519 ingenic_nand_cleanup_chips(nfc); in ingenic_nand_remove()