1
2
3
4
5
6
7
8
9
10#ifndef __MFD_WM831X_PDATA_H__
11#define __MFD_WM831X_PDATA_H__
12
13struct wm831x;
14struct regulator_init_data;
15
16struct wm831x_backlight_pdata {
17 int isink;
18 int max_uA;
19};
20
21struct wm831x_backup_pdata {
22 int charger_enable;
23 int no_constant_voltage;
24 int vlim;
25 int ilim;
26};
27
28struct wm831x_battery_pdata {
29 int enable;
30 int fast_enable;
31 int off_mask;
32 int trickle_ilim;
33 int vsel;
34 int eoc_iterm;
35 int fast_ilim;
36 int timeout;
37};
38
39
40
41
42
43
44
45
46
47
48
49struct wm831x_buckv_pdata {
50 int dvs_gpio;
51 int dvs_control_src;
52 int dvs_init_state;
53 int dvs_state_gpio;
54};
55
56
57
58
59enum wm831x_status_src {
60 WM831X_STATUS_PRESERVE = 0,
61 WM831X_STATUS_OTP = 1,
62 WM831X_STATUS_POWER = 2,
63 WM831X_STATUS_CHARGER = 3,
64 WM831X_STATUS_MANUAL = 4,
65};
66
67struct wm831x_status_pdata {
68 enum wm831x_status_src default_src;
69 const char *name;
70 const char *default_trigger;
71};
72
73struct wm831x_touch_pdata {
74 int fivewire;
75 int isel;
76 int rpu;
77 int pressure;
78 unsigned int data_irq;
79 int data_irqf;
80 unsigned int pd_irq;
81 int pd_irqf;
82};
83
84enum wm831x_watchdog_action {
85 WM831X_WDOG_NONE = 0,
86 WM831X_WDOG_INTERRUPT = 1,
87 WM831X_WDOG_RESET = 2,
88 WM831X_WDOG_WAKE = 3,
89};
90
91struct wm831x_watchdog_pdata {
92 enum wm831x_watchdog_action primary, secondary;
93 int update_gpio;
94 unsigned int software:1;
95};
96
97#define WM831X_MAX_STATUS 2
98#define WM831X_MAX_DCDC 4
99#define WM831X_MAX_EPE 2
100#define WM831X_MAX_LDO 11
101#define WM831X_MAX_ISINK 2
102
103#define WM831X_GPIO_CONFIGURE 0x10000
104#define WM831X_GPIO_NUM 16
105
106struct wm831x_pdata {
107
108 int wm831x_num;
109
110
111 int (*pre_init)(struct wm831x *wm831x);
112
113 int (*post_init)(struct wm831x *wm831x);
114
115
116 bool irq_cmos;
117
118
119 bool disable_touch;
120
121
122 bool soft_shutdown;
123
124 int irq_base;
125 int gpio_base;
126 int gpio_defaults[WM831X_GPIO_NUM];
127 struct wm831x_backlight_pdata *backlight;
128 struct wm831x_backup_pdata *backup;
129 struct wm831x_battery_pdata *battery;
130 struct wm831x_touch_pdata *touch;
131 struct wm831x_watchdog_pdata *watchdog;
132
133
134 struct wm831x_status_pdata *status[WM831X_MAX_STATUS];
135
136 struct regulator_init_data *dcdc[WM831X_MAX_DCDC];
137
138 struct regulator_init_data *epe[WM831X_MAX_EPE];
139
140 struct regulator_init_data *ldo[WM831X_MAX_LDO];
141
142 struct regulator_init_data *isink[WM831X_MAX_ISINK];
143};
144
145#endif
146