From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ie0-f179.google.com ([209.85.223.179]:61035 "EHLO mail-ie0-f179.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751066AbbASLeT (ORCPT ); Mon, 19 Jan 2015 06:34:19 -0500 Received: by mail-ie0-f179.google.com with SMTP id rp18so29957555iec.10 for ; Mon, 19 Jan 2015 03:34:18 -0800 (PST) Date: Mon, 19 Jan 2015 11:33:32 +0000 From: Lee Jones To: Adam Thomson Cc: Samuel Ortiz , Jonathan Cameron , Hartmut Knaack , linux-iio@vger.kernel.org, Sebastian Reichel , Dmitry Eremin-Solenikov , David Woodhouse , linux-pm@vger.kernel.org, Rob Herring , Pawel Moll , Mark Rutland , Ian Campbell , Kumar Gala , Grant Likely , devicetree@vger.kernel.org, Andrew Morton , Joe Perches , linux-kernel@vger.kernel.org, support.opensource@diasemi.com Subject: Re: [PATCH v5 1/7] mfd: Add support for DA9150 combined charger & fuel-gauge device Message-ID: <20150119113332.GP21886@x1> References: <8768cf84babd1bc3e16dadc25bdbb50cebfb44b6.1419264383.git.Adam.Thomson.Opensource@diasemi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 In-Reply-To: <8768cf84babd1bc3e16dadc25bdbb50cebfb44b6.1419264383.git.Adam.Thomson.Opensource@diasemi.com> Sender: linux-iio-owner@vger.kernel.org List-Id: linux-iio@vger.kernel.org On Mon, 22 Dec 2014, Adam Thomson wrote: > DA9150 is a combined Charger and Fuel-Gauge IC, with additional > GPIO and GPADC functionality. > > Signed-off-by: Adam Thomson > --- > drivers/mfd/Kconfig | 12 + > drivers/mfd/Makefile | 2 +- > drivers/mfd/da9150-core.c | 413 ++++++++++++ > include/linux/mfd/da9150/core.h | 68 ++ > include/linux/mfd/da9150/registers.h | 1155 ++++++++++++++++++++++++++++++++++ > 5 files changed, 1649 insertions(+), 1 deletion(-) > create mode 100644 drivers/mfd/da9150-core.c > create mode 100644 include/linux/mfd/da9150/core.h > create mode 100644 include/linux/mfd/da9150/registers.h > > diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig > index 2e6b731..56e80d2 100644 > --- a/drivers/mfd/Kconfig > +++ b/drivers/mfd/Kconfig > @@ -195,6 +195,18 @@ config MFD_DA9063 > Additional drivers must be enabled in order to use the functionality > of the device. > > +config MFD_DA9150 > + tristate "Dialog Semiconductor DA9150 Charger Fuel-Gauge chip" > + depends on I2C=y > + select MFD_CORE > + select REGMAP_I2C > + select REGMAP_IRQ > + help > + This adds support for the DA9150 integrated charger and fuel-gauge > + chip. This driver provides common support for accessing the device. > + Additional drivers must be enabled in order to use the specific > + features of the device. > + > config MFD_DLN2 > tristate "Diolan DLN2 support" > select MFD_CORE > diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile > index 53467e2..f06f4c6 100644 > --- a/drivers/mfd/Makefile > +++ b/drivers/mfd/Makefile > @@ -113,7 +113,7 @@ obj-$(CONFIG_MFD_DA9055) += da9055.o > > da9063-objs := da9063-core.o da9063-irq.o da9063-i2c.o > obj-$(CONFIG_MFD_DA9063) += da9063.o > - > +obj-$(CONFIG_MFD_DA9150) += da9150-core.o > obj-$(CONFIG_MFD_MAX14577) += max14577.o > obj-$(CONFIG_MFD_MAX77686) += max77686.o > obj-$(CONFIG_MFD_MAX77693) += max77693.o > diff --git a/drivers/mfd/da9150-core.c b/drivers/mfd/da9150-core.c > new file mode 100644 > index 0000000..4d757b9 > --- /dev/null > +++ b/drivers/mfd/da9150-core.c > @@ -0,0 +1,413 @@ > +/* > + * DA9150 Core MFD Driver > + * > + * Copyright (c) 2014 Dialog Semiconductor > + * > + * Author: Adam Thomson > + * > + * 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. > + */ [...] > +u8 da9150_reg_read(struct da9150 *da9150, u16 reg) > +{ > + int val, ret; > + > + ret = regmap_read(da9150->regmap, reg, &val); > + if (ret) > + dev_err(da9150->dev, "Failed to read from reg 0x%x: %d\n", > + reg, ret); > + > + return (u8) val; > +} > +EXPORT_SYMBOL_GPL(da9150_reg_read); > + > +void da9150_reg_write(struct da9150 *da9150, u16 reg, u8 val) > +{ > + int ret; > + > + ret = regmap_write(da9150->regmap, reg, val); > + if (ret) > + dev_err(da9150->dev, "Failed to write to reg 0x%x: %d\n", > + reg, ret); > +} > +EXPORT_SYMBOL_GPL(da9150_reg_write); > + > +void da9150_set_bits(struct da9150 *da9150, u16 reg, u8 mask, u8 val) > +{ > + int ret; > + > + ret = regmap_update_bits(da9150->regmap, reg, mask, val); > + if (ret) > + dev_err(da9150->dev, "Failed to set bits in reg 0x%x: %d\n", > + reg, ret); > +} > +EXPORT_SYMBOL_GPL(da9150_set_bits); > + > +void da9150_bulk_read(struct da9150 *da9150, u16 reg, int count, u8 *buf) > +{ > + int ret; > + > + ret = regmap_bulk_read(da9150->regmap, reg, buf, count); > + if (ret) > + dev_err(da9150->dev, "Failed to bulk read from reg 0x%x: %d\n", > + reg, ret); > +} > +EXPORT_SYMBOL_GPL(da9150_bulk_read); > + > +void da9150_bulk_write(struct da9150 *da9150, u16 reg, int count, const u8 *buf) > +{ > + int ret; > + > + ret = regmap_raw_write(da9150->regmap, reg, buf, count); > + if (ret) > + dev_err(da9150->dev, "Failed to bulk write to reg 0x%x %d\n", > + reg, ret); > +} > +EXPORT_SYMBOL_GPL(da9150_bulk_write); I've never been a fan of this type of aggregation. Can you explain to me what the point of them is? -- Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog