This patch corrects the baud rate divisor calculation by
checking with max baud rate value and assigning default
baud rate value if it exceeds max value.
This fixes the issue of qspi flash detection as writing
the overflown value results in setting unintended bits
in the register.
Signed-off-by: Siva Durga Prasad Paladugu <sivadur@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
#define ZYNQ_QSPI_MIO_NUM_QSPI1_DIO 3
#define ZYNQ_QSPI_MIO_NUM_QSPI1_CS_DIO 1
+#define ZYNQ_QSPI_MAX_BAUD_RATE 0x7
+#define ZYNQ_QSPI_DEFAULT_BAUD_RATE 0x2
+
/* QSPI register offsets */
struct zynq_qspi_regs {
u32 confr; /* 0x00 */
(2 << baud_rate_val)) > speed))
baud_rate_val++;
+ if (baud_rate_val > ZYNQ_QSPI_MAX_BAUD_RATE)
+ baud_rate_val = ZYNQ_QSPI_DEFAULT_BAUD_RATE;
+
plat->speed_hz = speed / (2 << baud_rate_val);
}
confr &= ~ZYNQ_QSPI_CONFIG_BAUD_DIV_MASK;