Once the flash is initialized tell the controller it can run
calibration procedures if needed. This can be useful when calibration is
needed to run at higher clock speeds.

Signed-off-by: Pratyush Yadav <p.ya...@ti.com>
---
 drivers/mtd/spi-nor/core.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/drivers/mtd/spi-nor/core.c b/drivers/mtd/spi-nor/core.c
index 88888df009f0..e0cbcaf1be89 100644
--- a/drivers/mtd/spi-nor/core.c
+++ b/drivers/mtd/spi-nor/core.c
@@ -3650,6 +3650,7 @@ static int spi_nor_probe(struct spi_mem *spimem)
         * checking what's really supported using spi_mem_supports_op().
         */
        const struct spi_nor_hwcaps hwcaps = { .mask = SNOR_HWCAPS_ALL };
+       struct spi_mem_op op;
        char *flash_name;
        int ret;
 
@@ -3709,8 +3710,15 @@ static int spi_nor_probe(struct spi_mem *spimem)
        if (ret)
                return ret;
 
-       return mtd_device_register(&nor->mtd, data ? data->parts : NULL,
-                                  data ? data->nr_parts : 0);
+       ret = mtd_device_register(&nor->mtd, data ? data->parts : NULL,
+                                 data ? data->nr_parts : 0);
+       if (ret)
+               return ret;
+
+       op = spi_nor_spimem_get_read_op(nor);
+       spi_mem_do_calibration(nor->spimem, &op);
+
+       return 0;
 }
 
 static int spi_nor_remove(struct spi_mem *spimem)
-- 
2.30.0

Reply via email to