0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 #ifndef __LINUX_MFD_MAX8997_H
0018 #define __LINUX_MFD_MAX8997_H
0019
0020 #include <linux/regulator/consumer.h>
0021
0022
0023 enum max8997_regulators {
0024 MAX8997_LDO1 = 0,
0025 MAX8997_LDO2,
0026 MAX8997_LDO3,
0027 MAX8997_LDO4,
0028 MAX8997_LDO5,
0029 MAX8997_LDO6,
0030 MAX8997_LDO7,
0031 MAX8997_LDO8,
0032 MAX8997_LDO9,
0033 MAX8997_LDO10,
0034 MAX8997_LDO11,
0035 MAX8997_LDO12,
0036 MAX8997_LDO13,
0037 MAX8997_LDO14,
0038 MAX8997_LDO15,
0039 MAX8997_LDO16,
0040 MAX8997_LDO17,
0041 MAX8997_LDO18,
0042 MAX8997_LDO21,
0043 MAX8997_BUCK1,
0044 MAX8997_BUCK2,
0045 MAX8997_BUCK3,
0046 MAX8997_BUCK4,
0047 MAX8997_BUCK5,
0048 MAX8997_BUCK6,
0049 MAX8997_BUCK7,
0050 MAX8997_EN32KHZ_AP,
0051 MAX8997_EN32KHZ_CP,
0052 MAX8997_ENVICHG,
0053 MAX8997_ESAFEOUT1,
0054 MAX8997_ESAFEOUT2,
0055 MAX8997_CHARGER_CV,
0056 MAX8997_CHARGER,
0057 MAX8997_CHARGER_TOPOFF,
0058
0059 MAX8997_REG_MAX,
0060 };
0061
0062 struct max8997_regulator_data {
0063 int id;
0064 struct regulator_init_data *initdata;
0065 struct device_node *reg_node;
0066 };
0067
0068 struct max8997_muic_reg_data {
0069 u8 addr;
0070 u8 data;
0071 };
0072
0073
0074
0075
0076
0077
0078
0079 struct max8997_muic_platform_data {
0080 struct max8997_muic_reg_data *init_data;
0081 int num_init_data;
0082
0083
0084 int detcable_delay_ms;
0085
0086
0087
0088
0089
0090 int path_usb;
0091 int path_uart;
0092 };
0093
0094 enum max8997_haptic_motor_type {
0095 MAX8997_HAPTIC_ERM,
0096 MAX8997_HAPTIC_LRA,
0097 };
0098
0099 enum max8997_haptic_pulse_mode {
0100 MAX8997_EXTERNAL_MODE,
0101 MAX8997_INTERNAL_MODE,
0102 };
0103
0104 enum max8997_haptic_pwm_divisor {
0105 MAX8997_PWM_DIVISOR_32,
0106 MAX8997_PWM_DIVISOR_64,
0107 MAX8997_PWM_DIVISOR_128,
0108 MAX8997_PWM_DIVISOR_256,
0109 };
0110
0111
0112
0113
0114
0115
0116
0117
0118
0119
0120
0121
0122
0123
0124
0125
0126
0127
0128
0129
0130 struct max8997_haptic_platform_data {
0131 unsigned int pwm_channel_id;
0132 unsigned int pwm_period;
0133
0134 enum max8997_haptic_motor_type type;
0135 enum max8997_haptic_pulse_mode mode;
0136 enum max8997_haptic_pwm_divisor pwm_divisor;
0137
0138 unsigned int internal_mode_pattern;
0139 unsigned int pattern_cycle;
0140 unsigned int pattern_signal_period;
0141 };
0142
0143 enum max8997_led_mode {
0144 MAX8997_NONE,
0145 MAX8997_FLASH_MODE,
0146 MAX8997_MOVIE_MODE,
0147 MAX8997_FLASH_PIN_CONTROL_MODE,
0148 MAX8997_MOVIE_PIN_CONTROL_MODE,
0149 };
0150
0151
0152
0153
0154
0155
0156
0157
0158
0159
0160 struct max8997_led_platform_data {
0161 enum max8997_led_mode mode[2];
0162 u8 brightness[2];
0163 };
0164
0165 struct max8997_platform_data {
0166
0167 int ono;
0168
0169
0170 struct max8997_regulator_data *regulators;
0171 int num_regulators;
0172
0173
0174
0175
0176
0177
0178
0179
0180
0181
0182
0183 bool ignore_gpiodvs_side_effect;
0184 int buck125_gpios[3];
0185 int buck125_default_idx;
0186 unsigned int buck1_voltage[8];
0187 bool buck1_gpiodvs;
0188 unsigned int buck2_voltage[8];
0189 bool buck2_gpiodvs;
0190 unsigned int buck5_voltage[8];
0191 bool buck5_gpiodvs;
0192
0193
0194
0195 int eoc_mA;
0196
0197 int timeout;
0198
0199
0200 struct max8997_muic_platform_data *muic_pdata;
0201
0202
0203 struct max8997_haptic_platform_data *haptic_pdata;
0204
0205
0206
0207 struct max8997_led_platform_data *led_pdata;
0208 };
0209
0210 #endif