]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
spi: zynq_qspi: Fix programming qspi speed
authorAshok Reddy Soma <ashok.reddy.soma@xilinx.com>
Fri, 15 Jul 2022 14:01:19 +0000 (19:31 +0530)
committerMichal Simek <michal.simek@amd.com>
Tue, 26 Jul 2022 07:34:21 +0000 (09:34 +0200)
When programming qspi flash speed we need to check the requested flash
speed not to exceed the spi max frequency. In the current implementation
we are checking qspi ref clk instead. This commit fixes the issue by
checking the requested speed and programs the specified max frequency.

Signed-off-by: Ashok Reddy Soma <ashok.reddy.soma@xilinx.com>
Link: https://lore.kernel.org/r/1657893679-20039-5-git-send-email-ashok.reddy.soma@xilinx.com
Signed-off-by: Michal Simek <michal.simek@amd.com>
drivers/spi/zynq_qspi.c

index 52db7b3f219330e6eefb5d08995034280eee4ec0..00e3ffcd1df1ba11cb7ed958950f9d25d54a5c46 100644 (file)
@@ -622,15 +622,12 @@ static int zynq_qspi_set_speed(struct udevice *bus, uint speed)
        uint32_t confr;
        u8 baud_rate_val = 0;
 
-       if (speed > plat->frequency)
-               speed = plat->frequency;
+       if (!speed || speed > priv->max_hz)
+               speed = priv->max_hz;
 
        /* Set the clock frequency */
        confr = readl(&regs->cr);
-       if (speed == 0) {
-               /* Set baudrate x8, if the freq is 0 */
-               baud_rate_val = 0x2;
-       } else if (plat->speed_hz != speed) {
+       if (plat->speed_hz != speed) {
                while ((baud_rate_val < ZYNQ_QSPI_CR_BAUD_MAX) &&
                       ((plat->frequency /
                       (2 << baud_rate_val)) > speed))