Lines Matching full:nfc
77 struct jz4780_nand_controller *nfc = to_jz4780_nand_controller(nand->chip.controller); in jz4780_nand_select_chip() local
81 if (chipnr == -1 && nfc->selected >= 0) { in jz4780_nand_select_chip()
82 cs = &nfc->cs[nfc->selected]; in jz4780_nand_select_chip()
83 jz4780_nemc_assert(nfc->dev, cs->bank, false); in jz4780_nand_select_chip()
86 nfc->selected = chipnr; in jz4780_nand_select_chip()
93 struct jz4780_nand_controller *nfc = to_jz4780_nand_controller(nand->chip.controller); in jz4780_nand_cmd_ctrl() local
96 if (WARN_ON(nfc->selected < 0)) in jz4780_nand_cmd_ctrl()
99 cs = &nfc->cs[nfc->selected]; in jz4780_nand_cmd_ctrl()
101 jz4780_nemc_assert(nfc->dev, cs->bank, ctrl & NAND_NCE); in jz4780_nand_cmd_ctrl()
130 struct jz4780_nand_controller *nfc = to_jz4780_nand_controller(nand->chip.controller); in jz4780_nand_ecc_calculate() local
144 return jz4780_bch_calculate(nfc->bch, ¶ms, dat, ecc_code); in jz4780_nand_ecc_calculate()
151 struct jz4780_nand_controller *nfc = to_jz4780_nand_controller(nand->chip.controller); in jz4780_nand_ecc_correct() local
158 return jz4780_bch_correct(nfc->bch, ¶ms, dat, read_ecc); in jz4780_nand_ecc_correct()
164 struct jz4780_nand_controller *nfc = to_jz4780_nand_controller(chip->controller); in jz4780_nand_attach_chip() local
172 if (!nfc->bch) { in jz4780_nand_attach_chip()
173 dev_err(nfc->dev, in jz4780_nand_attach_chip()
183 dev_info(nfc->dev, "using %s (strength %d, size %d, bytes %d)\n", in jz4780_nand_attach_chip()
184 (nfc->bch) ? "hardware BCH" : "software ECC", in jz4780_nand_attach_chip()
188 dev_info(nfc->dev, "not using ECC\n"); in jz4780_nand_attach_chip()
191 dev_err(nfc->dev, "ECC mode %d not supported\n", in jz4780_nand_attach_chip()
204 dev_err(nfc->dev, in jz4780_nand_attach_chip()
220 struct jz4780_nand_controller *nfc, in jz4780_nand_init_chip() argument
233 cs = &nfc->cs[chipnr]; in jz4780_nand_init_chip()
241 jz4780_nemc_set_type(nfc->dev, cs->bank, JZ4780_NEMC_BANK_NAND); in jz4780_nand_init_chip()
285 chip->controller = &nfc->controller; in jz4780_nand_init_chip()
299 list_add_tail(&nand->chip_list, &nfc->chips); in jz4780_nand_init_chip()
304 static void jz4780_nand_cleanup_chips(struct jz4780_nand_controller *nfc) in jz4780_nand_cleanup_chips() argument
308 while (!list_empty(&nfc->chips)) { in jz4780_nand_cleanup_chips()
309 chip = list_first_entry(&nfc->chips, struct jz4780_nand_chip, chip_list); in jz4780_nand_cleanup_chips()
315 static int jz4780_nand_init_chips(struct jz4780_nand_controller *nfc, in jz4780_nand_init_chips() argument
324 if (num_chips > nfc->num_banks) { in jz4780_nand_init_chips()
325 dev_err(dev, "found %d chips but only %d banks\n", num_chips, nfc->num_banks); in jz4780_nand_init_chips()
330 ret = jz4780_nand_init_chip(pdev, nfc, np, i); in jz4780_nand_init_chips()
332 jz4780_nand_cleanup_chips(nfc); in jz4780_nand_init_chips()
346 struct jz4780_nand_controller *nfc; in jz4780_nand_probe() local
355 nfc = devm_kzalloc(dev, sizeof(*nfc) + (sizeof(nfc->cs[0]) * num_banks), GFP_KERNEL); in jz4780_nand_probe()
356 if (!nfc) in jz4780_nand_probe()
363 nfc->bch = of_jz4780_bch_get(dev->of_node); in jz4780_nand_probe()
364 if (IS_ERR(nfc->bch)) in jz4780_nand_probe()
365 return PTR_ERR(nfc->bch); in jz4780_nand_probe()
367 nfc->dev = dev; in jz4780_nand_probe()
368 nfc->num_banks = num_banks; in jz4780_nand_probe()
370 nand_controller_init(&nfc->controller); in jz4780_nand_probe()
371 INIT_LIST_HEAD(&nfc->chips); in jz4780_nand_probe()
373 ret = jz4780_nand_init_chips(nfc, pdev); in jz4780_nand_probe()
375 if (nfc->bch) in jz4780_nand_probe()
376 jz4780_bch_release(nfc->bch); in jz4780_nand_probe()
380 platform_set_drvdata(pdev, nfc); in jz4780_nand_probe()
386 struct jz4780_nand_controller *nfc = platform_get_drvdata(pdev); in jz4780_nand_remove() local
388 if (nfc->bch) in jz4780_nand_remove()
389 jz4780_bch_release(nfc->bch); in jz4780_nand_remove()
391 jz4780_nand_cleanup_chips(nfc); in jz4780_nand_remove()