]> git.proxmox.com Git - mirror_ubuntu-eoan-kernel.git/commitdiff
spi: Expose spi_{map,unmap}_buf() for internal use
authorBoris Brezillon <boris.brezillon@bootlin.com>
Sun, 22 Apr 2018 18:35:14 +0000 (20:35 +0200)
committerMark Brown <broonie@kernel.org>
Mon, 23 Apr 2018 14:48:06 +0000 (15:48 +0100)
spi_{map,unmap}_buf() are needed by the spi-mem logic that is about to
be introduced to prepare data buffer for DMA operations.

Remove the static specifier on these functions and add their prototypes
to drivers/spi/internals.h. We do not export the symbols here because
both SPI_MEM and SPI can't be enabled as modules and we'd like to
prevent controller/device drivers from using these functions.

Signed-off-by: Boris Brezillon <boris.brezillon@bootlin.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/internals.h [new file with mode: 0644]
drivers/spi/spi.c

diff --git a/drivers/spi/internals.h b/drivers/spi/internals.h
new file mode 100644 (file)
index 0000000..dbe56c7
--- /dev/null
@@ -0,0 +1,41 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright (C) 2018 Exceet Electronics GmbH
+ * Copyright (C) 2018 Bootlin
+ *
+ * Author: Boris Brezillon <boris.brezillon@bootlin.com>
+ *
+ * Helpers needed by the spi or spi-mem logic. Should not be used outside of
+ * spi-mem.c and spi.c.
+ */
+
+#ifndef __LINUX_SPI_INTERNALS_H
+#define __LINUX_SPI_INTERNALS_H
+
+#include <linux/device.h>
+#include <linux/dma-direction.h>
+#include <linux/scatterlist.h>
+#include <linux/spi/spi.h>
+
+#ifdef CONFIG_HAS_DMA
+int spi_map_buf(struct spi_controller *ctlr, struct device *dev,
+               struct sg_table *sgt, void *buf, size_t len,
+               enum dma_data_direction dir);
+void spi_unmap_buf(struct spi_controller *ctlr, struct device *dev,
+                  struct sg_table *sgt, enum dma_data_direction dir);
+#else /* !CONFIG_HAS_DMA */
+static inline int spi_map_buf(struct spi_controller *ctlr, struct device *dev,
+                             struct sg_table *sgt, void *buf, size_t len,
+                             enum dma_data_direction dir)
+{
+       return -EINVAL;
+}
+
+static inline void spi_unmap_buf(struct spi_controller *ctlr,
+                                struct device *dev, struct sg_table *sgt,
+                                enum dma_data_direction dir)
+{
+}
+#endif /* CONFIG_HAS_DMA */
+
+#endif /* __LINUX_SPI_INTERNALS_H */
index 7b213faa0a2b7247837372a4bc4a537e1c9a2ad1..86b778d8563ed7f1fb5f0fe94994cb7aab09350c 100644 (file)
@@ -46,6 +46,8 @@
 #define CREATE_TRACE_POINTS
 #include <trace/events/spi.h>
 
+#include "internals.h"
+
 static DEFINE_IDR(spi_master_idr);
 
 static void spidev_release(struct device *dev)
@@ -740,9 +742,9 @@ static void spi_set_cs(struct spi_device *spi, bool enable)
 }
 
 #ifdef CONFIG_HAS_DMA
-static int spi_map_buf(struct spi_controller *ctlr, struct device *dev,
-                      struct sg_table *sgt, void *buf, size_t len,
-                      enum dma_data_direction dir)
+int spi_map_buf(struct spi_controller *ctlr, struct device *dev,
+               struct sg_table *sgt, void *buf, size_t len,
+               enum dma_data_direction dir)
 {
        const bool vmalloced_buf = is_vmalloc_addr(buf);
        unsigned int max_seg_size = dma_get_max_seg_size(dev);
@@ -821,8 +823,8 @@ static int spi_map_buf(struct spi_controller *ctlr, struct device *dev,
        return 0;
 }
 
-static void spi_unmap_buf(struct spi_controller *ctlr, struct device *dev,
-                         struct sg_table *sgt, enum dma_data_direction dir)
+void spi_unmap_buf(struct spi_controller *ctlr, struct device *dev,
+                  struct sg_table *sgt, enum dma_data_direction dir)
 {
        if (sgt->orig_nents) {
                dma_unmap_sg(dev, sgt->sgl, sgt->orig_nents, dir);
@@ -907,19 +909,6 @@ static int __spi_unmap_msg(struct spi_controller *ctlr, struct spi_message *msg)
        return 0;
 }
 #else /* !CONFIG_HAS_DMA */
-static inline int spi_map_buf(struct spi_controller *ctlr, struct device *dev,
-                             struct sg_table *sgt, void *buf, size_t len,
-                             enum dma_data_direction dir)
-{
-       return -EINVAL;
-}
-
-static inline void spi_unmap_buf(struct spi_controller *ctlr,
-                                struct device *dev, struct sg_table *sgt,
-                                enum dma_data_direction dir)
-{
-}
-
 static inline int __spi_map_msg(struct spi_controller *ctlr,
                                struct spi_message *msg)
 {