Lines Matching refs:fmc2

181 	struct stm32_fmc2_nfc *fmc2 = to_stm32_nfc(chip->controller);  in stm32_fmc2_timings_init()  local
184 u32 pcr = readl(fmc2->io_base + FMC2_PCR); in stm32_fmc2_timings_init()
205 writel(pcr, fmc2->io_base + FMC2_PCR); in stm32_fmc2_timings_init()
206 writel(pmem, fmc2->io_base + FMC2_PMEM); in stm32_fmc2_timings_init()
207 writel(patt, fmc2->io_base + FMC2_PATT); in stm32_fmc2_timings_init()
213 struct stm32_fmc2_nfc *fmc2 = to_stm32_nfc(chip->controller); in stm32_fmc2_setup() local
214 u32 pcr = readl(fmc2->io_base + FMC2_PCR); in stm32_fmc2_setup()
235 writel(pcr, fmc2->io_base + FMC2_PCR); in stm32_fmc2_setup()
242 struct stm32_fmc2_nfc *fmc2 = to_stm32_nfc(chip->controller); in stm32_fmc2_select_chip() local
248 if (nand->cs_used[chipnr] == fmc2->cs_sel) in stm32_fmc2_select_chip()
251 fmc2->cs_sel = nand->cs_used[chipnr]; in stm32_fmc2_select_chip()
252 chip->IO_ADDR_R = fmc2->data_base[fmc2->cs_sel]; in stm32_fmc2_select_chip()
253 chip->IO_ADDR_W = fmc2->data_base[fmc2->cs_sel]; in stm32_fmc2_select_chip()
263 static void stm32_fmc2_set_buswidth_16(struct stm32_fmc2_nfc *fmc2, bool set) in stm32_fmc2_set_buswidth_16() argument
265 u32 pcr = readl(fmc2->io_base + FMC2_PCR); in stm32_fmc2_set_buswidth_16()
270 writel(pcr, fmc2->io_base + FMC2_PCR); in stm32_fmc2_set_buswidth_16()
274 static void stm32_fmc2_set_ecc(struct stm32_fmc2_nfc *fmc2, bool enable) in stm32_fmc2_set_ecc() argument
276 u32 pcr = readl(fmc2->io_base + FMC2_PCR); in stm32_fmc2_set_ecc()
281 writel(pcr, fmc2->io_base + FMC2_PCR); in stm32_fmc2_set_ecc()
285 static inline void stm32_fmc2_clear_bch_irq(struct stm32_fmc2_nfc *fmc2) in stm32_fmc2_clear_bch_irq() argument
287 writel(FMC2_BCHICR_CLEAR_IRQ, fmc2->io_base + FMC2_BCHICR); in stm32_fmc2_clear_bch_irq()
295 struct stm32_fmc2_nfc *fmc2 = to_stm32_nfc(chip->controller); in stm32_fmc2_cmd_ctrl() local
301 writeb(cmd, fmc2->cmd_base[fmc2->cs_sel]); in stm32_fmc2_cmd_ctrl()
305 writeb(cmd, fmc2->addr_base[fmc2->cs_sel]); in stm32_fmc2_cmd_ctrl()
315 struct stm32_fmc2_nfc *fmc2 = to_stm32_nfc(chip->controller); in stm32_fmc2_hwctl() local
317 stm32_fmc2_set_ecc(fmc2, false); in stm32_fmc2_hwctl()
320 u32 pcr = readl(fmc2->io_base + FMC2_PCR); in stm32_fmc2_hwctl()
326 writel(pcr, fmc2->io_base + FMC2_PCR); in stm32_fmc2_hwctl()
328 stm32_fmc2_clear_bch_irq(fmc2); in stm32_fmc2_hwctl()
331 stm32_fmc2_set_ecc(fmc2, true); in stm32_fmc2_hwctl()
343 struct stm32_fmc2_nfc *fmc2 = to_stm32_nfc(chip->controller); in stm32_fmc2_ham_calculate() local
347 ret = readl_poll_timeout(fmc2->io_base + FMC2_SR, sr, in stm32_fmc2_ham_calculate()
354 heccr = readl(fmc2->io_base + FMC2_HECCR); in stm32_fmc2_ham_calculate()
361 stm32_fmc2_set_ecc(fmc2, false); in stm32_fmc2_ham_calculate()
428 struct stm32_fmc2_nfc *fmc2 = to_stm32_nfc(chip->controller); in stm32_fmc2_bch_calculate() local
433 ret = readl_poll_timeout(fmc2->io_base + FMC2_BCHISR, bchisr, in stm32_fmc2_bch_calculate()
441 bchpbr = readl(fmc2->io_base + FMC2_BCHPBR1); in stm32_fmc2_bch_calculate()
447 bchpbr = readl(fmc2->io_base + FMC2_BCHPBR2); in stm32_fmc2_bch_calculate()
455 bchpbr = readl(fmc2->io_base + FMC2_BCHPBR3); in stm32_fmc2_bch_calculate()
461 bchpbr = readl(fmc2->io_base + FMC2_BCHPBR4); in stm32_fmc2_bch_calculate()
466 stm32_fmc2_set_ecc(fmc2, false); in stm32_fmc2_bch_calculate()
476 struct stm32_fmc2_nfc *fmc2 = to_stm32_nfc(chip->controller); in stm32_fmc2_bch_correct() local
483 ret = readl_poll_timeout(fmc2->io_base + FMC2_BCHISR, bchisr, in stm32_fmc2_bch_correct()
490 bchdsr0 = readl(fmc2->io_base + FMC2_BCHDSR0); in stm32_fmc2_bch_correct()
491 bchdsr1 = readl(fmc2->io_base + FMC2_BCHDSR1); in stm32_fmc2_bch_correct()
492 bchdsr2 = readl(fmc2->io_base + FMC2_BCHDSR2); in stm32_fmc2_bch_correct()
493 bchdsr3 = readl(fmc2->io_base + FMC2_BCHDSR3); in stm32_fmc2_bch_correct()
494 bchdsr4 = readl(fmc2->io_base + FMC2_BCHDSR4); in stm32_fmc2_bch_correct()
497 stm32_fmc2_set_ecc(fmc2, false); in stm32_fmc2_bch_correct()
579 static void stm32_fmc2_init(struct stm32_fmc2_nfc *fmc2) in stm32_fmc2_init() argument
581 u32 pcr = readl(fmc2->io_base + FMC2_PCR); in stm32_fmc2_init()
582 u32 bcr1 = readl(fmc2->io_base + FMC2_BCR1); in stm32_fmc2_init()
585 fmc2->cs_sel = -1; in stm32_fmc2_init()
615 writel(bcr1, fmc2->io_base + FMC2_BCR1); in stm32_fmc2_init()
616 writel(pcr, fmc2->io_base + FMC2_PCR); in stm32_fmc2_init()
617 writel(FMC2_PMEM_DEFAULT, fmc2->io_base + FMC2_PMEM); in stm32_fmc2_init()
618 writel(FMC2_PATT_DEFAULT, fmc2->io_base + FMC2_PATT); in stm32_fmc2_init()
625 struct stm32_fmc2_nfc *fmc2 = to_stm32_nfc(chip->controller); in stm32_fmc2_calc_timings() local
628 unsigned long hclk = clk_get_rate(&fmc2->clk); in stm32_fmc2_calc_timings()
854 static int stm32_fmc2_parse_child(struct stm32_fmc2_nfc *fmc2, in stm32_fmc2_parse_child() argument
857 struct stm32_fmc2_nand *nand = &fmc2->nand; in stm32_fmc2_parse_child()
883 if (fmc2->cs_assigned & BIT(cs[i])) { in stm32_fmc2_parse_child()
889 fmc2->cs_assigned |= BIT(cs[i]); in stm32_fmc2_parse_child()
899 struct stm32_fmc2_nfc *fmc2) in stm32_fmc2_parse_dt() argument
918 ret = stm32_fmc2_parse_child(fmc2, child); in stm32_fmc2_parse_dt()
928 struct stm32_fmc2_nfc *fmc2 = dev_get_priv(dev); in stm32_fmc2_probe() local
929 struct stm32_fmc2_nand *nand = &fmc2->nand; in stm32_fmc2_probe()
937 spin_lock_init(&fmc2->controller.lock); in stm32_fmc2_probe()
938 init_waitqueue_head(&fmc2->controller.wq); in stm32_fmc2_probe()
940 ret = stm32_fmc2_parse_dt(dev, fmc2); in stm32_fmc2_probe()
950 fmc2->io_base = (void __iomem *)resource.start; in stm32_fmc2_probe()
954 if (!(fmc2->cs_assigned & BIT(chip_cs))) in stm32_fmc2_probe()
963 fmc2->data_base[chip_cs] = (void __iomem *)resource.start; in stm32_fmc2_probe()
971 fmc2->cmd_base[chip_cs] = (void __iomem *)resource.start; in stm32_fmc2_probe()
979 fmc2->addr_base[chip_cs] = (void __iomem *)resource.start; in stm32_fmc2_probe()
983 ret = clk_get_by_index(dev, 0, &fmc2->clk); in stm32_fmc2_probe()
987 ret = clk_enable(&fmc2->clk); in stm32_fmc2_probe()
1000 stm32_fmc2_init(fmc2); in stm32_fmc2_probe()
1002 chip->controller = &fmc2->base; in stm32_fmc2_probe()
1046 ecclayout = &fmc2->ecclayout; in stm32_fmc2_probe()
1058 stm32_fmc2_set_buswidth_16(fmc2, true); in stm32_fmc2_probe()