while (len > 0) {
                n = qspi_set_send_trigger(rspi, len);
                qspi_set_receive_trigger(rspi, len);
-               if (n == QSPI_BUFFER_SIZE) {
-                       ret = rspi_wait_for_tx_empty(rspi);
-                       if (ret < 0) {
-                               dev_err(&rspi->ctlr->dev, "transmit timeout\n");
-                               return ret;
-                       }
-                       for (i = 0; i < n; i++)
-                               rspi_write_data(rspi, *tx++);
+               ret = rspi_wait_for_tx_empty(rspi);
+               if (ret < 0) {
+                       dev_err(&rspi->ctlr->dev, "transmit timeout\n");
+                       return ret;
+               }
+               for (i = 0; i < n; i++)
+                       rspi_write_data(rspi, *tx++);
 
-                       ret = rspi_wait_for_rx_full(rspi);
-                       if (ret < 0) {
-                               dev_err(&rspi->ctlr->dev, "receive timeout\n");
-                               return ret;
-                       }
-                       for (i = 0; i < n; i++)
-                               *rx++ = rspi_read_data(rspi);
-               } else {
-                       ret = rspi_pio_transfer(rspi, tx, rx, n);
-                       if (ret < 0)
-                               return ret;
+               ret = rspi_wait_for_rx_full(rspi);
+               if (ret < 0) {
+                       dev_err(&rspi->ctlr->dev, "receive timeout\n");
+                       return ret;
                }
+               for (i = 0; i < n; i++)
+                       *rx++ = rspi_read_data(rspi);
+
                len -= n;
        }
 
 
        while (n > 0) {
                len = qspi_set_send_trigger(rspi, n);
-               if (len == QSPI_BUFFER_SIZE) {
-                       ret = rspi_wait_for_tx_empty(rspi);
-                       if (ret < 0) {
-                               dev_err(&rspi->ctlr->dev, "transmit timeout\n");
-                               return ret;
-                       }
-                       for (i = 0; i < len; i++)
-                               rspi_write_data(rspi, *tx++);
-               } else {
-                       ret = rspi_pio_transfer(rspi, tx, NULL, len);
-                       if (ret < 0)
-                               return ret;
+               ret = rspi_wait_for_tx_empty(rspi);
+               if (ret < 0) {
+                       dev_err(&rspi->ctlr->dev, "transmit timeout\n");
+                       return ret;
                }
+               for (i = 0; i < len; i++)
+                       rspi_write_data(rspi, *tx++);
+
                n -= len;
        }
 
 
        while (n > 0) {
                len = qspi_set_receive_trigger(rspi, n);
-               if (len == QSPI_BUFFER_SIZE) {
-                       ret = rspi_wait_for_rx_full(rspi);
-                       if (ret < 0) {
-                               dev_err(&rspi->ctlr->dev, "receive timeout\n");
-                               return ret;
-                       }
-                       for (i = 0; i < len; i++)
-                               *rx++ = rspi_read_data(rspi);
-               } else {
-                       ret = rspi_pio_transfer(rspi, NULL, rx, len);
-                       if (ret < 0)
-                               return ret;
+               ret = rspi_wait_for_rx_full(rspi);
+               if (ret < 0) {
+                       dev_err(&rspi->ctlr->dev, "receive timeout\n");
+                       return ret;
                }
+               for (i = 0; i < len; i++)
+                       *rx++ = rspi_read_data(rspi);
+
                n -= len;
        }