Fix: nommu I2C adapter relocation error
authorJens Scharsig (BuS Elektronik) <esw@bus-elektronik.de>
Mon, 14 Oct 2013 08:27:38 +0000 (10:27 +0200)
committerHeiko Schocher <hs@denx.de>
Thu, 17 Oct 2013 05:20:25 +0000 (07:20 +0200)
NoMMU systems have a access violation problem with i2c_reloc_fixup.
Blame for it is a double relocation of the adapter itself. The
i2c_adap_p is already relocated, if i2c_reloc_fixup is called.
This patch removes the relocation of i2c_adap_p from i2c_reloc_fixup
to fix this.

Signed-off-by: Jens Scharsig (BuS Elektronik) <esw@bus-elektronik.de>
drivers/i2c/i2c_core.c

index fe341cde6458f19fff459fe71d79eeac92641888..b067b7c6ff39bd30075f0889151d19e20ef60f83 100644 (file)
@@ -53,10 +53,6 @@ void i2c_reloc_fixup(void)
                return;
 
        for (i = 0; i < max; i++) {
-               /* adapter itself */
-               addr = (unsigned long)i2c_adap_p;
-               addr += gd->reloc_off;
-               i2c_adap_p = (struct i2c_adapter *)addr;
                /* i2c_init() */
                addr = (unsigned long)i2c_adap_p->init;
                addr += gd->reloc_off;