From: Changhwan Youn <chaos.youn@xxxxxxxxxxx> The operation of max8952 is almost similar to max8649 except the output voltage range. This patch adds support the max8952 regulator using current max8649 implementation. And removes separate max8952.[ch] files since the functionality is now merged into this driver. Signed-off-by: Changhwan Youn <chaos.youn@xxxxxxxxxxx> Signed-off-by: Kukjin Kim <kgene.kim@xxxxxxxxxxx> Cc: MyungJoo Ham <myungjoo.ham@xxxxxxxxxxx> Cc: Kyungmin Park <kyungmin.park@xxxxxxxxxxx> Acked-by: Mark Brown <broonie@xxxxxxxxxxxxxxxxxxxxxxxxxxx> --- Following is as per Mark Brown's suggestion. Changes since v2: - Removed separate max8952.[ch] files Changes since v1: - Added returning fail when detected wrong ID - Added matching the ID from the chip in case the user got things wrong - Added enum chip ID instead of 0, 1 drivers/regulator/Kconfig | 12 +- drivers/regulator/Makefile | 1 - drivers/regulator/max8649.c | 55 +++++- drivers/regulator/max8952.c | 360 ------------------------------------- include/linux/regulator/max8952.h | 135 -------------- 5 files changed, 50 insertions(+), 513 deletions(-) delete mode 100644 drivers/regulator/max8952.c delete mode 100644 include/linux/regulator/max8952.h diff --git a/drivers/regulator/Kconfig b/drivers/regulator/Kconfig index 4889caa..fab9a90 100644 --- a/drivers/regulator/Kconfig +++ b/drivers/regulator/Kconfig @@ -81,10 +81,10 @@ config REGULATOR_MAX1586 for PXA27x chips to control VCC_CORE and VCC_USIM voltages. config REGULATOR_MAX8649 - tristate "Maxim 8649 voltage regulator" + tristate "Maxim 8649/8952 voltage regulator" depends on I2C help - This driver controls a Maxim 8649 voltage output regulator via + This driver controls a Maxim 8649/8952 voltage output regulator via I2C bus. config REGULATOR_MAX8660 @@ -100,14 +100,6 @@ config REGULATOR_MAX8925 help Say y here to support the voltage regulaltor of Maxim MAX8925 PMIC. -config REGULATOR_MAX8952 - tristate "Maxim MAX8952 Power Management IC" - depends on I2C - help - This driver controls a Maxim 8952 voltage output regulator - via I2C bus. Maxim 8952 has one voltage output and supports 4 DVS - modes ranging from 0.77V to 1.40V by 0.01V steps. - config REGULATOR_MAX8998 tristate "Maxim 8998 voltage regulator" depends on MFD_MAX8998 diff --git a/drivers/regulator/Makefile b/drivers/regulator/Makefile index beff6da..8285fd8 100644 --- a/drivers/regulator/Makefile +++ b/drivers/regulator/Makefile @@ -17,7 +17,6 @@ obj-$(CONFIG_REGULATOR_TWL4030) += twl-regulator.o obj-$(CONFIG_REGULATOR_MAX8649) += max8649.o obj-$(CONFIG_REGULATOR_MAX8660) += max8660.o obj-$(CONFIG_REGULATOR_MAX8925) += max8925-regulator.o -obj-$(CONFIG_REGULATOR_MAX8952) += max8952.o obj-$(CONFIG_REGULATOR_MAX8998) += max8998.o obj-$(CONFIG_REGULATOR_WM831X) += wm831x-dcdc.o obj-$(CONFIG_REGULATOR_WM831X) += wm831x-isink.o diff --git a/drivers/regulator/max8649.c b/drivers/regulator/max8649.c index 4520ace..7f61a3a 100644 --- a/drivers/regulator/max8649.c +++ b/drivers/regulator/max8649.c @@ -22,6 +22,9 @@ #define MAX8649_DCDC_STEP 10000 /* uV */ #define MAX8649_VOL_MASK 0x3f +/* difference between voltages of max8649 and max8952 */ +#define DIFF_MAX8952_DCDC_VOL 20000 /* uV */ + /* Registers */ #define MAX8649_MODE0 0x00 #define MAX8649_MODE1 0x01 @@ -47,6 +50,11 @@ #define MAX8649_RAMP_MASK (7 << 5) #define MAX8649_RAMP_DOWN (1 << 1) +enum chips { + MAX8649 = 0x200a, + MAX8952 = 0x201a, +}; + struct max8649_regulator_info { struct regulator_dev *regulator; struct i2c_client *i2c; @@ -54,6 +62,7 @@ struct max8649_regulator_info { struct mutex io_lock; int vol_reg; + int type; unsigned mode:2; /* bit[1:0] = VID1, VID0 */ unsigned extclk_freq:2; unsigned extclk:1; @@ -138,7 +147,12 @@ static inline int check_range(int min_uV, int max_uV) static int max8649_list_voltage(struct regulator_dev *rdev, unsigned index) { - return (MAX8649_DCDC_VMIN + index * MAX8649_DCDC_STEP); + struct max8649_regulator_info *info = rdev_get_drvdata(rdev); + int ret = MAX8649_DCDC_VMIN + index * MAX8649_DCDC_STEP; + + if (info->type == MAX8952) + ret += DIFF_MAX8952_DCDC_VOL; + return ret; } static int max8649_get_voltage(struct regulator_dev *rdev) @@ -160,6 +174,11 @@ static int max8649_set_voltage(struct regulator_dev *rdev, struct max8649_regulator_info *info = rdev_get_drvdata(rdev); unsigned char data, mask; + if (info->type == MAX8952) { + min_uV -= DIFF_MAX8952_DCDC_VOL; + max_uV -= DIFF_MAX8952_DCDC_VOL; + } + if (check_range(min_uV, max_uV)) { dev_err(info->dev, "invalid voltage range (%d, %d) uV\n", min_uV, max_uV); @@ -263,7 +282,6 @@ static struct regulator_ops max8649_dcdc_ops = { .enable_time = max8649_enable_time, .set_mode = max8649_set_mode, .get_mode = max8649_get_mode, - }; static struct regulator_desc dcdc_desc = { @@ -281,6 +299,7 @@ static int __devinit max8649_regulator_probe(struct i2c_client *client, struct max8649_regulator_info *info = NULL; unsigned char data; int ret; + int chip_id; info = kzalloc(sizeof(struct max8649_regulator_info), GFP_KERNEL); if (!info) { @@ -313,11 +332,32 @@ static int __devinit max8649_regulator_probe(struct i2c_client *client, ret = max8649_reg_read(info->i2c, MAX8649_CHIP_ID1); if (ret < 0) { - dev_err(info->dev, "Failed to detect ID of MAX8649:%d\n", - ret); + dev_err(info->dev, "Failed to detect ID1 of %s:%d\n", + id->name, ret); goto out; } - dev_info(info->dev, "Detected MAX8649 (ID:%x)\n", ret); + chip_id = ret; + + ret = max8649_reg_read(info->i2c, MAX8649_CHIP_ID2); + if (ret < 0) { + dev_err(info->dev, "Failed to detect ID2 of %s:%d\n", + id->name, ret); + goto out; + } + + chip_id = (chip_id << 8) | ret; + + if (id->driver_data != chip_id) { + dev_err(info->dev, "Failed to detect the device\n" + "requested : 0x%x, detected 0x%x\n", + id->driver_data, chip_id); + ret = -ENODEV; + goto out; + } + + dev_info(info->dev, "Detected %s (ID: 0x%x)\n", id->name, chip_id); + + info->type = id->driver_data; /* enable VID0 & VID1 */ max8649_set_bits(info->i2c, MAX8649_CONTROL, MAX8649_VID_MASK, 0); @@ -354,7 +394,7 @@ static int __devinit max8649_regulator_probe(struct i2c_client *client, goto out; } - dev_info(info->dev, "Max8649 regulator device is detected.\n"); + dev_info(info->dev, "%s regulator device is detected.\n", id->name); return 0; out: kfree(info); @@ -375,7 +415,8 @@ static int __devexit max8649_regulator_remove(struct i2c_client *client) } static const struct i2c_device_id max8649_id[] = { - { "max8649", 0 }, + { "max8649", MAX8649 }, + { "max8952", MAX8952 }, { } }; MODULE_DEVICE_TABLE(i2c, max8649_id); diff --git a/drivers/regulator/max8952.c b/drivers/regulator/max8952.c deleted file mode 100644 index f2af0b1..0000000 --- a/drivers/regulator/max8952.c +++ /dev/null @@ -1,360 +0,0 @@ -/* - * max8952.c - Voltage and current regulation for the Maxim 8952 - * - * Copyright (C) 2010 Samsung Electronics - * MyungJoo Ham <myungjoo.ham@xxxxxxxxxxx> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include <linux/module.h> -#include <linux/init.h> -#include <linux/i2c.h> -#include <linux/err.h> -#include <linux/platform_device.h> -#include <linux/regulator/driver.h> -#include <linux/regulator/max8952.h> -#include <linux/mutex.h> -#include <linux/gpio.h> -#include <linux/io.h> -#include <linux/slab.h> - -/* Registers */ -enum { - MAX8952_REG_MODE0, - MAX8952_REG_MODE1, - MAX8952_REG_MODE2, - MAX8952_REG_MODE3, - MAX8952_REG_CONTROL, - MAX8952_REG_SYNC, - MAX8952_REG_RAMP, - MAX8952_REG_CHIP_ID1, - MAX8952_REG_CHIP_ID2, -}; - -struct max8952_data { - struct i2c_client *client; - struct device *dev; - struct mutex mutex; - struct max8952_platform_data *pdata; - struct regulator_dev *rdev; - - bool vid0; - bool vid1; - bool en; -}; - -static int max8952_read_reg(struct max8952_data *max8952, u8 reg) -{ - int ret = i2c_smbus_read_byte_data(max8952->client, reg); - if (ret > 0) - ret &= 0xff; - - return ret; -} - -static int max8952_write_reg(struct max8952_data *max8952, - u8 reg, u8 value) -{ - return i2c_smbus_write_byte_data(max8952->client, reg, value); -} - -static int max8952_voltage(struct max8952_data *max8952, u8 mode) -{ - return (max8952->pdata->dvs_mode[mode] * 10 + 770) * 1000; -} - -static int max8952_list_voltage(struct regulator_dev *rdev, - unsigned int selector) -{ - struct max8952_data *max8952 = rdev_get_drvdata(rdev); - - if (rdev_get_id(rdev) != 0) - return -EINVAL; - - return max8952_voltage(max8952, selector); -} - -static int max8952_is_enabled(struct regulator_dev *rdev) -{ - struct max8952_data *max8952 = rdev_get_drvdata(rdev); - return max8952->en; -} - -static int max8952_enable(struct regulator_dev *rdev) -{ - struct max8952_data *max8952 = rdev_get_drvdata(rdev); - - /* If not valid, assume "ALWAYS_HIGH" */ - if (gpio_is_valid(max8952->pdata->gpio_en)) - gpio_set_value(max8952->pdata->gpio_en, 1); - - max8952->en = true; - return 0; -} - -static int max8952_disable(struct regulator_dev *rdev) -{ - struct max8952_data *max8952 = rdev_get_drvdata(rdev); - - /* If not valid, assume "ALWAYS_HIGH" -> not permitted */ - if (gpio_is_valid(max8952->pdata->gpio_en)) - gpio_set_value(max8952->pdata->gpio_en, 0); - else - return -EPERM; - - max8952->en = false; - return 0; -} - -static int max8952_get_voltage(struct regulator_dev *rdev) -{ - struct max8952_data *max8952 = rdev_get_drvdata(rdev); - u8 vid = 0; - - if (max8952->vid0) - vid += 1; - if (max8952->vid1) - vid += 2; - - return max8952_voltage(max8952, vid); -} - -static int max8952_set_voltage(struct regulator_dev *rdev, - int min_uV, int max_uV) -{ - struct max8952_data *max8952 = rdev_get_drvdata(rdev); - u8 vid = -1, i; - - if (!gpio_is_valid(max8952->pdata->gpio_vid0) || - !gpio_is_valid(max8952->pdata->gpio_vid0)) { - /* DVS not supported */ - return -EPERM; - } - - for (i = 0; i < MAX8952_NUM_DVS_MODE; i++) { - int volt = max8952_voltage(max8952, i); - - /* Set the voltage as low as possible within the range */ - if (volt <= max_uV && volt >= min_uV) - if (vid == -1 || max8952_voltage(max8952, vid) > volt) - vid = i; - } - - if (vid >= 0 && vid < MAX8952_NUM_DVS_MODE) { - max8952->vid0 = (vid % 2 == 1); - max8952->vid1 = (((vid >> 1) % 2) == 1); - gpio_set_value(max8952->pdata->gpio_vid0, max8952->vid0); - gpio_set_value(max8952->pdata->gpio_vid1, max8952->vid1); - } else - return -EINVAL; - - return 0; -} - -static struct regulator_ops max8952_ops = { - .list_voltage = max8952_list_voltage, - .is_enabled = max8952_is_enabled, - .enable = max8952_enable, - .disable = max8952_disable, - .get_voltage = max8952_get_voltage, - .set_voltage = max8952_set_voltage, - .set_suspend_disable = max8952_disable, -}; - -static struct regulator_desc regulator = { - .name = "MAX8952_VOUT", - .id = 0, - .n_voltages = MAX8952_NUM_DVS_MODE, - .ops = &max8952_ops, - .type = REGULATOR_VOLTAGE, - .owner = THIS_MODULE, -}; - -static int __devinit max8952_pmic_probe(struct i2c_client *client, - const struct i2c_device_id *i2c_id) -{ - struct i2c_adapter *adapter = to_i2c_adapter(client->dev.parent); - struct max8952_platform_data *pdata = client->dev.platform_data; - struct max8952_data *max8952; - - int ret = 0, err = 0; - - if (!pdata) { - dev_err(&client->dev, "Require the platform data\n"); - return -EINVAL; - } - - if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE)) - return -EIO; - - max8952 = kzalloc(sizeof(struct max8952_data), GFP_KERNEL); - if (!max8952) - return -ENOMEM; - - max8952->client = client; - max8952->dev = &client->dev; - max8952->pdata = pdata; - mutex_init(&max8952->mutex); - - max8952->rdev = regulator_register(®ulator, max8952->dev, - &pdata->reg_data, max8952); - - ret = IS_ERR(max8952->rdev); - if (ret) - dev_err(max8952->dev, "regulator init failed (%d)\n", ret); - - max8952->en = !!(pdata->reg_data.constraints.boot_on); - max8952->vid0 = (pdata->default_mode % 2) == 1; - max8952->vid1 = ((pdata->default_mode >> 1) % 2) == 1; - - if (gpio_is_valid(pdata->gpio_en)) { - if (!gpio_request(pdata->gpio_en, "MAX8952 EN")) - gpio_direction_output(pdata->gpio_en, max8952->en); - else - err = 1; - } else - err = 2; - - if (err) { - dev_info(max8952->dev, "EN gpio invalid: assume that EN" - "is always High\n"); - max8952->en = 1; - pdata->gpio_en = -1; /* Mark invalid */ - } - - err = 0; - - if (gpio_is_valid(pdata->gpio_vid0) && - gpio_is_valid(pdata->gpio_vid1)) { - if (!gpio_request(pdata->gpio_vid0, "MAX8952 VID0")) - gpio_direction_output(pdata->gpio_vid0, - (pdata->default_mode) % 2); - else - err = 1; - - if (!gpio_request(pdata->gpio_vid1, "MAX8952 VID1")) - gpio_direction_output(pdata->gpio_vid1, - (pdata->default_mode >> 1) % 2); - else { - if (!err) - gpio_free(pdata->gpio_vid0); - err = 2; - } - - } else - err = 3; - - if (err) { - dev_warn(max8952->dev, "VID0/1 gpio invalid: " - "DVS not avilable.\n"); - max8952->vid0 = 0; - max8952->vid1 = 0; - /* Mark invalid */ - pdata->gpio_vid0 = -1; - pdata->gpio_vid1 = -1; - - /* Disable Pulldown of EN only */ - max8952_write_reg(max8952, MAX8952_REG_CONTROL, 0x60); - - dev_err(max8952->dev, "DVS modes disabled because VID0 and VID1" - " do not have proper controls.\n"); - } else { - /* - * Disable Pulldown on EN, VID0, VID1 to reduce - * leakage current of MAX8952 assuming that MAX8952 - * is turned on (EN==1). Note that without having VID0/1 - * properly connected, turning pulldown off can be - * problematic. Thus, turn this off only when they are - * controllable by GPIO. - */ - max8952_write_reg(max8952, MAX8952_REG_CONTROL, 0x0); - } - - max8952_write_reg(max8952, MAX8952_REG_MODE0, - (max8952_read_reg(max8952, - MAX8952_REG_MODE0) & 0xC0) | - (pdata->dvs_mode[0] & 0x3F)); - max8952_write_reg(max8952, MAX8952_REG_MODE1, - (max8952_read_reg(max8952, - MAX8952_REG_MODE1) & 0xC0) | - (pdata->dvs_mode[1] & 0x3F)); - max8952_write_reg(max8952, MAX8952_REG_MODE2, - (max8952_read_reg(max8952, - MAX8952_REG_MODE2) & 0xC0) | - (pdata->dvs_mode[2] & 0x3F)); - max8952_write_reg(max8952, MAX8952_REG_MODE3, - (max8952_read_reg(max8952, - MAX8952_REG_MODE3) & 0xC0) | - (pdata->dvs_mode[3] & 0x3F)); - - max8952_write_reg(max8952, MAX8952_REG_SYNC, - (max8952_read_reg(max8952, MAX8952_REG_SYNC) & 0x3F) | - ((pdata->sync_freq & 0x3) << 6)); - max8952_write_reg(max8952, MAX8952_REG_RAMP, - (max8952_read_reg(max8952, MAX8952_REG_RAMP) & 0x1F) | - ((pdata->ramp_speed & 0x7) << 5)); - - i2c_set_clientdata(client, max8952); - - return ret; -} - -static int __devexit max8952_pmic_remove(struct i2c_client *client) -{ - struct max8952_data *max8952 = i2c_get_clientdata(client); - struct max8952_platform_data *pdata = max8952->pdata; - struct regulator_dev *rdev = max8952->rdev; - - regulator_unregister(rdev); - - gpio_free(pdata->gpio_vid0); - gpio_free(pdata->gpio_vid1); - gpio_free(pdata->gpio_en); - - kfree(max8952); - return 0; -} - -static const struct i2c_device_id max8952_ids[] = { - { "max8952", 0 }, - { }, -}; -MODULE_DEVICE_TABLE(i2c, max8952_ids); - -static struct i2c_driver max8952_pmic_driver = { - .probe = max8952_pmic_probe, - .remove = __devexit_p(max8952_pmic_remove), - .driver = { - .name = "max8952", - }, - .id_table = max8952_ids, -}; - -static int __init max8952_pmic_init(void) -{ - return i2c_add_driver(&max8952_pmic_driver); -} -subsys_initcall(max8952_pmic_init); - -static void __exit max8952_pmic_exit(void) -{ - i2c_del_driver(&max8952_pmic_driver); -} -module_exit(max8952_pmic_exit); - -MODULE_DESCRIPTION("MAXIM 8952 voltage regulator driver"); -MODULE_AUTHOR("MyungJoo Ham <myungjoo.ham@xxxxxxxxxxx>"); -MODULE_LICENSE("GPL"); diff --git a/include/linux/regulator/max8952.h b/include/linux/regulator/max8952.h deleted file mode 100644 index 45e4285..0000000 --- a/include/linux/regulator/max8952.h +++ /dev/null @@ -1,135 +0,0 @@ -/* - * max8952.h - Voltage regulation for the Maxim 8952 - * - * Copyright (C) 2010 Samsung Electrnoics - * MyungJoo Ham <myungjoo.ham@xxxxxxxxxxx> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef REGULATOR_MAX8952 -#define REGULATOR_MAX8952 - -#include <linux/regulator/machine.h> - -enum { - MAX8952_DVS_MODE0, - MAX8952_DVS_MODE1, - MAX8952_DVS_MODE2, - MAX8952_DVS_MODE3, -}; - -enum { - MAX8952_DVS_770mV = 0, - MAX8952_DVS_780mV, - MAX8952_DVS_790mV, - MAX8952_DVS_800mV, - MAX8952_DVS_810mV, - MAX8952_DVS_820mV, - MAX8952_DVS_830mV, - MAX8952_DVS_840mV, - MAX8952_DVS_850mV, - MAX8952_DVS_860mV, - MAX8952_DVS_870mV, - MAX8952_DVS_880mV, - MAX8952_DVS_890mV, - MAX8952_DVS_900mV, - MAX8952_DVS_910mV, - MAX8952_DVS_920mV, - MAX8952_DVS_930mV, - MAX8952_DVS_940mV, - MAX8952_DVS_950mV, - MAX8952_DVS_960mV, - MAX8952_DVS_970mV, - MAX8952_DVS_980mV, - MAX8952_DVS_990mV, - MAX8952_DVS_1000mV, - MAX8952_DVS_1010mV, - MAX8952_DVS_1020mV, - MAX8952_DVS_1030mV, - MAX8952_DVS_1040mV, - MAX8952_DVS_1050mV, - MAX8952_DVS_1060mV, - MAX8952_DVS_1070mV, - MAX8952_DVS_1080mV, - MAX8952_DVS_1090mV, - MAX8952_DVS_1100mV, - MAX8952_DVS_1110mV, - MAX8952_DVS_1120mV, - MAX8952_DVS_1130mV, - MAX8952_DVS_1140mV, - MAX8952_DVS_1150mV, - MAX8952_DVS_1160mV, - MAX8952_DVS_1170mV, - MAX8952_DVS_1180mV, - MAX8952_DVS_1190mV, - MAX8952_DVS_1200mV, - MAX8952_DVS_1210mV, - MAX8952_DVS_1220mV, - MAX8952_DVS_1230mV, - MAX8952_DVS_1240mV, - MAX8952_DVS_1250mV, - MAX8952_DVS_1260mV, - MAX8952_DVS_1270mV, - MAX8952_DVS_1280mV, - MAX8952_DVS_1290mV, - MAX8952_DVS_1300mV, - MAX8952_DVS_1310mV, - MAX8952_DVS_1320mV, - MAX8952_DVS_1330mV, - MAX8952_DVS_1340mV, - MAX8952_DVS_1350mV, - MAX8952_DVS_1360mV, - MAX8952_DVS_1370mV, - MAX8952_DVS_1380mV, - MAX8952_DVS_1390mV, - MAX8952_DVS_1400mV, -}; - -enum { - MAX8952_SYNC_FREQ_26MHZ, /* Default */ - MAX8952_SYNC_FREQ_13MHZ, - MAX8952_SYNC_FREQ_19_2MHZ, -}; - -enum { - MAX8952_RAMP_32mV_us = 0, /* Default */ - MAX8952_RAMP_16mV_us, - MAX8952_RAMP_8mV_us, - MAX8952_RAMP_4mV_us, - MAX8952_RAMP_2mV_us, - MAX8952_RAMP_1mV_us, - MAX8952_RAMP_0_5mV_us, - MAX8952_RAMP_0_25mV_us, -}; - -#define MAX8952_NUM_DVS_MODE 4 - -struct max8952_platform_data { - int gpio_vid0; - int gpio_vid1; - int gpio_en; - - u8 default_mode; - u8 dvs_mode[MAX8952_NUM_DVS_MODE]; /* MAX8952_DVS_MODEx_XXXXmV */ - - u8 sync_freq; - u8 ramp_speed; - - struct regulator_init_data reg_data; -}; - - -#endif /* REGULATOR_MAX8952 */ -- 1.6.2.5 -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html