Lines Matching refs:op

452 				 const struct spi_mem_op *op)  in nxp_fspi_supports_op()  argument
457 ret = nxp_fspi_check_buswidth(f, op->cmd.buswidth); in nxp_fspi_supports_op()
459 if (op->addr.nbytes) in nxp_fspi_supports_op()
460 ret |= nxp_fspi_check_buswidth(f, op->addr.buswidth); in nxp_fspi_supports_op()
462 if (op->dummy.nbytes) in nxp_fspi_supports_op()
463 ret |= nxp_fspi_check_buswidth(f, op->dummy.buswidth); in nxp_fspi_supports_op()
465 if (op->data.nbytes) in nxp_fspi_supports_op()
466 ret |= nxp_fspi_check_buswidth(f, op->data.buswidth); in nxp_fspi_supports_op()
474 if (op->addr.nbytes > 4) in nxp_fspi_supports_op()
482 if (op->addr.val >= f->memmap_phy_size) in nxp_fspi_supports_op()
486 if (op->dummy.buswidth && in nxp_fspi_supports_op()
487 (op->dummy.nbytes * 8 / op->dummy.buswidth > 64)) in nxp_fspi_supports_op()
491 if (op->data.dir == SPI_MEM_DATA_IN && in nxp_fspi_supports_op()
492 (op->data.nbytes > f->devtype_data->ahb_buf_size || in nxp_fspi_supports_op()
493 (op->data.nbytes > f->devtype_data->rxfifo - 4 && in nxp_fspi_supports_op()
494 !IS_ALIGNED(op->data.nbytes, 8)))) in nxp_fspi_supports_op()
497 if (op->data.dir == SPI_MEM_DATA_OUT && in nxp_fspi_supports_op()
498 op->data.nbytes > f->devtype_data->txfifo) in nxp_fspi_supports_op()
501 return spi_mem_default_supports_op(mem, op); in nxp_fspi_supports_op()
542 const struct spi_mem_op *op) in nxp_fspi_prepare_lut() argument
549 lutval[0] |= LUT_DEF(0, LUT_CMD, LUT_PAD(op->cmd.buswidth), in nxp_fspi_prepare_lut()
550 op->cmd.opcode); in nxp_fspi_prepare_lut()
553 if (op->addr.nbytes) { in nxp_fspi_prepare_lut()
555 LUT_PAD(op->addr.buswidth), in nxp_fspi_prepare_lut()
556 op->addr.nbytes * 8); in nxp_fspi_prepare_lut()
561 if (op->dummy.nbytes) { in nxp_fspi_prepare_lut()
567 LUT_PAD(op->data.buswidth), in nxp_fspi_prepare_lut()
568 op->dummy.nbytes * 8 / in nxp_fspi_prepare_lut()
569 op->dummy.buswidth); in nxp_fspi_prepare_lut()
574 if (op->data.nbytes) { in nxp_fspi_prepare_lut()
576 op->data.dir == SPI_MEM_DATA_IN ? in nxp_fspi_prepare_lut()
578 LUT_PAD(op->data.buswidth), in nxp_fspi_prepare_lut()
595 op->cmd.opcode, lutval[0], lutval[1], lutval[2], lutval[3], op->data.nbytes); in nxp_fspi_prepare_lut()
747 static int nxp_fspi_read_ahb(struct nxp_fspi *f, const struct spi_mem_op *op) in nxp_fspi_read_ahb() argument
749 u32 start = op->addr.val; in nxp_fspi_read_ahb()
750 u32 len = op->data.nbytes; in nxp_fspi_read_ahb()
772 memcpy_fromio(op->data.buf.in, in nxp_fspi_read_ahb()
779 const struct spi_mem_op *op) in nxp_fspi_fill_txfifo() argument
783 u8 *buf = (u8 *) op->data.buf.out; in nxp_fspi_fill_txfifo()
793 for (i = 0; i < ALIGN_DOWN(op->data.nbytes, 8); i += 8) { in nxp_fspi_fill_txfifo()
805 if (i < op->data.nbytes) { in nxp_fspi_fill_txfifo()
808 int remaining = op->data.nbytes - i; in nxp_fspi_fill_txfifo()
824 const struct spi_mem_op *op) in nxp_fspi_read_rxfifo() argument
828 int len = op->data.nbytes; in nxp_fspi_read_rxfifo()
829 u8 *buf = (u8 *) op->data.buf.in; in nxp_fspi_read_rxfifo()
852 buf = op->data.buf.in + i; in nxp_fspi_read_rxfifo()
859 len = op->data.nbytes - i; in nxp_fspi_read_rxfifo()
860 for (j = 0; j < op->data.nbytes - i; j += 4) { in nxp_fspi_read_rxfifo()
874 static int nxp_fspi_do_op(struct nxp_fspi *f, const struct spi_mem_op *op) in nxp_fspi_do_op() argument
889 fspi_writel(f, op->addr.val, base + FSPI_IPCR0); in nxp_fspi_do_op()
895 fspi_writel(f, op->data.nbytes | in nxp_fspi_do_op()
908 if (!err && op->data.nbytes && op->data.dir == SPI_MEM_DATA_IN) in nxp_fspi_do_op()
909 nxp_fspi_read_rxfifo(f, op); in nxp_fspi_do_op()
914 static int nxp_fspi_exec_op(struct spi_mem *mem, const struct spi_mem_op *op) in nxp_fspi_exec_op() argument
928 nxp_fspi_prepare_lut(f, op); in nxp_fspi_exec_op()
935 if (op->data.nbytes > (f->devtype_data->rxfifo - 4) && in nxp_fspi_exec_op()
936 op->data.dir == SPI_MEM_DATA_IN && in nxp_fspi_exec_op()
938 err = nxp_fspi_read_ahb(f, op); in nxp_fspi_exec_op()
940 if (op->data.nbytes && op->data.dir == SPI_MEM_DATA_OUT) in nxp_fspi_exec_op()
941 nxp_fspi_fill_txfifo(f, op); in nxp_fspi_exec_op()
943 err = nxp_fspi_do_op(f, op); in nxp_fspi_exec_op()
954 static int nxp_fspi_adjust_op_size(struct spi_mem *mem, struct spi_mem_op *op) in nxp_fspi_adjust_op_size() argument
958 if (op->data.dir == SPI_MEM_DATA_OUT) { in nxp_fspi_adjust_op_size()
959 if (op->data.nbytes > f->devtype_data->txfifo) in nxp_fspi_adjust_op_size()
960 op->data.nbytes = f->devtype_data->txfifo; in nxp_fspi_adjust_op_size()
962 if (op->data.nbytes > f->devtype_data->ahb_buf_size) in nxp_fspi_adjust_op_size()
963 op->data.nbytes = f->devtype_data->ahb_buf_size; in nxp_fspi_adjust_op_size()
964 else if (op->data.nbytes > (f->devtype_data->rxfifo - 4)) in nxp_fspi_adjust_op_size()
965 op->data.nbytes = ALIGN_DOWN(op->data.nbytes, 8); in nxp_fspi_adjust_op_size()
969 if (op->data.dir == SPI_MEM_DATA_IN && in nxp_fspi_adjust_op_size()
971 op->data.nbytes > f->devtype_data->rxfifo) in nxp_fspi_adjust_op_size()
972 op->data.nbytes = f->devtype_data->rxfifo; in nxp_fspi_adjust_op_size()