sun6i: axp221: Add axp221_get_sid function
authorHans de Goede <hdegoede@redhat.com>
Tue, 25 Nov 2014 15:37:52 +0000 (16:37 +0100)
committerHans de Goede <hdegoede@redhat.com>
Wed, 14 Jan 2015 13:56:36 +0000 (14:56 +0100)
For sun6i the SID is stored in the pmic, rather then in the SoC itself,
add a function to retreive the sid.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Acked-by: Ian Campbell <ijc@hellion.org.uk>
drivers/power/axp221.c
include/axp221.h

index 941193a19da516f68f404f9363a9bdbfd46b03b4..826567a836b2284d9185533cc242659fb3e6be47 100644 (file)
@@ -184,3 +184,30 @@ int axp221_init(void)
 
        return 0;
 }
+
+int axp221_get_sid(unsigned int *sid)
+{
+       u8 *dest = (u8 *)sid;
+       int i, ret;
+
+       ret = axp221_init();
+       if (ret)
+               return ret;
+
+       ret = p2wi_write(AXP221_PAGE, 1);
+       if (ret)
+               return ret;
+
+       for (i = 0; i < 16; i++) {
+               ret = p2wi_read(AXP221_SID + i, &dest[i]);
+               if (ret)
+                       return ret;
+       }
+
+       p2wi_write(AXP221_PAGE, 0);
+
+       for (i = 0; i < 4; i++)
+               sid[i] = be32_to_cpu(sid[i]);
+
+       return 0;
+}
index 26d25ff52e81f45f39c3b3dec0f87a03d4e91ab4..ade906620774e584fddf869e6472c020eee3b116 100644 (file)
@@ -10,6 +10,7 @@
 #define AXP221_CTRL_ADDR 0x3e
 #define AXP221_INIT_DATA 0x3e
 
+/* Page 0 addresses */
 #define AXP221_CHIP_ID         0x03
 #define AXP221_OUTPUT_CTRL1    0x10
 #define AXP221_OUTPUT_CTRL1_ALDO1_EN   (1 << 6)
 #define AXP221_ALDO1_CTRL      0x28
 #define AXP221_ALDO2_CTRL      0x29
 #define AXP221_ALDO3_CTRL      0x2a
+#define AXP221_PAGE            0xff
+
+/* Page 1 addresses */
+#define AXP221_SID             0x20
 
 int axp221_set_dcdc1(unsigned int mvolt);
 int axp221_set_dcdc2(unsigned int mvolt);
@@ -48,3 +53,4 @@ int axp221_set_aldo1(unsigned int mvolt);
 int axp221_set_aldo2(unsigned int mvolt);
 int axp221_set_aldo3(unsigned int mvolt);
 int axp221_init(void);
+int axp221_get_sid(unsigned int *sid);