mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-16 01:44:34 +00:00
i2c: Update drivers to use enum for speed
Convert the obvious uses of i2c bus speeds to use the enum. Use livetree access for code changes. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Heiko Schocher <hs@denx.de>
This commit is contained in:
parent
b0a22d0fa9
commit
f3d461521a
14 changed files with 32 additions and 26 deletions
|
@ -527,8 +527,9 @@ static int s3c_i2c_ofdata_to_platdata(struct udevice *dev)
|
|||
|
||||
i2c_bus->id = pinmux_decode_periph_id(blob, node);
|
||||
|
||||
i2c_bus->clock_frequency = fdtdec_get_int(blob, node,
|
||||
"clock-frequency", 100000);
|
||||
i2c_bus->clock_frequency =
|
||||
dev_read_u32_default(dev, "clock-frequency",
|
||||
I2C_SPEED_STANDARD_RATE);
|
||||
i2c_bus->node = node;
|
||||
i2c_bus->bus_num = dev->seq;
|
||||
|
||||
|
|
|
@ -584,7 +584,8 @@ static int fsl_i2c_ofdata_to_platdata(struct udevice *bus)
|
|||
dev->index = dev_read_u32_default(bus, "cell-index", -1);
|
||||
dev->slaveadd = dev_read_u32_default(bus, "u-boot,i2c-slave-addr",
|
||||
0x7f);
|
||||
dev->speed = dev_read_u32_default(bus, "clock-frequency", 400000);
|
||||
dev->speed = dev_read_u32_default(bus, "clock-frequency",
|
||||
I2C_SPEED_FAST_RATE);
|
||||
|
||||
if (!clk_get_by_index(bus, 0, &clock))
|
||||
dev->i2c_clk = clk_get_rate(&clock);
|
||||
|
|
|
@ -213,7 +213,7 @@ static int cdns_i2c_set_bus_speed(struct udevice *dev, unsigned int speed)
|
|||
unsigned long speed_p = speed;
|
||||
int ret = 0;
|
||||
|
||||
if (speed > 400000) {
|
||||
if (speed > I2C_SPEED_FAST_RATE) {
|
||||
debug("%s, failed to set clock speed to %u\n", __func__,
|
||||
speed);
|
||||
return -EINVAL;
|
||||
|
|
|
@ -641,7 +641,8 @@ static int i2c_post_probe(struct udevice *dev)
|
|||
#if CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)
|
||||
struct dm_i2c_bus *i2c = dev_get_uclass_priv(dev);
|
||||
|
||||
i2c->speed_hz = dev_read_u32_default(dev, "clock-frequency", 100000);
|
||||
i2c->speed_hz = dev_read_u32_default(dev, "clock-frequency",
|
||||
I2C_SPEED_STANDARD_RATE);
|
||||
|
||||
return dm_i2c_set_bus_speed(dev, i2c->speed_hz);
|
||||
#else
|
||||
|
@ -699,11 +700,10 @@ int i2c_uclass_init(struct uclass *class)
|
|||
return -ENOMEM;
|
||||
|
||||
/* Get the last allocated alias. */
|
||||
#if CONFIG_IS_ENABLED(OF_CONTROL)
|
||||
priv->max_id = dev_read_alias_highest_id("i2c");
|
||||
#else
|
||||
priv->max_id = -1;
|
||||
#endif
|
||||
if (CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA))
|
||||
priv->max_id = dev_read_alias_highest_id("i2c");
|
||||
else
|
||||
priv->max_id = -1;
|
||||
|
||||
debug("%s: highest alias id is %d\n", __func__, priv->max_id);
|
||||
|
||||
|
|
|
@ -281,7 +281,7 @@ static int uniphier_fi2c_set_bus_speed(struct udevice *bus, unsigned int speed)
|
|||
struct uniphier_fi2c_regs __iomem *regs = priv->regs;
|
||||
|
||||
/* max supported frequency is 400 kHz */
|
||||
if (speed > 400000)
|
||||
if (speed > I2C_SPEED_FAST_RATE)
|
||||
return -EINVAL;
|
||||
|
||||
ret = uniphier_fi2c_check_bus_busy(priv);
|
||||
|
|
|
@ -177,7 +177,7 @@ static int uniphier_i2c_set_bus_speed(struct udevice *bus, unsigned int speed)
|
|||
struct uniphier_i2c_priv *priv = dev_get_priv(bus);
|
||||
|
||||
/* max supported frequency is 400 kHz */
|
||||
if (speed > 400000)
|
||||
if (speed > I2C_SPEED_FAST_RATE)
|
||||
return -EINVAL;
|
||||
|
||||
/* bus reset: make sure the bus is idle when change the frequency */
|
||||
|
|
|
@ -169,7 +169,7 @@ static int bus_i2c_start(struct udevice *bus, u8 addr, u8 dir)
|
|||
debug("i2c: start check busy bus: 0x%x\n", result);
|
||||
|
||||
/* Try to init the lpi2c then check the bus busy again */
|
||||
bus_i2c_init(bus, 100000);
|
||||
bus_i2c_init(bus, I2C_SPEED_STANDARD_RATE);
|
||||
result = imx_lpci2c_check_busy_bus(regs);
|
||||
if (result) {
|
||||
printf("i2c: Error check busy bus: 0x%x\n", result);
|
||||
|
@ -388,13 +388,13 @@ static int imx_lpi2c_probe_chip(struct udevice *bus, u32 chip,
|
|||
result = bus_i2c_start(bus, chip, 0);
|
||||
if (result) {
|
||||
bus_i2c_stop(bus);
|
||||
bus_i2c_init(bus, 100000);
|
||||
bus_i2c_init(bus, I2C_SPEED_STANDARD_RATE);
|
||||
return result;
|
||||
}
|
||||
|
||||
result = bus_i2c_stop(bus);
|
||||
if (result)
|
||||
bus_i2c_init(bus, 100000);
|
||||
bus_i2c_init(bus, I2C_SPEED_STANDARD_RATE);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
@ -489,7 +489,7 @@ static int imx_lpi2c_probe(struct udevice *bus)
|
|||
return ret;
|
||||
}
|
||||
|
||||
ret = bus_i2c_init(bus, 100000);
|
||||
ret = bus_i2c_init(bus, I2C_SPEED_STANDARD_RATE);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
|
|
|
@ -434,7 +434,7 @@ void i2c_init(int speed, int slaveaddr)
|
|||
base_glob = (struct mv_i2c *)CONFIG_MV_I2C_REG;
|
||||
#endif
|
||||
|
||||
if (speed > 100000)
|
||||
if (speed > I2C_SPEED_STANDARD_RATE)
|
||||
val = ICR_FM;
|
||||
else
|
||||
val = ICR_SM;
|
||||
|
@ -565,7 +565,7 @@ static int mv_i2c_set_bus_speed(struct udevice *bus, unsigned int speed)
|
|||
struct mv_i2c_priv *priv = dev_get_priv(bus);
|
||||
u32 val;
|
||||
|
||||
if (speed > 100000)
|
||||
if (speed > I2C_SPEED_STANDARD_RATE)
|
||||
val = ICR_FM;
|
||||
else
|
||||
val = ICR_SM;
|
||||
|
|
|
@ -805,8 +805,9 @@ static int mvtwsi_i2c_ofdata_to_platdata(struct udevice *bus)
|
|||
"cell-index", -1);
|
||||
dev->slaveadd = fdtdec_get_int(gd->fdt_blob, dev_of_offset(bus),
|
||||
"u-boot,i2c-slave-addr", 0x0);
|
||||
dev->speed = fdtdec_get_int(gd->fdt_blob, dev_of_offset(bus),
|
||||
"clock-frequency", 100000);
|
||||
dev->speed = dev_read_u32_default(bus, "clock-frequency",
|
||||
I2C_SPEED_STANDARD_RATE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -1066,7 +1066,8 @@ static int omap_i2c_ofdata_to_platdata(struct udevice *bus)
|
|||
struct omap_i2c_platdata *plat = dev_get_platdata(bus);
|
||||
|
||||
plat->base = devfdt_get_addr(bus);
|
||||
plat->speed = dev_read_u32_default(bus, "clock-frequency", 100000);
|
||||
plat->speed = dev_read_u32_default(bus, "clock-frequency",
|
||||
I2C_SPEED_STANDARD_RATE);
|
||||
plat->ip_rev = dev_get_driver_data(bus);
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -344,7 +344,7 @@ static int rcar_i2c_probe(struct udevice *dev)
|
|||
writel(0, priv->base + RCAR_I2C_ICMSR);
|
||||
writel(0, priv->base + RCAR_I2C_ICMAR);
|
||||
|
||||
ret = rcar_i2c_set_speed(dev, 100000);
|
||||
ret = rcar_i2c_set_speed(dev, I2C_SPEED_STANDARD_RATE);
|
||||
if (ret)
|
||||
clk_disable(&priv->clk);
|
||||
|
||||
|
|
|
@ -248,7 +248,7 @@ static int rcar_iic_probe(struct udevice *dev)
|
|||
|
||||
rcar_iic_finish(dev);
|
||||
|
||||
return rcar_iic_set_speed(dev, 100000);
|
||||
return rcar_iic_set_speed(dev, I2C_SPEED_STANDARD_RATE);
|
||||
}
|
||||
|
||||
static const struct dm_i2c_ops rcar_iic_ops = {
|
||||
|
|
|
@ -313,8 +313,9 @@ static int s3c_i2c_ofdata_to_platdata(struct udevice *dev)
|
|||
|
||||
i2c_bus->id = pinmux_decode_periph_id(blob, node);
|
||||
|
||||
i2c_bus->clock_frequency = fdtdec_get_int(blob, node,
|
||||
"clock-frequency", 100000);
|
||||
i2c_bus->clock_frequency =
|
||||
dev_read_u32_default(dev, "clock-frequency",
|
||||
I2C_SPEED_STANDARD_RATE);
|
||||
i2c_bus->node = node;
|
||||
i2c_bus->bus_num = dev->seq;
|
||||
|
||||
|
|
|
@ -72,7 +72,8 @@ static int sandbox_i2c_xfer(struct udevice *bus, struct i2c_msg *msg,
|
|||
* 400KHz for reads.
|
||||
*/
|
||||
is_read = nmsgs > 1;
|
||||
if (i2c->speed_hz > (is_read ? 400000 : 100000)) {
|
||||
if (i2c->speed_hz > (is_read ? I2C_SPEED_FAST_RATE :
|
||||
I2C_SPEED_STANDARD_RATE)) {
|
||||
debug("%s: Max speed exceeded\n", __func__);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue