Commit 27059c3e4d99c134d050be62601afe43171173b3

Authored by mario.six@gdsys.cc
Committed by York Sun
1 parent 29d63a59ea

i2c: fsl: Fix driver initialization

Due to a oversight in testing, the initialization of the recently
introduced Freescale I2C DM driver works only for 36 bit mode of e.g.
the MPC85XX SoCs (specifically, if the physical addresses are 64 bit
wide and the DT addresses 32 bit wide).

This patch corrects the initialization so that it will work in a more
general setting.

Signed-off-by: Mario Six <mario.six@gdsys.cc>
Reviewed-by: York Sun <york.sun@nxp.com>

Showing 1 changed file with 4 additions and 5 deletions Side-by-side Diff

drivers/i2c/fsl_i2c.c
... ... @@ -583,12 +583,11 @@
583 583 static int fsl_i2c_ofdata_to_platdata(struct udevice *bus)
584 584 {
585 585 struct fsl_i2c_dev *dev = dev_get_priv(bus);
586   - u64 reg;
587   - u32 addr, size;
  586 + fdt_addr_t addr;
  587 + fdt_size_t size;
588 588  
589   - reg = fdtdec_get_addr(gd->fdt_blob, bus->of_offset, "reg");
590   - addr = reg >> 32;
591   - size = reg & 0xFFFFFFFF;
  589 + addr = fdtdec_get_addr_size_auto_noparent(gd->fdt_blob, bus->of_offset,
  590 + "reg", 0, &size);
592 591  
593 592 dev->base = map_sysmem(CONFIG_SYS_IMMR + addr, size);
594 593