summaryrefslogtreecommitdiff
path: root/board/advantech
diff options
context:
space:
mode:
authorYung-Ching LIN <yungching0725@gmail.com>2017-03-29 01:51:23 +0800
committerStefano Babic <sbabic@denx.de>2017-04-12 18:04:44 +0200
commitfc9ade56e3eb451683a58089e32e79abb69e240e (patch)
treed002395fc5356002fe8fb194eb6179a9c0ce08b7 /board/advantech
parentf6f7e73d4503f84723f699cd63ac18397db36858 (diff)
downloadu-boot-fc9ade56e3eb451683a58089e32e79abb69e240e.tar.gz
u-boot-fc9ade56e3eb451683a58089e32e79abb69e240e.tar.bz2
u-boot-fc9ade56e3eb451683a58089e32e79abb69e240e.zip
board: advantech: dms-ba16: add the PMIC configuration support
Change the PMIC bulk configuration from auto mode to sync mode to avoid the voltage shutdown issue Signed-off-by: Ken Lin <yungching0725@gmail.com> Acked-by: Akshay Bhat <akshay.bhat@timesys.com>
Diffstat (limited to 'board/advantech')
-rw-r--r--board/advantech/dms-ba16/dms-ba16.c51
1 files changed, 51 insertions, 0 deletions
diff --git a/board/advantech/dms-ba16/dms-ba16.c b/board/advantech/dms-ba16/dms-ba16.c
index a67752f1ca..8aa7ff1659 100644
--- a/board/advantech/dms-ba16/dms-ba16.c
+++ b/board/advantech/dms-ba16/dms-ba16.c
@@ -534,6 +534,54 @@ static const struct boot_mode board_boot_modes[] = {
};
#endif
+void pmic_init(void)
+{
+
+#define DA9063_ADDR 0x58
+#define BCORE2_CONF 0x9D
+#define BCORE1_CONF 0x9E
+#define BPRO_CONF 0x9F
+#define BIO_CONF 0xA0
+#define BMEM_CONF 0xA1
+#define BPERI_CONF 0xA2
+#define MODE_BIT_H 7
+#define MODE_BIT_L 6
+
+ uchar val;
+ i2c_set_bus_num(2);
+
+ i2c_read(DA9063_ADDR, BCORE2_CONF, 1, &val, 1);
+ val |= (1 << MODE_BIT_H);
+ val &= ~(1 << MODE_BIT_L);
+ i2c_write(DA9063_ADDR, BCORE2_CONF , 1, &val, 1);
+
+ i2c_read(DA9063_ADDR, BCORE1_CONF, 1, &val, 1);
+ val |= (1 << MODE_BIT_H);
+ val &= ~(1 << MODE_BIT_L);
+ i2c_write(DA9063_ADDR, BCORE1_CONF , 1, &val, 1);
+
+ i2c_read(DA9063_ADDR, BPRO_CONF, 1, &val, 1);
+ val |= (1 << MODE_BIT_H);
+ val &= ~(1 << MODE_BIT_L);
+ i2c_write(DA9063_ADDR, BPRO_CONF , 1, &val, 1);
+
+ i2c_read(DA9063_ADDR, BIO_CONF, 1, &val, 1);
+ val |= (1 << MODE_BIT_H);
+ val &= ~(1 << MODE_BIT_L);
+ i2c_write(DA9063_ADDR, BIO_CONF , 1, &val, 1);
+
+ i2c_read(DA9063_ADDR, BMEM_CONF, 1, &val, 1);
+ val |= (1 << MODE_BIT_H);
+ val &= ~(1 << MODE_BIT_L);
+ i2c_write(DA9063_ADDR, BMEM_CONF , 1, &val, 1);
+
+ i2c_read(DA9063_ADDR, BPERI_CONF, 1, &val, 1);
+ val |= (1 << MODE_BIT_H);
+ val &= ~(1 << MODE_BIT_L);
+ i2c_write(DA9063_ADDR, BPERI_CONF , 1, &val, 1);
+
+}
+
int board_late_init(void)
{
#ifdef CONFIG_CMD_BMODE
@@ -563,6 +611,9 @@ int board_late_init(void)
setup_ba16_sata();
#endif
+ /* board specific pmic init */
+ pmic_init();
+
return 0;
}