rockchip: spi: Remember the last speed to avoid re-setting it
Rather than changing the clock to the same value on every transaction, remember the last value and don't adjust the clock unless it is necessary. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
a49dc0a914
commit
28a943c110
@ -44,6 +44,7 @@ struct rockchip_spi_priv {
|
||||
u8 bits_per_word; /* max 16 bits per word */
|
||||
u8 n_bytes;
|
||||
unsigned int speed_hz;
|
||||
unsigned int last_speed_hz;
|
||||
unsigned int tmode;
|
||||
uint input_rate;
|
||||
};
|
||||
@ -82,6 +83,7 @@ static void rkspi_set_clk(struct rockchip_spi_priv *priv, uint speed)
|
||||
debug("spi speed %u, div %u\n", speed, clk_div);
|
||||
|
||||
writel(clk_div, &priv->regs->baudr);
|
||||
priv->last_speed_hz = speed;
|
||||
}
|
||||
|
||||
static int rkspi_wait_till_not_busy(struct rockchip_spi *regs)
|
||||
@ -212,7 +214,8 @@ static int rockchip_spi_claim_bus(struct udevice *dev)
|
||||
return -EPROTONOSUPPORT;
|
||||
}
|
||||
|
||||
rkspi_set_clk(priv, priv->speed_hz);
|
||||
if (priv->speed_hz != priv->last_speed_hz)
|
||||
rkspi_set_clk(priv, priv->speed_hz);
|
||||
|
||||
/* Operation Mode */
|
||||
ctrlr0 = OMOD_MASTER << OMOD_SHIFT;
|
||||
|
Loading…
Reference in New Issue
Block a user