Lines Matching defs:desc

450 static ssize_t spi_mem_no_dirmap_read(struct spi_mem_dirmap_desc *desc,
453 struct spi_mem_op op = desc->info.op_tmpl;
456 op.addr.val = desc->info.offset + offs;
459 ret = spi_mem_adjust_op_size(desc->mem, &op);
463 ret = spi_mem_exec_op(desc->mem, &op);
470 static ssize_t spi_mem_no_dirmap_write(struct spi_mem_dirmap_desc *desc,
473 struct spi_mem_op op = desc->info.op_tmpl;
476 op.addr.val = desc->info.offset + offs;
479 ret = spi_mem_adjust_op_size(desc->mem, &op);
483 ret = spi_mem_exec_op(desc->mem, &op);
508 struct spi_mem_dirmap_desc *desc;
519 desc = kzalloc(sizeof(*desc), GFP_KERNEL);
520 if (!desc)
523 desc->mem = mem;
524 desc->info = *info;
526 ret = ctlr->mem_ops->dirmap_create(desc);
529 desc->nodirmap = true;
530 if (!spi_mem_supports_op(desc->mem, &desc->info.op_tmpl))
537 kfree(desc);
541 return desc;
547 * @desc: the direct mapping descriptor to destroy
552 void spi_mem_dirmap_destroy(struct spi_mem_dirmap_desc *desc)
554 struct spi_controller *ctlr = desc->mem->spi->controller;
556 if (!desc->nodirmap && ctlr->mem_ops && ctlr->mem_ops->dirmap_destroy)
557 ctlr->mem_ops->dirmap_destroy(desc);
559 kfree(desc);
565 struct spi_mem_dirmap_desc *desc = *(struct spi_mem_dirmap_desc **)res;
567 spi_mem_dirmap_destroy(desc);
573 * @dev: device the dirmap desc will be attached to
586 struct spi_mem_dirmap_desc **ptr, *desc;
593 desc = spi_mem_dirmap_create(mem, info);
594 if (IS_ERR(desc)) {
597 *ptr = desc;
601 return desc;
618 * @dev: device the dirmap desc is attached to
619 * @desc: the direct mapping descriptor to destroy
625 struct spi_mem_dirmap_desc *desc)
628 devm_spi_mem_dirmap_match, desc);
634 * @desc: direct mapping descriptor
648 ssize_t spi_mem_dirmap_read(struct spi_mem_dirmap_desc *desc,
651 struct spi_controller *ctlr = desc->mem->spi->controller;
654 if (desc->info.op_tmpl.data.dir != SPI_MEM_DATA_IN)
660 if (desc->nodirmap) {
661 ret = spi_mem_no_dirmap_read(desc, offs, len, buf);
663 ret = spi_mem_access_start(desc->mem);
667 ret = ctlr->mem_ops->dirmap_read(desc, offs, len, buf);
669 spi_mem_access_end(desc->mem);
680 * @desc: direct mapping descriptor
694 ssize_t spi_mem_dirmap_write(struct spi_mem_dirmap_desc *desc,
697 struct spi_controller *ctlr = desc->mem->spi->controller;
700 if (desc->info.op_tmpl.data.dir != SPI_MEM_DATA_OUT)
706 if (desc->nodirmap) {
707 ret = spi_mem_no_dirmap_write(desc, offs, len, buf);
709 ret = spi_mem_access_start(desc->mem);
713 ret = ctlr->mem_ops->dirmap_write(desc, offs, len, buf);
715 spi_mem_access_end(desc->mem);