On the RK3399, SPI3 is special (it's configured via PMUGRF). The
implementation of the clock-setup for SPI3 was never supported (and
the comments reflected this), but the implementation did not correctly
handle this.

This fixes the code to match the comments above it and returns an
error when trying to configure SPI3.

Signed-off-by: Philipp Tomsich <philipp.toms...@theobroma-systems.com>
---

 drivers/clk/rockchip/clk_rk3399.c | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/drivers/clk/rockchip/clk_rk3399.c 
b/drivers/clk/rockchip/clk_rk3399.c
index 53d2a3f..d0f52c1 100644
--- a/drivers/clk/rockchip/clk_rk3399.c
+++ b/drivers/clk/rockchip/clk_rk3399.c
@@ -637,10 +637,10 @@ static const struct spi_clkreg spi_clkregs[] = {
        [2] = { .reg = 60,
                .div_shift = CLK_SPI2_PLL_DIV_CON_SHIFT,
                .sel_shift = CLK_SPI2_PLL_SEL_SHIFT, },
-       [3] = { .reg = 60,
+       [4] = { .reg = 60,
                .div_shift = CLK_SPI4_PLL_DIV_CON_SHIFT,
                .sel_shift = CLK_SPI4_PLL_SEL_SHIFT, },
-       [4] = { .reg = 58,
+       [5] = { .reg = 58,
                .div_shift = CLK_SPI5_PLL_DIV_CON_SHIFT,
                .sel_shift = CLK_SPI5_PLL_SEL_SHIFT, },
 };
@@ -656,10 +656,15 @@ static ulong rk3399_spi_get_clk(struct rk3399_cru *cru, 
ulong clk_id)
        u32 div, val;
 
        switch (clk_id) {
-       case SCLK_SPI0 ... SCLK_SPI5:
+       case SCLK_SPI0:
+       case SCLK_SPI1:
+       case SCLK_SPI2:
+       case SCLK_SPI4:
+       case SCLK_SPI5:
                spiclk = &spi_clkregs[clk_id - SCLK_SPI0];
                break;
 
+       case SLCK_SPI3:
        default:
                error("%s: SPI clk-id %ld not supported\n", __func__, clk_id);
                return -EINVAL;
@@ -680,10 +685,15 @@ static ulong rk3399_spi_set_clk(struct rk3399_cru *cru, 
ulong clk_id, uint hz)
        assert(src_clk_div < 127);
 
        switch (clk_id) {
-       case SCLK_SPI1 ... SCLK_SPI5:
+       case SCLK_SPI0:
+       case SCLK_SPI1:
+       case SCLK_SPI2:
+       case SCLK_SPI4:
+       case SCLK_SPI5:
                spiclk = &spi_clkregs[clk_id - SCLK_SPI0];
                break;
 
+       case SLCK_SPI3:
        default:
                error("%s: SPI clk-id %ld not supported\n", __func__, clk_id);
                return -EINVAL;
-- 
2.1.4

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to