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()
246 else if (nfc->soc_info->oob_layout) in ingenic_nand_attach_chip()
247 mtd_set_ooblayout(mtd, nfc->soc_info->oob_layout); in ingenic_nand_attach_chip()
259 struct ingenic_nfc *nfc = to_ingenic_nfc(chip->controller); in ingenic_nand_exec_instr() local
265 cs->base + nfc->soc_info->cmd_offset); in ingenic_nand_exec_instr()
270 cs->base + nfc->soc_info->addr_offset); in ingenic_nand_exec_instr()
275 ioread8_rep(cs->base + nfc->soc_info->data_offset, in ingenic_nand_exec_instr()
279 ioread16_rep(cs->base + nfc->soc_info->data_offset, in ingenic_nand_exec_instr()
286 iowrite8_rep(cs->base + nfc->soc_info->data_offset, in ingenic_nand_exec_instr()
290 iowrite16_rep(cs->base + nfc->soc_info->data_offset, in ingenic_nand_exec_instr()
313 struct ingenic_nfc *nfc = to_ingenic_nfc(nand->chip.controller); in ingenic_nand_exec_op() local
321 cs = &nfc->cs[op->cs]; in ingenic_nand_exec_op()
322 jz4780_nemc_assert(nfc->dev, cs->bank, true); in ingenic_nand_exec_op()
331 jz4780_nemc_assert(nfc->dev, cs->bank, false); in ingenic_nand_exec_op()
342 struct ingenic_nfc *nfc, in ingenic_nand_init_chip() argument
354 cs = &nfc->cs[chipnr]; in ingenic_nand_init_chip()
362 jz4780_nemc_set_type(nfc->dev, cs->bank, JZ4780_NEMC_BANK_NAND); in ingenic_nand_init_chip()
410 chip->controller = &nfc->controller; in ingenic_nand_init_chip()
424 list_add_tail(&nand->chip_list, &nfc->chips); in ingenic_nand_init_chip()
429 static void ingenic_nand_cleanup_chips(struct ingenic_nfc *nfc) in ingenic_nand_cleanup_chips() argument
435 while (!list_empty(&nfc->chips)) { in ingenic_nand_cleanup_chips()
436 ingenic_chip = list_first_entry(&nfc->chips, in ingenic_nand_cleanup_chips()
446 static int ingenic_nand_init_chips(struct ingenic_nfc *nfc, in ingenic_nand_init_chips() argument
455 if (num_chips > nfc->num_banks) { in ingenic_nand_init_chips()
457 num_chips, nfc->num_banks); in ingenic_nand_init_chips()
462 ret = ingenic_nand_init_chip(pdev, nfc, np, i); in ingenic_nand_init_chips()
464 ingenic_nand_cleanup_chips(nfc); in ingenic_nand_init_chips()
479 struct ingenic_nfc *nfc; in ingenic_nand_probe() local
488 nfc = devm_kzalloc(dev, struct_size(nfc, cs, num_banks), GFP_KERNEL); in ingenic_nand_probe()
489 if (!nfc) in ingenic_nand_probe()
492 nfc->soc_info = device_get_match_data(dev); in ingenic_nand_probe()
493 if (!nfc->soc_info) in ingenic_nand_probe()
500 nfc->ecc = of_ingenic_ecc_get(dev->of_node); in ingenic_nand_probe()
501 if (IS_ERR(nfc->ecc)) in ingenic_nand_probe()
502 return PTR_ERR(nfc->ecc); in ingenic_nand_probe()
504 nfc->dev = dev; in ingenic_nand_probe()
505 nfc->num_banks = num_banks; in ingenic_nand_probe()
507 nand_controller_init(&nfc->controller); in ingenic_nand_probe()
508 INIT_LIST_HEAD(&nfc->chips); in ingenic_nand_probe()
510 ret = ingenic_nand_init_chips(nfc, pdev); in ingenic_nand_probe()
512 if (nfc->ecc) in ingenic_nand_probe()
513 ingenic_ecc_release(nfc->ecc); in ingenic_nand_probe()
517 platform_set_drvdata(pdev, nfc); in ingenic_nand_probe()
523 struct ingenic_nfc *nfc = platform_get_drvdata(pdev); in ingenic_nand_remove() local
525 if (nfc->ecc) in ingenic_nand_remove()
526 ingenic_ecc_release(nfc->ecc); in ingenic_nand_remove()
528 ingenic_nand_cleanup_chips(nfc); in ingenic_nand_remove()