Lines Matching refs:ndfc

52 	struct ndfc_controller *ndfc = nchip->priv;  in ndfc_select_chip()  local
54 ccr = in_be32(ndfc->ndfcbase + NDFC_CCR); in ndfc_select_chip()
57 ccr |= NDFC_CCR_BS(chip + ndfc->chip_select); in ndfc_select_chip()
60 out_be32(ndfc->ndfcbase + NDFC_CCR, ccr); in ndfc_select_chip()
66 struct ndfc_controller *ndfc = chip->priv; in ndfc_hwcontrol() local
72 writel(cmd & 0xFF, ndfc->ndfcbase + NDFC_CMD); in ndfc_hwcontrol()
74 writel(cmd & 0xFF, ndfc->ndfcbase + NDFC_ALE); in ndfc_hwcontrol()
80 struct ndfc_controller *ndfc = chip->priv; in ndfc_ready() local
82 return in_be32(ndfc->ndfcbase + NDFC_STAT) & NDFC_STAT_IS_READY; in ndfc_ready()
89 struct ndfc_controller *ndfc = chip->priv; in ndfc_enable_hwecc() local
91 ccr = in_be32(ndfc->ndfcbase + NDFC_CCR); in ndfc_enable_hwecc()
93 out_be32(ndfc->ndfcbase + NDFC_CCR, ccr); in ndfc_enable_hwecc()
101 struct ndfc_controller *ndfc = chip->priv; in ndfc_calculate_ecc() local
106 ecc = in_be32(ndfc->ndfcbase + NDFC_ECC); in ndfc_calculate_ecc()
125 struct ndfc_controller *ndfc = chip->priv; in ndfc_read_buf() local
129 *p++ = in_be32(ndfc->ndfcbase + NDFC_DATA); in ndfc_read_buf()
135 struct ndfc_controller *ndfc = chip->priv; in ndfc_write_buf() local
139 out_be32(ndfc->ndfcbase + NDFC_DATA, *p++); in ndfc_write_buf()
145 static int ndfc_chip_init(struct ndfc_controller *ndfc, in ndfc_chip_init() argument
149 struct nand_chip *chip = &ndfc->chip; in ndfc_chip_init()
153 chip->IO_ADDR_R = ndfc->ndfcbase + NDFC_DATA; in ndfc_chip_init()
154 chip->IO_ADDR_W = ndfc->ndfcbase + NDFC_DATA; in ndfc_chip_init()
159 chip->controller = &ndfc->ndfc_control; in ndfc_chip_init()
169 chip->priv = ndfc; in ndfc_chip_init()
171 ndfc->mtd.priv = chip; in ndfc_chip_init()
172 ndfc->mtd.dev.parent = &ndfc->ofdev->dev; in ndfc_chip_init()
179 ndfc->mtd.name = kasprintf(GFP_KERNEL, "%s.%s", in ndfc_chip_init()
180 dev_name(&ndfc->ofdev->dev), flash_np->name); in ndfc_chip_init()
181 if (!ndfc->mtd.name) { in ndfc_chip_init()
186 ret = nand_scan(&ndfc->mtd, 1); in ndfc_chip_init()
190 ret = mtd_device_parse_register(&ndfc->mtd, NULL, &ppdata, NULL, 0); in ndfc_chip_init()
195 kfree(ndfc->mtd.name); in ndfc_chip_init()
201 struct ndfc_controller *ndfc; in ndfc_probe() local
220 ndfc = &ndfc_ctrl[cs]; in ndfc_probe()
221 ndfc->chip_select = cs; in ndfc_probe()
223 spin_lock_init(&ndfc->ndfc_control.lock); in ndfc_probe()
224 init_waitqueue_head(&ndfc->ndfc_control.wq); in ndfc_probe()
225 ndfc->ofdev = ofdev; in ndfc_probe()
226 dev_set_drvdata(&ofdev->dev, ndfc); in ndfc_probe()
228 ndfc->ndfcbase = of_iomap(ofdev->dev.of_node, 0); in ndfc_probe()
229 if (!ndfc->ndfcbase) { in ndfc_probe()
234 ccr = NDFC_CCR_BS(ndfc->chip_select); in ndfc_probe()
241 out_be32(ndfc->ndfcbase + NDFC_CCR, ccr); in ndfc_probe()
246 int offset = NDFC_BCFG0 + (ndfc->chip_select << 2); in ndfc_probe()
247 out_be32(ndfc->ndfcbase + offset, be32_to_cpup(reg)); in ndfc_probe()
250 err = ndfc_chip_init(ndfc, ofdev->dev.of_node); in ndfc_probe()
252 iounmap(ndfc->ndfcbase); in ndfc_probe()
261 struct ndfc_controller *ndfc = dev_get_drvdata(&ofdev->dev); in ndfc_remove() local
263 nand_release(&ndfc->mtd); in ndfc_remove()
264 kfree(ndfc->mtd.name); in ndfc_remove()