1cb199102SNishanth Menon /* 2cb199102SNishanth Menon * (C) Copyright 2012-2013 3cb199102SNishanth Menon * Texas Instruments, <www.ti.com> 4cb199102SNishanth Menon * 5cb199102SNishanth Menon * See file CREDITS for list of people who contributed to this 6cb199102SNishanth Menon * project. 7cb199102SNishanth Menon * 8cb199102SNishanth Menon * This program is free software; you can redistribute it and/or 9cb199102SNishanth Menon * modify it under the terms of the GNU General Public License as 10cb199102SNishanth Menon * published by the Free Software Foundation; either version 2 of 11cb199102SNishanth Menon * the License, or (at your option) any later version. 12cb199102SNishanth Menon * 13cb199102SNishanth Menon * This program is distributed in the hope that it will be useful, 14cb199102SNishanth Menon * but WITHOUT ANY WARRANTY; without even the implied warranty of 15cb199102SNishanth Menon * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16cb199102SNishanth Menon * GNU General Public License for more details. 17cb199102SNishanth Menon * 18cb199102SNishanth Menon * You should have received a copy of the GNU General Public License 19cb199102SNishanth Menon * along with this program; if not, write to the Free Software 20cb199102SNishanth Menon * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 21cb199102SNishanth Menon * MA 02111-1307 USA 22cb199102SNishanth Menon */ 23da2cc454SNishanth Menon #ifndef PALMAS_H 24da2cc454SNishanth Menon #define PALMAS_H 25cb199102SNishanth Menon 26cb199102SNishanth Menon #include <common.h> 27cb199102SNishanth Menon #include <i2c.h> 28cb199102SNishanth Menon 29*e9090fa4SLubomir Popov /* I2C chip addresses, TW6035/37 */ 30*e9090fa4SLubomir Popov #define TWL603X_CHIP_P1 0x48 /* Page 1 */ 31*e9090fa4SLubomir Popov #define TWL603X_CHIP_P2 0x49 /* Page 2 */ 32*e9090fa4SLubomir Popov #define TWL603X_CHIP_P3 0x4a /* Page 3 */ 33cb199102SNishanth Menon 34*e9090fa4SLubomir Popov /* TPS659038/39 */ 35*e9090fa4SLubomir Popov #define TPS65903X_CHIP_P1 0x58 /* Page 1 */ 36*e9090fa4SLubomir Popov 37*e9090fa4SLubomir Popov /* Page 1 registers (0x1XY translates to page 1, reg addr 0xXY): */ 38*e9090fa4SLubomir Popov 39*e9090fa4SLubomir Popov /* LDO1 control/voltage */ 40*e9090fa4SLubomir Popov #define LDO1_CTRL 0x50 41*e9090fa4SLubomir Popov #define LDO1_VOLTAGE 0x51 42*e9090fa4SLubomir Popov 43*e9090fa4SLubomir Popov /* LDO9 control/voltage */ 44cb199102SNishanth Menon #define LDO9_CTRL 0x60 45cb199102SNishanth Menon #define LDO9_VOLTAGE 0x61 46cb199102SNishanth Menon 47*e9090fa4SLubomir Popov /* LDOUSB control/voltage */ 48*e9090fa4SLubomir Popov #define LDOUSB_CTRL 0x64 49*e9090fa4SLubomir Popov #define LDOUSB_VOLTAGE 0x65 50*e9090fa4SLubomir Popov 51*e9090fa4SLubomir Popov /* Control of 32 kHz audio clock */ 52*e9090fa4SLubomir Popov #define CLK32KGAUDIO_CTRL 0xd5 53*e9090fa4SLubomir Popov 54*e9090fa4SLubomir Popov /* SYSEN2_CTRL for VCC_3v3_AUX supply on the sEVM */ 55*e9090fa4SLubomir Popov #define SYSEN2_CTRL 0xd9 56*e9090fa4SLubomir Popov 57*e9090fa4SLubomir Popov /* 58*e9090fa4SLubomir Popov * Bit field definitions for LDOx_CTRL, SYSENx_CTRL 59*e9090fa4SLubomir Popov * and some other xxx_CTRL resources: 60*e9090fa4SLubomir Popov */ 61*e9090fa4SLubomir Popov #define LDO9_BYP_EN (1 << 6) /* LDO9 only! */ 62*e9090fa4SLubomir Popov #define RSC_STAT_ON (1 << 4) /* RO status bit! */ 63*e9090fa4SLubomir Popov #define RSC_MODE_SLEEP (1 << 2) 64*e9090fa4SLubomir Popov #define RSC_MODE_ACTIVE (1 << 0) 65*e9090fa4SLubomir Popov 66*e9090fa4SLubomir Popov /* Some LDO voltage values */ 67*e9090fa4SLubomir Popov #define LDO_VOLT_OFF 0 68*e9090fa4SLubomir Popov #define LDO_VOLT_1V8 0x13 69*e9090fa4SLubomir Popov #define LDO_VOLT_3V0 0x2b 70*e9090fa4SLubomir Popov #define LDO_VOLT_3V3 0x31 71*e9090fa4SLubomir Popov /* Request bypass, LDO9 only */ 72*e9090fa4SLubomir Popov #define LDO9_BYPASS 0x3f 73*e9090fa4SLubomir Popov 74*e9090fa4SLubomir Popov /* SMPS7_CTRL */ 75*e9090fa4SLubomir Popov #define SMPS7_CTRL 0x30 76*e9090fa4SLubomir Popov 77*e9090fa4SLubomir Popov /* SMPS9_CTRL */ 78*e9090fa4SLubomir Popov #define SMPS9_CTRL 0x38 79*e9090fa4SLubomir Popov #define SMPS9_VOLTAGE 0x3b 80*e9090fa4SLubomir Popov 81*e9090fa4SLubomir Popov /* Bit field definitions for SMPSx_CTRL */ 82*e9090fa4SLubomir Popov #define SMPS_MODE_ACT_AUTO 1 83*e9090fa4SLubomir Popov #define SMPS_MODE_ACT_ECO 2 84*e9090fa4SLubomir Popov #define SMPS_MODE_ACT_FPWM 3 85*e9090fa4SLubomir Popov #define SMPS_MODE_SLP_AUTO (1 << 2) 86*e9090fa4SLubomir Popov #define SMPS_MODE_SLP_ECO (2 << 2) 87*e9090fa4SLubomir Popov #define SMPS_MODE_SLP_FPWM (3 << 2) 88*e9090fa4SLubomir Popov 89*e9090fa4SLubomir Popov /* 90*e9090fa4SLubomir Popov * Some popular SMPS voltages, all with RANGE=1; note 91*e9090fa4SLubomir Popov * that RANGE cannot be changed on the fly 92*e9090fa4SLubomir Popov */ 93*e9090fa4SLubomir Popov #define SMPS_VOLT_OFF 0 94*e9090fa4SLubomir Popov #define SMPS_VOLT_1V2 0x90 95*e9090fa4SLubomir Popov #define SMPS_VOLT_1V8 0xae 96*e9090fa4SLubomir Popov #define SMPS_VOLT_2V1 0xbd 97*e9090fa4SLubomir Popov #define SMPS_VOLT_3V0 0xea 98*e9090fa4SLubomir Popov #define SMPS_VOLT_3V3 0xf9 99*e9090fa4SLubomir Popov 100*e9090fa4SLubomir Popov /* Backup Battery & VRTC Control */ 101*e9090fa4SLubomir Popov #define BB_VRTC_CTRL 0xa8 102*e9090fa4SLubomir Popov /* Bit definitions for BB_VRTC_CTRL */ 103*e9090fa4SLubomir Popov #define VRTC_EN_SLP (1 << 6) 104*e9090fa4SLubomir Popov #define VRTC_EN_OFF (1 << 5) 105*e9090fa4SLubomir Popov #define VRTC_PWEN (1 << 4) 106*e9090fa4SLubomir Popov #define BB_LOW_ICHRG (1 << 3) 107*e9090fa4SLubomir Popov #define BB_HIGH_ICHRG (0 << 3) 108*e9090fa4SLubomir Popov #define BB_VSEL_3V0 (0 << 1) 109*e9090fa4SLubomir Popov #define BB_VSEL_2V5 (1 << 1) 110*e9090fa4SLubomir Popov #define BB_VSEL_3V15 (2 << 1) 111*e9090fa4SLubomir Popov #define BB_VSEL_VBAT (3 << 1) 112*e9090fa4SLubomir Popov #define BB_CHRG_EN (1 << 0) 113cb199102SNishanth Menon 114ff2d57eaSNishanth Menon /* 115ff2d57eaSNishanth Menon * Functions to read and write from TPS659038/TWL6035/TWL6037 116ff2d57eaSNishanth Menon * or other Palmas family of TI PMICs 117ff2d57eaSNishanth Menon */ 118ff2d57eaSNishanth Menon static inline int palmas_i2c_write_u8(u8 chip_no, u8 reg, u8 val) 119ff2d57eaSNishanth Menon { 120ff2d57eaSNishanth Menon return i2c_write(chip_no, reg, 1, &val, 1); 121ff2d57eaSNishanth Menon } 122ff2d57eaSNishanth Menon 123ff2d57eaSNishanth Menon static inline int palmas_i2c_read_u8(u8 chip_no, u8 reg, u8 *val) 124ff2d57eaSNishanth Menon { 125ff2d57eaSNishanth Menon return i2c_read(chip_no, reg, 1, val, 1); 126ff2d57eaSNishanth Menon } 127ff2d57eaSNishanth Menon 12812733881SNishanth Menon void palmas_init_settings(void); 129384bcae0SNishanth Menon int palmas_mmc1_poweron_ldo(void); 130*e9090fa4SLubomir Popov int twl603x_mmc1_set_ldo9(u8 vsel); 131*e9090fa4SLubomir Popov int twl603x_audio_power(u8 on); 132*e9090fa4SLubomir Popov int twl603x_enable_bb_charge(u8 bb_fields); 133da2cc454SNishanth Menon 134da2cc454SNishanth Menon #endif /* PALMAS_H */ 135