These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / spi / spi-rspi.c
index f6bac9e..8188433 100644 (file)
@@ -383,7 +383,8 @@ static void qspi_update(const struct rspi_data *rspi, u8 mask, u8 val, u8 reg)
        rspi_write8(rspi, data, reg);
 }
 
-static int qspi_set_send_trigger(struct rspi_data *rspi, unsigned int len)
+static unsigned int qspi_set_send_trigger(struct rspi_data *rspi,
+                                         unsigned int len)
 {
        unsigned int n;
 
@@ -665,15 +666,12 @@ static bool rspi_can_dma(struct spi_master *master, struct spi_device *spi,
 static int rspi_dma_check_then_transfer(struct rspi_data *rspi,
                                         struct spi_transfer *xfer)
 {
-       if (rspi->master->can_dma && __rspi_can_dma(rspi, xfer)) {
-               /* rx_buf can be NULL on RSPI on SH in TX-only Mode */
-               int ret = rspi_dma_transfer(rspi, &xfer->tx_sg,
-                                       xfer->rx_buf ? &xfer->rx_sg : NULL);
-               if (ret != -EAGAIN)
-                       return 0;
-       }
+       if (!rspi->master->can_dma || !__rspi_can_dma(rspi, xfer))
+               return -EAGAIN;
 
-       return -EAGAIN;
+       /* rx_buf can be NULL on RSPI on SH in TX-only Mode */
+       return rspi_dma_transfer(rspi, &xfer->tx_sg,
+                               xfer->rx_buf ? &xfer->rx_sg : NULL);
 }
 
 static int rspi_common_transfer(struct rspi_data *rspi,
@@ -724,28 +722,28 @@ static int rspi_rz_transfer_one(struct spi_master *master,
        return rspi_common_transfer(rspi, xfer);
 }
 
-static int qspi_trigger_transfer_out_int(struct rspi_data *rspi, const u8 *tx,
+static int qspi_trigger_transfer_out_in(struct rspi_data *rspi, const u8 *tx,
                                        u8 *rx, unsigned int len)
 {
-       int i, n, ret;
-       int error;
+       unsigned int i, n;
+       int ret;
 
        while (len > 0) {
                n = qspi_set_send_trigger(rspi, len);
                qspi_set_receive_trigger(rspi, len);
                if (n == QSPI_BUFFER_SIZE) {
-                       error = rspi_wait_for_tx_empty(rspi);
-                       if (error < 0) {
+                       ret = rspi_wait_for_tx_empty(rspi);
+                       if (ret < 0) {
                                dev_err(&rspi->master->dev, "transmit timeout\n");
-                               return error;
+                               return ret;
                        }
                        for (i = 0; i < n; i++)
                                rspi_write_data(rspi, *tx++);
 
-                       error = rspi_wait_for_rx_full(rspi);
-                       if (error < 0) {
+                       ret = rspi_wait_for_rx_full(rspi);
+                       if (ret < 0) {
                                dev_err(&rspi->master->dev, "receive timeout\n");
-                               return error;
+                               return ret;
                        }
                        for (i = 0; i < n; i++)
                                *rx++ = rspi_read_data(rspi);
@@ -771,12 +769,8 @@ static int qspi_transfer_out_in(struct rspi_data *rspi,
        if (ret != -EAGAIN)
                return ret;
 
-       ret = qspi_trigger_transfer_out_int(rspi, xfer->tx_buf,
+       return qspi_trigger_transfer_out_in(rspi, xfer->tx_buf,
                                            xfer->rx_buf, xfer->len);
-       if (ret < 0)
-               return ret;
-
-       return 0;
 }
 
 static int qspi_transfer_out(struct rspi_data *rspi, struct spi_transfer *xfer)
@@ -1300,7 +1294,7 @@ error1:
        return ret;
 }
 
-static struct platform_device_id spi_driver_ids[] = {
+static const struct platform_device_id spi_driver_ids[] = {
        { "rspi",       (kernel_ulong_t)&rspi_ops },
        { "rspi-rz",    (kernel_ulong_t)&rspi_rz_ops },
        { "qspi",       (kernel_ulong_t)&qspi_ops },