diff options
author | Linus Walleij <linus.walleij@stericsson.com> | 2010-05-01 12:26:07 -0400 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2010-05-27 19:37:44 -0400 |
commit | 812f9e9d424dde9ccb35975c0281edb6f8543735 (patch) | |
tree | 6c86267a32459639801f6f169a953f691f6eaac7 /include/linux/mfd/abx500.h | |
parent | d88b25be3584138e53076ea3eea3d886c870470e (diff) |
mfd: Renamed ab3100.h to abx500.h
The goal here is to make way for a more general interface for the
analog baseband chips ab3100 ab3550 ab550 and future chips.
This patch have been divided into two parts since both changing name
and content of a file is not recommended in git.
Signed-off-by: Mattias Wallin <mattias.wallin@stericsson.com>
Signed-off-by: Linus Walleij <linus.walleij@stericsson.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Diffstat (limited to 'include/linux/mfd/abx500.h')
-rw-r--r-- | include/linux/mfd/abx500.h | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/include/linux/mfd/abx500.h b/include/linux/mfd/abx500.h new file mode 100644 index 000000000000..9a881c305a50 --- /dev/null +++ b/include/linux/mfd/abx500.h | |||
@@ -0,0 +1,129 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2007-2009 ST-Ericsson AB | ||
3 | * License terms: GNU General Public License (GPL) version 2 | ||
4 | * AB3100 core access functions | ||
5 | * Author: Linus Walleij <linus.walleij@stericsson.com> | ||
6 | */ | ||
7 | |||
8 | #include <linux/device.h> | ||
9 | #include <linux/regulator/machine.h> | ||
10 | |||
11 | #ifndef MFD_AB3100_H | ||
12 | #define MFD_AB3100_H | ||
13 | |||
14 | #define ABUNKNOWN 0 | ||
15 | #define AB3000 1 | ||
16 | #define AB3100 2 | ||
17 | |||
18 | /* | ||
19 | * AB3100, EVENTA1, A2 and A3 event register flags | ||
20 | * these are catenated into a single 32-bit flag in the code | ||
21 | * for event notification broadcasts. | ||
22 | */ | ||
23 | #define AB3100_EVENTA1_ONSWA (0x01<<16) | ||
24 | #define AB3100_EVENTA1_ONSWB (0x02<<16) | ||
25 | #define AB3100_EVENTA1_ONSWC (0x04<<16) | ||
26 | #define AB3100_EVENTA1_DCIO (0x08<<16) | ||
27 | #define AB3100_EVENTA1_OVER_TEMP (0x10<<16) | ||
28 | #define AB3100_EVENTA1_SIM_OFF (0x20<<16) | ||
29 | #define AB3100_EVENTA1_VBUS (0x40<<16) | ||
30 | #define AB3100_EVENTA1_VSET_USB (0x80<<16) | ||
31 | |||
32 | #define AB3100_EVENTA2_READY_TX (0x01<<8) | ||
33 | #define AB3100_EVENTA2_READY_RX (0x02<<8) | ||
34 | #define AB3100_EVENTA2_OVERRUN_ERROR (0x04<<8) | ||
35 | #define AB3100_EVENTA2_FRAMING_ERROR (0x08<<8) | ||
36 | #define AB3100_EVENTA2_CHARG_OVERCURRENT (0x10<<8) | ||
37 | #define AB3100_EVENTA2_MIDR (0x20<<8) | ||
38 | #define AB3100_EVENTA2_BATTERY_REM (0x40<<8) | ||
39 | #define AB3100_EVENTA2_ALARM (0x80<<8) | ||
40 | |||
41 | #define AB3100_EVENTA3_ADC_TRIG5 (0x01) | ||
42 | #define AB3100_EVENTA3_ADC_TRIG4 (0x02) | ||
43 | #define AB3100_EVENTA3_ADC_TRIG3 (0x04) | ||
44 | #define AB3100_EVENTA3_ADC_TRIG2 (0x08) | ||
45 | #define AB3100_EVENTA3_ADC_TRIGVBAT (0x10) | ||
46 | #define AB3100_EVENTA3_ADC_TRIGVTX (0x20) | ||
47 | #define AB3100_EVENTA3_ADC_TRIG1 (0x40) | ||
48 | #define AB3100_EVENTA3_ADC_TRIG0 (0x80) | ||
49 | |||
50 | /* AB3100, STR register flags */ | ||
51 | #define AB3100_STR_ONSWA (0x01) | ||
52 | #define AB3100_STR_ONSWB (0x02) | ||
53 | #define AB3100_STR_ONSWC (0x04) | ||
54 | #define AB3100_STR_DCIO (0x08) | ||
55 | #define AB3100_STR_BOOT_MODE (0x10) | ||
56 | #define AB3100_STR_SIM_OFF (0x20) | ||
57 | #define AB3100_STR_BATT_REMOVAL (0x40) | ||
58 | #define AB3100_STR_VBUS (0x80) | ||
59 | |||
60 | /* | ||
61 | * AB3100 contains 8 regulators, one external regulator controller | ||
62 | * and a buck converter, further the LDO E and buck converter can | ||
63 | * have separate settings if they are in sleep mode, this is | ||
64 | * modeled as a separate regulator. | ||
65 | */ | ||
66 | #define AB3100_NUM_REGULATORS 10 | ||
67 | |||
68 | /** | ||
69 | * struct ab3100 | ||
70 | * @access_mutex: lock out concurrent accesses to the AB3100 registers | ||
71 | * @dev: pointer to the containing device | ||
72 | * @i2c_client: I2C client for this chip | ||
73 | * @testreg_client: secondary client for test registers | ||
74 | * @chip_name: name of this chip variant | ||
75 | * @chip_id: 8 bit chip ID for this chip variant | ||
76 | * @event_subscribers: event subscribers are listed here | ||
77 | * @startup_events: a copy of the first reading of the event registers | ||
78 | * @startup_events_read: whether the first events have been read | ||
79 | * | ||
80 | * This struct is PRIVATE and devices using it should NOT | ||
81 | * access ANY fields. It is used as a token for calling the | ||
82 | * AB3100 functions. | ||
83 | */ | ||
84 | struct ab3100 { | ||
85 | struct mutex access_mutex; | ||
86 | struct device *dev; | ||
87 | struct i2c_client *i2c_client; | ||
88 | struct i2c_client *testreg_client; | ||
89 | char chip_name[32]; | ||
90 | u8 chip_id; | ||
91 | struct blocking_notifier_head event_subscribers; | ||
92 | u32 startup_events; | ||
93 | bool startup_events_read; | ||
94 | }; | ||
95 | |||
96 | /** | ||
97 | * struct ab3100_platform_data | ||
98 | * Data supplied to initialize board connections to the AB3100 | ||
99 | * @reg_constraints: regulator constraints for target board | ||
100 | * the order of these constraints are: LDO A, C, D, E, | ||
101 | * F, G, H, K, EXT and BUCK. | ||
102 | * @reg_initvals: initial values for the regulator registers | ||
103 | * plus two sleep settings for LDO E and the BUCK converter. | ||
104 | * exactly AB3100_NUM_REGULATORS+2 values must be sent in. | ||
105 | * Order: LDO A, C, E, E sleep, F, G, H, K, EXT, BUCK, | ||
106 | * BUCK sleep, LDO D. (LDO D need to be initialized last.) | ||
107 | * @external_voltage: voltage level of the external regulator. | ||
108 | */ | ||
109 | struct ab3100_platform_data { | ||
110 | struct regulator_init_data reg_constraints[AB3100_NUM_REGULATORS]; | ||
111 | u8 reg_initvals[AB3100_NUM_REGULATORS+2]; | ||
112 | int external_voltage; | ||
113 | }; | ||
114 | |||
115 | int ab3100_set_register_interruptible(struct ab3100 *ab3100, u8 reg, u8 regval); | ||
116 | int ab3100_get_register_interruptible(struct ab3100 *ab3100, u8 reg, u8 *regval); | ||
117 | int ab3100_get_register_page_interruptible(struct ab3100 *ab3100, | ||
118 | u8 first_reg, u8 *regvals, u8 numregs); | ||
119 | int ab3100_mask_and_set_register_interruptible(struct ab3100 *ab3100, | ||
120 | u8 reg, u8 andmask, u8 ormask); | ||
121 | u8 ab3100_get_chip_type(struct ab3100 *ab3100); | ||
122 | int ab3100_event_register(struct ab3100 *ab3100, | ||
123 | struct notifier_block *nb); | ||
124 | int ab3100_event_unregister(struct ab3100 *ab3100, | ||
125 | struct notifier_block *nb); | ||
126 | int ab3100_event_registers_startup_state_get(struct ab3100 *ab3100, | ||
127 | u32 *fatevent); | ||
128 | |||
129 | #endif | ||