Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mfd: ab3100: Split ab3100 headers out of abx500.h

The U8500 has its own set of separate header, so the abx500
becomes completely abstract. Do the same split for the AB3100
legacy ASIC.

Signed-off-by: Marcus Cooper <marcus.xm.cooper@stericsson.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>

authored by

Marcus Cooper and committed by
Samuel Ortiz
0fd0013c 50b381b7

+133 -117
+1 -1
arch/arm/mach-u300/i2c.c
··· 9 9 */ 10 10 #include <linux/kernel.h> 11 11 #include <linux/i2c.h> 12 - #include <linux/mfd/abx500.h> 12 + #include <linux/mfd/ab3100.h> 13 13 #include <linux/regulator/machine.h> 14 14 #include <linux/amba/bus.h> 15 15 #include <mach/irqs.h>
+1
drivers/mfd/ab3100-core.c
··· 21 21 #include <linux/seq_file.h> 22 22 #include <linux/uaccess.h> 23 23 #include <linux/mfd/core.h> 24 + #include <linux/mfd/ab3100.h> 24 25 #include <linux/mfd/abx500.h> 25 26 26 27 /* These are the only registers inside AB3100 used in this main file */
+1
drivers/regulator/ab3100.c
··· 15 15 #include <linux/err.h> 16 16 #include <linux/platform_device.h> 17 17 #include <linux/regulator/driver.h> 18 + #include <linux/mfd/ab3100.h> 18 19 #include <linux/mfd/abx500.h> 19 20 20 21 /* LDO registers and some handy masking definitions for AB3100 */
+129
include/linux/mfd/ab3100.h
··· 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 + 9 + #include <linux/regulator/machine.h> 10 + 11 + struct device; 12 + 13 + #ifndef MFD_AB3100_H 14 + #define MFD_AB3100_H 15 + 16 + 17 + #define AB3100_P1A 0xc0 18 + #define AB3100_P1B 0xc1 19 + #define AB3100_P1C 0xc2 20 + #define AB3100_P1D 0xc3 21 + #define AB3100_P1E 0xc4 22 + #define AB3100_P1F 0xc5 23 + #define AB3100_P1G 0xc6 24 + #define AB3100_R2A 0xc7 25 + #define AB3100_R2B 0xc8 26 + 27 + /* 28 + * AB3100, EVENTA1, A2 and A3 event register flags 29 + * these are catenated into a single 32-bit flag in the code 30 + * for event notification broadcasts. 31 + */ 32 + #define AB3100_EVENTA1_ONSWA (0x01<<16) 33 + #define AB3100_EVENTA1_ONSWB (0x02<<16) 34 + #define AB3100_EVENTA1_ONSWC (0x04<<16) 35 + #define AB3100_EVENTA1_DCIO (0x08<<16) 36 + #define AB3100_EVENTA1_OVER_TEMP (0x10<<16) 37 + #define AB3100_EVENTA1_SIM_OFF (0x20<<16) 38 + #define AB3100_EVENTA1_VBUS (0x40<<16) 39 + #define AB3100_EVENTA1_VSET_USB (0x80<<16) 40 + 41 + #define AB3100_EVENTA2_READY_TX (0x01<<8) 42 + #define AB3100_EVENTA2_READY_RX (0x02<<8) 43 + #define AB3100_EVENTA2_OVERRUN_ERROR (0x04<<8) 44 + #define AB3100_EVENTA2_FRAMING_ERROR (0x08<<8) 45 + #define AB3100_EVENTA2_CHARG_OVERCURRENT (0x10<<8) 46 + #define AB3100_EVENTA2_MIDR (0x20<<8) 47 + #define AB3100_EVENTA2_BATTERY_REM (0x40<<8) 48 + #define AB3100_EVENTA2_ALARM (0x80<<8) 49 + 50 + #define AB3100_EVENTA3_ADC_TRIG5 (0x01) 51 + #define AB3100_EVENTA3_ADC_TRIG4 (0x02) 52 + #define AB3100_EVENTA3_ADC_TRIG3 (0x04) 53 + #define AB3100_EVENTA3_ADC_TRIG2 (0x08) 54 + #define AB3100_EVENTA3_ADC_TRIGVBAT (0x10) 55 + #define AB3100_EVENTA3_ADC_TRIGVTX (0x20) 56 + #define AB3100_EVENTA3_ADC_TRIG1 (0x40) 57 + #define AB3100_EVENTA3_ADC_TRIG0 (0x80) 58 + 59 + /* AB3100, STR register flags */ 60 + #define AB3100_STR_ONSWA (0x01) 61 + #define AB3100_STR_ONSWB (0x02) 62 + #define AB3100_STR_ONSWC (0x04) 63 + #define AB3100_STR_DCIO (0x08) 64 + #define AB3100_STR_BOOT_MODE (0x10) 65 + #define AB3100_STR_SIM_OFF (0x20) 66 + #define AB3100_STR_BATT_REMOVAL (0x40) 67 + #define AB3100_STR_VBUS (0x80) 68 + 69 + /* 70 + * AB3100 contains 8 regulators, one external regulator controller 71 + * and a buck converter, further the LDO E and buck converter can 72 + * have separate settings if they are in sleep mode, this is 73 + * modeled as a separate regulator. 74 + */ 75 + #define AB3100_NUM_REGULATORS 10 76 + 77 + /** 78 + * struct ab3100 79 + * @access_mutex: lock out concurrent accesses to the AB3100 registers 80 + * @dev: pointer to the containing device 81 + * @i2c_client: I2C client for this chip 82 + * @testreg_client: secondary client for test registers 83 + * @chip_name: name of this chip variant 84 + * @chip_id: 8 bit chip ID for this chip variant 85 + * @event_subscribers: event subscribers are listed here 86 + * @startup_events: a copy of the first reading of the event registers 87 + * @startup_events_read: whether the first events have been read 88 + * 89 + * This struct is PRIVATE and devices using it should NOT 90 + * access ANY fields. It is used as a token for calling the 91 + * AB3100 functions. 92 + */ 93 + struct ab3100 { 94 + struct mutex access_mutex; 95 + struct device *dev; 96 + struct i2c_client *i2c_client; 97 + struct i2c_client *testreg_client; 98 + char chip_name[32]; 99 + u8 chip_id; 100 + struct blocking_notifier_head event_subscribers; 101 + u8 startup_events[3]; 102 + bool startup_events_read; 103 + }; 104 + 105 + /** 106 + * struct ab3100_platform_data 107 + * Data supplied to initialize board connections to the AB3100 108 + * @reg_constraints: regulator constraints for target board 109 + * the order of these constraints are: LDO A, C, D, E, 110 + * F, G, H, K, EXT and BUCK. 111 + * @reg_initvals: initial values for the regulator registers 112 + * plus two sleep settings for LDO E and the BUCK converter. 113 + * exactly AB3100_NUM_REGULATORS+2 values must be sent in. 114 + * Order: LDO A, C, E, E sleep, F, G, H, K, EXT, BUCK, 115 + * BUCK sleep, LDO D. (LDO D need to be initialized last.) 116 + * @external_voltage: voltage level of the external regulator. 117 + */ 118 + struct ab3100_platform_data { 119 + struct regulator_init_data reg_constraints[AB3100_NUM_REGULATORS]; 120 + u8 reg_initvals[AB3100_NUM_REGULATORS+2]; 121 + int external_voltage; 122 + }; 123 + 124 + int ab3100_event_register(struct ab3100 *ab3100, 125 + struct notifier_block *nb); 126 + int ab3100_event_unregister(struct ab3100 *ab3100, 127 + struct notifier_block *nb); 128 + 129 + #endif /* MFD_AB3100_H */
+1 -116
include/linux/mfd/abx500.h
··· 1 1 /* 2 2 * Copyright (C) 2007-2009 ST-Ericsson AB 3 3 * License terms: GNU General Public License (GPL) version 2 4 - * AB3100 core access functions 5 - * Author: Linus Walleij <linus.walleij@stericsson.com> 6 4 * 7 5 * ABX500 core access functions. 8 - * The abx500 interface is used for the Analog Baseband chip 9 - * ab3100 and ab8500. 6 + * The abx500 interface is used for the Analog Baseband chips. 10 7 * 11 8 * Author: Mattias Wallin <mattias.wallin@stericsson.com> 12 9 * Author: Mattias Nilsson <mattias.i.nilsson@stericsson.com> ··· 17 20 18 21 #ifndef MFD_ABX500_H 19 22 #define MFD_ABX500_H 20 - 21 - #define AB3100_P1A 0xc0 22 - #define AB3100_P1B 0xc1 23 - #define AB3100_P1C 0xc2 24 - #define AB3100_P1D 0xc3 25 - #define AB3100_P1E 0xc4 26 - #define AB3100_P1F 0xc5 27 - #define AB3100_P1G 0xc6 28 - #define AB3100_R2A 0xc7 29 - #define AB3100_R2B 0xc8 30 - 31 - /* 32 - * AB3100, EVENTA1, A2 and A3 event register flags 33 - * these are catenated into a single 32-bit flag in the code 34 - * for event notification broadcasts. 35 - */ 36 - #define AB3100_EVENTA1_ONSWA (0x01<<16) 37 - #define AB3100_EVENTA1_ONSWB (0x02<<16) 38 - #define AB3100_EVENTA1_ONSWC (0x04<<16) 39 - #define AB3100_EVENTA1_DCIO (0x08<<16) 40 - #define AB3100_EVENTA1_OVER_TEMP (0x10<<16) 41 - #define AB3100_EVENTA1_SIM_OFF (0x20<<16) 42 - #define AB3100_EVENTA1_VBUS (0x40<<16) 43 - #define AB3100_EVENTA1_VSET_USB (0x80<<16) 44 - 45 - #define AB3100_EVENTA2_READY_TX (0x01<<8) 46 - #define AB3100_EVENTA2_READY_RX (0x02<<8) 47 - #define AB3100_EVENTA2_OVERRUN_ERROR (0x04<<8) 48 - #define AB3100_EVENTA2_FRAMING_ERROR (0x08<<8) 49 - #define AB3100_EVENTA2_CHARG_OVERCURRENT (0x10<<8) 50 - #define AB3100_EVENTA2_MIDR (0x20<<8) 51 - #define AB3100_EVENTA2_BATTERY_REM (0x40<<8) 52 - #define AB3100_EVENTA2_ALARM (0x80<<8) 53 - 54 - #define AB3100_EVENTA3_ADC_TRIG5 (0x01) 55 - #define AB3100_EVENTA3_ADC_TRIG4 (0x02) 56 - #define AB3100_EVENTA3_ADC_TRIG3 (0x04) 57 - #define AB3100_EVENTA3_ADC_TRIG2 (0x08) 58 - #define AB3100_EVENTA3_ADC_TRIGVBAT (0x10) 59 - #define AB3100_EVENTA3_ADC_TRIGVTX (0x20) 60 - #define AB3100_EVENTA3_ADC_TRIG1 (0x40) 61 - #define AB3100_EVENTA3_ADC_TRIG0 (0x80) 62 - 63 - /* AB3100, STR register flags */ 64 - #define AB3100_STR_ONSWA (0x01) 65 - #define AB3100_STR_ONSWB (0x02) 66 - #define AB3100_STR_ONSWC (0x04) 67 - #define AB3100_STR_DCIO (0x08) 68 - #define AB3100_STR_BOOT_MODE (0x10) 69 - #define AB3100_STR_SIM_OFF (0x20) 70 - #define AB3100_STR_BATT_REMOVAL (0x40) 71 - #define AB3100_STR_VBUS (0x80) 72 - 73 - /* 74 - * AB3100 contains 8 regulators, one external regulator controller 75 - * and a buck converter, further the LDO E and buck converter can 76 - * have separate settings if they are in sleep mode, this is 77 - * modeled as a separate regulator. 78 - */ 79 - #define AB3100_NUM_REGULATORS 10 80 - 81 - /** 82 - * struct ab3100 83 - * @access_mutex: lock out concurrent accesses to the AB3100 registers 84 - * @dev: pointer to the containing device 85 - * @i2c_client: I2C client for this chip 86 - * @testreg_client: secondary client for test registers 87 - * @chip_name: name of this chip variant 88 - * @chip_id: 8 bit chip ID for this chip variant 89 - * @event_subscribers: event subscribers are listed here 90 - * @startup_events: a copy of the first reading of the event registers 91 - * @startup_events_read: whether the first events have been read 92 - * 93 - * This struct is PRIVATE and devices using it should NOT 94 - * access ANY fields. It is used as a token for calling the 95 - * AB3100 functions. 96 - */ 97 - struct ab3100 { 98 - struct mutex access_mutex; 99 - struct device *dev; 100 - struct i2c_client *i2c_client; 101 - struct i2c_client *testreg_client; 102 - char chip_name[32]; 103 - u8 chip_id; 104 - struct blocking_notifier_head event_subscribers; 105 - u8 startup_events[3]; 106 - bool startup_events_read; 107 - }; 108 - 109 - /** 110 - * struct ab3100_platform_data 111 - * Data supplied to initialize board connections to the AB3100 112 - * @reg_constraints: regulator constraints for target board 113 - * the order of these constraints are: LDO A, C, D, E, 114 - * F, G, H, K, EXT and BUCK. 115 - * @reg_initvals: initial values for the regulator registers 116 - * plus two sleep settings for LDO E and the BUCK converter. 117 - * exactly AB3100_NUM_REGULATORS+2 values must be sent in. 118 - * Order: LDO A, C, E, E sleep, F, G, H, K, EXT, BUCK, 119 - * BUCK sleep, LDO D. (LDO D need to be initialized last.) 120 - * @external_voltage: voltage level of the external regulator. 121 - */ 122 - struct ab3100_platform_data { 123 - struct regulator_init_data reg_constraints[AB3100_NUM_REGULATORS]; 124 - u8 reg_initvals[AB3100_NUM_REGULATORS+2]; 125 - int external_voltage; 126 - }; 127 - 128 - int ab3100_event_register(struct ab3100 *ab3100, 129 - struct notifier_block *nb); 130 - int ab3100_event_unregister(struct ab3100 *ab3100, 131 - struct notifier_block *nb); 132 23 133 24 /** 134 25 * struct abx500_init_setting