spi: remove struct spi_message::is_dma_mapped
authorDavid Lechner <dlechner@baylibre.com>
Mon, 25 Mar 2024 19:22:53 +0000 (14:22 -0500)
committerMark Brown <broonie@kernel.org>
Mon, 25 Mar 2024 20:30:07 +0000 (20:30 +0000)
There are no more users of the deprecated is_dma_mapped in struct
spi_message so it can be removed.

References in documentation and comments are also removed.

A few similar checks if xfer->tx_dma or xfer->rx_dma are not NULL are
also removed since these are now guaranteed to be NULL because they
were previously set only if is_dma_mapped was true.

Signed-off-by: David Lechner <dlechner@baylibre.com>
Link: https://msgid.link/r/20240325-spi-remove-is_dma_mapped-v2-1-d08d62b61f1c@baylibre.com
Signed-off-by: Mark Brown <broonie@kernel.org>
Documentation/spi/pxa2xx.rst
Documentation/spi/spi-summary.rst
drivers/spi/spi-atmel.c
drivers/spi/spi-pxa2xx.c
drivers/spi/spi.c
include/linux/spi/spi.h

index 19479b801826cff0c6771591f731b68ca6e5e63f..43e0b758803ad1245d30ad2309d51e5d266be92c 100644 (file)
@@ -194,9 +194,6 @@ The following logic is used to determine the type of I/O to be used on
 a per "spi_transfer" basis::
 
   if spi_message.len > 65536 then
-       if spi_message.is_dma_mapped or rx_dma_buf != 0 or tx_dma_buf != 0 then
-               reject premapped transfers
-
        print "rate limited" warning
        use PIO transfers
 
index 546de37d6caf1063140f018f0ad3f38c4b70eacb..f7f8b1573f25e780dd82f3bb27d2df31b2c7e966 100644 (file)
@@ -419,10 +419,6 @@ any more such messages.
     to make extra copies unless the hardware requires it (e.g. working
     around hardware errata that force the use of bounce buffering).
 
-    If standard dma_map_single() handling of these buffers is inappropriate,
-    you can use spi_message.is_dma_mapped to tell the controller driver
-    that you've already provided the relevant DMA addresses.
-
   - The basic I/O primitive is spi_async().  Async requests may be
     issued in any context (irq handler, task, etc) and completion
     is reported using a callback provided with the message.
index bad34998454a80ff36a8ee69fb2368e46888e2e3..b62f57390d8f0b424928fb07faf6d061e57179de 100644 (file)
@@ -987,8 +987,6 @@ static void atmel_spi_pdc_next_xfer(struct spi_controller *host,
  * For DMA, tx_buf/tx_dma have the same relationship as rx_buf/rx_dma:
  *  - The buffer is either valid for CPU access, else NULL
  *  - If the buffer is valid, so is its DMA address
- *
- * This driver manages the dma address unless message->is_dma_mapped.
  */
 static int
 atmel_spi_dma_map_xfer(struct atmel_spi *as, struct spi_transfer *xfer)
@@ -1374,8 +1372,7 @@ static int atmel_spi_one_transfer(struct spi_controller *host,
         * DMA map early, for performance (empties dcache ASAP) and
         * better fault reporting.
         */
-       if ((!host->cur_msg->is_dma_mapped)
-               && as->use_pdc) {
+       if (as->use_pdc) {
                if (atmel_spi_dma_map_xfer(as, xfer) < 0)
                        return -ENOMEM;
        }
@@ -1454,8 +1451,7 @@ static int atmel_spi_one_transfer(struct spi_controller *host,
                }
        }
 
-       if (!host->cur_msg->is_dma_mapped
-               && as->use_pdc)
+       if (as->use_pdc)
                atmel_spi_dma_unmap_xfer(host, xfer);
 
        if (as->use_pdc)
index f2a856f6a99e4509e609a47f17e5be7e1b7e5084..6c2a14418972be8e9e59a093b77ed5369f07b1e6 100644 (file)
@@ -944,7 +944,6 @@ static int pxa2xx_spi_transfer_one(struct spi_controller *controller,
                                   struct spi_transfer *transfer)
 {
        struct driver_data *drv_data = spi_controller_get_devdata(controller);
-       struct spi_message *message = controller->cur_msg;
        struct chip_data *chip = spi_get_ctldata(spi);
        u32 dma_thresh = chip->dma_threshold;
        u32 dma_burst = chip->dma_burst_size;
@@ -959,16 +958,6 @@ static int pxa2xx_spi_transfer_one(struct spi_controller *controller,
 
        /* Check if we can DMA this transfer */
        if (transfer->len > MAX_DMA_LEN && chip->enable_dma) {
-
-               /* Reject already-mapped transfers; PIO won't always work */
-               if (message->is_dma_mapped
-                               || transfer->rx_dma || transfer->tx_dma) {
-                       dev_err(&spi->dev,
-                               "Mapped transfer length of %u is greater than %d\n",
-                               transfer->len, MAX_DMA_LEN);
-                       return -EINVAL;
-               }
-
                /* Warn ... we force this to PIO mode */
                dev_warn_ratelimited(&spi->dev,
                                     "DMA disabled for transfer length %u greater than %d\n",
index ff75838c1b5dfa44fccca525c3a8a334051167fb..a2f01116ba092da61e18613c4c73aef56a56f76d 100644 (file)
@@ -3709,9 +3709,6 @@ static int __spi_split_transfer_maxsize(struct spi_controller *ctlr,
         * to the same values as *xferp, so tx_buf, rx_buf and len
         * are all identical (as well as most others)
         * so we just have to fix up len and the pointers.
-        *
-        * This also includes support for the depreciated
-        * spi_message.is_dma_mapped interface.
         */
 
        /*
@@ -3725,12 +3722,8 @@ static int __spi_split_transfer_maxsize(struct spi_controller *ctlr,
                /* Update rx_buf, tx_buf and DMA */
                if (xfers[i].rx_buf)
                        xfers[i].rx_buf += offset;
-               if (xfers[i].rx_dma)
-                       xfers[i].rx_dma += offset;
                if (xfers[i].tx_buf)
                        xfers[i].tx_buf += offset;
-               if (xfers[i].tx_dma)
-                       xfers[i].tx_dma += offset;
 
                /* Update length */
                xfers[i].len = min(maxsize, xfers[i].len - offset);
index c459809efee4fbb01877398da3d7c2f43ba0239d..b589e254743935ceae1c592a3b9eabc87fae46b6 100644 (file)
@@ -955,8 +955,8 @@ struct spi_res {
  * struct spi_transfer - a read/write buffer pair
  * @tx_buf: data to be written (DMA-safe memory), or NULL
  * @rx_buf: data to be read (DMA-safe memory), or NULL
- * @tx_dma: DMA address of tx_buf, if @spi_message.is_dma_mapped
- * @rx_dma: DMA address of rx_buf, if @spi_message.is_dma_mapped
+ * @tx_dma: DMA address of tx_buf, currently not for client use
+ * @rx_dma: DMA address of rx_buf, currently not for client use
  * @tx_nbits: number of bits used for writing. If 0 the default
  *      (SPI_NBITS_SINGLE) is used.
  * @rx_nbits: number of bits used for reading. If 0 the default
@@ -1066,8 +1066,7 @@ struct spi_transfer {
        /*
         * It's okay if tx_buf == rx_buf (right?).
         * For MicroWire, one buffer must be NULL.
-        * Buffers must work with dma_*map_single() calls, unless
-        * spi_message.is_dma_mapped reports a pre-existing mapping.
+        * Buffers must work with dma_*map_single() calls.
         */
        const void      *tx_buf;
        void            *rx_buf;
@@ -1111,8 +1110,6 @@ struct spi_transfer {
  * struct spi_message - one multi-segment SPI transaction
  * @transfers: list of transfer segments in this transaction
  * @spi: SPI device to which the transaction is queued
- * @is_dma_mapped: if true, the caller provided both DMA and CPU virtual
- *     addresses for each transfer buffer
  * @pre_optimized: peripheral driver pre-optimized the message
  * @optimized: the message is in the optimized state
  * @prepared: spi_prepare_message was called for the this message
@@ -1146,8 +1143,6 @@ struct spi_message {
 
        struct spi_device       *spi;
 
-       unsigned                is_dma_mapped:1;
-
        /* spi_optimize_message() was called for this message */
        bool                    pre_optimized;
        /* __spi_optimize_message() was called for this message */