Lines Matching refs:desc

528 static ssize_t spi_mem_no_dirmap_read(struct spi_mem_dirmap_desc *desc,
531 struct spi_mem_op op = desc->info.op_tmpl;
534 op.addr.val = desc->info.offset + offs;
537 ret = spi_mem_adjust_op_size(desc->mem, &op);
541 ret = spi_mem_exec_op(desc->mem, &op);
548 static ssize_t spi_mem_no_dirmap_write(struct spi_mem_dirmap_desc *desc,
551 struct spi_mem_op op = desc->info.op_tmpl;
554 op.addr.val = desc->info.offset + offs;
557 ret = spi_mem_adjust_op_size(desc->mem, &op);
561 ret = spi_mem_exec_op(desc->mem, &op);
586 struct spi_mem_dirmap_desc *desc;
597 desc = kzalloc(sizeof(*desc), GFP_KERNEL);
598 if (!desc)
601 desc->mem = mem;
602 desc->info = *info;
604 ret = ctlr->mem_ops->dirmap_create(desc);
607 desc->nodirmap = true;
608 if (!spi_mem_supports_op(desc->mem, &desc->info.op_tmpl))
615 kfree(desc);
619 return desc;
625 * @desc: the direct mapping descriptor to destroy
630 void spi_mem_dirmap_destroy(struct spi_mem_dirmap_desc *desc)
632 struct spi_controller *ctlr = desc->mem->spi->controller;
634 if (!desc->nodirmap && ctlr->mem_ops && ctlr->mem_ops->dirmap_destroy)
635 ctlr->mem_ops->dirmap_destroy(desc);
637 kfree(desc);
643 struct spi_mem_dirmap_desc *desc = *(struct spi_mem_dirmap_desc **)res;
645 spi_mem_dirmap_destroy(desc);
651 * @dev: device the dirmap desc will be attached to
664 struct spi_mem_dirmap_desc **ptr, *desc;
671 desc = spi_mem_dirmap_create(mem, info);
672 if (IS_ERR(desc)) {
675 *ptr = desc;
679 return desc;
696 * @dev: device the dirmap desc is attached to
697 * @desc: the direct mapping descriptor to destroy
703 struct spi_mem_dirmap_desc *desc)
706 devm_spi_mem_dirmap_match, desc);
712 * @desc: direct mapping descriptor
726 ssize_t spi_mem_dirmap_read(struct spi_mem_dirmap_desc *desc,
729 struct spi_controller *ctlr = desc->mem->spi->controller;
732 if (desc->info.op_tmpl.data.dir != SPI_MEM_DATA_IN)
738 if (desc->nodirmap) {
739 ret = spi_mem_no_dirmap_read(desc, offs, len, buf);
741 ret = spi_mem_access_start(desc->mem);
745 ret = ctlr->mem_ops->dirmap_read(desc, offs, len, buf);
747 spi_mem_access_end(desc->mem);
758 * @desc: direct mapping descriptor
772 ssize_t spi_mem_dirmap_write(struct spi_mem_dirmap_desc *desc,
775 struct spi_controller *ctlr = desc->mem->spi->controller;
778 if (desc->info.op_tmpl.data.dir != SPI_MEM_DATA_OUT)
784 if (desc->nodirmap) {
785 ret = spi_mem_no_dirmap_write(desc, offs, len, buf);
787 ret = spi_mem_access_start(desc->mem);
791 ret = ctlr->mem_ops->dirmap_write(desc, offs, len, buf);
793 spi_mem_access_end(desc->mem);