* GNU General Public License for more details.
*
*/
-
#include <common.h>
#include <errno.h>
#include <i2c.h>
#include "pmic.h"
+#ifdef CONFIG_SYS_I2C
static struct {
uchar addr;
- int (*init)(uchar addr);
+ pmic_setup_func *init;
+ const char *name;
} i2c_addrs[] = {
#ifdef CONFIG_LTC3676
- { 0x3c, ltc3676_pmic_setup, },
+ { 0x3c, ltc3676_pmic_setup, "LTC3676", },
#endif
#ifdef CONFIG_RN5T618
- { 0x32, rn5t618_pmic_setup, },
+ { 0x32, rn5t618_pmic_setup, "RN5T618", },
#endif
#ifdef CONFIG_RN5T567
- { 0x33, rn5t567_pmic_setup, },
+ { 0x33, rn5t567_pmic_setup, "RN5T567", },
#endif
};
-int tx6_pmic_init(void)
+int tx6_pmic_init(int addr, struct pmic_regs *regs, size_t num_regs)
{
int ret = -ENODEV;
int i;
+ printf("PMIC: ");
+
+ debug("Probing for I2C dev 0x%02x\n", addr);
for (i = 0; i < ARRAY_SIZE(i2c_addrs); i++) {
- ret = i2c_probe(i2c_addrs[i].addr);
+ u8 i2c_addr = i2c_addrs[i].addr;
+
+ if (i2c_addr != addr)
+ continue;
+
+ debug("Probing for I2C dev 0x%02x\n", i2c_addr);
+ ret = i2c_probe(i2c_addr);
if (ret == 0) {
- i2c_addrs[i].init(i2c_addrs[i].addr);
+ debug("Initializing PMIC at I2C addr 0x%02x\n", i2c_addr);
+ ret = i2c_addrs[i].init(i2c_addr, regs, num_regs);
break;
}
}
+ printf("%s\n", i == ARRAY_SIZE(i2c_addrs) ? "N/A" : i2c_addrs[i].name);
return ret;
}
+#else
+int tx6_pmic_init(int addr, struct pmic_regs *regs, size_t num_regs)
+{
+ printf("PMIC: N/A\n");
+ return 0;
+}
+#endif