root/drivers/scsi/scsi_lib_dma.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. scsi_dma_map
  2. scsi_dma_unmap

   1 // SPDX-License-Identifier: GPL-2.0
   2 /*
   3  * SCSI library functions depending on DMA
   4  */
   5 
   6 #include <linux/blkdev.h>
   7 #include <linux/device.h>
   8 #include <linux/export.h>
   9 #include <linux/kernel.h>
  10 
  11 #include <scsi/scsi.h>
  12 #include <scsi/scsi_cmnd.h>
  13 #include <scsi/scsi_device.h>
  14 #include <scsi/scsi_host.h>
  15 
  16 /**
  17  * scsi_dma_map - perform DMA mapping against command's sg lists
  18  * @cmd:        scsi command
  19  *
  20  * Returns the number of sg lists actually used, zero if the sg lists
  21  * is NULL, or -ENOMEM if the mapping failed.
  22  */
  23 int scsi_dma_map(struct scsi_cmnd *cmd)
  24 {
  25         int nseg = 0;
  26 
  27         if (scsi_sg_count(cmd)) {
  28                 struct device *dev = cmd->device->host->dma_dev;
  29 
  30                 nseg = dma_map_sg(dev, scsi_sglist(cmd), scsi_sg_count(cmd),
  31                                   cmd->sc_data_direction);
  32                 if (unlikely(!nseg))
  33                         return -ENOMEM;
  34         }
  35         return nseg;
  36 }
  37 EXPORT_SYMBOL(scsi_dma_map);
  38 
  39 /**
  40  * scsi_dma_unmap - unmap command's sg lists mapped by scsi_dma_map
  41  * @cmd:        scsi command
  42  */
  43 void scsi_dma_unmap(struct scsi_cmnd *cmd)
  44 {
  45         if (scsi_sg_count(cmd)) {
  46                 struct device *dev = cmd->device->host->dma_dev;
  47 
  48                 dma_unmap_sg(dev, scsi_sglist(cmd), scsi_sg_count(cmd),
  49                              cmd->sc_data_direction);
  50         }
  51 }
  52 EXPORT_SYMBOL(scsi_dma_unmap);

/* [<][>][^][v][top][bottom][index][help] */