| Todd Fischer | d183fcc | 2010-04-05 20:23:56 -0600 | [diff] [blame] | 1 | /* linux/mfd/tps6507x.h | 
|  | 2 | * | 
|  | 3 | * Functions to access TPS65070 power management chip. | 
|  | 4 | * | 
|  | 5 | * Copyright (c) 2009 RidgeRun (todd.fischer@ridgerun.com) | 
|  | 6 | * | 
|  | 7 | * | 
|  | 8 | *  For licencing details see kernel-base/COPYING | 
|  | 9 | */ | 
|  | 10 |  | 
|  | 11 | #ifndef __LINUX_MFD_TPS6507X_H | 
|  | 12 | #define __LINUX_MFD_TPS6507X_H | 
|  | 13 |  | 
|  | 14 | /* | 
|  | 15 | * ---------------------------------------------------------------------------- | 
|  | 16 | * Registers, all 8 bits | 
|  | 17 | * ---------------------------------------------------------------------------- | 
|  | 18 | */ | 
|  | 19 |  | 
|  | 20 |  | 
|  | 21 | /* Register definitions */ | 
|  | 22 | #define	TPS6507X_REG_PPATH1			0X01 | 
|  | 23 | #define	TPS6507X_CHG_USB			BIT(7) | 
|  | 24 | #define	TPS6507X_CHG_AC				BIT(6) | 
|  | 25 | #define	TPS6507X_CHG_USB_PW_ENABLE		BIT(5) | 
|  | 26 | #define	TPS6507X_CHG_AC_PW_ENABLE		BIT(4) | 
|  | 27 | #define	TPS6507X_CHG_AC_CURRENT			BIT(2) | 
|  | 28 | #define	TPS6507X_CHG_USB_CURRENT		BIT(0) | 
|  | 29 |  | 
|  | 30 | #define	TPS6507X_REG_INT			0X02 | 
|  | 31 | #define	TPS6507X_REG_MASK_AC_USB		BIT(7) | 
|  | 32 | #define	TPS6507X_REG_MASK_TSC			BIT(6) | 
|  | 33 | #define	TPS6507X_REG_MASK_PB_IN			BIT(5) | 
|  | 34 | #define	TPS6507X_REG_TSC_INT			BIT(3) | 
|  | 35 | #define	TPS6507X_REG_PB_IN_INT			BIT(2) | 
|  | 36 | #define	TPS6507X_REG_AC_USB_APPLIED		BIT(1) | 
|  | 37 | #define	TPS6507X_REG_AC_USB_REMOVED		BIT(0) | 
|  | 38 |  | 
|  | 39 | #define	TPS6507X_REG_CHGCONFIG0			0X03 | 
|  | 40 |  | 
|  | 41 | #define	TPS6507X_REG_CHGCONFIG1			0X04 | 
|  | 42 | #define	TPS6507X_CON_CTRL1_DCDC1_ENABLE		BIT(4) | 
|  | 43 | #define	TPS6507X_CON_CTRL1_DCDC2_ENABLE		BIT(3) | 
|  | 44 | #define	TPS6507X_CON_CTRL1_DCDC3_ENABLE		BIT(2) | 
|  | 45 | #define	TPS6507X_CON_CTRL1_LDO1_ENABLE		BIT(1) | 
|  | 46 | #define	TPS6507X_CON_CTRL1_LDO2_ENABLE		BIT(0) | 
|  | 47 |  | 
|  | 48 | #define	TPS6507X_REG_CHGCONFIG2			0X05 | 
|  | 49 |  | 
|  | 50 | #define	TPS6507X_REG_CHGCONFIG3			0X06 | 
|  | 51 |  | 
|  | 52 | #define	TPS6507X_REG_ADCONFIG			0X07 | 
|  | 53 | #define	TPS6507X_ADCONFIG_AD_ENABLE		BIT(7) | 
|  | 54 | #define	TPS6507X_ADCONFIG_START_CONVERSION	BIT(6) | 
|  | 55 | #define	TPS6507X_ADCONFIG_CONVERSION_DONE	BIT(5) | 
|  | 56 | #define	TPS6507X_ADCONFIG_VREF_ENABLE		BIT(4) | 
|  | 57 | #define	TPS6507X_ADCONFIG_INPUT_AD_IN1		0 | 
|  | 58 | #define	TPS6507X_ADCONFIG_INPUT_AD_IN2		1 | 
|  | 59 | #define	TPS6507X_ADCONFIG_INPUT_AD_IN3		2 | 
|  | 60 | #define	TPS6507X_ADCONFIG_INPUT_AD_IN4		3 | 
|  | 61 | #define	TPS6507X_ADCONFIG_INPUT_TS_PIN		4 | 
|  | 62 | #define	TPS6507X_ADCONFIG_INPUT_BAT_CURRENT	5 | 
|  | 63 | #define	TPS6507X_ADCONFIG_INPUT_AC_VOLTAGE	6 | 
|  | 64 | #define	TPS6507X_ADCONFIG_INPUT_SYS_VOLTAGE	7 | 
|  | 65 | #define	TPS6507X_ADCONFIG_INPUT_CHARGER_VOLTAGE 8 | 
|  | 66 | #define	TPS6507X_ADCONFIG_INPUT_BAT_VOLTAGE	9 | 
|  | 67 | #define	TPS6507X_ADCONFIG_INPUT_THRESHOLD_VOLTAGE 10 | 
|  | 68 | #define	TPS6507X_ADCONFIG_INPUT_ISET1_VOLTAGE	11 | 
|  | 69 | #define	TPS6507X_ADCONFIG_INPUT_ISET2_VOLTAGE	12 | 
|  | 70 | #define	TPS6507X_ADCONFIG_INPUT_REAL_TSC	14 | 
|  | 71 | #define	TPS6507X_ADCONFIG_INPUT_TSC		15 | 
|  | 72 |  | 
|  | 73 | #define	TPS6507X_REG_TSCMODE			0X08 | 
|  | 74 | #define	TPS6507X_TSCMODE_X_POSITION		0 | 
|  | 75 | #define	TPS6507X_TSCMODE_Y_POSITION		1 | 
|  | 76 | #define	TPS6507X_TSCMODE_PRESSURE		2 | 
|  | 77 | #define	TPS6507X_TSCMODE_X_PLATE		3 | 
|  | 78 | #define	TPS6507X_TSCMODE_Y_PLATE		4 | 
|  | 79 | #define	TPS6507X_TSCMODE_STANDBY		5 | 
|  | 80 | #define	TPS6507X_TSCMODE_ADC_INPUT		6 | 
|  | 81 | #define	TPS6507X_TSCMODE_DISABLE		7 | 
|  | 82 |  | 
|  | 83 | #define	TPS6507X_REG_ADRESULT_1			0X09 | 
|  | 84 |  | 
|  | 85 | #define	TPS6507X_REG_ADRESULT_2			0X0A | 
|  | 86 | #define	TPS6507X_REG_ADRESULT_2_MASK		(BIT(1) | BIT(0)) | 
|  | 87 |  | 
|  | 88 | #define	TPS6507X_REG_PGOOD			0X0B | 
|  | 89 |  | 
|  | 90 | #define	TPS6507X_REG_PGOODMASK			0X0C | 
|  | 91 |  | 
|  | 92 | #define	TPS6507X_REG_CON_CTRL1			0X0D | 
|  | 93 | #define	TPS6507X_CON_CTRL1_DCDC1_ENABLE		BIT(4) | 
|  | 94 | #define	TPS6507X_CON_CTRL1_DCDC2_ENABLE		BIT(3) | 
|  | 95 | #define	TPS6507X_CON_CTRL1_DCDC3_ENABLE		BIT(2) | 
|  | 96 | #define	TPS6507X_CON_CTRL1_LDO1_ENABLE		BIT(1) | 
|  | 97 | #define	TPS6507X_CON_CTRL1_LDO2_ENABLE		BIT(0) | 
|  | 98 |  | 
|  | 99 | #define	TPS6507X_REG_CON_CTRL2			0X0E | 
|  | 100 |  | 
|  | 101 | #define	TPS6507X_REG_CON_CTRL3			0X0F | 
|  | 102 |  | 
|  | 103 | #define	TPS6507X_REG_DEFDCDC1			0X10 | 
|  | 104 | #define TPS6507X_DEFDCDC1_DCDC1_EXT_ADJ_EN	BIT(7) | 
|  | 105 | #define TPS6507X_DEFDCDC1_DCDC1_MASK		0X3F | 
|  | 106 |  | 
|  | 107 | #define	TPS6507X_REG_DEFDCDC2_LOW		0X11 | 
|  | 108 | #define TPS6507X_DEFDCDC2_LOW_DCDC2_MASK	0X3F | 
|  | 109 |  | 
|  | 110 | #define	TPS6507X_REG_DEFDCDC2_HIGH		0X12 | 
|  | 111 | #define TPS6507X_DEFDCDC2_HIGH_DCDC2_MASK	0X3F | 
|  | 112 |  | 
|  | 113 | #define	TPS6507X_REG_DEFDCDC3_LOW		0X13 | 
|  | 114 | #define TPS6507X_DEFDCDC3_LOW_DCDC3_MASK	0X3F | 
|  | 115 |  | 
|  | 116 | #define	TPS6507X_REG_DEFDCDC3_HIGH		0X14 | 
|  | 117 | #define TPS6507X_DEFDCDC3_HIGH_DCDC3_MASK	0X3F | 
|  | 118 |  | 
|  | 119 | #define	TPS6507X_REG_DEFSLEW			0X15 | 
|  | 120 |  | 
|  | 121 | #define	TPS6507X_REG_LDO_CTRL1			0X16 | 
|  | 122 | #define TPS6507X_REG_LDO_CTRL1_LDO1_MASK	0X0F | 
|  | 123 |  | 
|  | 124 | #define	TPS6507X_REG_DEFLDO2			0X17 | 
|  | 125 | #define TPS6507X_REG_DEFLDO2_LDO2_MASK		0X3F | 
|  | 126 |  | 
|  | 127 | #define	TPS6507X_REG_WLED_CTRL1			0X18 | 
|  | 128 |  | 
|  | 129 | #define	TPS6507X_REG_WLED_CTRL2			0X19 | 
|  | 130 |  | 
|  | 131 | /* VDCDC MASK */ | 
|  | 132 | #define TPS6507X_DEFDCDCX_DCDC_MASK		0X3F | 
|  | 133 |  | 
| Todd Fischer | 31dd6a2 | 2010-04-08 09:04:55 +0200 | [diff] [blame] | 134 | #define TPS6507X_MAX_REGISTER			0X19 | 
|  | 135 |  | 
| Todd Fischer | 0bc20bb | 2010-04-05 20:23:57 -0600 | [diff] [blame] | 136 | /** | 
|  | 137 | * struct tps6507x_board - packages regulator and touchscreen init data | 
|  | 138 | * @tps6507x_regulator_data: regulator initialization values | 
|  | 139 | * | 
|  | 140 | * Board data may be used to initialize regulator and touchscreen. | 
|  | 141 | */ | 
|  | 142 |  | 
|  | 143 | struct tps6507x_board { | 
|  | 144 | struct regulator_init_data *tps6507x_pmic_init_data; | 
| Todd Fischer | 7525996 | 2010-04-05 17:53:12 -0600 | [diff] [blame] | 145 | struct touchscreen_init_data *tps6507x_ts_init_data; | 
| Todd Fischer | 0bc20bb | 2010-04-05 20:23:57 -0600 | [diff] [blame] | 146 | }; | 
|  | 147 |  | 
| Todd Fischer | 31dd6a2 | 2010-04-08 09:04:55 +0200 | [diff] [blame] | 148 | /** | 
|  | 149 | * struct tps6507x_dev - tps6507x sub-driver chip access routines | 
|  | 150 | * @read_dev() - I2C register read function | 
|  | 151 | * @write_dev() - I2C register write function | 
|  | 152 | * | 
|  | 153 | * Device data may be used to access the TPS6507x chip | 
|  | 154 | */ | 
|  | 155 |  | 
|  | 156 | struct tps6507x_dev { | 
|  | 157 | struct device *dev; | 
|  | 158 | struct i2c_client *i2c_client; | 
|  | 159 | int (*read_dev)(struct tps6507x_dev *tps6507x, char reg, int size, | 
|  | 160 | void *dest); | 
|  | 161 | int (*write_dev)(struct tps6507x_dev *tps6507x, char reg, int size, | 
|  | 162 | void *src); | 
|  | 163 |  | 
|  | 164 | /* Client devices */ | 
|  | 165 | struct tps6507x_pmic *pmic; | 
| Todd Fischer | 7525996 | 2010-04-05 17:53:12 -0600 | [diff] [blame] | 166 | struct tps6507x_ts *ts; | 
| Todd Fischer | 31dd6a2 | 2010-04-08 09:04:55 +0200 | [diff] [blame] | 167 | }; | 
|  | 168 |  | 
| Todd Fischer | d183fcc | 2010-04-05 20:23:56 -0600 | [diff] [blame] | 169 | #endif /*  __LINUX_MFD_TPS6507X_H */ |