sun6i: axp221: Add axp221_get_sid function

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>
This commit is contained in:
Hans de Goede 2014-11-25 16:37:52 +01:00
parent fc3a832576
commit f3fba5665b
2 changed files with 33 additions and 0 deletions

View file

@ -184,3 +184,30 @@ int axp221_init(void)
return 0; 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;
}

View file

@ -10,6 +10,7 @@
#define AXP221_CTRL_ADDR 0x3e #define AXP221_CTRL_ADDR 0x3e
#define AXP221_INIT_DATA 0x3e #define AXP221_INIT_DATA 0x3e
/* Page 0 addresses */
#define AXP221_CHIP_ID 0x03 #define AXP221_CHIP_ID 0x03
#define AXP221_OUTPUT_CTRL1 0x10 #define AXP221_OUTPUT_CTRL1 0x10
#define AXP221_OUTPUT_CTRL1_ALDO1_EN (1 << 6) #define AXP221_OUTPUT_CTRL1_ALDO1_EN (1 << 6)
@ -34,6 +35,10 @@
#define AXP221_ALDO1_CTRL 0x28 #define AXP221_ALDO1_CTRL 0x28
#define AXP221_ALDO2_CTRL 0x29 #define AXP221_ALDO2_CTRL 0x29
#define AXP221_ALDO3_CTRL 0x2a #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_dcdc1(unsigned int mvolt);
int axp221_set_dcdc2(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_aldo2(unsigned int mvolt);
int axp221_set_aldo3(unsigned int mvolt); int axp221_set_aldo3(unsigned int mvolt);
int axp221_init(void); int axp221_init(void);
int axp221_get_sid(unsigned int *sid);