Back to home page

OSCL-LXR

 
 

    


0001 /* linux/mfd/tps65010.h
0002  *
0003  * Functions to access TPS65010 power management device.
0004  *
0005  * Copyright (C) 2004 Dirk Behme <dirk.behme@de.bosch.com>
0006  *
0007  * This program is free software; you can redistribute it and/or modify it
0008  * under the terms of the GNU General Public License as published by the
0009  * Free Software Foundation; either version 2 of the License, or (at your
0010  * option) any later version.
0011  *
0012  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
0013  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
0014  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
0015  * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
0016  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
0017  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
0018  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
0019  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
0020  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
0021  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
0022  *
0023  * You should have received a copy of the  GNU General Public License along
0024  * with this program; if not, write  to the Free Software Foundation, Inc.,
0025  * 675 Mass Ave, Cambridge, MA 02139, USA.
0026  */
0027 
0028 #ifndef __LINUX_I2C_TPS65010_H
0029 #define __LINUX_I2C_TPS65010_H
0030 
0031 /*
0032  * ----------------------------------------------------------------------------
0033  * Registers, all 8 bits
0034  * ----------------------------------------------------------------------------
0035  */
0036 
0037 #define TPS_CHGSTATUS       0x01
0038 #   define  TPS_CHG_USB     (1 << 7)
0039 #   define  TPS_CHG_AC      (1 << 6)
0040 #   define  TPS_CHG_THERM       (1 << 5)
0041 #   define  TPS_CHG_TERM        (1 << 4)
0042 #   define  TPS_CHG_TAPER_TMO   (1 << 3)
0043 #   define  TPS_CHG_CHG_TMO     (1 << 2)
0044 #   define  TPS_CHG_PRECHG_TMO  (1 << 1)
0045 #   define  TPS_CHG_TEMP_ERR    (1 << 0)
0046 #define TPS_REGSTATUS       0x02
0047 #   define  TPS_REG_ONOFF       (1 << 7)
0048 #   define  TPS_REG_COVER       (1 << 6)
0049 #   define  TPS_REG_UVLO        (1 << 5)
0050 #   define  TPS_REG_NO_CHG      (1 << 4)    /* tps65013 */
0051 #   define  TPS_REG_PG_LD02     (1 << 3)
0052 #   define  TPS_REG_PG_LD01     (1 << 2)
0053 #   define  TPS_REG_PG_MAIN     (1 << 1)
0054 #   define  TPS_REG_PG_CORE     (1 << 0)
0055 #define TPS_MASK1       0x03
0056 #define TPS_MASK2       0x04
0057 #define TPS_ACKINT1     0x05
0058 #define TPS_ACKINT2     0x06
0059 #define TPS_CHGCONFIG       0x07
0060 #   define  TPS_CHARGE_POR      (1 << 7)    /* 65010/65012 */
0061 #   define  TPS65013_AUA        (1 << 7)    /* 65011/65013 */
0062 #   define  TPS_CHARGE_RESET    (1 << 6)
0063 #   define  TPS_CHARGE_FAST     (1 << 5)
0064 #   define  TPS_CHARGE_CURRENT  (3 << 3)
0065 #   define  TPS_VBUS_500MA      (1 << 2)
0066 #   define  TPS_VBUS_CHARGING   (1 << 1)
0067 #   define  TPS_CHARGE_ENABLE   (1 << 0)
0068 #define TPS_LED1_ON     0x08
0069 #define TPS_LED1_PER        0x09
0070 #define TPS_LED2_ON     0x0a
0071 #define TPS_LED2_PER        0x0b
0072 #define TPS_VDCDC1      0x0c
0073 #   define  TPS_ENABLE_LP       (1 << 3)
0074 #define TPS_VDCDC2      0x0d
0075 #   define  TPS_LP_COREOFF  (1 << 7)
0076 #   define  TPS_VCORE_1_8V  (7<<4)
0077 #   define  TPS_VCORE_1_5V  (6 << 4)
0078 #   define  TPS_VCORE_1_4V  (5 << 4)
0079 #   define  TPS_VCORE_1_3V  (4 << 4)
0080 #   define  TPS_VCORE_1_2V  (3 << 4)
0081 #   define  TPS_VCORE_1_1V  (2 << 4)
0082 #   define  TPS_VCORE_1_0V  (1 << 4)
0083 #   define  TPS_VCORE_0_85V (0 << 4)
0084 #   define  TPS_VCORE_LP_1_2V (3 << 2)
0085 #   define  TPS_VCORE_LP_1_1V (2 << 2)
0086 #   define  TPS_VCORE_LP_1_0V (1 << 2)
0087 #   define  TPS_VCORE_LP_0_85V (0 << 2)
0088 #   define  TPS_VIB     (1 << 1)
0089 #   define  TPS_VCORE_DISCH (1 << 0)
0090 #define TPS_VREGS1      0x0e
0091 #   define  TPS_LDO2_ENABLE (1 << 7)
0092 #   define  TPS_LDO2_OFF    (1 << 6)
0093 #   define  TPS_VLDO2_3_0V  (3 << 4)
0094 #   define  TPS_VLDO2_2_75V (2 << 4)
0095 #   define  TPS_VLDO2_2_5V  (1 << 4)
0096 #   define  TPS_VLDO2_1_8V  (0 << 4)
0097 #   define  TPS_LDO1_ENABLE (1 << 3)
0098 #   define  TPS_LDO1_OFF    (1 << 2)
0099 #   define  TPS_VLDO1_3_0V  (3 << 0)
0100 #   define  TPS_VLDO1_2_75V (2 << 0)
0101 #   define  TPS_VLDO1_2_5V  (1 << 0)
0102 #   define  TPS_VLDO1_ADJ   (0 << 0)
0103 #define TPS_MASK3       0x0f
0104 #define TPS_DEFGPIO     0x10
0105 
0106 /*
0107  * ----------------------------------------------------------------------------
0108  * Macros used by exported functions
0109  * ----------------------------------------------------------------------------
0110  */
0111 
0112 #define LED1  1
0113 #define LED2  2
0114 #define OFF   0
0115 #define ON    1
0116 #define BLINK 2
0117 #define GPIO1 1
0118 #define GPIO2 2
0119 #define GPIO3 3
0120 #define GPIO4 4
0121 #define LOW   0
0122 #define HIGH  1
0123 
0124 /*
0125  * ----------------------------------------------------------------------------
0126  * Exported functions
0127  * ----------------------------------------------------------------------------
0128  */
0129 
0130 /* Draw from VBUS:
0131  *   0 mA -- DON'T DRAW (might supply power instead)
0132  * 100 mA -- usb unit load (slowest charge rate)
0133  * 500 mA -- usb high power (fast battery charge)
0134  */
0135 extern int tps65010_set_vbus_draw(unsigned mA);
0136 
0137 /* tps65010_set_gpio_out_value parameter:
0138  * gpio:  GPIO1, GPIO2, GPIO3 or GPIO4
0139  * value: LOW or HIGH
0140  */
0141 extern int tps65010_set_gpio_out_value(unsigned gpio, unsigned value);
0142 
0143 /* tps65010_set_led parameter:
0144  * led:  LED1 or LED2
0145  * mode: ON, OFF or BLINK
0146  */
0147 extern int tps65010_set_led(unsigned led, unsigned mode);
0148 
0149 /* tps65010_set_vib parameter:
0150  * value: ON or OFF
0151  */
0152 extern int tps65010_set_vib(unsigned value);
0153 
0154 /* tps65010_set_low_pwr parameter:
0155  * mode: ON or OFF
0156  */
0157 extern int tps65010_set_low_pwr(unsigned mode);
0158 
0159 /* tps65010_config_vregs1 parameter:
0160  * value to be written to VREGS1 register
0161  * Note: The complete register is written, set all bits you need
0162  */
0163 extern int tps65010_config_vregs1(unsigned value);
0164 
0165 /* tps65013_set_low_pwr parameter:
0166  * mode: ON or OFF
0167  */
0168 extern int tps65013_set_low_pwr(unsigned mode);
0169 
0170 /* tps65010_set_vdcdc2
0171  *  value to be written to VDCDC2
0172  */
0173 extern int tps65010_config_vdcdc2(unsigned value);
0174 
0175 struct i2c_client;
0176 
0177 /**
0178  * struct tps65010_board - packages GPIO and LED lines
0179  * @base: the GPIO number to assign to GPIO-1
0180  * @outmask: bit (N-1) is set to allow GPIO-N to be used as an
0181  *  (open drain) output
0182  * @setup: optional callback issued once the GPIOs are valid
0183  * @teardown: optional callback issued before the GPIOs are invalidated
0184  * @context: optional parameter passed to setup() and teardown()
0185  *
0186  * Board data may be used to package the GPIO (and LED) lines for use
0187  * in by the generic GPIO and LED frameworks.  The first four GPIOs
0188  * starting at gpio_base are GPIO1..GPIO4.  The next two are LED1/nPG
0189  * and LED2 (with hardware blinking capability, not currently exposed).
0190  *
0191  * The @setup callback may be used with the kind of board-specific glue
0192  * which hands the (now-valid) GPIOs to other drivers, or which puts
0193  * devices in their initial states using these GPIOs.
0194  */
0195 struct tps65010_board {
0196     int             base;
0197     unsigned            outmask;
0198 
0199     int     (*setup)(struct i2c_client *client, void *context);
0200     int     (*teardown)(struct i2c_client *client, void *context);
0201     void        *context;
0202 };
0203 
0204 #endif /*  __LINUX_I2C_TPS65010_H */
0205