linux/include/linux/mfd/da903x.h
<<
>>
Prefs
   1#ifndef __LINUX_PMIC_DA903X_H
   2#define __LINUX_PMIC_DA903X_H
   3
   4/* Unified sub device IDs for DA9030/DA9034/DA9035 */
   5enum {
   6        DA9030_ID_LED_1,
   7        DA9030_ID_LED_2,
   8        DA9030_ID_LED_3,
   9        DA9030_ID_LED_4,
  10        DA9030_ID_LED_PC,
  11        DA9030_ID_VIBRA,
  12        DA9030_ID_WLED,
  13        DA9030_ID_BUCK1,
  14        DA9030_ID_BUCK2,
  15        DA9030_ID_LDO1,
  16        DA9030_ID_LDO2,
  17        DA9030_ID_LDO3,
  18        DA9030_ID_LDO4,
  19        DA9030_ID_LDO5,
  20        DA9030_ID_LDO6,
  21        DA9030_ID_LDO7,
  22        DA9030_ID_LDO8,
  23        DA9030_ID_LDO9,
  24        DA9030_ID_LDO10,
  25        DA9030_ID_LDO11,
  26        DA9030_ID_LDO12,
  27        DA9030_ID_LDO13,
  28        DA9030_ID_LDO14,
  29        DA9030_ID_LDO15,
  30        DA9030_ID_LDO16,
  31        DA9030_ID_LDO17,
  32        DA9030_ID_LDO18,
  33        DA9030_ID_LDO19,
  34        DA9030_ID_LDO_INT,      /* LDO Internal */
  35        DA9030_ID_BAT,          /* battery charger */
  36
  37        DA9034_ID_LED_1,
  38        DA9034_ID_LED_2,
  39        DA9034_ID_VIBRA,
  40        DA9034_ID_WLED,
  41        DA9034_ID_TOUCH,
  42
  43        DA9034_ID_BUCK1,
  44        DA9034_ID_BUCK2,
  45        DA9034_ID_LDO1,
  46        DA9034_ID_LDO2,
  47        DA9034_ID_LDO3,
  48        DA9034_ID_LDO4,
  49        DA9034_ID_LDO5,
  50        DA9034_ID_LDO6,
  51        DA9034_ID_LDO7,
  52        DA9034_ID_LDO8,
  53        DA9034_ID_LDO9,
  54        DA9034_ID_LDO10,
  55        DA9034_ID_LDO11,
  56        DA9034_ID_LDO12,
  57        DA9034_ID_LDO13,
  58        DA9034_ID_LDO14,
  59        DA9034_ID_LDO15,
  60
  61        DA9035_ID_BUCK3,
  62};
  63
  64/*
  65 * DA9030/DA9034 LEDs sub-devices uses generic "struct led_info"
  66 * as the platform_data
  67 */
  68
  69/* DA9030 flags for "struct led_info"
  70 */
  71#define DA9030_LED_RATE_ON      (0 << 5)
  72#define DA9030_LED_RATE_052S    (1 << 5)
  73#define DA9030_LED_DUTY_1_16    (0 << 3)
  74#define DA9030_LED_DUTY_1_8     (1 << 3)
  75#define DA9030_LED_DUTY_1_4     (2 << 3)
  76#define DA9030_LED_DUTY_1_2     (3 << 3)
  77
  78#define DA9030_VIBRA_MODE_1P3V  (0 << 1)
  79#define DA9030_VIBRA_MODE_2P7V  (1 << 1)
  80#define DA9030_VIBRA_FREQ_1HZ   (0 << 2)
  81#define DA9030_VIBRA_FREQ_2HZ   (1 << 2)
  82#define DA9030_VIBRA_FREQ_4HZ   (2 << 2)
  83#define DA9030_VIBRA_FREQ_8HZ   (3 << 2)
  84#define DA9030_VIBRA_DUTY_ON    (0 << 4)
  85#define DA9030_VIBRA_DUTY_75P   (1 << 4)
  86#define DA9030_VIBRA_DUTY_50P   (2 << 4)
  87#define DA9030_VIBRA_DUTY_25P   (3 << 4)
  88
  89/* DA9034 flags for "struct led_info" */
  90#define DA9034_LED_RAMP         (1 << 7)
  91
  92/* DA9034 touch screen platform data */
  93struct da9034_touch_pdata {
  94        int     interval_ms;    /* sampling interval while pen down */
  95        int     x_inverted;
  96        int     y_inverted;
  97};
  98
  99/* DA9030 battery charger data */
 100struct power_supply_info;
 101
 102struct da9030_battery_info {
 103        /* battery parameters */
 104        struct power_supply_info *battery_info;
 105
 106        /* current and voltage to use for battery charging */
 107        unsigned int charge_milliamp;
 108        unsigned int charge_millivolt;
 109
 110        /* voltage thresholds (in millivolts) */
 111        int vbat_low;
 112        int vbat_crit;
 113        int vbat_charge_start;
 114        int vbat_charge_stop;
 115        int vbat_charge_restart;
 116
 117        /* battery nominal minimal and maximal voltages in millivolts */
 118        int vcharge_min;
 119        int vcharge_max;
 120
 121        /* Temperature thresholds. These are DA9030 register values
 122           "as is" and should be measured for each battery type */
 123        int tbat_low;
 124        int tbat_high;
 125        int tbat_restart;
 126
 127
 128        /* battery monitor interval (seconds) */
 129        unsigned int batmon_interval;
 130
 131        /* platform callbacks for battery low and critical events */
 132        void (*battery_low)(void);
 133        void (*battery_critical)(void);
 134};
 135
 136struct da903x_subdev_info {
 137        int             id;
 138        const char      *name;
 139        void            *platform_data;
 140};
 141
 142struct da903x_platform_data {
 143        int num_subdevs;
 144        struct da903x_subdev_info *subdevs;
 145};
 146
 147/* bit definitions for DA9030 events */
 148#define DA9030_EVENT_ONKEY              (1 << 0)
 149#define DA9030_EVENT_PWREN              (1 << 1)
 150#define DA9030_EVENT_EXTON              (1 << 2)
 151#define DA9030_EVENT_CHDET              (1 << 3)
 152#define DA9030_EVENT_TBAT               (1 << 4)
 153#define DA9030_EVENT_VBATMON            (1 << 5)
 154#define DA9030_EVENT_VBATMON_TXON       (1 << 6)
 155#define DA9030_EVENT_CHIOVER            (1 << 7)
 156#define DA9030_EVENT_TCTO               (1 << 8)
 157#define DA9030_EVENT_CCTO               (1 << 9)
 158#define DA9030_EVENT_ADC_READY          (1 << 10)
 159#define DA9030_EVENT_VBUS_4P4           (1 << 11)
 160#define DA9030_EVENT_VBUS_4P0           (1 << 12)
 161#define DA9030_EVENT_SESS_VALID         (1 << 13)
 162#define DA9030_EVENT_SRP_DETECT         (1 << 14)
 163#define DA9030_EVENT_WATCHDOG           (1 << 15)
 164#define DA9030_EVENT_LDO15              (1 << 16)
 165#define DA9030_EVENT_LDO16              (1 << 17)
 166#define DA9030_EVENT_LDO17              (1 << 18)
 167#define DA9030_EVENT_LDO18              (1 << 19)
 168#define DA9030_EVENT_LDO19              (1 << 20)
 169#define DA9030_EVENT_BUCK2              (1 << 21)
 170
 171/* bit definitions for DA9034 events */
 172#define DA9034_EVENT_ONKEY              (1 << 0)
 173#define DA9034_EVENT_EXTON              (1 << 2)
 174#define DA9034_EVENT_CHDET              (1 << 3)
 175#define DA9034_EVENT_TBAT               (1 << 4)
 176#define DA9034_EVENT_VBATMON            (1 << 5)
 177#define DA9034_EVENT_REV_IOVER          (1 << 6)
 178#define DA9034_EVENT_CH_IOVER           (1 << 7)
 179#define DA9034_EVENT_CH_TCTO            (1 << 8)
 180#define DA9034_EVENT_CH_CCTO            (1 << 9)
 181#define DA9034_EVENT_USB_DEV            (1 << 10)
 182#define DA9034_EVENT_OTGCP_IOVER        (1 << 11)
 183#define DA9034_EVENT_VBUS_4P55          (1 << 12)
 184#define DA9034_EVENT_VBUS_3P8           (1 << 13)
 185#define DA9034_EVENT_SESS_1P8           (1 << 14)
 186#define DA9034_EVENT_SRP_READY          (1 << 15)
 187#define DA9034_EVENT_ADC_MAN            (1 << 16)
 188#define DA9034_EVENT_ADC_AUTO4          (1 << 17)
 189#define DA9034_EVENT_ADC_AUTO5          (1 << 18)
 190#define DA9034_EVENT_ADC_AUTO6          (1 << 19)
 191#define DA9034_EVENT_PEN_DOWN           (1 << 20)
 192#define DA9034_EVENT_TSI_READY          (1 << 21)
 193#define DA9034_EVENT_UART_TX            (1 << 22)
 194#define DA9034_EVENT_UART_RX            (1 << 23)
 195#define DA9034_EVENT_HEADSET            (1 << 25)
 196#define DA9034_EVENT_HOOKSWITCH         (1 << 26)
 197#define DA9034_EVENT_WATCHDOG           (1 << 27)
 198
 199extern int da903x_register_notifier(struct device *dev,
 200                struct notifier_block *nb, unsigned int events);
 201extern int da903x_unregister_notifier(struct device *dev,
 202                struct notifier_block *nb, unsigned int events);
 203
 204/* Status Query Interface */
 205#define DA9030_STATUS_ONKEY             (1 << 0)
 206#define DA9030_STATUS_PWREN1            (1 << 1)
 207#define DA9030_STATUS_EXTON             (1 << 2)
 208#define DA9030_STATUS_CHDET             (1 << 3)
 209#define DA9030_STATUS_TBAT              (1 << 4)
 210#define DA9030_STATUS_VBATMON           (1 << 5)
 211#define DA9030_STATUS_VBATMON_TXON      (1 << 6)
 212#define DA9030_STATUS_MCLKDET           (1 << 7)
 213
 214#define DA9034_STATUS_ONKEY             (1 << 0)
 215#define DA9034_STATUS_EXTON             (1 << 2)
 216#define DA9034_STATUS_CHDET             (1 << 3)
 217#define DA9034_STATUS_TBAT              (1 << 4)
 218#define DA9034_STATUS_VBATMON           (1 << 5)
 219#define DA9034_STATUS_PEN_DOWN          (1 << 6)
 220#define DA9034_STATUS_MCLKDET           (1 << 7)
 221#define DA9034_STATUS_USB_DEV           (1 << 8)
 222#define DA9034_STATUS_HEADSET           (1 << 9)
 223#define DA9034_STATUS_HOOKSWITCH        (1 << 10)
 224#define DA9034_STATUS_REMCON            (1 << 11)
 225#define DA9034_STATUS_VBUS_VALID_4P55   (1 << 12)
 226#define DA9034_STATUS_VBUS_VALID_3P8    (1 << 13)
 227#define DA9034_STATUS_SESS_VALID_1P8    (1 << 14)
 228#define DA9034_STATUS_SRP_READY         (1 << 15)
 229
 230extern int da903x_query_status(struct device *dev, unsigned int status);
 231
 232
 233/* NOTE: the functions below are not intended for use outside
 234 * of the DA903x sub-device drivers
 235 */
 236extern int da903x_write(struct device *dev, int reg, uint8_t val);
 237extern int da903x_writes(struct device *dev, int reg, int len, uint8_t *val);
 238extern int da903x_read(struct device *dev, int reg, uint8_t *val);
 239extern int da903x_reads(struct device *dev, int reg, int len, uint8_t *val);
 240extern int da903x_update(struct device *dev, int reg, uint8_t val, uint8_t mask);
 241extern int da903x_set_bits(struct device *dev, int reg, uint8_t bit_mask);
 242extern int da903x_clr_bits(struct device *dev, int reg, uint8_t bit_mask);
 243#endif /* __LINUX_PMIC_DA903X_H */
 244
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.