1 /*
2  * (C) Copyright 2014 Texas Instruments Incorporated -  http://www.ti.com
3  * Author: Felipe Balbi <balbi@ti.com>
4  *
5  * SPDX-License-Identifier:	GPL-2.0+
6  */
7 
8 #include <common.h>
9 #include <i2c.h>
10 #include <asm/errno.h>
11 #include <power/pmic.h>
12 #include <power/tps62362.h>
13 
14 /**
15  * tps62362_voltage_update() - Function to change a voltage level, as this
16  *			       is a multi-step process.
17  * @reg:	Register address to write to
18  * @volt_sel:	Voltage register value to write
19  * @return:	0 on success, 1 on failure
20  */
21 int tps62362_voltage_update(unsigned char reg, unsigned char volt_sel)
22 {
23 	if (reg > TPS62362_NUM_REGS)
24 		return 1;
25 
26 	return i2c_write(TPS62362_I2C_ADDR, reg, 1, &volt_sel, 1);
27 }
28 
29 int power_tps62362_init(unsigned char bus)
30 {
31 	static const char name[] = "TPS62362";
32 	struct pmic *p = pmic_alloc();
33 
34 	if (!p) {
35 		printf("%s: POWER allocation error!\n", __func__);
36 		return -ENOMEM;
37 	}
38 
39 	p->name = name;
40 	p->interface = PMIC_I2C;
41 	p->number_of_regs = TPS62362_NUM_REGS;
42 	p->hw.i2c.addr = TPS62362_I2C_ADDR;
43 	p->hw.i2c.tx_num = 1;
44 	p->bus = bus;
45 
46 	return 0;
47 }
48