include/linux/mfd/da903x.h
changeset 0 aa628870c1d3
child 2 d1f6d8b6f81c
equal deleted inserted replaced
-1:000000000000 0:aa628870c1d3
       
     1 #ifndef __LINUX_PMIC_DA903X_H
       
     2 #define __LINUX_PMIC_DA903X_H
       
     3 
       
     4 /* Unified sub device IDs for DA9030/DA9034 */
       
     5 enum {
       
     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 
       
    36 	DA9034_ID_LED_1,
       
    37 	DA9034_ID_LED_2,
       
    38 	DA9034_ID_VIBRA,
       
    39 	DA9034_ID_WLED,
       
    40 	DA9034_ID_TOUCH,
       
    41 
       
    42 	DA9034_ID_BUCK1,
       
    43 	DA9034_ID_BUCK2,
       
    44 	DA9034_ID_LDO1,
       
    45 	DA9034_ID_LDO2,
       
    46 	DA9034_ID_LDO3,
       
    47 	DA9034_ID_LDO4,
       
    48 	DA9034_ID_LDO5,
       
    49 	DA9034_ID_LDO6,
       
    50 	DA9034_ID_LDO7,
       
    51 	DA9034_ID_LDO8,
       
    52 	DA9034_ID_LDO9,
       
    53 	DA9034_ID_LDO10,
       
    54 	DA9034_ID_LDO11,
       
    55 	DA9034_ID_LDO12,
       
    56 	DA9034_ID_LDO13,
       
    57 	DA9034_ID_LDO14,
       
    58 	DA9034_ID_LDO15,
       
    59 };
       
    60 
       
    61 /*
       
    62  * DA9030/DA9034 LEDs sub-devices uses generic "struct led_info"
       
    63  * as the platform_data
       
    64  */
       
    65 
       
    66 /* DA9030 flags for "struct led_info"
       
    67  */
       
    68 #define DA9030_LED_RATE_ON	(0 << 5)
       
    69 #define DA9030_LED_RATE_052S	(1 << 5)
       
    70 #define DA9030_LED_DUTY_1_16	(0 << 3)
       
    71 #define DA9030_LED_DUTY_1_8	(1 << 3)
       
    72 #define DA9030_LED_DUTY_1_4	(2 << 3)
       
    73 #define DA9030_LED_DUTY_1_2	(3 << 3)
       
    74 
       
    75 #define DA9030_VIBRA_MODE_1P3V	(0 << 1)
       
    76 #define DA9030_VIBRA_MODE_2P7V	(1 << 1)
       
    77 #define DA9030_VIBRA_FREQ_1HZ	(0 << 2)
       
    78 #define DA9030_VIBRA_FREQ_2HZ	(1 << 2)
       
    79 #define DA9030_VIBRA_FREQ_4HZ	(2 << 2)
       
    80 #define DA9030_VIBRA_FREQ_8HZ	(3 << 2)
       
    81 #define DA9030_VIBRA_DUTY_ON	(0 << 4)
       
    82 #define DA9030_VIBRA_DUTY_75P	(1 << 4)
       
    83 #define DA9030_VIBRA_DUTY_50P	(2 << 4)
       
    84 #define DA9030_VIBRA_DUTY_25P	(3 << 4)
       
    85 
       
    86 /* DA9034 flags for "struct led_info" */
       
    87 #define DA9034_LED_RAMP		(1 << 7)
       
    88 
       
    89 /* DA9034 touch screen platform data */
       
    90 struct da9034_touch_pdata {
       
    91 	int	interval_ms;	/* sampling interval while pen down */
       
    92 	int	x_inverted;
       
    93 	int	y_inverted;
       
    94 };
       
    95 
       
    96 struct da903x_subdev_info {
       
    97 	int		id;
       
    98 	const char	*name;
       
    99 	void		*platform_data;
       
   100 };
       
   101 
       
   102 struct da903x_platform_data {
       
   103 	int num_subdevs;
       
   104 	struct da903x_subdev_info *subdevs;
       
   105 };
       
   106 
       
   107 /* bit definitions for DA9030 events */
       
   108 #define DA9030_EVENT_ONKEY		(1 << 0)
       
   109 #define	DA9030_EVENT_PWREN		(1 << 1)
       
   110 #define	DA9030_EVENT_EXTON		(1 << 2)
       
   111 #define	DA9030_EVENT_CHDET		(1 << 3)
       
   112 #define	DA9030_EVENT_TBAT		(1 << 4)
       
   113 #define	DA9030_EVENT_VBATMON		(1 << 5)
       
   114 #define	DA9030_EVENT_VBATMON_TXON	(1 << 6)
       
   115 #define	DA9030_EVENT_CHIOVER		(1 << 7)
       
   116 #define	DA9030_EVENT_TCTO		(1 << 8)
       
   117 #define	DA9030_EVENT_CCTO		(1 << 9)
       
   118 #define	DA9030_EVENT_ADC_READY		(1 << 10)
       
   119 #define	DA9030_EVENT_VBUS_4P4		(1 << 11)
       
   120 #define	DA9030_EVENT_VBUS_4P0		(1 << 12)
       
   121 #define	DA9030_EVENT_SESS_VALID		(1 << 13)
       
   122 #define	DA9030_EVENT_SRP_DETECT		(1 << 14)
       
   123 #define	DA9030_EVENT_WATCHDOG		(1 << 15)
       
   124 #define	DA9030_EVENT_LDO15		(1 << 16)
       
   125 #define	DA9030_EVENT_LDO16		(1 << 17)
       
   126 #define	DA9030_EVENT_LDO17		(1 << 18)
       
   127 #define	DA9030_EVENT_LDO18		(1 << 19)
       
   128 #define	DA9030_EVENT_LDO19		(1 << 20)
       
   129 #define	DA9030_EVENT_BUCK2		(1 << 21)
       
   130 
       
   131 /* bit definitions for DA9034 events */
       
   132 #define DA9034_EVENT_ONKEY		(1 << 0)
       
   133 #define DA9034_EVENT_EXTON		(1 << 2)
       
   134 #define DA9034_EVENT_CHDET		(1 << 3)
       
   135 #define DA9034_EVENT_TBAT		(1 << 4)
       
   136 #define DA9034_EVENT_VBATMON		(1 << 5)
       
   137 #define DA9034_EVENT_REV_IOVER		(1 << 6)
       
   138 #define DA9034_EVENT_CH_IOVER		(1 << 7)
       
   139 #define DA9034_EVENT_CH_TCTO		(1 << 8)
       
   140 #define DA9034_EVENT_CH_CCTO		(1 << 9)
       
   141 #define DA9034_EVENT_USB_DEV		(1 << 10)
       
   142 #define DA9034_EVENT_OTGCP_IOVER	(1 << 11)
       
   143 #define DA9034_EVENT_VBUS_4P55		(1 << 12)
       
   144 #define DA9034_EVENT_VBUS_3P8		(1 << 13)
       
   145 #define DA9034_EVENT_SESS_1P8		(1 << 14)
       
   146 #define DA9034_EVENT_SRP_READY		(1 << 15)
       
   147 #define DA9034_EVENT_ADC_MAN		(1 << 16)
       
   148 #define DA9034_EVENT_ADC_AUTO4		(1 << 17)
       
   149 #define DA9034_EVENT_ADC_AUTO5		(1 << 18)
       
   150 #define DA9034_EVENT_ADC_AUTO6		(1 << 19)
       
   151 #define DA9034_EVENT_PEN_DOWN		(1 << 20)
       
   152 #define DA9034_EVENT_TSI_READY		(1 << 21)
       
   153 #define DA9034_EVENT_UART_TX		(1 << 22)
       
   154 #define DA9034_EVENT_UART_RX		(1 << 23)
       
   155 #define DA9034_EVENT_HEADSET		(1 << 25)
       
   156 #define DA9034_EVENT_HOOKSWITCH		(1 << 26)
       
   157 #define DA9034_EVENT_WATCHDOG		(1 << 27)
       
   158 
       
   159 extern int da903x_register_notifier(struct device *dev,
       
   160 		struct notifier_block *nb, unsigned int events);
       
   161 extern int da903x_unregister_notifier(struct device *dev,
       
   162 		struct notifier_block *nb, unsigned int events);
       
   163 
       
   164 /* Status Query Interface */
       
   165 #define DA9030_STATUS_ONKEY		(1 << 0)
       
   166 #define DA9030_STATUS_PWREN1		(1 << 1)
       
   167 #define DA9030_STATUS_EXTON		(1 << 2)
       
   168 #define DA9030_STATUS_CHDET		(1 << 3)
       
   169 #define DA9030_STATUS_TBAT		(1 << 4)
       
   170 #define DA9030_STATUS_VBATMON		(1 << 5)
       
   171 #define DA9030_STATUS_VBATMON_TXON	(1 << 6)
       
   172 #define DA9030_STATUS_MCLKDET		(1 << 7)
       
   173 
       
   174 #define DA9034_STATUS_ONKEY		(1 << 0)
       
   175 #define DA9034_STATUS_EXTON		(1 << 2)
       
   176 #define DA9034_STATUS_CHDET		(1 << 3)
       
   177 #define DA9034_STATUS_TBAT		(1 << 4)
       
   178 #define DA9034_STATUS_VBATMON		(1 << 5)
       
   179 #define DA9034_STATUS_PEN_DOWN		(1 << 6)
       
   180 #define DA9034_STATUS_MCLKDET		(1 << 7)
       
   181 #define DA9034_STATUS_USB_DEV		(1 << 8)
       
   182 #define DA9034_STATUS_HEADSET		(1 << 9)
       
   183 #define DA9034_STATUS_HOOKSWITCH	(1 << 10)
       
   184 #define DA9034_STATUS_REMCON		(1 << 11)
       
   185 #define DA9034_STATUS_VBUS_VALID_4P55	(1 << 12)
       
   186 #define DA9034_STATUS_VBUS_VALID_3P8	(1 << 13)
       
   187 #define DA9034_STATUS_SESS_VALID_1P8	(1 << 14)
       
   188 #define DA9034_STATUS_SRP_READY		(1 << 15)
       
   189 
       
   190 extern int da903x_query_status(struct device *dev, unsigned int status);
       
   191 
       
   192 
       
   193 /* NOTE: the two functions below are not intended for use outside
       
   194  * of the DA9034 sub-device drivers
       
   195  */
       
   196 extern int da903x_write(struct device *dev, int reg, uint8_t val);
       
   197 extern int da903x_read(struct device *dev, int reg, uint8_t *val);
       
   198 extern int da903x_update(struct device *dev, int reg, uint8_t val, uint8_t mask);
       
   199 extern int da903x_set_bits(struct device *dev, int reg, uint8_t bit_mask);
       
   200 extern int da903x_clr_bits(struct device *dev, int reg, uint8_t bit_mask);
       
   201 #endif /* __LINUX_PMIC_DA903X_H */