1*c7336815SŁukasz Majewski /* 2*c7336815SŁukasz Majewski * Copyright (C) 2011-2012 Samsung Electronics 3*c7336815SŁukasz Majewski * Lukasz Majewski <l.majewski@samsung.com> 4*c7336815SŁukasz Majewski * 5*c7336815SŁukasz Majewski * See file CREDITS for list of people who contributed to this 6*c7336815SŁukasz Majewski * project. 7*c7336815SŁukasz Majewski * 8*c7336815SŁukasz Majewski * This program is free software; you can redistribute it and/or 9*c7336815SŁukasz Majewski * modify it under the terms of the GNU General Public License as 10*c7336815SŁukasz Majewski * published by the Free Software Foundation; either version 2 of 11*c7336815SŁukasz Majewski * the License, or (at your option) any later version. 12*c7336815SŁukasz Majewski * 13*c7336815SŁukasz Majewski * This program is distributed in the hope that it will be useful, 14*c7336815SŁukasz Majewski * but WITHOUT ANY WARRANTY; without even the implied warranty of 15*c7336815SŁukasz Majewski * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16*c7336815SŁukasz Majewski * GNU General Public License for more details. 17*c7336815SŁukasz Majewski * 18*c7336815SŁukasz Majewski * You should have received a copy of the GNU General Public License 19*c7336815SŁukasz Majewski * along with this program; if not, write to the Free Software 20*c7336815SŁukasz Majewski * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 21*c7336815SŁukasz Majewski * MA 02111-1307 USA 22*c7336815SŁukasz Majewski */ 23*c7336815SŁukasz Majewski 24*c7336815SŁukasz Majewski #ifndef __CORE_PMIC_H_ 25*c7336815SŁukasz Majewski #define __CORE_PMIC_H_ 26*c7336815SŁukasz Majewski 27*c7336815SŁukasz Majewski #include <common.h> 28*c7336815SŁukasz Majewski #include <linux/list.h> 29*c7336815SŁukasz Majewski #include <i2c.h> 30*c7336815SŁukasz Majewski 31*c7336815SŁukasz Majewski enum { PMIC_I2C, PMIC_SPI, }; 32*c7336815SŁukasz Majewski enum { I2C_PMIC, I2C_NUM, }; 33*c7336815SŁukasz Majewski enum { PMIC_READ, PMIC_WRITE, }; 34*c7336815SŁukasz Majewski enum { PMIC_SENSOR_BYTE_ORDER_LITTLE, PMIC_SENSOR_BYTE_ORDER_BIG, }; 35*c7336815SŁukasz Majewski 36*c7336815SŁukasz Majewski struct p_i2c { 37*c7336815SŁukasz Majewski unsigned char addr; 38*c7336815SŁukasz Majewski unsigned char *buf; 39*c7336815SŁukasz Majewski unsigned char tx_num; 40*c7336815SŁukasz Majewski }; 41*c7336815SŁukasz Majewski 42*c7336815SŁukasz Majewski struct p_spi { 43*c7336815SŁukasz Majewski unsigned int cs; 44*c7336815SŁukasz Majewski unsigned int mode; 45*c7336815SŁukasz Majewski unsigned int bitlen; 46*c7336815SŁukasz Majewski unsigned int clk; 47*c7336815SŁukasz Majewski unsigned int flags; 48*c7336815SŁukasz Majewski u32 (*prepare_tx)(u32 reg, u32 *val, u32 write); 49*c7336815SŁukasz Majewski }; 50*c7336815SŁukasz Majewski 51*c7336815SŁukasz Majewski struct pmic { 52*c7336815SŁukasz Majewski const char *name; 53*c7336815SŁukasz Majewski unsigned char bus; 54*c7336815SŁukasz Majewski unsigned char interface; 55*c7336815SŁukasz Majewski unsigned char sensor_byte_order; 56*c7336815SŁukasz Majewski unsigned int number_of_regs; 57*c7336815SŁukasz Majewski union hw { 58*c7336815SŁukasz Majewski struct p_i2c i2c; 59*c7336815SŁukasz Majewski struct p_spi spi; 60*c7336815SŁukasz Majewski } hw; 61*c7336815SŁukasz Majewski 62*c7336815SŁukasz Majewski struct list_head list; 63*c7336815SŁukasz Majewski }; 64*c7336815SŁukasz Majewski 65*c7336815SŁukasz Majewski int pmic_init(unsigned char bus); 66*c7336815SŁukasz Majewski int pmic_dialog_init(unsigned char bus); 67*c7336815SŁukasz Majewski int check_reg(struct pmic *p, u32 reg); 68*c7336815SŁukasz Majewski struct pmic *pmic_alloc(void); 69*c7336815SŁukasz Majewski struct pmic *pmic_get(const char *s); 70*c7336815SŁukasz Majewski int pmic_probe(struct pmic *p); 71*c7336815SŁukasz Majewski int pmic_reg_read(struct pmic *p, u32 reg, u32 *val); 72*c7336815SŁukasz Majewski int pmic_reg_write(struct pmic *p, u32 reg, u32 val); 73*c7336815SŁukasz Majewski int pmic_set_output(struct pmic *p, u32 reg, int ldo, int on); 74*c7336815SŁukasz Majewski 75*c7336815SŁukasz Majewski #define pmic_i2c_addr (p->hw.i2c.addr) 76*c7336815SŁukasz Majewski #define pmic_i2c_tx_num (p->hw.i2c.tx_num) 77*c7336815SŁukasz Majewski 78*c7336815SŁukasz Majewski #define pmic_spi_bitlen (p->hw.spi.bitlen) 79*c7336815SŁukasz Majewski #define pmic_spi_flags (p->hw.spi.flags) 80*c7336815SŁukasz Majewski 81*c7336815SŁukasz Majewski #endif /* __CORE_PMIC_H_ */ 82