mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-30 19:11:37 +00:00
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
1 changed files with 4 additions and 1 deletions
|
@ -44,6 +44,7 @@ struct rockchip_spi_priv {
|
||||||
u8 bits_per_word; /* max 16 bits per word */
|
u8 bits_per_word; /* max 16 bits per word */
|
||||||
u8 n_bytes;
|
u8 n_bytes;
|
||||||
unsigned int speed_hz;
|
unsigned int speed_hz;
|
||||||
|
unsigned int last_speed_hz;
|
||||||
unsigned int tmode;
|
unsigned int tmode;
|
||||||
uint input_rate;
|
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);
|
debug("spi speed %u, div %u\n", speed, clk_div);
|
||||||
|
|
||||||
writel(clk_div, &priv->regs->baudr);
|
writel(clk_div, &priv->regs->baudr);
|
||||||
|
priv->last_speed_hz = speed;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int rkspi_wait_till_not_busy(struct rockchip_spi *regs)
|
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;
|
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 */
|
/* Operation Mode */
|
||||||
ctrlr0 = OMOD_MASTER << OMOD_SHIFT;
|
ctrlr0 = OMOD_MASTER << OMOD_SHIFT;
|
||||||
|
|
Loading…
Add table
Reference in a new issue