178fb6e31SFelipe Balbi /* 278fb6e31SFelipe Balbi * (C) Copyright 2014 Texas Instruments Incorporated - http://www.ti.com 378fb6e31SFelipe Balbi * Author: Felipe Balbi <balbi@ti.com> 478fb6e31SFelipe Balbi * 578fb6e31SFelipe Balbi * SPDX-License-Identifier: GPL-2.0+ 678fb6e31SFelipe Balbi */ 778fb6e31SFelipe Balbi 878fb6e31SFelipe Balbi #include <common.h> 978fb6e31SFelipe Balbi #include <i2c.h> 10*1221ce45SMasahiro Yamada #include <linux/errno.h> 1178fb6e31SFelipe Balbi #include <power/pmic.h> 1278fb6e31SFelipe Balbi #include <power/tps62362.h> 1378fb6e31SFelipe Balbi 1478fb6e31SFelipe Balbi /** 1578fb6e31SFelipe Balbi * tps62362_voltage_update() - Function to change a voltage level, as this 1678fb6e31SFelipe Balbi * is a multi-step process. 1778fb6e31SFelipe Balbi * @reg: Register address to write to 1878fb6e31SFelipe Balbi * @volt_sel: Voltage register value to write 1978fb6e31SFelipe Balbi * @return: 0 on success, 1 on failure 2078fb6e31SFelipe Balbi */ tps62362_voltage_update(unsigned char reg,unsigned char volt_sel)2178fb6e31SFelipe Balbiint tps62362_voltage_update(unsigned char reg, unsigned char volt_sel) 2278fb6e31SFelipe Balbi { 2378fb6e31SFelipe Balbi if (reg > TPS62362_NUM_REGS) 2478fb6e31SFelipe Balbi return 1; 2578fb6e31SFelipe Balbi 2678fb6e31SFelipe Balbi return i2c_write(TPS62362_I2C_ADDR, reg, 1, &volt_sel, 1); 2778fb6e31SFelipe Balbi } 2878fb6e31SFelipe Balbi power_tps62362_init(unsigned char bus)2978fb6e31SFelipe Balbiint power_tps62362_init(unsigned char bus) 3078fb6e31SFelipe Balbi { 3178fb6e31SFelipe Balbi static const char name[] = "TPS62362"; 3278fb6e31SFelipe Balbi struct pmic *p = pmic_alloc(); 3378fb6e31SFelipe Balbi 3478fb6e31SFelipe Balbi if (!p) { 3578fb6e31SFelipe Balbi printf("%s: POWER allocation error!\n", __func__); 3678fb6e31SFelipe Balbi return -ENOMEM; 3778fb6e31SFelipe Balbi } 3878fb6e31SFelipe Balbi 3978fb6e31SFelipe Balbi p->name = name; 4078fb6e31SFelipe Balbi p->interface = PMIC_I2C; 4178fb6e31SFelipe Balbi p->number_of_regs = TPS62362_NUM_REGS; 4278fb6e31SFelipe Balbi p->hw.i2c.addr = TPS62362_I2C_ADDR; 4378fb6e31SFelipe Balbi p->hw.i2c.tx_num = 1; 4478fb6e31SFelipe Balbi p->bus = bus; 4578fb6e31SFelipe Balbi 4678fb6e31SFelipe Balbi return 0; 4778fb6e31SFelipe Balbi } 48