efi_loader: efi_dp_from_file() expect UTF-8 path
[oweals/u-boot.git] / include / spi.h
index b2a80a5609603a72d87278f5ff25f2f218e36cf2..378594163b874246e606a41edf6e404e81412f81 100644 (file)
@@ -1,15 +1,16 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
 /*
  * Common SPI Interface: Controller-specific definitions
  *
  * (C) Copyright 2001
  * Gerald Van Baren, Custom IDEAS, vanbaren@cideas.com.
- *
- * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #ifndef _SPI_H_
 #define _SPI_H_
 
+#include <common.h>
+
 /* SPI mode flags */
 #define SPI_CPHA       BIT(0)                  /* clock phase */
 #define SPI_CPOL       BIT(1)                  /* clock polarity */
@@ -116,13 +117,6 @@ struct spi_slave {
 #define SPI_XFER_MMAP_END      BIT(3)  /* Memory Mapped End */
 };
 
-/**
- * Initialization, must be called once on start up.
- *
- * TODO: I don't think we really need this.
- */
-void spi_init(void);
-
 /**
  * spi_do_alloc_slave - Allocate a new SPI slave (internal)
  *
@@ -317,19 +311,6 @@ static inline int spi_w8r8(struct spi_slave *slave, unsigned char byte)
        return ret < 0 ? ret : din[1];
 }
 
-/**
- * Set up a SPI slave for a particular device tree node
- *
- * This calls spi_setup_slave() with the correct bus number. Call
- * spi_free_slave() to free it later.
- *
- * @param blob:                Device tree blob
- * @param slave_node:  Slave node to use
- * @param spi_node:    SPI peripheral node to use
- * @return pointer to new spi_slave structure
- */
-struct spi_slave *spi_setup_slave_fdt(const void *blob, int slave_node,
-                                     int spi_node);
 #ifdef CONFIG_DM_SPI
 
 /**
@@ -416,6 +397,15 @@ struct dm_spi_ops {
        int (*xfer)(struct udevice *dev, unsigned int bitlen, const void *dout,
                    void *din, unsigned long flags);
 
+       /**
+        * Optimized handlers for SPI memory-like operations.
+        *
+        * Optimized/dedicated operations for interactions with SPI memory. This
+        * field is optional and should only be implemented if the controller
+        * has native support for memory like operations.
+        */
+       const struct spi_controller_mem_ops *mem_ops;
+
        /**
         * Set transfer speed.
         * This sets a new speed to be applied for next spi_xfer().
@@ -506,14 +496,15 @@ int spi_find_bus_and_cs(int busnum, int cs, struct udevice **busp,
  * device and slave device.
  *
  * If no such slave exists, and drv_name is not NULL, then a new slave device
- * is automatically bound on this chip select.
+ * is automatically bound on this chip select with requested speed and mode.
  *
- * Ths new slave device is probed ready for use with the given speed and mode.
+ * Ths new slave device is probed ready for use with the speed and mode
+ * from platdata when available or the requested values.
  *
  * @busnum:    SPI bus number
  * @cs:                Chip select to look for
- * @speed:     SPI speed to use for this slave
- * @mode:      SPI mode to use for this slave
+ * @speed:     SPI speed to use for this slave when not available in platdata
+ * @mode:      SPI mode to use for this slave when not available in platdata
  * @drv_name:  Name of driver to attach to this chip select
  * @dev_name:  Name of the new device thus created
  * @busp:      Returns bus device