]> git.ipfire.org Git - people/ms/u-boot.git/commitdiff
spi: zynq_spi: Store cs value into private data
authorJagan Teki <jteki@openedev.com>
Mon, 17 Aug 2015 13:01:39 +0000 (18:31 +0530)
committerJagan Teki <jteki@openedev.com>
Sun, 25 Oct 2015 14:47:02 +0000 (20:17 +0530)
Store cs value into private data and use it while activating
chipselect instead of passing through function.

Signed-off-by: Jagan Teki <jteki@openedev.com>
drivers/spi/zynq_spi.c

index 04d4b71e71059b607883872593327663938e47f4..65a96337e2014fbef728faba86007e2fb61b7908 100644 (file)
@@ -65,6 +65,7 @@ struct zynq_spi_platdata {
 /* zynq spi priv */
 struct zynq_spi_priv {
        struct zynq_spi_regs *regs;
+       u8 cs;
        u8 mode;
        u8 fifo_depth;
        u32 freq;               /* required frequency */
@@ -132,7 +133,7 @@ static int zynq_spi_probe(struct udevice *bus)
        return 0;
 }
 
-static void spi_cs_activate(struct udevice *dev, uint cs)
+static void spi_cs_activate(struct udevice *dev)
 {
        struct udevice *bus = dev->parent;
        struct zynq_spi_priv *priv = dev_get_priv(bus);
@@ -147,7 +148,7 @@ static void spi_cs_activate(struct udevice *dev, uint cs)
         * xx01 - cs1
         * x011 - cs2
         */
-       cr |= (~(0x1 << cs) << ZYNQ_SPI_CR_SS_SHIFT) & ZYNQ_SPI_CR_CS_MASK;
+       cr |= (~(1 << priv->cs) << ZYNQ_SPI_CR_SS_SHIFT) & ZYNQ_SPI_CR_CS_MASK;
        writel(cr, &regs->cr);
 }
 
@@ -203,8 +204,9 @@ static int zynq_spi_xfer(struct udevice *dev, unsigned int bitlen,
                return -1;
        }
 
+       priv->cs = slave_plat->cs;
        if (flags & SPI_XFER_BEGIN)
-               spi_cs_activate(dev, slave_plat->cs);
+               spi_cs_activate(dev);
 
        while (rx_len > 0) {
                /* Write the data into TX FIFO - tx threshold is fifo_depth */