RE: [PATCH v6 1/3] mfd: Add new mfd device TPS68470

2017-08-08 Thread Mani, Rajmohan
Thanks Lee.

Sorry for the noise, as some keystrokes sent out the empty response earlier.

Raj

> -Original Message-
> From: Mani, Rajmohan
> Sent: Tuesday, August 08, 2017 11:58 AM
> To: 'Lee Jones' <lee.jo...@linaro.org>
> Cc: linux-kernel@vger.kernel.org; linux-g...@vger.kernel.org; linux-
> a...@vger.kernel.org; Linus Walleij <linus.wall...@linaro.org>; Alexandre
> Courbot <gnu...@gmail.com>; Rafael J. Wysocki <r...@rjwysocki.net>; Len
> Brown <l...@kernel.org>; sakari.ai...@linux.intel.com; Andy Shevchenko
> <andy.shevche...@gmail.com>
> Subject: RE: [PATCH v6 1/3] mfd: Add new mfd device TPS68470
> 
> 
> 
> > -Original Message-
> > From: Lee Jones [mailto:lee.jo...@linaro.org]
> > Sent: Tuesday, August 08, 2017 12:40 AM
> > To: Mani, Rajmohan <rajmohan.m...@intel.com>
> > Cc: linux-kernel@vger.kernel.org; linux-g...@vger.kernel.org; linux-
> > a...@vger.kernel.org; Linus Walleij <linus.wall...@linaro.org>;
> > Alexandre Courbot <gnu...@gmail.com>; Rafael J. Wysocki
> > <r...@rjwysocki.net>; Len Brown <l...@kernel.org>;
> > sakari.ai...@linux.intel.com; Andy Shevchenko
> > <andy.shevche...@gmail.com>
> > Subject: Re: [PATCH v6 1/3] mfd: Add new mfd device TPS68470
> >
> > On Fri, 28 Jul 2017, Rajmohan Mani wrote:
> >
> > > The TPS68470 device is an advanced power management unit that
> powers
> > a
> > > Compact Camera Module (CCM), generates clocks for image sensors,
> > > drives a dual LED for Flash and incorporates two LED drivers for
> > > general purpose indicators.
> > >
> > > This patch adds support for TPS68470 mfd device.
> > >
> > > Signed-off-by: Rajmohan Mani <rajmohan.m...@intel.com>
> > > ---
> > >  drivers/mfd/Kconfig  |  18 
> > >  drivers/mfd/Makefile |   1 +
> > >  drivers/mfd/tps68470.c   | 106
> > +++
> > >  include/linux/mfd/tps68470.h |  97
> > > +++
> > >  4 files changed, 222 insertions(+)
> > >  create mode 100644 drivers/mfd/tps68470.c  create mode 100644
> > > include/linux/mfd/tps68470.h
> >
> > Applied, thanks.
> >
> > --
> > Lee Jones
> > Linaro STMicroelectronics Landing Team Lead Linaro.org │ Open source
> > software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog


RE: [PATCH v6 1/3] mfd: Add new mfd device TPS68470

2017-08-08 Thread Mani, Rajmohan
Thanks Lee.

Sorry for the noise, as some keystrokes sent out the empty response earlier.

Raj

> -Original Message-
> From: Mani, Rajmohan
> Sent: Tuesday, August 08, 2017 11:58 AM
> To: 'Lee Jones' 
> Cc: linux-kernel@vger.kernel.org; linux-g...@vger.kernel.org; linux-
> a...@vger.kernel.org; Linus Walleij ; Alexandre
> Courbot ; Rafael J. Wysocki ; Len
> Brown ; sakari.ai...@linux.intel.com; Andy Shevchenko
> 
> Subject: RE: [PATCH v6 1/3] mfd: Add new mfd device TPS68470
> 
> 
> 
> > -Original Message-
> > From: Lee Jones [mailto:lee.jo...@linaro.org]
> > Sent: Tuesday, August 08, 2017 12:40 AM
> > To: Mani, Rajmohan 
> > Cc: linux-kernel@vger.kernel.org; linux-g...@vger.kernel.org; linux-
> > a...@vger.kernel.org; Linus Walleij ;
> > Alexandre Courbot ; Rafael J. Wysocki
> > ; Len Brown ;
> > sakari.ai...@linux.intel.com; Andy Shevchenko
> > 
> > Subject: Re: [PATCH v6 1/3] mfd: Add new mfd device TPS68470
> >
> > On Fri, 28 Jul 2017, Rajmohan Mani wrote:
> >
> > > The TPS68470 device is an advanced power management unit that
> powers
> > a
> > > Compact Camera Module (CCM), generates clocks for image sensors,
> > > drives a dual LED for Flash and incorporates two LED drivers for
> > > general purpose indicators.
> > >
> > > This patch adds support for TPS68470 mfd device.
> > >
> > > Signed-off-by: Rajmohan Mani 
> > > ---
> > >  drivers/mfd/Kconfig  |  18 
> > >  drivers/mfd/Makefile |   1 +
> > >  drivers/mfd/tps68470.c   | 106
> > +++
> > >  include/linux/mfd/tps68470.h |  97
> > > +++
> > >  4 files changed, 222 insertions(+)
> > >  create mode 100644 drivers/mfd/tps68470.c  create mode 100644
> > > include/linux/mfd/tps68470.h
> >
> > Applied, thanks.
> >
> > --
> > Lee Jones
> > Linaro STMicroelectronics Landing Team Lead Linaro.org │ Open source
> > software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog


RE: [PATCH v6 1/3] mfd: Add new mfd device TPS68470

2017-08-08 Thread Mani, Rajmohan


> -Original Message-
> From: Lee Jones [mailto:lee.jo...@linaro.org]
> Sent: Tuesday, August 08, 2017 12:40 AM
> To: Mani, Rajmohan <rajmohan.m...@intel.com>
> Cc: linux-kernel@vger.kernel.org; linux-g...@vger.kernel.org; linux-
> a...@vger.kernel.org; Linus Walleij <linus.wall...@linaro.org>; Alexandre
> Courbot <gnu...@gmail.com>; Rafael J. Wysocki <r...@rjwysocki.net>; Len
> Brown <l...@kernel.org>; sakari.ai...@linux.intel.com; Andy Shevchenko
> <andy.shevche...@gmail.com>
> Subject: Re: [PATCH v6 1/3] mfd: Add new mfd device TPS68470
> 
> On Fri, 28 Jul 2017, Rajmohan Mani wrote:
> 
> > The TPS68470 device is an advanced power management unit that powers
> a
> > Compact Camera Module (CCM), generates clocks for image sensors,
> > drives a dual LED for Flash and incorporates two LED drivers for
> > general purpose indicators.
> >
> > This patch adds support for TPS68470 mfd device.
> >
> > Signed-off-by: Rajmohan Mani <rajmohan.m...@intel.com>
> > ---
> >  drivers/mfd/Kconfig  |  18 
> >  drivers/mfd/Makefile |   1 +
> >  drivers/mfd/tps68470.c   | 106
> +++
> >  include/linux/mfd/tps68470.h |  97
> > +++
> >  4 files changed, 222 insertions(+)
> >  create mode 100644 drivers/mfd/tps68470.c  create mode 100644
> > include/linux/mfd/tps68470.h
> 
> Applied, thanks.
> 
> --
> Lee Jones
> Linaro STMicroelectronics Landing Team Lead Linaro.org │ Open source
> software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog


RE: [PATCH v6 1/3] mfd: Add new mfd device TPS68470

2017-08-08 Thread Mani, Rajmohan


> -Original Message-
> From: Lee Jones [mailto:lee.jo...@linaro.org]
> Sent: Tuesday, August 08, 2017 12:40 AM
> To: Mani, Rajmohan 
> Cc: linux-kernel@vger.kernel.org; linux-g...@vger.kernel.org; linux-
> a...@vger.kernel.org; Linus Walleij ; Alexandre
> Courbot ; Rafael J. Wysocki ; Len
> Brown ; sakari.ai...@linux.intel.com; Andy Shevchenko
> 
> Subject: Re: [PATCH v6 1/3] mfd: Add new mfd device TPS68470
> 
> On Fri, 28 Jul 2017, Rajmohan Mani wrote:
> 
> > The TPS68470 device is an advanced power management unit that powers
> a
> > Compact Camera Module (CCM), generates clocks for image sensors,
> > drives a dual LED for Flash and incorporates two LED drivers for
> > general purpose indicators.
> >
> > This patch adds support for TPS68470 mfd device.
> >
> > Signed-off-by: Rajmohan Mani 
> > ---
> >  drivers/mfd/Kconfig  |  18 
> >  drivers/mfd/Makefile |   1 +
> >  drivers/mfd/tps68470.c   | 106
> +++
> >  include/linux/mfd/tps68470.h |  97
> > +++
> >  4 files changed, 222 insertions(+)
> >  create mode 100644 drivers/mfd/tps68470.c  create mode 100644
> > include/linux/mfd/tps68470.h
> 
> Applied, thanks.
> 
> --
> Lee Jones
> Linaro STMicroelectronics Landing Team Lead Linaro.org │ Open source
> software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog


Re: [PATCH v6 1/3] mfd: Add new mfd device TPS68470

2017-08-08 Thread Lee Jones
On Fri, 28 Jul 2017, Rajmohan Mani wrote:

> The TPS68470 device is an advanced power management
> unit that powers a Compact Camera Module (CCM),
> generates clocks for image sensors, drives a dual
> LED for Flash and incorporates two LED drivers for
> general purpose indicators.
> 
> This patch adds support for TPS68470 mfd device.
> 
> Signed-off-by: Rajmohan Mani 
> ---
>  drivers/mfd/Kconfig  |  18 
>  drivers/mfd/Makefile |   1 +
>  drivers/mfd/tps68470.c   | 106 
> +++
>  include/linux/mfd/tps68470.h |  97 +++
>  4 files changed, 222 insertions(+)
>  create mode 100644 drivers/mfd/tps68470.c
>  create mode 100644 include/linux/mfd/tps68470.h

Applied, thanks.

-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog


Re: [PATCH v6 1/3] mfd: Add new mfd device TPS68470

2017-08-08 Thread Lee Jones
On Fri, 28 Jul 2017, Rajmohan Mani wrote:

> The TPS68470 device is an advanced power management
> unit that powers a Compact Camera Module (CCM),
> generates clocks for image sensors, drives a dual
> LED for Flash and incorporates two LED drivers for
> general purpose indicators.
> 
> This patch adds support for TPS68470 mfd device.
> 
> Signed-off-by: Rajmohan Mani 
> ---
>  drivers/mfd/Kconfig  |  18 
>  drivers/mfd/Makefile |   1 +
>  drivers/mfd/tps68470.c   | 106 
> +++
>  include/linux/mfd/tps68470.h |  97 +++
>  4 files changed, 222 insertions(+)
>  create mode 100644 drivers/mfd/tps68470.c
>  create mode 100644 include/linux/mfd/tps68470.h

Applied, thanks.

-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog


[PATCH v6 1/3] mfd: Add new mfd device TPS68470

2017-07-28 Thread Rajmohan Mani
The TPS68470 device is an advanced power management
unit that powers a Compact Camera Module (CCM),
generates clocks for image sensors, drives a dual
LED for Flash and incorporates two LED drivers for
general purpose indicators.

This patch adds support for TPS68470 mfd device.

Signed-off-by: Rajmohan Mani 
---
 drivers/mfd/Kconfig  |  18 
 drivers/mfd/Makefile |   1 +
 drivers/mfd/tps68470.c   | 106 +++
 include/linux/mfd/tps68470.h |  97 +++
 4 files changed, 222 insertions(+)
 create mode 100644 drivers/mfd/tps68470.c
 create mode 100644 include/linux/mfd/tps68470.h

diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
index 94ad2c1..74f41a1 100644
--- a/drivers/mfd/Kconfig
+++ b/drivers/mfd/Kconfig
@@ -1337,6 +1337,24 @@ config MFD_TPS65217
  This driver can also be built as a module.  If so, the module
  will be called tps65217.
 
+config MFD_TPS68470
+   bool "TI TPS68470 Power Management / LED chips"
+   depends on ACPI && I2C=y
+   select MFD_CORE
+   select REGMAP_I2C
+   select I2C_DESIGNWARE_PLATFORM
+   help
+ If you say yes here you get support for the TPS68470 series of
+ Power Management / LED chips.
+
+ These include voltage regulators, LEDs and other features
+ that are often used in portable devices.
+
+ This option is a bool as it provides an ACPI operation
+ region, which must be available before any of the devices
+ using this are probed. This option also configures the
+ designware-i2c driver to be built-in, for the same reason.
+
 config MFD_TI_LP873X
tristate "TI LP873X Power Management IC"
depends on I2C
diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
index 080793b..0b1fd82 100644
--- a/drivers/mfd/Makefile
+++ b/drivers/mfd/Makefile
@@ -83,6 +83,7 @@ obj-$(CONFIG_MFD_TPS65910)+= tps65910.o
 obj-$(CONFIG_MFD_TPS65912) += tps65912-core.o
 obj-$(CONFIG_MFD_TPS65912_I2C) += tps65912-i2c.o
 obj-$(CONFIG_MFD_TPS65912_SPI)  += tps65912-spi.o
+obj-$(CONFIG_MFD_TPS68470) += tps68470.o
 obj-$(CONFIG_MFD_TPS80031) += tps80031.o
 obj-$(CONFIG_MENELAUS) += menelaus.o
 
diff --git a/drivers/mfd/tps68470.c b/drivers/mfd/tps68470.c
new file mode 100644
index 000..189efae
--- /dev/null
+++ b/drivers/mfd/tps68470.c
@@ -0,0 +1,106 @@
+/*
+ * TPS68470 chip Parent driver
+ *
+ * Copyright (C) 2017 Intel Corporation
+ *
+ * Authors:
+ * Rajmohan Mani 
+ * Tianshu Qiu 
+ * Jian Xu Zheng 
+ * Yuning Pu 
+ *
+ * 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 version 2.
+ *
+ * This program is distributed "as is" WITHOUT ANY WARRANTY of any
+ * kind, whether express or implied; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+static const struct mfd_cell tps68470s[] = {
+   { .name = "tps68470-gpio" },
+   { .name = "tps68470_pmic_opregion" },
+};
+
+static const struct regmap_config tps68470_regmap_config = {
+   .reg_bits = 8,
+   .val_bits = 8,
+   .max_register = TPS68470_REG_MAX,
+};
+
+static int tps68470_chip_init(struct device *dev, struct regmap *regmap)
+{
+   unsigned int version;
+   int ret;
+
+   /* Force software reset */
+   ret = regmap_write(regmap, TPS68470_REG_RESET, TPS68470_REG_RESET_MASK);
+   if (ret)
+   return ret;
+
+   ret = regmap_read(regmap, TPS68470_REG_REVID, );
+   if (ret) {
+   dev_err(dev, "Failed to read revision register: %d\n", ret);
+   return ret;
+   }
+
+   dev_info(dev, "TPS68470 REVID: 0x%x\n", version);
+
+   return 0;
+}
+
+static int tps68470_probe(struct i2c_client *client)
+{
+   struct device *dev = >dev;
+   struct regmap *regmap;
+   int ret;
+
+   regmap = devm_regmap_init_i2c(client, _regmap_config);
+   if (IS_ERR(regmap)) {
+   dev_err(dev, "devm_regmap_init_i2c Error %ld\n",
+   PTR_ERR(regmap));
+   return PTR_ERR(regmap);
+   }
+
+   i2c_set_clientdata(client, regmap);
+
+   ret = tps68470_chip_init(dev, regmap);
+   if (ret < 0) {
+   dev_err(dev, "TPS68470 Init Error %d\n", ret);
+   return ret;
+   }
+
+   ret = devm_mfd_add_devices(dev, PLATFORM_DEVID_NONE, tps68470s,
+ ARRAY_SIZE(tps68470s), NULL, 0, NULL);
+   if (ret < 0) {
+   dev_err(dev, "devm_mfd_add_devices failed: %d\n", ret);
+

[PATCH v6 1/3] mfd: Add new mfd device TPS68470

2017-07-28 Thread Rajmohan Mani
The TPS68470 device is an advanced power management
unit that powers a Compact Camera Module (CCM),
generates clocks for image sensors, drives a dual
LED for Flash and incorporates two LED drivers for
general purpose indicators.

This patch adds support for TPS68470 mfd device.

Signed-off-by: Rajmohan Mani 
---
 drivers/mfd/Kconfig  |  18 
 drivers/mfd/Makefile |   1 +
 drivers/mfd/tps68470.c   | 106 +++
 include/linux/mfd/tps68470.h |  97 +++
 4 files changed, 222 insertions(+)
 create mode 100644 drivers/mfd/tps68470.c
 create mode 100644 include/linux/mfd/tps68470.h

diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
index 94ad2c1..74f41a1 100644
--- a/drivers/mfd/Kconfig
+++ b/drivers/mfd/Kconfig
@@ -1337,6 +1337,24 @@ config MFD_TPS65217
  This driver can also be built as a module.  If so, the module
  will be called tps65217.
 
+config MFD_TPS68470
+   bool "TI TPS68470 Power Management / LED chips"
+   depends on ACPI && I2C=y
+   select MFD_CORE
+   select REGMAP_I2C
+   select I2C_DESIGNWARE_PLATFORM
+   help
+ If you say yes here you get support for the TPS68470 series of
+ Power Management / LED chips.
+
+ These include voltage regulators, LEDs and other features
+ that are often used in portable devices.
+
+ This option is a bool as it provides an ACPI operation
+ region, which must be available before any of the devices
+ using this are probed. This option also configures the
+ designware-i2c driver to be built-in, for the same reason.
+
 config MFD_TI_LP873X
tristate "TI LP873X Power Management IC"
depends on I2C
diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
index 080793b..0b1fd82 100644
--- a/drivers/mfd/Makefile
+++ b/drivers/mfd/Makefile
@@ -83,6 +83,7 @@ obj-$(CONFIG_MFD_TPS65910)+= tps65910.o
 obj-$(CONFIG_MFD_TPS65912) += tps65912-core.o
 obj-$(CONFIG_MFD_TPS65912_I2C) += tps65912-i2c.o
 obj-$(CONFIG_MFD_TPS65912_SPI)  += tps65912-spi.o
+obj-$(CONFIG_MFD_TPS68470) += tps68470.o
 obj-$(CONFIG_MFD_TPS80031) += tps80031.o
 obj-$(CONFIG_MENELAUS) += menelaus.o
 
diff --git a/drivers/mfd/tps68470.c b/drivers/mfd/tps68470.c
new file mode 100644
index 000..189efae
--- /dev/null
+++ b/drivers/mfd/tps68470.c
@@ -0,0 +1,106 @@
+/*
+ * TPS68470 chip Parent driver
+ *
+ * Copyright (C) 2017 Intel Corporation
+ *
+ * Authors:
+ * Rajmohan Mani 
+ * Tianshu Qiu 
+ * Jian Xu Zheng 
+ * Yuning Pu 
+ *
+ * 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 version 2.
+ *
+ * This program is distributed "as is" WITHOUT ANY WARRANTY of any
+ * kind, whether express or implied; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+static const struct mfd_cell tps68470s[] = {
+   { .name = "tps68470-gpio" },
+   { .name = "tps68470_pmic_opregion" },
+};
+
+static const struct regmap_config tps68470_regmap_config = {
+   .reg_bits = 8,
+   .val_bits = 8,
+   .max_register = TPS68470_REG_MAX,
+};
+
+static int tps68470_chip_init(struct device *dev, struct regmap *regmap)
+{
+   unsigned int version;
+   int ret;
+
+   /* Force software reset */
+   ret = regmap_write(regmap, TPS68470_REG_RESET, TPS68470_REG_RESET_MASK);
+   if (ret)
+   return ret;
+
+   ret = regmap_read(regmap, TPS68470_REG_REVID, );
+   if (ret) {
+   dev_err(dev, "Failed to read revision register: %d\n", ret);
+   return ret;
+   }
+
+   dev_info(dev, "TPS68470 REVID: 0x%x\n", version);
+
+   return 0;
+}
+
+static int tps68470_probe(struct i2c_client *client)
+{
+   struct device *dev = >dev;
+   struct regmap *regmap;
+   int ret;
+
+   regmap = devm_regmap_init_i2c(client, _regmap_config);
+   if (IS_ERR(regmap)) {
+   dev_err(dev, "devm_regmap_init_i2c Error %ld\n",
+   PTR_ERR(regmap));
+   return PTR_ERR(regmap);
+   }
+
+   i2c_set_clientdata(client, regmap);
+
+   ret = tps68470_chip_init(dev, regmap);
+   if (ret < 0) {
+   dev_err(dev, "TPS68470 Init Error %d\n", ret);
+   return ret;
+   }
+
+   ret = devm_mfd_add_devices(dev, PLATFORM_DEVID_NONE, tps68470s,
+ ARRAY_SIZE(tps68470s), NULL, 0, NULL);
+   if (ret < 0) {
+   dev_err(dev, "devm_mfd_add_devices failed: %d\n", ret);
+   return ret;
+   }
+
+   return 0;
+}
+
+static const struct acpi_device_id tps68470_acpi_ids[] = {
+