allwinner: sun50i_h6: initialise I2C just before powering down
authorAndre Przywara <andre.przywara@arm.com>
Sat, 8 Sep 2018 23:38:58 +0000 (00:38 +0100)
committerAndre Przywara <andre.przywara@arm.com>
Mon, 17 Sep 2018 08:51:22 +0000 (09:51 +0100)
Even though we initialise the platform part and the I2C controller
itself at boot time, we actually only access the bus on power down.
Meanwhile a rich OS might have configured the I2C pins differently or
even disabled the controller.
So repeat the platform setup and controller initialisation just before
we actually access the bus to power off the system. This is safe,
because at this point the rich OS should no longer be running.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
plat/allwinner/sun50i_h6/sunxi_power.c

index b6e07a24958ea42fcfeff24d9a7e6a6f54373afc..12438b33975c74f0ea92914f2db515ffa4a6b920 100644 (file)
@@ -120,10 +120,9 @@ void __dead2 sunxi_power_down(void)
 
        switch (pmic) {
        case AXP805:
-               val = 0x26; /* Default value for REG 32H */
+               sunxi_init_r_i2c();
                axp_i2c_read(AXP805_ADDR, 0x32, &val);
-               val |= 0x80;
-               axp_i2c_write(AXP805_ADDR, 0x32, val);
+               axp_i2c_write(AXP805_ADDR, 0x32, val | 0x80);
                break;
        default:
                break;