allwinner: h6: power: Switch to using the AXP driver

Chip ID checking and poweroff work just like they did before.
Regulators are now enabled just like on A64/H5.

This changes the signatures of the low-level register read/write
functions to match the interface expected by the common driver.

Signed-off-by: Samuel Holland <samuel@sholland.org>
Change-Id: I14d63d171a094fa1375904928270fa3e21761646
diff --git a/plat/allwinner/sun50i_h6/sunxi_power.c b/plat/allwinner/sun50i_h6/sunxi_power.c
index 7bb266b..443015b 100644
--- a/plat/allwinner/sun50i_h6/sunxi_power.c
+++ b/plat/allwinner/sun50i_h6/sunxi_power.c
@@ -10,6 +10,7 @@
 
 #include <arch_helpers.h>
 #include <common/debug.h>
+#include <drivers/allwinner/axp.h>
 #include <drivers/delay_timer.h>
 #include <drivers/mentor/mi2cv.h>
 #include <lib/mmio.h>
@@ -19,31 +20,33 @@
 #include <sunxi_private.h>
 
 #define AXP805_ADDR	0x36
-#define AXP805_ID	0x03
 
 static enum pmic_type {
 	UNKNOWN,
 	AXP805,
 } pmic;
 
-int axp_i2c_read(uint8_t chip, uint8_t reg, uint8_t *val)
+int axp_read(uint8_t reg)
 {
+	uint8_t val;
 	int ret;
 
-	ret = i2c_write(chip, 0, 0, &reg, 1);
+	ret = i2c_write(AXP805_ADDR, 0, 0, &reg, 1);
 	if (ret == 0)
-		ret = i2c_read(chip, 0, 0, val, 1);
-	if (ret)
+		ret = i2c_read(AXP805_ADDR, 0, 0, &val, 1);
+	if (ret) {
 		ERROR("PMIC: Cannot read AXP805 register %02x\n", reg);
+		return ret;
+	}
 
-	return ret;
+	return val;
 }
 
-int axp_i2c_write(uint8_t chip, uint8_t reg, uint8_t val)
+int axp_write(uint8_t reg, uint8_t val)
 {
 	int ret;
 
-	ret = i2c_write(chip, reg, 1, &val, 1);
+	ret = i2c_write(AXP805_ADDR, reg, 1, &val, 1);
 	if (ret)
 		ERROR("PMIC: Cannot write AXP805 register %02x\n", reg);
 
@@ -53,23 +56,16 @@
 static int axp805_probe(void)
 {
 	int ret;
-	uint8_t val;
 
 	/* Switch the AXP805 to master/single-PMIC mode. */
-	ret = axp_i2c_write(AXP805_ADDR, 0xff, 0x0);
+	ret = axp_write(0xff, 0x0);
 	if (ret)
 		return ret;
 
-	ret = axp_i2c_read(AXP805_ADDR, AXP805_ID, &val);
+	ret = axp_check_id();
 	if (ret)
 		return ret;
 
-	val &= 0xcf;
-	if (val != 0x40) {
-		ERROR("PMIC: Found unknown PMIC %02x\n", val);
-		return -EINVAL;
-	}
-
 	return 0;
 }
 
@@ -91,22 +87,20 @@
 		return ret;
 
 	pmic = AXP805;
+	axp_setup_regulators(fdt);
 
 	return 0;
 }
 
 void sunxi_power_down(void)
 {
-	uint8_t val;
-
 	switch (pmic) {
 	case AXP805:
 		/* Re-initialise after rich OS might have used it. */
 		sunxi_init_platform_r_twi(SUNXI_SOC_H6, false);
 		/* initialise mi2cv driver */
 		i2c_init((void *)SUNXI_R_I2C_BASE);
-		axp_i2c_read(AXP805_ADDR, 0x32, &val);
-		axp_i2c_write(AXP805_ADDR, 0x32, val | 0x80);
+		axp_power_off();
 		break;
 	default:
 		break;