Lines Matching refs:aq
226 static u32 atmel_qspi_read(struct atmel_qspi *aq, u32 offset)
228 u32 value = readl_relaxed(aq->regs + offset);
233 dev_vdbg(&aq->pdev->dev, "read 0x%08x from %s\n", value,
240 static void atmel_qspi_write(u32 value, struct atmel_qspi *aq, u32 offset)
245 dev_vdbg(&aq->pdev->dev, "write 0x%08x into %s\n", value,
249 writel_relaxed(value, aq->regs + offset);
295 static int atmel_qspi_set_cfg(struct atmel_qspi *aq,
378 if (aq->mr != QSPI_MR_SMM) {
379 atmel_qspi_write(QSPI_MR_SMM, aq, QSPI_MR);
380 aq->mr = QSPI_MR_SMM;
384 (void)atmel_qspi_read(aq, QSPI_SR);
388 atmel_qspi_write(iar, aq, QSPI_IAR);
390 if (aq->caps->has_ricr) {
392 atmel_qspi_write(icr, aq, QSPI_RICR);
394 atmel_qspi_write(icr, aq, QSPI_WICR);
399 atmel_qspi_write(icr, aq, QSPI_ICR);
402 atmel_qspi_write(ifr, aq, QSPI_IFR);
409 struct atmel_qspi *aq = spi_controller_get_devdata(mem->spi->controller);
418 if (op->addr.val + op->data.nbytes > aq->mmap_size)
421 err = pm_runtime_resume_and_get(&aq->pdev->dev);
425 err = atmel_qspi_set_cfg(aq, op, &offset);
432 (void)atmel_qspi_read(aq, QSPI_IFR);
436 memcpy_fromio(op->data.buf.in, aq->mem + offset,
439 memcpy_toio(aq->mem + offset, op->data.buf.out,
443 atmel_qspi_write(QSPI_CR_LASTXFER, aq, QSPI_CR);
447 sr = atmel_qspi_read(aq, QSPI_SR);
452 reinit_completion(&aq->cmd_completion);
453 aq->pending = sr & QSPI_SR_CMD_COMPLETED;
454 atmel_qspi_write(QSPI_SR_CMD_COMPLETED, aq, QSPI_IER);
455 if (!wait_for_completion_timeout(&aq->cmd_completion,
458 atmel_qspi_write(QSPI_SR_CMD_COMPLETED, aq, QSPI_IDR);
461 pm_runtime_mark_last_busy(&aq->pdev->dev);
462 pm_runtime_put_autosuspend(&aq->pdev->dev);
480 struct atmel_qspi *aq = spi_controller_get_devdata(ctrl);
491 src_rate = clk_get_rate(aq->pclk);
504 aq->scr = QSPI_SCR_SCBR(scbr);
505 atmel_qspi_write(aq->scr, aq, QSPI_SCR);
516 struct atmel_qspi *aq = spi_controller_get_devdata(ctrl);
526 clk_rate = clk_get_rate(aq->pclk);
537 aq->scr |= QSPI_SCR_DLYBS(cs_setup);
538 atmel_qspi_write(aq->scr, aq, QSPI_SCR);
546 static void atmel_qspi_init(struct atmel_qspi *aq)
549 atmel_qspi_write(QSPI_CR_SWRST, aq, QSPI_CR);
552 atmel_qspi_write(QSPI_MR_SMM, aq, QSPI_MR);
553 aq->mr = QSPI_MR_SMM;
556 atmel_qspi_write(QSPI_CR_QSPIEN, aq, QSPI_CR);
561 struct atmel_qspi *aq = dev_id;
564 status = atmel_qspi_read(aq, QSPI_SR);
565 mask = atmel_qspi_read(aq, QSPI_IMR);
571 aq->pending |= pending;
572 if ((aq->pending & QSPI_SR_CMD_COMPLETED) == QSPI_SR_CMD_COMPLETED)
573 complete(&aq->cmd_completion);
581 struct atmel_qspi *aq;
585 ctrl = devm_spi_alloc_host(&pdev->dev, sizeof(*aq));
598 aq = spi_controller_get_devdata(ctrl);
600 init_completion(&aq->cmd_completion);
601 aq->pdev = pdev;
605 aq->regs = devm_ioremap_resource(&pdev->dev, res);
606 if (IS_ERR(aq->regs)) {
608 return PTR_ERR(aq->regs);
613 aq->mem = devm_ioremap_resource(&pdev->dev, res);
614 if (IS_ERR(aq->mem)) {
616 return PTR_ERR(aq->mem);
619 aq->mmap_size = resource_size(res);
622 aq->pclk = devm_clk_get(&pdev->dev, "pclk");
623 if (IS_ERR(aq->pclk))
624 aq->pclk = devm_clk_get(&pdev->dev, NULL);
626 if (IS_ERR(aq->pclk)) {
628 return PTR_ERR(aq->pclk);
632 err = clk_prepare_enable(aq->pclk);
638 aq->caps = of_device_get_match_data(&pdev->dev);
639 if (!aq->caps) {
645 if (aq->caps->has_qspick) {
647 aq->qspick = devm_clk_get(&pdev->dev, "qspick");
648 if (IS_ERR(aq->qspick)) {
650 err = PTR_ERR(aq->qspick);
655 err = clk_prepare_enable(aq->qspick);
670 0, dev_name(&pdev->dev), aq);
680 atmel_qspi_init(aq);
696 clk_disable_unprepare(aq->qspick);
698 clk_disable_unprepare(aq->pclk);
706 struct atmel_qspi *aq = spi_controller_get_devdata(ctrl);
713 atmel_qspi_write(QSPI_CR_QSPIDIS, aq, QSPI_CR);
714 clk_disable(aq->qspick);
715 clk_disable(aq->pclk);
725 clk_unprepare(aq->qspick);
726 clk_unprepare(aq->pclk);
735 struct atmel_qspi *aq = spi_controller_get_devdata(ctrl);
742 atmel_qspi_write(QSPI_CR_QSPIDIS, aq, QSPI_CR);
747 clk_unprepare(aq->qspick);
748 clk_unprepare(aq->pclk);
756 struct atmel_qspi *aq = spi_controller_get_devdata(ctrl);
759 clk_prepare(aq->pclk);
760 clk_prepare(aq->qspick);
766 atmel_qspi_init(aq);
768 atmel_qspi_write(aq->scr, aq, QSPI_SCR);
779 struct atmel_qspi *aq = spi_controller_get_devdata(ctrl);
781 clk_disable(aq->qspick);
782 clk_disable(aq->pclk);
790 struct atmel_qspi *aq = spi_controller_get_devdata(ctrl);
793 ret = clk_enable(aq->pclk);
797 ret = clk_enable(aq->qspick);
799 clk_disable(aq->pclk);