]> git.sur5r.net Git - u-boot/blobdiff - drivers/spi/davinci_spi.c
Merge branch 'u-boot-imx/master' into 'u-boot-arm/master'
[u-boot] / drivers / spi / davinci_spi.c
index 4518ecbbc80744a2c18bed252f1aece0f799b19c..e3fb3212aa5c2073dedb72dc73f6648d74829568 100644 (file)
@@ -6,23 +6,7 @@
  *
  * Copyright (C) 2007 Atmel Corporation
  *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
+ * SPDX-License-Identifier:    GPL-2.0+
  */
 #include <common.h>
 #include <spi.h>
@@ -44,12 +28,10 @@ struct spi_slave *spi_setup_slave(unsigned int bus, unsigned int cs,
        if (!spi_cs_is_valid(bus, cs))
                return NULL;
 
-       ds = malloc(sizeof(*ds));
+       ds = spi_alloc_slave(struct davinci_spi_slave, bus, cs);
        if (!ds)
                return NULL;
 
-       ds->slave.bus = bus;
-       ds->slave.cs = cs;
        ds->regs = (struct davinci_spi_regs *)CONFIG_SYS_SPI_BASE;
        ds->freq = max_hz;
 
@@ -173,7 +155,7 @@ static int davinci_spi_read(struct spi_slave *slave, unsigned int len,
 }
 
 static int davinci_spi_write(struct spi_slave *slave, unsigned int len,
-               const u8 *txp, unsigned long flags)
+                            const u8 *txp, unsigned long flags)
 {
        struct davinci_spi_slave *ds = to_davinci_spi(slave);
        unsigned int data1_reg_val;
@@ -237,7 +219,7 @@ static int davinci_spi_read_write(struct spi_slave *slave, unsigned int len,
 #endif
 
 int spi_xfer(struct spi_slave *slave, unsigned int bitlen,
-               const void *dout, void *din, unsigned long flags)
+            const void *dout, void *din, unsigned long flags)
 {
        unsigned int len;
 
@@ -266,6 +248,10 @@ int spi_xfer(struct spi_slave *slave, unsigned int bitlen,
 #ifndef CONFIG_SPI_HALF_DUPLEX
        else
                return davinci_spi_read_write(slave, len, din, dout, flags);
+#else
+       printf("SPI full duplex transaction requested with "
+              "CONFIG_SPI_HALF_DUPLEX defined.\n");
+       flags |= SPI_XFER_END;
 #endif
 
 out: