return ret;
 }
 
-/*
- * Read the flag status register, returning its value in the location
- * Return the status register value.
- * Returns negative if error occurred.
+/**
+ * spi_nor_read_fsr() - Read the Flag Status Register.
+ * @nor:       pointer to 'struct spi_nor'
+ * @fsr:       pointer to a DMA-able buffer where the value of the
+ *              Flag Status Register will be written.
+ *
+ * Return: 0 on success, -errno otherwise.
  */
-static int spi_nor_read_fsr(struct spi_nor *nor)
+static int spi_nor_read_fsr(struct spi_nor *nor, u8 *fsr)
 {
        int ret;
 
                        SPI_MEM_OP(SPI_MEM_OP_CMD(SPINOR_OP_RDFSR, 1),
                                   SPI_MEM_OP_NO_ADDR,
                                   SPI_MEM_OP_NO_DUMMY,
-                                  SPI_MEM_OP_DATA_IN(1, nor->bouncebuf, 1));
+                                  SPI_MEM_OP_DATA_IN(1, fsr, 1));
 
                ret = spi_mem_exec_op(nor->spimem, &op);
        } else {
                ret = nor->controller_ops->read_reg(nor, SPINOR_OP_RDFSR,
-                                                   nor->bouncebuf, 1);
+                                                   fsr, 1);
        }
 
-       if (ret) {
+       if (ret)
                pr_err("error %d reading FSR\n", ret);
-               return ret;
-       }
 
-       return nor->bouncebuf[0];
+       return ret;
 }
 
 /*
 
 static int spi_nor_fsr_ready(struct spi_nor *nor)
 {
-       int fsr = spi_nor_read_fsr(nor);
-       if (fsr < 0)
-               return fsr;
+       int ret = spi_nor_read_fsr(nor, nor->bouncebuf);
+
+       if (ret)
+               return ret;
 
-       if (fsr & (FSR_E_ERR | FSR_P_ERR)) {
-               if (fsr & FSR_E_ERR)
+       if (nor->bouncebuf[0] & (FSR_E_ERR | FSR_P_ERR)) {
+               if (nor->bouncebuf[0] & FSR_E_ERR)
                        dev_err(nor->dev, "Erase operation failed.\n");
                else
                        dev_err(nor->dev, "Program operation failed.\n");
 
-               if (fsr & FSR_PT_ERR)
+               if (nor->bouncebuf[0] & FSR_PT_ERR)
                        dev_err(nor->dev,
                        "Attempted to modify a protected sector.\n");
 
                return -EIO;
        }
 
-       return fsr & FSR_READY;
+       return nor->bouncebuf[0] & FSR_READY;
 }
 
 static int spi_nor_ready(struct spi_nor *nor)