cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

da903x.h (7218B)


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