root/include/linux/mfd/tps65010.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* linux/mfd/tps65010.h
   2  *
   3  * Functions to access TPS65010 power management device.
   4  *
   5  * Copyright (C) 2004 Dirk Behme <dirk.behme@de.bosch.com>
   6  *
   7  * This program is free software; you can redistribute it and/or modify it
   8  * under the terms of the GNU General Public License as published by the
   9  * Free Software Foundation; either version 2 of the License, or (at your
  10  * option) any later version.
  11  *
  12  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
  13  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  14  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
  15  * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
  16  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  17  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  18  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
  19  * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  20  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  21  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  22  *
  23  * You should have received a copy of the  GNU General Public License along
  24  * with this program; if not, write  to the Free Software Foundation, Inc.,
  25  * 675 Mass Ave, Cambridge, MA 02139, USA.
  26  */
  27 
  28 #ifndef __LINUX_I2C_TPS65010_H
  29 #define __LINUX_I2C_TPS65010_H
  30 
  31 /*
  32  * ----------------------------------------------------------------------------
  33  * Registers, all 8 bits
  34  * ----------------------------------------------------------------------------
  35  */
  36 
  37 #define TPS_CHGSTATUS           0x01
  38 #       define  TPS_CHG_USB             (1 << 7)
  39 #       define  TPS_CHG_AC              (1 << 6)
  40 #       define  TPS_CHG_THERM           (1 << 5)
  41 #       define  TPS_CHG_TERM            (1 << 4)
  42 #       define  TPS_CHG_TAPER_TMO       (1 << 3)
  43 #       define  TPS_CHG_CHG_TMO         (1 << 2)
  44 #       define  TPS_CHG_PRECHG_TMO      (1 << 1)
  45 #       define  TPS_CHG_TEMP_ERR        (1 << 0)
  46 #define TPS_REGSTATUS           0x02
  47 #       define  TPS_REG_ONOFF           (1 << 7)
  48 #       define  TPS_REG_COVER           (1 << 6)
  49 #       define  TPS_REG_UVLO            (1 << 5)
  50 #       define  TPS_REG_NO_CHG          (1 << 4)        /* tps65013 */
  51 #       define  TPS_REG_PG_LD02         (1 << 3)
  52 #       define  TPS_REG_PG_LD01         (1 << 2)
  53 #       define  TPS_REG_PG_MAIN         (1 << 1)
  54 #       define  TPS_REG_PG_CORE         (1 << 0)
  55 #define TPS_MASK1               0x03
  56 #define TPS_MASK2               0x04
  57 #define TPS_ACKINT1             0x05
  58 #define TPS_ACKINT2             0x06
  59 #define TPS_CHGCONFIG           0x07
  60 #       define  TPS_CHARGE_POR          (1 << 7)        /* 65010/65012 */
  61 #       define  TPS65013_AUA            (1 << 7)        /* 65011/65013 */
  62 #       define  TPS_CHARGE_RESET        (1 << 6)
  63 #       define  TPS_CHARGE_FAST         (1 << 5)
  64 #       define  TPS_CHARGE_CURRENT      (3 << 3)
  65 #       define  TPS_VBUS_500MA          (1 << 2)
  66 #       define  TPS_VBUS_CHARGING       (1 << 1)
  67 #       define  TPS_CHARGE_ENABLE       (1 << 0)
  68 #define TPS_LED1_ON             0x08
  69 #define TPS_LED1_PER            0x09
  70 #define TPS_LED2_ON             0x0a
  71 #define TPS_LED2_PER            0x0b
  72 #define TPS_VDCDC1              0x0c
  73 #       define  TPS_ENABLE_LP           (1 << 3)
  74 #define TPS_VDCDC2              0x0d
  75 #       define  TPS_LP_COREOFF  (1 << 7)
  76 #       define  TPS_VCORE_1_8V  (7<<4)
  77 #       define  TPS_VCORE_1_5V  (6 << 4)
  78 #       define  TPS_VCORE_1_4V  (5 << 4)
  79 #       define  TPS_VCORE_1_3V  (4 << 4)
  80 #       define  TPS_VCORE_1_2V  (3 << 4)
  81 #       define  TPS_VCORE_1_1V  (2 << 4)
  82 #       define  TPS_VCORE_1_0V  (1 << 4)
  83 #       define  TPS_VCORE_0_85V (0 << 4)
  84 #       define  TPS_VCORE_LP_1_2V (3 << 2)
  85 #       define  TPS_VCORE_LP_1_1V (2 << 2)
  86 #       define  TPS_VCORE_LP_1_0V (1 << 2)
  87 #       define  TPS_VCORE_LP_0_85V (0 << 2)
  88 #       define  TPS_VIB         (1 << 1)
  89 #       define  TPS_VCORE_DISCH (1 << 0)
  90 #define TPS_VREGS1              0x0e
  91 #       define  TPS_LDO2_ENABLE (1 << 7)
  92 #       define  TPS_LDO2_OFF    (1 << 6)
  93 #       define  TPS_VLDO2_3_0V  (3 << 4)
  94 #       define  TPS_VLDO2_2_75V (2 << 4)
  95 #       define  TPS_VLDO2_2_5V  (1 << 4)
  96 #       define  TPS_VLDO2_1_8V  (0 << 4)
  97 #       define  TPS_LDO1_ENABLE (1 << 3)
  98 #       define  TPS_LDO1_OFF    (1 << 2)
  99 #       define  TPS_VLDO1_3_0V  (3 << 0)
 100 #       define  TPS_VLDO1_2_75V (2 << 0)
 101 #       define  TPS_VLDO1_2_5V  (1 << 0)
 102 #       define  TPS_VLDO1_ADJ   (0 << 0)
 103 #define TPS_MASK3               0x0f
 104 #define TPS_DEFGPIO             0x10
 105 
 106 /*
 107  * ----------------------------------------------------------------------------
 108  * Macros used by exported functions
 109  * ----------------------------------------------------------------------------
 110  */
 111 
 112 #define LED1  1
 113 #define LED2  2
 114 #define OFF   0
 115 #define ON    1
 116 #define BLINK 2
 117 #define GPIO1 1
 118 #define GPIO2 2
 119 #define GPIO3 3
 120 #define GPIO4 4
 121 #define LOW   0
 122 #define HIGH  1
 123 
 124 /*
 125  * ----------------------------------------------------------------------------
 126  * Exported functions
 127  * ----------------------------------------------------------------------------
 128  */
 129 
 130 /* Draw from VBUS:
 131  *   0 mA -- DON'T DRAW (might supply power instead)
 132  * 100 mA -- usb unit load (slowest charge rate)
 133  * 500 mA -- usb high power (fast battery charge)
 134  */
 135 extern int tps65010_set_vbus_draw(unsigned mA);
 136 
 137 /* tps65010_set_gpio_out_value parameter:
 138  * gpio:  GPIO1, GPIO2, GPIO3 or GPIO4
 139  * value: LOW or HIGH
 140  */
 141 extern int tps65010_set_gpio_out_value(unsigned gpio, unsigned value);
 142 
 143 /* tps65010_set_led parameter:
 144  * led:  LED1 or LED2
 145  * mode: ON, OFF or BLINK
 146  */
 147 extern int tps65010_set_led(unsigned led, unsigned mode);
 148 
 149 /* tps65010_set_vib parameter:
 150  * value: ON or OFF
 151  */
 152 extern int tps65010_set_vib(unsigned value);
 153 
 154 /* tps65010_set_low_pwr parameter:
 155  * mode: ON or OFF
 156  */
 157 extern int tps65010_set_low_pwr(unsigned mode);
 158 
 159 /* tps65010_config_vregs1 parameter:
 160  * value to be written to VREGS1 register
 161  * Note: The complete register is written, set all bits you need
 162  */
 163 extern int tps65010_config_vregs1(unsigned value);
 164 
 165 /* tps65013_set_low_pwr parameter:
 166  * mode: ON or OFF
 167  */
 168 extern int tps65013_set_low_pwr(unsigned mode);
 169 
 170 /* tps65010_set_vdcdc2
 171  *  value to be written to VDCDC2
 172  */
 173 extern int tps65010_config_vdcdc2(unsigned value);
 174 
 175 struct i2c_client;
 176 
 177 /**
 178  * struct tps65010_board - packages GPIO and LED lines
 179  * @base: the GPIO number to assign to GPIO-1
 180  * @outmask: bit (N-1) is set to allow GPIO-N to be used as an
 181  *      (open drain) output
 182  * @setup: optional callback issued once the GPIOs are valid
 183  * @teardown: optional callback issued before the GPIOs are invalidated
 184  * @context: optional parameter passed to setup() and teardown()
 185  *
 186  * Board data may be used to package the GPIO (and LED) lines for use
 187  * in by the generic GPIO and LED frameworks.  The first four GPIOs
 188  * starting at gpio_base are GPIO1..GPIO4.  The next two are LED1/nPG
 189  * and LED2 (with hardware blinking capability, not currently exposed).
 190  *
 191  * The @setup callback may be used with the kind of board-specific glue
 192  * which hands the (now-valid) GPIOs to other drivers, or which puts
 193  * devices in their initial states using these GPIOs.
 194  */
 195 struct tps65010_board {
 196         int                             base;
 197         unsigned                        outmask;
 198 
 199         int             (*setup)(struct i2c_client *client, void *context);
 200         int             (*teardown)(struct i2c_client *client, void *context);
 201         void            *context;
 202 };
 203 
 204 #endif /*  __LINUX_I2C_TPS65010_H */
 205 

/* [<][>][^][v][top][bottom][index][help] */