diff options
Diffstat (limited to 'include/linux/mfd/abx500')
-rw-r--r-- | include/linux/mfd/abx500/ab8500-bm.h | 37 | ||||
-rw-r--r-- | include/linux/mfd/abx500/ab8500-gpio.h | 16 | ||||
-rw-r--r-- | include/linux/mfd/abx500/ab8500-sysctrl.h | 5 | ||||
-rw-r--r-- | include/linux/mfd/abx500/ab8500.h | 291 | ||||
-rw-r--r-- | include/linux/mfd/abx500/ux500_chargalg.h | 5 |
5 files changed, 264 insertions, 90 deletions
diff --git a/include/linux/mfd/abx500/ab8500-bm.h b/include/linux/mfd/abx500/ab8500-bm.h index 9bd037df97d9..8d35bfe164c8 100644 --- a/include/linux/mfd/abx500/ab8500-bm.h +++ b/include/linux/mfd/abx500/ab8500-bm.h | |||
@@ -23,6 +23,7 @@ | |||
23 | * Bank : 0x5 | 23 | * Bank : 0x5 |
24 | */ | 24 | */ |
25 | #define AB8500_USB_LINE_STAT_REG 0x80 | 25 | #define AB8500_USB_LINE_STAT_REG 0x80 |
26 | #define AB8500_USB_LINK1_STAT_REG 0x94 | ||
26 | 27 | ||
27 | /* | 28 | /* |
28 | * Charger / status register offfsets | 29 | * Charger / status register offfsets |
@@ -225,6 +226,8 @@ | |||
225 | /* BatCtrl Current Source Constants */ | 226 | /* BatCtrl Current Source Constants */ |
226 | #define BAT_CTRL_7U_ENA 0x01 | 227 | #define BAT_CTRL_7U_ENA 0x01 |
227 | #define BAT_CTRL_20U_ENA 0x02 | 228 | #define BAT_CTRL_20U_ENA 0x02 |
229 | #define BAT_CTRL_18U_ENA 0x01 | ||
230 | #define BAT_CTRL_16U_ENA 0x02 | ||
228 | #define BAT_CTRL_CMP_ENA 0x04 | 231 | #define BAT_CTRL_CMP_ENA 0x04 |
229 | #define FORCE_BAT_CTRL_CMP_HIGH 0x08 | 232 | #define FORCE_BAT_CTRL_CMP_HIGH 0x08 |
230 | #define BAT_CTRL_PULL_UP_ENA 0x10 | 233 | #define BAT_CTRL_PULL_UP_ENA 0x10 |
@@ -355,6 +358,7 @@ struct ab8500_bm_charger_parameters { | |||
355 | * @bkup_bat_v voltage which we charge the backup battery with | 358 | * @bkup_bat_v voltage which we charge the backup battery with |
356 | * @bkup_bat_i current which we charge the backup battery with | 359 | * @bkup_bat_i current which we charge the backup battery with |
357 | * @no_maintenance indicates that maintenance charging is disabled | 360 | * @no_maintenance indicates that maintenance charging is disabled |
361 | * @capacity_scaling indicates whether capacity scaling is to be used | ||
358 | * @adc_therm placement of thermistor, batctrl or battemp adc | 362 | * @adc_therm placement of thermistor, batctrl or battemp adc |
359 | * @chg_unknown_bat flag to enable charging of unknown batteries | 363 | * @chg_unknown_bat flag to enable charging of unknown batteries |
360 | * @enable_overshoot flag to enable VBAT overshoot control | 364 | * @enable_overshoot flag to enable VBAT overshoot control |
@@ -383,6 +387,7 @@ struct ab8500_bm_data { | |||
383 | int bkup_bat_v; | 387 | int bkup_bat_v; |
384 | int bkup_bat_i; | 388 | int bkup_bat_i; |
385 | bool no_maintenance; | 389 | bool no_maintenance; |
390 | bool capacity_scaling; | ||
386 | bool chg_unknown_bat; | 391 | bool chg_unknown_bat; |
387 | bool enable_overshoot; | 392 | bool enable_overshoot; |
388 | enum abx500_adc_therm adc_therm; | 393 | enum abx500_adc_therm adc_therm; |
@@ -399,26 +404,6 @@ struct ab8500_bm_data { | |||
399 | const struct ab8500_fg_parameters *fg_params; | 404 | const struct ab8500_fg_parameters *fg_params; |
400 | }; | 405 | }; |
401 | 406 | ||
402 | struct ab8500_charger_platform_data { | ||
403 | char **supplied_to; | ||
404 | size_t num_supplicants; | ||
405 | bool autopower_cfg; | ||
406 | }; | ||
407 | |||
408 | struct ab8500_btemp_platform_data { | ||
409 | char **supplied_to; | ||
410 | size_t num_supplicants; | ||
411 | }; | ||
412 | |||
413 | struct ab8500_fg_platform_data { | ||
414 | char **supplied_to; | ||
415 | size_t num_supplicants; | ||
416 | }; | ||
417 | |||
418 | struct ab8500_chargalg_platform_data { | ||
419 | char **supplied_to; | ||
420 | size_t num_supplicants; | ||
421 | }; | ||
422 | struct ab8500_btemp; | 407 | struct ab8500_btemp; |
423 | struct ab8500_gpadc; | 408 | struct ab8500_gpadc; |
424 | struct ab8500_fg; | 409 | struct ab8500_fg; |
@@ -434,20 +419,10 @@ struct ab8500_fg *ab8500_fg_get(void); | |||
434 | int ab8500_fg_inst_curr_blocking(struct ab8500_fg *dev); | 419 | int ab8500_fg_inst_curr_blocking(struct ab8500_fg *dev); |
435 | int ab8500_fg_inst_curr_start(struct ab8500_fg *di); | 420 | int ab8500_fg_inst_curr_start(struct ab8500_fg *di); |
436 | int ab8500_fg_inst_curr_finalize(struct ab8500_fg *di, int *res); | 421 | int ab8500_fg_inst_curr_finalize(struct ab8500_fg *di, int *res); |
422 | int ab8500_fg_inst_curr_started(struct ab8500_fg *di); | ||
437 | int ab8500_fg_inst_curr_done(struct ab8500_fg *di); | 423 | int ab8500_fg_inst_curr_done(struct ab8500_fg *di); |
438 | 424 | ||
439 | #else | 425 | #else |
440 | static struct abx500_bm_data ab8500_bm_data; | 426 | static struct abx500_bm_data ab8500_bm_data; |
441 | |||
442 | static inline int ab8500_fg_inst_curr_start(struct ab8500_fg *di) | ||
443 | { | ||
444 | return -ENODEV; | ||
445 | } | ||
446 | |||
447 | static inline int ab8500_fg_inst_curr_finalize(struct ab8500_fg *di, int *res) | ||
448 | { | ||
449 | return -ENODEV; | ||
450 | } | ||
451 | |||
452 | #endif | 427 | #endif |
453 | #endif /* _AB8500_BM_H */ | 428 | #endif /* _AB8500_BM_H */ |
diff --git a/include/linux/mfd/abx500/ab8500-gpio.h b/include/linux/mfd/abx500/ab8500-gpio.h index 2387c207ea86..172b2f201ae0 100644 --- a/include/linux/mfd/abx500/ab8500-gpio.h +++ b/include/linux/mfd/abx500/ab8500-gpio.h | |||
@@ -14,10 +14,20 @@ | |||
14 | * registers. | 14 | * registers. |
15 | */ | 15 | */ |
16 | 16 | ||
17 | struct ab8500_gpio_platform_data { | 17 | struct abx500_gpio_platform_data { |
18 | int gpio_base; | 18 | int gpio_base; |
19 | u32 irq_base; | 19 | }; |
20 | u8 config_reg[8]; | 20 | |
21 | enum abx500_gpio_pull_updown { | ||
22 | ABX500_GPIO_PULL_DOWN = 0x0, | ||
23 | ABX500_GPIO_PULL_NONE = 0x1, | ||
24 | ABX500_GPIO_PULL_UP = 0x3, | ||
25 | }; | ||
26 | |||
27 | enum abx500_gpio_vinsel { | ||
28 | ABX500_GPIO_VINSEL_VBAT = 0x0, | ||
29 | ABX500_GPIO_VINSEL_VIN_1V8 = 0x1, | ||
30 | ABX500_GPIO_VINSEL_VDD_BIF = 0x2, | ||
21 | }; | 31 | }; |
22 | 32 | ||
23 | #endif /* _AB8500_GPIO_H */ | 33 | #endif /* _AB8500_GPIO_H */ |
diff --git a/include/linux/mfd/abx500/ab8500-sysctrl.h b/include/linux/mfd/abx500/ab8500-sysctrl.h index 10eb50973c39..ebf12e793db9 100644 --- a/include/linux/mfd/abx500/ab8500-sysctrl.h +++ b/include/linux/mfd/abx500/ab8500-sysctrl.h | |||
@@ -37,6 +37,11 @@ static inline int ab8500_sysctrl_clear(u16 reg, u8 bits) | |||
37 | return ab8500_sysctrl_write(reg, bits, 0); | 37 | return ab8500_sysctrl_write(reg, bits, 0); |
38 | } | 38 | } |
39 | 39 | ||
40 | /* Configuration data for SysClkReq1RfClkBuf - SysClkReq8RfClkBuf */ | ||
41 | struct ab8500_sysctrl_platform_data { | ||
42 | u8 initial_req_buf_config[8]; | ||
43 | }; | ||
44 | |||
40 | /* Registers */ | 45 | /* Registers */ |
41 | #define AB8500_TURNONSTATUS 0x100 | 46 | #define AB8500_TURNONSTATUS 0x100 |
42 | #define AB8500_RESETSTATUS 0x101 | 47 | #define AB8500_RESETSTATUS 0x101 |
diff --git a/include/linux/mfd/abx500/ab8500.h b/include/linux/mfd/abx500/ab8500.h index 1cb5698b4d76..9db0bda446a0 100644 --- a/include/linux/mfd/abx500/ab8500.h +++ b/include/linux/mfd/abx500/ab8500.h | |||
@@ -24,7 +24,7 @@ enum ab8500_version { | |||
24 | AB8500_VERSION_AB8500 = 0x0, | 24 | AB8500_VERSION_AB8500 = 0x0, |
25 | AB8500_VERSION_AB8505 = 0x1, | 25 | AB8500_VERSION_AB8505 = 0x1, |
26 | AB8500_VERSION_AB9540 = 0x2, | 26 | AB8500_VERSION_AB9540 = 0x2, |
27 | AB8500_VERSION_AB8540 = 0x3, | 27 | AB8500_VERSION_AB8540 = 0x4, |
28 | AB8500_VERSION_UNDEFINED, | 28 | AB8500_VERSION_UNDEFINED, |
29 | }; | 29 | }; |
30 | 30 | ||
@@ -32,6 +32,7 @@ enum ab8500_version { | |||
32 | #define AB8500_CUTEARLY 0x00 | 32 | #define AB8500_CUTEARLY 0x00 |
33 | #define AB8500_CUT1P0 0x10 | 33 | #define AB8500_CUT1P0 0x10 |
34 | #define AB8500_CUT1P1 0x11 | 34 | #define AB8500_CUT1P1 0x11 |
35 | #define AB8500_CUT1P2 0x12 /* Only valid for AB8540 */ | ||
35 | #define AB8500_CUT2P0 0x20 | 36 | #define AB8500_CUT2P0 0x20 |
36 | #define AB8500_CUT3P0 0x30 | 37 | #define AB8500_CUT3P0 0x30 |
37 | #define AB8500_CUT3P3 0x33 | 38 | #define AB8500_CUT3P3 0x33 |
@@ -39,6 +40,7 @@ enum ab8500_version { | |||
39 | /* | 40 | /* |
40 | * AB8500 bank addresses | 41 | * AB8500 bank addresses |
41 | */ | 42 | */ |
43 | #define AB8500_M_FSM_RANK 0x0 | ||
42 | #define AB8500_SYS_CTRL1_BLOCK 0x1 | 44 | #define AB8500_SYS_CTRL1_BLOCK 0x1 |
43 | #define AB8500_SYS_CTRL2_BLOCK 0x2 | 45 | #define AB8500_SYS_CTRL2_BLOCK 0x2 |
44 | #define AB8500_REGU_CTRL1 0x3 | 46 | #define AB8500_REGU_CTRL1 0x3 |
@@ -58,6 +60,7 @@ enum ab8500_version { | |||
58 | #define AB8500_DEVELOPMENT 0x11 | 60 | #define AB8500_DEVELOPMENT 0x11 |
59 | #define AB8500_DEBUG 0x12 | 61 | #define AB8500_DEBUG 0x12 |
60 | #define AB8500_PROD_TEST 0x13 | 62 | #define AB8500_PROD_TEST 0x13 |
63 | #define AB8500_STE_TEST 0x14 | ||
61 | #define AB8500_OTP_EMUL 0x15 | 64 | #define AB8500_OTP_EMUL 0x15 |
62 | 65 | ||
63 | /* | 66 | /* |
@@ -65,11 +68,11 @@ enum ab8500_version { | |||
65 | * Values used to index into array ab8500_irq_regoffset[] defined in | 68 | * Values used to index into array ab8500_irq_regoffset[] defined in |
66 | * drivers/mdf/ab8500-core.c | 69 | * drivers/mdf/ab8500-core.c |
67 | */ | 70 | */ |
68 | /* Definitions for AB8500 and AB9540 */ | 71 | /* Definitions for AB8500, AB9540 and AB8540 */ |
69 | /* ab8500_irq_regoffset[0] -> IT[Source|Latch|Mask]1 */ | 72 | /* ab8500_irq_regoffset[0] -> IT[Source|Latch|Mask]1 */ |
70 | #define AB8500_INT_MAIN_EXT_CH_NOT_OK 0 /* not 8505/9540 */ | 73 | #define AB8500_INT_MAIN_EXT_CH_NOT_OK 0 /* not 8505/9540 */ |
71 | #define AB8500_INT_UN_PLUG_TV_DET 1 /* not 8505/9540 */ | 74 | #define AB8500_INT_UN_PLUG_TV_DET 1 /* not 8505/9540/8540 */ |
72 | #define AB8500_INT_PLUG_TV_DET 2 /* not 8505/9540 */ | 75 | #define AB8500_INT_PLUG_TV_DET 2 /* not 8505/9540/8540 */ |
73 | #define AB8500_INT_TEMP_WARM 3 | 76 | #define AB8500_INT_TEMP_WARM 3 |
74 | #define AB8500_INT_PON_KEY2DB_F 4 | 77 | #define AB8500_INT_PON_KEY2DB_F 4 |
75 | #define AB8500_INT_PON_KEY2DB_R 5 | 78 | #define AB8500_INT_PON_KEY2DB_R 5 |
@@ -77,18 +80,19 @@ enum ab8500_version { | |||
77 | #define AB8500_INT_PON_KEY1DB_R 7 | 80 | #define AB8500_INT_PON_KEY1DB_R 7 |
78 | /* ab8500_irq_regoffset[1] -> IT[Source|Latch|Mask]2 */ | 81 | /* ab8500_irq_regoffset[1] -> IT[Source|Latch|Mask]2 */ |
79 | #define AB8500_INT_BATT_OVV 8 | 82 | #define AB8500_INT_BATT_OVV 8 |
80 | #define AB8500_INT_MAIN_CH_UNPLUG_DET 10 /* not 8505 */ | 83 | #define AB8500_INT_MAIN_CH_UNPLUG_DET 10 /* not 8505/8540 */ |
81 | #define AB8500_INT_MAIN_CH_PLUG_DET 11 /* not 8505 */ | 84 | #define AB8500_INT_MAIN_CH_PLUG_DET 11 /* not 8505/8540 */ |
82 | #define AB8500_INT_VBUS_DET_F 14 | 85 | #define AB8500_INT_VBUS_DET_F 14 |
83 | #define AB8500_INT_VBUS_DET_R 15 | 86 | #define AB8500_INT_VBUS_DET_R 15 |
84 | /* ab8500_irq_regoffset[2] -> IT[Source|Latch|Mask]3 */ | 87 | /* ab8500_irq_regoffset[2] -> IT[Source|Latch|Mask]3 */ |
85 | #define AB8500_INT_VBUS_CH_DROP_END 16 | 88 | #define AB8500_INT_VBUS_CH_DROP_END 16 |
86 | #define AB8500_INT_RTC_60S 17 | 89 | #define AB8500_INT_RTC_60S 17 |
87 | #define AB8500_INT_RTC_ALARM 18 | 90 | #define AB8500_INT_RTC_ALARM 18 |
91 | #define AB8540_INT_BIF_INT 19 | ||
88 | #define AB8500_INT_BAT_CTRL_INDB 20 | 92 | #define AB8500_INT_BAT_CTRL_INDB 20 |
89 | #define AB8500_INT_CH_WD_EXP 21 | 93 | #define AB8500_INT_CH_WD_EXP 21 |
90 | #define AB8500_INT_VBUS_OVV 22 | 94 | #define AB8500_INT_VBUS_OVV 22 |
91 | #define AB8500_INT_MAIN_CH_DROP_END 23 /* not 8505/9540 */ | 95 | #define AB8500_INT_MAIN_CH_DROP_END 23 /* not 8505/9540/8540 */ |
92 | /* ab8500_irq_regoffset[3] -> IT[Source|Latch|Mask]4 */ | 96 | /* ab8500_irq_regoffset[3] -> IT[Source|Latch|Mask]4 */ |
93 | #define AB8500_INT_CCN_CONV_ACC 24 | 97 | #define AB8500_INT_CCN_CONV_ACC 24 |
94 | #define AB8500_INT_INT_AUD 25 | 98 | #define AB8500_INT_INT_AUD 25 |
@@ -99,7 +103,7 @@ enum ab8500_version { | |||
99 | #define AB8500_INT_BUP_CHG_NOT_OK 30 | 103 | #define AB8500_INT_BUP_CHG_NOT_OK 30 |
100 | #define AB8500_INT_BUP_CHG_OK 31 | 104 | #define AB8500_INT_BUP_CHG_OK 31 |
101 | /* ab8500_irq_regoffset[4] -> IT[Source|Latch|Mask]5 */ | 105 | /* ab8500_irq_regoffset[4] -> IT[Source|Latch|Mask]5 */ |
102 | #define AB8500_INT_GP_HW_ADC_CONV_END 32 /* not 8505 */ | 106 | #define AB8500_INT_GP_HW_ADC_CONV_END 32 /* not 8505/8540 */ |
103 | #define AB8500_INT_ACC_DETECT_1DB_F 33 | 107 | #define AB8500_INT_ACC_DETECT_1DB_F 33 |
104 | #define AB8500_INT_ACC_DETECT_1DB_R 34 | 108 | #define AB8500_INT_ACC_DETECT_1DB_R 34 |
105 | #define AB8500_INT_ACC_DETECT_22DB_F 35 | 109 | #define AB8500_INT_ACC_DETECT_22DB_F 35 |
@@ -108,23 +112,23 @@ enum ab8500_version { | |||
108 | #define AB8500_INT_ACC_DETECT_21DB_R 38 | 112 | #define AB8500_INT_ACC_DETECT_21DB_R 38 |
109 | #define AB8500_INT_GP_SW_ADC_CONV_END 39 | 113 | #define AB8500_INT_GP_SW_ADC_CONV_END 39 |
110 | /* ab8500_irq_regoffset[5] -> IT[Source|Latch|Mask]7 */ | 114 | /* ab8500_irq_regoffset[5] -> IT[Source|Latch|Mask]7 */ |
111 | #define AB8500_INT_GPIO6R 40 /* not 8505/9540 */ | 115 | #define AB8500_INT_GPIO6R 40 /* not 8505/9540/8540 */ |
112 | #define AB8500_INT_GPIO7R 41 /* not 8505/9540 */ | 116 | #define AB8500_INT_GPIO7R 41 /* not 8505/9540/8540 */ |
113 | #define AB8500_INT_GPIO8R 42 /* not 8505/9540 */ | 117 | #define AB8500_INT_GPIO8R 42 /* not 8505/9540/8540 */ |
114 | #define AB8500_INT_GPIO9R 43 /* not 8505/9540 */ | 118 | #define AB8500_INT_GPIO9R 43 /* not 8505/9540/8540 */ |
115 | #define AB8500_INT_GPIO10R 44 | 119 | #define AB8500_INT_GPIO10R 44 /* not 8540 */ |
116 | #define AB8500_INT_GPIO11R 45 | 120 | #define AB8500_INT_GPIO11R 45 /* not 8540 */ |
117 | #define AB8500_INT_GPIO12R 46 /* not 8505 */ | 121 | #define AB8500_INT_GPIO12R 46 /* not 8505/8540 */ |
118 | #define AB8500_INT_GPIO13R 47 | 122 | #define AB8500_INT_GPIO13R 47 /* not 8540 */ |
119 | /* ab8500_irq_regoffset[6] -> IT[Source|Latch|Mask]8 */ | 123 | /* ab8500_irq_regoffset[6] -> IT[Source|Latch|Mask]8 */ |
120 | #define AB8500_INT_GPIO24R 48 /* not 8505 */ | 124 | #define AB8500_INT_GPIO24R 48 /* not 8505/8540 */ |
121 | #define AB8500_INT_GPIO25R 49 /* not 8505 */ | 125 | #define AB8500_INT_GPIO25R 49 /* not 8505/8540 */ |
122 | #define AB8500_INT_GPIO36R 50 /* not 8505/9540 */ | 126 | #define AB8500_INT_GPIO36R 50 /* not 8505/9540/8540 */ |
123 | #define AB8500_INT_GPIO37R 51 /* not 8505/9540 */ | 127 | #define AB8500_INT_GPIO37R 51 /* not 8505/9540/8540 */ |
124 | #define AB8500_INT_GPIO38R 52 /* not 8505/9540 */ | 128 | #define AB8500_INT_GPIO38R 52 /* not 8505/9540/8540 */ |
125 | #define AB8500_INT_GPIO39R 53 /* not 8505/9540 */ | 129 | #define AB8500_INT_GPIO39R 53 /* not 8505/9540/8540 */ |
126 | #define AB8500_INT_GPIO40R 54 | 130 | #define AB8500_INT_GPIO40R 54 /* not 8540 */ |
127 | #define AB8500_INT_GPIO41R 55 | 131 | #define AB8500_INT_GPIO41R 55 /* not 8540 */ |
128 | /* ab8500_irq_regoffset[7] -> IT[Source|Latch|Mask]9 */ | 132 | /* ab8500_irq_regoffset[7] -> IT[Source|Latch|Mask]9 */ |
129 | #define AB8500_INT_GPIO6F 56 /* not 8505/9540 */ | 133 | #define AB8500_INT_GPIO6F 56 /* not 8505/9540 */ |
130 | #define AB8500_INT_GPIO7F 57 /* not 8505/9540 */ | 134 | #define AB8500_INT_GPIO7F 57 /* not 8505/9540 */ |
@@ -135,14 +139,14 @@ enum ab8500_version { | |||
135 | #define AB8500_INT_GPIO12F 62 /* not 8505 */ | 139 | #define AB8500_INT_GPIO12F 62 /* not 8505 */ |
136 | #define AB8500_INT_GPIO13F 63 | 140 | #define AB8500_INT_GPIO13F 63 |
137 | /* ab8500_irq_regoffset[8] -> IT[Source|Latch|Mask]10 */ | 141 | /* ab8500_irq_regoffset[8] -> IT[Source|Latch|Mask]10 */ |
138 | #define AB8500_INT_GPIO24F 64 /* not 8505 */ | 142 | #define AB8500_INT_GPIO24F 64 /* not 8505/8540 */ |
139 | #define AB8500_INT_GPIO25F 65 /* not 8505 */ | 143 | #define AB8500_INT_GPIO25F 65 /* not 8505/8540 */ |
140 | #define AB8500_INT_GPIO36F 66 /* not 8505/9540 */ | 144 | #define AB8500_INT_GPIO36F 66 /* not 8505/9540/8540 */ |
141 | #define AB8500_INT_GPIO37F 67 /* not 8505/9540 */ | 145 | #define AB8500_INT_GPIO37F 67 /* not 8505/9540/8540 */ |
142 | #define AB8500_INT_GPIO38F 68 /* not 8505/9540 */ | 146 | #define AB8500_INT_GPIO38F 68 /* not 8505/9540/8540 */ |
143 | #define AB8500_INT_GPIO39F 69 /* not 8505/9540 */ | 147 | #define AB8500_INT_GPIO39F 69 /* not 8505/9540/8540 */ |
144 | #define AB8500_INT_GPIO40F 70 | 148 | #define AB8500_INT_GPIO40F 70 /* not 8540 */ |
145 | #define AB8500_INT_GPIO41F 71 | 149 | #define AB8500_INT_GPIO41F 71 /* not 8540 */ |
146 | /* ab8500_irq_regoffset[9] -> IT[Source|Latch|Mask]12 */ | 150 | /* ab8500_irq_regoffset[9] -> IT[Source|Latch|Mask]12 */ |
147 | #define AB8500_INT_ADP_SOURCE_ERROR 72 | 151 | #define AB8500_INT_ADP_SOURCE_ERROR 72 |
148 | #define AB8500_INT_ADP_SINK_ERROR 73 | 152 | #define AB8500_INT_ADP_SINK_ERROR 73 |
@@ -160,42 +164,44 @@ enum ab8500_version { | |||
160 | #define AB8500_INT_SRP_DETECT 88 | 164 | #define AB8500_INT_SRP_DETECT 88 |
161 | #define AB8500_INT_USB_CHARGER_NOT_OKR 89 | 165 | #define AB8500_INT_USB_CHARGER_NOT_OKR 89 |
162 | #define AB8500_INT_ID_WAKEUP_R 90 | 166 | #define AB8500_INT_ID_WAKEUP_R 90 |
167 | #define AB8500_INT_ID_DET_PLUGR 91 /* 8505/9540 cut2.0 */ | ||
163 | #define AB8500_INT_ID_DET_R1R 92 | 168 | #define AB8500_INT_ID_DET_R1R 92 |
164 | #define AB8500_INT_ID_DET_R2R 93 | 169 | #define AB8500_INT_ID_DET_R2R 93 |
165 | #define AB8500_INT_ID_DET_R3R 94 | 170 | #define AB8500_INT_ID_DET_R3R 94 |
166 | #define AB8500_INT_ID_DET_R4R 95 | 171 | #define AB8500_INT_ID_DET_R4R 95 |
167 | /* ab8500_irq_regoffset[12] -> IT[Source|Latch|Mask]21 */ | 172 | /* ab8500_irq_regoffset[12] -> IT[Source|Latch|Mask]21 */ |
168 | #define AB8500_INT_ID_WAKEUP_F 96 | 173 | #define AB8500_INT_ID_WAKEUP_F 96 /* not 8505/9540 */ |
169 | #define AB8500_INT_ID_DET_R1F 98 | 174 | #define AB8500_INT_ID_DET_PLUGF 97 /* 8505/9540 cut2.0 */ |
170 | #define AB8500_INT_ID_DET_R2F 99 | 175 | #define AB8500_INT_ID_DET_R1F 98 /* not 8505/9540 */ |
171 | #define AB8500_INT_ID_DET_R3F 100 | 176 | #define AB8500_INT_ID_DET_R2F 99 /* not 8505/9540 */ |
172 | #define AB8500_INT_ID_DET_R4F 101 | 177 | #define AB8500_INT_ID_DET_R3F 100 /* not 8505/9540 */ |
173 | #define AB8500_INT_CHAUTORESTARTAFTSEC 102 | 178 | #define AB8500_INT_ID_DET_R4F 101 /* not 8505/9540 */ |
179 | #define AB8500_INT_CHAUTORESTARTAFTSEC 102 /* not 8505/9540 */ | ||
174 | #define AB8500_INT_CHSTOPBYSEC 103 | 180 | #define AB8500_INT_CHSTOPBYSEC 103 |
175 | /* ab8500_irq_regoffset[13] -> IT[Source|Latch|Mask]22 */ | 181 | /* ab8500_irq_regoffset[13] -> IT[Source|Latch|Mask]22 */ |
176 | #define AB8500_INT_USB_CH_TH_PROT_F 104 | 182 | #define AB8500_INT_USB_CH_TH_PROT_F 104 |
177 | #define AB8500_INT_USB_CH_TH_PROT_R 105 | 183 | #define AB8500_INT_USB_CH_TH_PROT_R 105 |
178 | #define AB8500_INT_MAIN_CH_TH_PROT_F 106 /* not 8505/9540 */ | 184 | #define AB8500_INT_MAIN_CH_TH_PROT_F 106 /* not 8505/9540 */ |
179 | #define AB8500_INT_MAIN_CH_TH_PROT_R 107 /* not 8505/9540 */ | 185 | #define AB8500_INT_MAIN_CH_TH_PROT_R 107 /* not 8505/9540 */ |
180 | #define AB8500_INT_CHCURLIMNOHSCHIRP 109 | 186 | #define AB8500_INT_CHCURLIMNOHSCHIRP 109 |
181 | #define AB8500_INT_CHCURLIMHSCHIRP 110 | 187 | #define AB8500_INT_CHCURLIMHSCHIRP 110 |
182 | #define AB8500_INT_XTAL32K_KO 111 | 188 | #define AB8500_INT_XTAL32K_KO 111 |
183 | 189 | ||
184 | /* Definitions for AB9540 */ | 190 | /* Definitions for AB9540 / AB8505 */ |
185 | /* ab8500_irq_regoffset[14] -> IT[Source|Latch|Mask]13 */ | 191 | /* ab8500_irq_regoffset[14] -> IT[Source|Latch|Mask]13 */ |
186 | #define AB9540_INT_GPIO50R 113 | 192 | #define AB9540_INT_GPIO50R 113 /* not 8540 */ |
187 | #define AB9540_INT_GPIO51R 114 /* not 8505 */ | 193 | #define AB9540_INT_GPIO51R 114 /* not 8505/8540 */ |
188 | #define AB9540_INT_GPIO52R 115 | 194 | #define AB9540_INT_GPIO52R 115 /* not 8540 */ |
189 | #define AB9540_INT_GPIO53R 116 | 195 | #define AB9540_INT_GPIO53R 116 /* not 8540 */ |
190 | #define AB9540_INT_GPIO54R 117 /* not 8505 */ | 196 | #define AB9540_INT_GPIO54R 117 /* not 8505/8540 */ |
191 | #define AB9540_INT_IEXT_CH_RF_BFN_R 118 | 197 | #define AB9540_INT_IEXT_CH_RF_BFN_R 118 |
192 | #define AB9540_INT_IEXT_CH_RF_BFN_F 119 | ||
193 | /* ab8500_irq_regoffset[15] -> IT[Source|Latch|Mask]14 */ | 198 | /* ab8500_irq_regoffset[15] -> IT[Source|Latch|Mask]14 */ |
194 | #define AB9540_INT_GPIO50F 121 | 199 | #define AB9540_INT_GPIO50F 121 /* not 8540 */ |
195 | #define AB9540_INT_GPIO51F 122 /* not 8505 */ | 200 | #define AB9540_INT_GPIO51F 122 /* not 8505/8540 */ |
196 | #define AB9540_INT_GPIO52F 123 | 201 | #define AB9540_INT_GPIO52F 123 /* not 8540 */ |
197 | #define AB9540_INT_GPIO53F 124 | 202 | #define AB9540_INT_GPIO53F 124 /* not 8540 */ |
198 | #define AB9540_INT_GPIO54F 125 /* not 8505 */ | 203 | #define AB9540_INT_GPIO54F 125 /* not 8505/8540 */ |
204 | #define AB9540_INT_IEXT_CH_RF_BFN_F 126 | ||
199 | /* ab8500_irq_regoffset[16] -> IT[Source|Latch|Mask]25 */ | 205 | /* ab8500_irq_regoffset[16] -> IT[Source|Latch|Mask]25 */ |
200 | #define AB8505_INT_KEYSTUCK 128 | 206 | #define AB8505_INT_KEYSTUCK 128 |
201 | #define AB8505_INT_IKR 129 | 207 | #define AB8505_INT_IKR 129 |
@@ -204,6 +210,87 @@ enum ab8500_version { | |||
204 | #define AB8505_INT_KEYDEGLITCH 132 | 210 | #define AB8505_INT_KEYDEGLITCH 132 |
205 | #define AB8505_INT_MODPWRSTATUSF 134 | 211 | #define AB8505_INT_MODPWRSTATUSF 134 |
206 | #define AB8505_INT_MODPWRSTATUSR 135 | 212 | #define AB8505_INT_MODPWRSTATUSR 135 |
213 | /* ab8500_irq_regoffset[17] -> IT[Source|Latch|Mask]6 */ | ||
214 | #define AB8500_INT_HOOK_DET_NEG_F 138 | ||
215 | #define AB8500_INT_HOOK_DET_NEG_R 139 | ||
216 | #define AB8500_INT_HOOK_DET_POS_F 140 | ||
217 | #define AB8500_INT_HOOK_DET_POS_R 141 | ||
218 | #define AB8500_INT_PLUG_DET_COMP_F 142 | ||
219 | #define AB8500_INT_PLUG_DET_COMP_R 143 | ||
220 | /* ab8500_irq_regoffset[18] -> IT[Source|Latch|Mask]23 */ | ||
221 | #define AB8505_INT_COLL 144 | ||
222 | #define AB8505_INT_RESERR 145 | ||
223 | #define AB8505_INT_FRAERR 146 | ||
224 | #define AB8505_INT_COMERR 147 | ||
225 | #define AB8505_INT_SPDSET 148 | ||
226 | #define AB8505_INT_DSENT 149 | ||
227 | #define AB8505_INT_DREC 150 | ||
228 | #define AB8505_INT_ACC_INT 151 | ||
229 | /* ab8500_irq_regoffset[19] -> IT[Source|Latch|Mask]24 */ | ||
230 | #define AB8505_INT_NOPINT 152 | ||
231 | /* ab8540_irq_regoffset[20] -> IT[Source|Latch|Mask]26 */ | ||
232 | #define AB8540_INT_IDPLUGDETCOMPF 160 | ||
233 | #define AB8540_INT_IDPLUGDETCOMPR 161 | ||
234 | #define AB8540_INT_FMDETCOMPLOF 162 | ||
235 | #define AB8540_INT_FMDETCOMPLOR 163 | ||
236 | #define AB8540_INT_FMDETCOMPHIF 164 | ||
237 | #define AB8540_INT_FMDETCOMPHIR 165 | ||
238 | #define AB8540_INT_ID5VDETCOMPF 166 | ||
239 | #define AB8540_INT_ID5VDETCOMPR 167 | ||
240 | /* ab8540_irq_regoffset[21] -> IT[Source|Latch|Mask]27 */ | ||
241 | #define AB8540_INT_GPIO43F 168 | ||
242 | #define AB8540_INT_GPIO43R 169 | ||
243 | #define AB8540_INT_GPIO44F 170 | ||
244 | #define AB8540_INT_GPIO44R 171 | ||
245 | #define AB8540_INT_KEYPOSDETCOMPF 172 | ||
246 | #define AB8540_INT_KEYPOSDETCOMPR 173 | ||
247 | #define AB8540_INT_KEYNEGDETCOMPF 174 | ||
248 | #define AB8540_INT_KEYNEGDETCOMPR 175 | ||
249 | /* ab8540_irq_regoffset[22] -> IT[Source|Latch|Mask]28 */ | ||
250 | #define AB8540_INT_GPIO1VBATF 176 | ||
251 | #define AB8540_INT_GPIO1VBATR 177 | ||
252 | #define AB8540_INT_GPIO2VBATF 178 | ||
253 | #define AB8540_INT_GPIO2VBATR 179 | ||
254 | #define AB8540_INT_GPIO3VBATF 180 | ||
255 | #define AB8540_INT_GPIO3VBATR 181 | ||
256 | #define AB8540_INT_GPIO4VBATF 182 | ||
257 | #define AB8540_INT_GPIO4VBATR 183 | ||
258 | /* ab8540_irq_regoffset[23] -> IT[Source|Latch|Mask]29 */ | ||
259 | #define AB8540_INT_SYSCLKREQ2F 184 | ||
260 | #define AB8540_INT_SYSCLKREQ2R 185 | ||
261 | #define AB8540_INT_SYSCLKREQ3F 186 | ||
262 | #define AB8540_INT_SYSCLKREQ3R 187 | ||
263 | #define AB8540_INT_SYSCLKREQ4F 188 | ||
264 | #define AB8540_INT_SYSCLKREQ4R 189 | ||
265 | #define AB8540_INT_SYSCLKREQ5F 190 | ||
266 | #define AB8540_INT_SYSCLKREQ5R 191 | ||
267 | /* ab8540_irq_regoffset[24] -> IT[Source|Latch|Mask]30 */ | ||
268 | #define AB8540_INT_PWMOUT1F 192 | ||
269 | #define AB8540_INT_PWMOUT1R 193 | ||
270 | #define AB8540_INT_PWMCTRL0F 194 | ||
271 | #define AB8540_INT_PWMCTRL0R 195 | ||
272 | #define AB8540_INT_PWMCTRL1F 196 | ||
273 | #define AB8540_INT_PWMCTRL1R 197 | ||
274 | #define AB8540_INT_SYSCLKREQ6F 198 | ||
275 | #define AB8540_INT_SYSCLKREQ6R 199 | ||
276 | /* ab8540_irq_regoffset[25] -> IT[Source|Latch|Mask]31 */ | ||
277 | #define AB8540_INT_PWMEXTVIBRA1F 200 | ||
278 | #define AB8540_INT_PWMEXTVIBRA1R 201 | ||
279 | #define AB8540_INT_PWMEXTVIBRA2F 202 | ||
280 | #define AB8540_INT_PWMEXTVIBRA2R 203 | ||
281 | #define AB8540_INT_PWMOUT2F 204 | ||
282 | #define AB8540_INT_PWMOUT2R 205 | ||
283 | #define AB8540_INT_PWMOUT3F 206 | ||
284 | #define AB8540_INT_PWMOUT3R 207 | ||
285 | /* ab8540_irq_regoffset[26] -> IT[Source|Latch|Mask]32 */ | ||
286 | #define AB8540_INT_ADDATA2F 208 | ||
287 | #define AB8540_INT_ADDATA2R 209 | ||
288 | #define AB8540_INT_DADATA2F 210 | ||
289 | #define AB8540_INT_DADATA2R 211 | ||
290 | #define AB8540_INT_FSYNC2F 212 | ||
291 | #define AB8540_INT_FSYNC2R 213 | ||
292 | #define AB8540_INT_BITCLK2F 214 | ||
293 | #define AB8540_INT_BITCLK2R 215 | ||
207 | 294 | ||
208 | /* | 295 | /* |
209 | * AB8500_AB9540_NR_IRQS is used when configuring the IRQ numbers for the | 296 | * AB8500_AB9540_NR_IRQS is used when configuring the IRQ numbers for the |
@@ -213,13 +300,24 @@ enum ab8500_version { | |||
213 | * which is larger. | 300 | * which is larger. |
214 | */ | 301 | */ |
215 | #define AB8500_NR_IRQS 112 | 302 | #define AB8500_NR_IRQS 112 |
216 | #define AB8505_NR_IRQS 136 | 303 | #define AB8505_NR_IRQS 153 |
217 | #define AB9540_NR_IRQS 136 | 304 | #define AB9540_NR_IRQS 153 |
305 | #define AB8540_NR_IRQS 216 | ||
218 | /* This is set to the roof of any AB8500 chip variant IRQ counts */ | 306 | /* This is set to the roof of any AB8500 chip variant IRQ counts */ |
219 | #define AB8500_MAX_NR_IRQS AB9540_NR_IRQS | 307 | #define AB8500_MAX_NR_IRQS AB8540_NR_IRQS |
220 | 308 | ||
221 | #define AB8500_NUM_IRQ_REGS 14 | 309 | #define AB8500_NUM_IRQ_REGS 14 |
222 | #define AB9540_NUM_IRQ_REGS 17 | 310 | #define AB9540_NUM_IRQ_REGS 20 |
311 | #define AB8540_NUM_IRQ_REGS 27 | ||
312 | |||
313 | /* Turn On Status Event */ | ||
314 | #define AB8500_POR_ON_VBAT 0x01 | ||
315 | #define AB8500_POW_KEY_1_ON 0x02 | ||
316 | #define AB8500_POW_KEY_2_ON 0x04 | ||
317 | #define AB8500_RTC_ALARM 0x08 | ||
318 | #define AB8500_MAIN_CH_DET 0x10 | ||
319 | #define AB8500_VBUS_DET 0x20 | ||
320 | #define AB8500_USB_ID_DET 0x40 | ||
223 | 321 | ||
224 | /** | 322 | /** |
225 | * struct ab8500 - ab8500 internal structure | 323 | * struct ab8500 - ab8500 internal structure |
@@ -270,10 +368,12 @@ struct regulator_reg_init; | |||
270 | struct regulator_init_data; | 368 | struct regulator_init_data; |
271 | struct ab8500_gpio_platform_data; | 369 | struct ab8500_gpio_platform_data; |
272 | struct ab8500_codec_platform_data; | 370 | struct ab8500_codec_platform_data; |
371 | struct ab8500_sysctrl_platform_data; | ||
273 | 372 | ||
274 | /** | 373 | /** |
275 | * struct ab8500_platform_data - AB8500 platform data | 374 | * struct ab8500_platform_data - AB8500 platform data |
276 | * @irq_base: start of AB8500 IRQs, AB8500_NR_IRQS will be used | 375 | * @irq_base: start of AB8500 IRQs, AB8500_NR_IRQS will be used |
376 | * @pm_power_off: Should machine pm power off hook be registered or not | ||
277 | * @init: board-specific initialization after detection of ab8500 | 377 | * @init: board-specific initialization after detection of ab8500 |
278 | * @num_regulator_reg_init: number of regulator init registers | 378 | * @num_regulator_reg_init: number of regulator init registers |
279 | * @regulator_reg_init: regulator init registers | 379 | * @regulator_reg_init: regulator init registers |
@@ -282,13 +382,15 @@ struct ab8500_codec_platform_data; | |||
282 | */ | 382 | */ |
283 | struct ab8500_platform_data { | 383 | struct ab8500_platform_data { |
284 | int irq_base; | 384 | int irq_base; |
385 | bool pm_power_off; | ||
285 | void (*init) (struct ab8500 *); | 386 | void (*init) (struct ab8500 *); |
286 | int num_regulator_reg_init; | 387 | int num_regulator_reg_init; |
287 | struct ab8500_regulator_reg_init *regulator_reg_init; | 388 | struct ab8500_regulator_reg_init *regulator_reg_init; |
288 | int num_regulator; | 389 | int num_regulator; |
289 | struct regulator_init_data *regulator; | 390 | struct regulator_init_data *regulator; |
290 | struct ab8500_gpio_platform_data *gpio; | 391 | struct abx500_gpio_platform_data *gpio; |
291 | struct ab8500_codec_platform_data *codec; | 392 | struct ab8500_codec_platform_data *codec; |
393 | struct ab8500_sysctrl_platform_data *sysctrl; | ||
292 | }; | 394 | }; |
293 | 395 | ||
294 | extern int ab8500_init(struct ab8500 *ab8500, | 396 | extern int ab8500_init(struct ab8500 *ab8500, |
@@ -335,10 +437,87 @@ static inline int is_ab8500_2p0_or_earlier(struct ab8500 *ab) | |||
335 | return (is_ab8500(ab) && (ab->chip_id <= AB8500_CUT2P0)); | 437 | return (is_ab8500(ab) && (ab->chip_id <= AB8500_CUT2P0)); |
336 | } | 438 | } |
337 | 439 | ||
440 | static inline int is_ab8500_3p3_or_earlier(struct ab8500 *ab) | ||
441 | { | ||
442 | return (is_ab8500(ab) && (ab->chip_id <= AB8500_CUT3P3)); | ||
443 | } | ||
444 | |||
338 | /* exclude also ab8505, ab9540... */ | 445 | /* exclude also ab8505, ab9540... */ |
339 | static inline int is_ab8500_2p0(struct ab8500 *ab) | 446 | static inline int is_ab8500_2p0(struct ab8500 *ab) |
340 | { | 447 | { |
341 | return (is_ab8500(ab) && (ab->chip_id == AB8500_CUT2P0)); | 448 | return (is_ab8500(ab) && (ab->chip_id == AB8500_CUT2P0)); |
342 | } | 449 | } |
343 | 450 | ||
451 | static inline int is_ab8505_1p0_or_earlier(struct ab8500 *ab) | ||
452 | { | ||
453 | return (is_ab8505(ab) && (ab->chip_id <= AB8500_CUT1P0)); | ||
454 | } | ||
455 | |||
456 | static inline int is_ab8505_2p0(struct ab8500 *ab) | ||
457 | { | ||
458 | return (is_ab8505(ab) && (ab->chip_id == AB8500_CUT2P0)); | ||
459 | } | ||
460 | |||
461 | static inline int is_ab9540_1p0_or_earlier(struct ab8500 *ab) | ||
462 | { | ||
463 | return (is_ab9540(ab) && (ab->chip_id <= AB8500_CUT1P0)); | ||
464 | } | ||
465 | |||
466 | static inline int is_ab9540_2p0(struct ab8500 *ab) | ||
467 | { | ||
468 | return (is_ab9540(ab) && (ab->chip_id == AB8500_CUT2P0)); | ||
469 | } | ||
470 | |||
471 | /* | ||
472 | * Be careful, the marketing name for this chip is 2.1 | ||
473 | * but the value read from the chip is 3.0 (0x30) | ||
474 | */ | ||
475 | static inline int is_ab9540_3p0(struct ab8500 *ab) | ||
476 | { | ||
477 | return (is_ab9540(ab) && (ab->chip_id == AB8500_CUT3P0)); | ||
478 | } | ||
479 | |||
480 | static inline int is_ab8540_1p0_or_earlier(struct ab8500 *ab) | ||
481 | { | ||
482 | return is_ab8540(ab) && (ab->chip_id <= AB8500_CUT1P0); | ||
483 | } | ||
484 | |||
485 | static inline int is_ab8540_1p1_or_earlier(struct ab8500 *ab) | ||
486 | { | ||
487 | return is_ab8540(ab) && (ab->chip_id <= AB8500_CUT1P1); | ||
488 | } | ||
489 | |||
490 | static inline int is_ab8540_1p2_or_earlier(struct ab8500 *ab) | ||
491 | { | ||
492 | return is_ab8540(ab) && (ab->chip_id <= AB8500_CUT1P2); | ||
493 | } | ||
494 | |||
495 | static inline int is_ab8540_2p0_or_earlier(struct ab8500 *ab) | ||
496 | { | ||
497 | return is_ab8540(ab) && (ab->chip_id <= AB8500_CUT2P0); | ||
498 | } | ||
499 | |||
500 | static inline int is_ab8540_2p0(struct ab8500 *ab) | ||
501 | { | ||
502 | return is_ab8540(ab) && (ab->chip_id == AB8500_CUT2P0); | ||
503 | } | ||
504 | |||
505 | static inline int is_ab8505_2p0_earlier(struct ab8500 *ab) | ||
506 | { | ||
507 | return (is_ab8505(ab) && (ab->chip_id < AB8500_CUT2P0)); | ||
508 | } | ||
509 | |||
510 | static inline int is_ab9540_2p0_or_earlier(struct ab8500 *ab) | ||
511 | { | ||
512 | return (is_ab9540(ab) && (ab->chip_id < AB8500_CUT2P0)); | ||
513 | } | ||
514 | |||
515 | #ifdef CONFIG_AB8500_DEBUG | ||
516 | void ab8500_dump_all_banks(struct device *dev); | ||
517 | void ab8500_debug_register_interrupt(int line); | ||
518 | #else | ||
519 | static inline void ab8500_dump_all_banks(struct device *dev) {} | ||
520 | static inline void ab8500_debug_register_interrupt(int line) {} | ||
521 | #endif | ||
522 | |||
344 | #endif /* MFD_AB8500_H */ | 523 | #endif /* MFD_AB8500_H */ |
diff --git a/include/linux/mfd/abx500/ux500_chargalg.h b/include/linux/mfd/abx500/ux500_chargalg.h index 9b07725750c9..d43ac0f35526 100644 --- a/include/linux/mfd/abx500/ux500_chargalg.h +++ b/include/linux/mfd/abx500/ux500_chargalg.h | |||
@@ -27,12 +27,17 @@ struct ux500_charger_ops { | |||
27 | * @ops ux500 charger operations | 27 | * @ops ux500 charger operations |
28 | * @max_out_volt maximum output charger voltage in mV | 28 | * @max_out_volt maximum output charger voltage in mV |
29 | * @max_out_curr maximum output charger current in mA | 29 | * @max_out_curr maximum output charger current in mA |
30 | * @enabled indicates if this charger is used or not | ||
31 | * @external external charger unit (pm2xxx) | ||
30 | */ | 32 | */ |
31 | struct ux500_charger { | 33 | struct ux500_charger { |
32 | struct power_supply psy; | 34 | struct power_supply psy; |
33 | struct ux500_charger_ops ops; | 35 | struct ux500_charger_ops ops; |
34 | int max_out_volt; | 36 | int max_out_volt; |
35 | int max_out_curr; | 37 | int max_out_curr; |
38 | int wdt_refresh; | ||
39 | bool enabled; | ||
40 | bool external; | ||
36 | }; | 41 | }; |
37 | 42 | ||
38 | #endif | 43 | #endif |