Re: [PATCH v4 3/5] mfd: tps65912: Add driver for the TPS65912 PMIC

2015-10-13 Thread Lee Jones
On Mon, 12 Oct 2015, Andrew F. Davis wrote:

> On 10/05/2015 04:27 AM, Lee Jones wrote:
> >On Mon, 05 Oct 2015, Lee Jones wrote:
> >
> >>On Thu, 01 Oct 2015, Andrew F. Davis wrote:
> >>
> >>>This patch adds support for TPS65912 mfd device. It provides
> >>>communication through the I2C and SPI interfaces. It contains
> >>>the following components:
> >>>
> >>>  - Regulators
> >>>  - GPIO controller
> >>>
> >>>Signed-off-by: Andrew F. Davis 
> >>>---
> >>>  drivers/mfd/Kconfig  |  25 
> >>>  drivers/mfd/Makefile |   3 +
> >>>  drivers/mfd/tps65912-core.c  | 108 ++
> >>>  drivers/mfd/tps65912-i2c.c   |  82 ++
> >>>  drivers/mfd/tps65912-spi.c   |  81 ++
> >>>  include/linux/mfd/tps65912.h | 345 
> >>> +++
> >>>  6 files changed, 644 insertions(+)
> >>>  create mode 100644 drivers/mfd/tps65912-core.c
> >>>  create mode 100644 drivers/mfd/tps65912-i2c.c
> >>>  create mode 100644 drivers/mfd/tps65912-spi.c
> >>>  create mode 100644 include/linux/mfd/tps65912.h
> >>
> >>Applied, thanks.
> >
> >Whoops, I forgot about the removal patch.
> >
> >For this patch:
> >   Acked-by: Lee Jones 
> >
> >Can you break up the removal patch into subsystems as well?
> >
> 
> I can if you would like, but as I responded in the other patch I
> think that will cause problems as the Kconfig symbols in the new
> will allow the old to be compiled and this will break build. All
> the removals may have to be brought in in a single patch, again
> up to you.

If the other Maintainers are happy, I'll just take the set through
MFD and provide the necessaries.  Just collect the Acks you need and
I'll do the rest.

> >>>diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
> >>>index 9a8df8e..02b321f 100644
> >>>--- a/drivers/mfd/Kconfig
> >>>+++ b/drivers/mfd/Kconfig
> >>>@@ -1167,6 +1167,31 @@ config MFD_TPS65910
> >>> if you say yes here you get support for the TPS65910 series of
> >>> Power Management chips.
> >>>
> >>>+config MFD_TPS65912
> >>>+  tristate
> >>>+  select REGMAP
> >>>+  select REGMAP_IRQ
> >>>+
> >>>+config MFD_TPS65912_I2C
> >>>+  tristate "TI TPS65912 Power Management chip with I2C"
> >>>+  select MFD_TPS65912
> >>>+  select REGMAP_I2C
> >>>+  depends on I2C
> >>>+  depends on OF || COMPILE_TEST
> >>>+  help
> >>>+If you say yes here you get support for the TPS65912 series of
> >>>+PM chips with I2C interface.
> >>>+
> >>>+config MFD_TPS65912_SPI
> >>>+  tristate "TI TPS65912 Power Management chip with SPI"
> >>>+  select MFD_TPS65912
> >>>+  select REGMAP_SPI
> >>>+  depends on SPI_MASTER
> >>>+  depends on OF || COMPILE_TEST
> >>>+  help
> >>>+If you say yes here you get support for the TPS65912 series of
> >>>+PM chips with SPI interface.
> >>>+
> >>>  config MFD_TPS80031
> >>>   bool "TI TPS80031/TPS80032 Power Management chips"
> >>>   depends on I2C=y
> >>>diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
> >>>index 004aa76..49c3530 100644
> >>>--- a/drivers/mfd/Makefile
> >>>+++ b/drivers/mfd/Makefile
> >>>@@ -69,6 +69,9 @@ obj-$(CONFIG_TPS6507X)   += tps6507x.o
> >>>  obj-$(CONFIG_MFD_TPS65217)   += tps65217.o
> >>>  obj-$(CONFIG_MFD_TPS65218)   += tps65218.o
> >>>  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_TPS80031)   += tps80031.o
> >>>  obj-$(CONFIG_MENELAUS)   += menelaus.o
> >>>
> >>>diff --git a/drivers/mfd/tps65912-core.c b/drivers/mfd/tps65912-core.c
> >>>new file mode 100644
> >>>index 000..e787950
> >>>--- /dev/null
> >>>+++ b/drivers/mfd/tps65912-core.c
> >>>@@ -0,0 +1,108 @@
> >>>+/*
> >>>+ * Core functions for TI TPS65912x PMIC
> >>>+ *
> >>>+ * Copyright (C) 2015 Texas Instruments Incorporated - http://www.ti.com/
> >>>+ *
> >>>+ * Author: Andrew F. Davis 
> >>>+ *
> >>>+ * This program is free software; you can redistribute it and/or
> >>>+ * modify it under the terms of the GNU General Public License version 2 
> >>>as
> >>>+ * published by the Free Software Foundation.
> >>>+ *
> >>>+ * This program is distributed "as is" WITHOUT ANY WARRANTY of any
> >>>+ * kind, whether expressed or implied; without even the implied warranty
> >>>+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> >>>+ * GNU General Public License version 2 for more details.
> >>>+ *
> >>>+ * Based on the TPS65218 driver and the previous TPS65912 driver by
> >>>+ * Margarita Olaya Cabrera 
> >>>+ */
> >>>+
> >>>+#include 
> >>>+#include 
> >>>+#include 
> >>>+
> >>>+#include 
> >>>+
> >>>+static const struct regmap_irq tps65912_irqs[] = {
> >>>+  /* INT_STS IRQs */
> >>>+  REGMAP_IRQ_REG(TPS65912_IRQ_PWRHOLD_F, 0, TPS65912_INT_STS_PWRHOLD_F),
> >>>+  REGMAP_IRQ_REG(TPS65912_IRQ_VMON, 0, TPS65912_INT_STS_VMON),
> >>>+  REGMAP_IRQ_REG(TPS65912_IRQ_PWRON, 0, TPS65912

Re: [PATCH v4 3/5] mfd: tps65912: Add driver for the TPS65912 PMIC

2015-10-12 Thread Andrew F. Davis

On 10/05/2015 04:27 AM, Lee Jones wrote:

On Mon, 05 Oct 2015, Lee Jones wrote:


On Thu, 01 Oct 2015, Andrew F. Davis wrote:


This patch adds support for TPS65912 mfd device. It provides
communication through the I2C and SPI interfaces. It contains
the following components:

  - Regulators
  - GPIO controller

Signed-off-by: Andrew F. Davis 
---
  drivers/mfd/Kconfig  |  25 
  drivers/mfd/Makefile |   3 +
  drivers/mfd/tps65912-core.c  | 108 ++
  drivers/mfd/tps65912-i2c.c   |  82 ++
  drivers/mfd/tps65912-spi.c   |  81 ++
  include/linux/mfd/tps65912.h | 345 +++
  6 files changed, 644 insertions(+)
  create mode 100644 drivers/mfd/tps65912-core.c
  create mode 100644 drivers/mfd/tps65912-i2c.c
  create mode 100644 drivers/mfd/tps65912-spi.c
  create mode 100644 include/linux/mfd/tps65912.h


Applied, thanks.


Whoops, I forgot about the removal patch.

For this patch:
   Acked-by: Lee Jones 

Can you break up the removal patch into subsystems as well?



I can if you would like, but as I responded in the other patch I
think that will cause problems as the Kconfig symbols in the new
will allow the old to be compiled and this will break build. All
the removals may have to be brought in in a single patch, again
up to you.


diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
index 9a8df8e..02b321f 100644
--- a/drivers/mfd/Kconfig
+++ b/drivers/mfd/Kconfig
@@ -1167,6 +1167,31 @@ config MFD_TPS65910
  if you say yes here you get support for the TPS65910 series of
  Power Management chips.

+config MFD_TPS65912
+   tristate
+   select REGMAP
+   select REGMAP_IRQ
+
+config MFD_TPS65912_I2C
+   tristate "TI TPS65912 Power Management chip with I2C"
+   select MFD_TPS65912
+   select REGMAP_I2C
+   depends on I2C
+   depends on OF || COMPILE_TEST
+   help
+ If you say yes here you get support for the TPS65912 series of
+ PM chips with I2C interface.
+
+config MFD_TPS65912_SPI
+   tristate "TI TPS65912 Power Management chip with SPI"
+   select MFD_TPS65912
+   select REGMAP_SPI
+   depends on SPI_MASTER
+   depends on OF || COMPILE_TEST
+   help
+ If you say yes here you get support for the TPS65912 series of
+ PM chips with SPI interface.
+
  config MFD_TPS80031
bool "TI TPS80031/TPS80032 Power Management chips"
depends on I2C=y
diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
index 004aa76..49c3530 100644
--- a/drivers/mfd/Makefile
+++ b/drivers/mfd/Makefile
@@ -69,6 +69,9 @@ obj-$(CONFIG_TPS6507X)+= tps6507x.o
  obj-$(CONFIG_MFD_TPS65217)+= tps65217.o
  obj-$(CONFIG_MFD_TPS65218)+= tps65218.o
  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_TPS80031)+= tps80031.o
  obj-$(CONFIG_MENELAUS)+= menelaus.o

diff --git a/drivers/mfd/tps65912-core.c b/drivers/mfd/tps65912-core.c
new file mode 100644
index 000..e787950
--- /dev/null
+++ b/drivers/mfd/tps65912-core.c
@@ -0,0 +1,108 @@
+/*
+ * Core functions for TI TPS65912x PMIC
+ *
+ * Copyright (C) 2015 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * Author: Andrew F. Davis 
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed "as is" WITHOUT ANY WARRANTY of any
+ * kind, whether expressed or implied; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License version 2 for more details.
+ *
+ * Based on the TPS65218 driver and the previous TPS65912 driver by
+ * Margarita Olaya Cabrera 
+ */
+
+#include 
+#include 
+#include 
+
+#include 
+
+static const struct regmap_irq tps65912_irqs[] = {
+   /* INT_STS IRQs */
+   REGMAP_IRQ_REG(TPS65912_IRQ_PWRHOLD_F, 0, TPS65912_INT_STS_PWRHOLD_F),
+   REGMAP_IRQ_REG(TPS65912_IRQ_VMON, 0, TPS65912_INT_STS_VMON),
+   REGMAP_IRQ_REG(TPS65912_IRQ_PWRON, 0, TPS65912_INT_STS_PWRON),
+   REGMAP_IRQ_REG(TPS65912_IRQ_PWRON_LP, 0, TPS65912_INT_STS_PWRON_LP),
+   REGMAP_IRQ_REG(TPS65912_IRQ_PWRHOLD_R, 0, TPS65912_INT_STS_PWRHOLD_R),
+   REGMAP_IRQ_REG(TPS65912_IRQ_HOTDIE, 0, TPS65912_INT_STS_HOTDIE),
+   REGMAP_IRQ_REG(TPS65912_IRQ_GPIO1_R, 0, TPS65912_INT_STS_GPIO1_R),
+   REGMAP_IRQ_REG(TPS65912_IRQ_GPIO1_F, 0, TPS65912_INT_STS_GPIO1_F),
+   /* INT_STS2 IRQs */
+   REGMAP_IRQ_REG(TPS65912_IRQ_GPIO2_R, 1, TPS65912_INT_STS2_GPIO2_R),
+   REGMAP_IRQ_REG(TPS65912_IRQ_GPIO2_F, 1, TPS65912_INT_STS2_GPIO2_F),
+   REGMAP_IRQ_REG(TPS65912_IRQ_GPIO3_R, 1, TPS65912_INT_STS2_GPIO3_R),
+   REGMAP_IRQ_RE

Re: [PATCH v4 3/5] mfd: tps65912: Add driver for the TPS65912 PMIC

2015-10-05 Thread Lee Jones
On Mon, 05 Oct 2015, Lee Jones wrote:

> On Thu, 01 Oct 2015, Andrew F. Davis wrote:
> 
> > This patch adds support for TPS65912 mfd device. It provides
> > communication through the I2C and SPI interfaces. It contains
> > the following components:
> > 
> >  - Regulators
> >  - GPIO controller
> > 
> > Signed-off-by: Andrew F. Davis 
> > ---
> >  drivers/mfd/Kconfig  |  25 
> >  drivers/mfd/Makefile |   3 +
> >  drivers/mfd/tps65912-core.c  | 108 ++
> >  drivers/mfd/tps65912-i2c.c   |  82 ++
> >  drivers/mfd/tps65912-spi.c   |  81 ++
> >  include/linux/mfd/tps65912.h | 345 
> > +++
> >  6 files changed, 644 insertions(+)
> >  create mode 100644 drivers/mfd/tps65912-core.c
> >  create mode 100644 drivers/mfd/tps65912-i2c.c
> >  create mode 100644 drivers/mfd/tps65912-spi.c
> >  create mode 100644 include/linux/mfd/tps65912.h
> 
> Applied, thanks.

Whoops, I forgot about the removal patch.

For this patch:
  Acked-by: Lee Jones 

Can you break up the removal patch into subsystems as well?

> > diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
> > index 9a8df8e..02b321f 100644
> > --- a/drivers/mfd/Kconfig
> > +++ b/drivers/mfd/Kconfig
> > @@ -1167,6 +1167,31 @@ config MFD_TPS65910
> >   if you say yes here you get support for the TPS65910 series of
> >   Power Management chips.
> >  
> > +config MFD_TPS65912
> > +   tristate
> > +   select REGMAP
> > +   select REGMAP_IRQ
> > +
> > +config MFD_TPS65912_I2C
> > +   tristate "TI TPS65912 Power Management chip with I2C"
> > +   select MFD_TPS65912
> > +   select REGMAP_I2C
> > +   depends on I2C
> > +   depends on OF || COMPILE_TEST
> > +   help
> > + If you say yes here you get support for the TPS65912 series of
> > + PM chips with I2C interface.
> > +
> > +config MFD_TPS65912_SPI
> > +   tristate "TI TPS65912 Power Management chip with SPI"
> > +   select MFD_TPS65912
> > +   select REGMAP_SPI
> > +   depends on SPI_MASTER
> > +   depends on OF || COMPILE_TEST
> > +   help
> > + If you say yes here you get support for the TPS65912 series of
> > + PM chips with SPI interface.
> > +
> >  config MFD_TPS80031
> > bool "TI TPS80031/TPS80032 Power Management chips"
> > depends on I2C=y
> > diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
> > index 004aa76..49c3530 100644
> > --- a/drivers/mfd/Makefile
> > +++ b/drivers/mfd/Makefile
> > @@ -69,6 +69,9 @@ obj-$(CONFIG_TPS6507X)+= tps6507x.o
> >  obj-$(CONFIG_MFD_TPS65217) += tps65217.o
> >  obj-$(CONFIG_MFD_TPS65218) += tps65218.o
> >  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_TPS80031) += tps80031.o
> >  obj-$(CONFIG_MENELAUS) += menelaus.o
> >  
> > diff --git a/drivers/mfd/tps65912-core.c b/drivers/mfd/tps65912-core.c
> > new file mode 100644
> > index 000..e787950
> > --- /dev/null
> > +++ b/drivers/mfd/tps65912-core.c
> > @@ -0,0 +1,108 @@
> > +/*
> > + * Core functions for TI TPS65912x PMIC
> > + *
> > + * Copyright (C) 2015 Texas Instruments Incorporated - http://www.ti.com/
> > + *
> > + * Author: Andrew F. Davis 
> > + *
> > + * This program is free software; you can redistribute it and/or
> > + * modify it under the terms of the GNU General Public License version 2 as
> > + * published by the Free Software Foundation.
> > + *
> > + * This program is distributed "as is" WITHOUT ANY WARRANTY of any
> > + * kind, whether expressed or implied; without even the implied warranty
> > + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> > + * GNU General Public License version 2 for more details.
> > + *
> > + * Based on the TPS65218 driver and the previous TPS65912 driver by
> > + * Margarita Olaya Cabrera 
> > + */
> > +
> > +#include 
> > +#include 
> > +#include 
> > +
> > +#include 
> > +
> > +static const struct regmap_irq tps65912_irqs[] = {
> > +   /* INT_STS IRQs */
> > +   REGMAP_IRQ_REG(TPS65912_IRQ_PWRHOLD_F, 0, TPS65912_INT_STS_PWRHOLD_F),
> > +   REGMAP_IRQ_REG(TPS65912_IRQ_VMON, 0, TPS65912_INT_STS_VMON),
> > +   REGMAP_IRQ_REG(TPS65912_IRQ_PWRON, 0, TPS65912_INT_STS_PWRON),
> > +   REGMAP_IRQ_REG(TPS65912_IRQ_PWRON_LP, 0, TPS65912_INT_STS_PWRON_LP),
> > +   REGMAP_IRQ_REG(TPS65912_IRQ_PWRHOLD_R, 0, TPS65912_INT_STS_PWRHOLD_R),
> > +   REGMAP_IRQ_REG(TPS65912_IRQ_HOTDIE, 0, TPS65912_INT_STS_HOTDIE),
> > +   REGMAP_IRQ_REG(TPS65912_IRQ_GPIO1_R, 0, TPS65912_INT_STS_GPIO1_R),
> > +   REGMAP_IRQ_REG(TPS65912_IRQ_GPIO1_F, 0, TPS65912_INT_STS_GPIO1_F),
> > +   /* INT_STS2 IRQs */
> > +   REGMAP_IRQ_REG(TPS65912_IRQ_GPIO2_R, 1, TPS65912_INT_STS2_GPIO2_R),
> > +   REGMAP_IRQ_REG(TPS65912_IRQ_GPIO2_F, 1, TPS65912_INT_STS2_GPIO2_F),
> > +   REGMAP_IRQ_REG(TPS65912_IRQ_GPIO3_R, 1, TPS65912_INT_STS2_GPIO3_R),
> > +   REGMAP_IRQ_REG(TPS65912_IRQ_GPIO3_F, 1

Re: [PATCH v4 3/5] mfd: tps65912: Add driver for the TPS65912 PMIC

2015-10-05 Thread Lee Jones
On Thu, 01 Oct 2015, Andrew F. Davis wrote:

> This patch adds support for TPS65912 mfd device. It provides
> communication through the I2C and SPI interfaces. It contains
> the following components:
> 
>  - Regulators
>  - GPIO controller
> 
> Signed-off-by: Andrew F. Davis 
> ---
>  drivers/mfd/Kconfig  |  25 
>  drivers/mfd/Makefile |   3 +
>  drivers/mfd/tps65912-core.c  | 108 ++
>  drivers/mfd/tps65912-i2c.c   |  82 ++
>  drivers/mfd/tps65912-spi.c   |  81 ++
>  include/linux/mfd/tps65912.h | 345 
> +++
>  6 files changed, 644 insertions(+)
>  create mode 100644 drivers/mfd/tps65912-core.c
>  create mode 100644 drivers/mfd/tps65912-i2c.c
>  create mode 100644 drivers/mfd/tps65912-spi.c
>  create mode 100644 include/linux/mfd/tps65912.h

Applied, thanks.

> diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
> index 9a8df8e..02b321f 100644
> --- a/drivers/mfd/Kconfig
> +++ b/drivers/mfd/Kconfig
> @@ -1167,6 +1167,31 @@ config MFD_TPS65910
> if you say yes here you get support for the TPS65910 series of
> Power Management chips.
>  
> +config MFD_TPS65912
> + tristate
> + select REGMAP
> + select REGMAP_IRQ
> +
> +config MFD_TPS65912_I2C
> + tristate "TI TPS65912 Power Management chip with I2C"
> + select MFD_TPS65912
> + select REGMAP_I2C
> + depends on I2C
> + depends on OF || COMPILE_TEST
> + help
> +   If you say yes here you get support for the TPS65912 series of
> +   PM chips with I2C interface.
> +
> +config MFD_TPS65912_SPI
> + tristate "TI TPS65912 Power Management chip with SPI"
> + select MFD_TPS65912
> + select REGMAP_SPI
> + depends on SPI_MASTER
> + depends on OF || COMPILE_TEST
> + help
> +   If you say yes here you get support for the TPS65912 series of
> +   PM chips with SPI interface.
> +
>  config MFD_TPS80031
>   bool "TI TPS80031/TPS80032 Power Management chips"
>   depends on I2C=y
> diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
> index 004aa76..49c3530 100644
> --- a/drivers/mfd/Makefile
> +++ b/drivers/mfd/Makefile
> @@ -69,6 +69,9 @@ obj-$(CONFIG_TPS6507X)  += tps6507x.o
>  obj-$(CONFIG_MFD_TPS65217)   += tps65217.o
>  obj-$(CONFIG_MFD_TPS65218)   += tps65218.o
>  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_TPS80031)   += tps80031.o
>  obj-$(CONFIG_MENELAUS)   += menelaus.o
>  
> diff --git a/drivers/mfd/tps65912-core.c b/drivers/mfd/tps65912-core.c
> new file mode 100644
> index 000..e787950
> --- /dev/null
> +++ b/drivers/mfd/tps65912-core.c
> @@ -0,0 +1,108 @@
> +/*
> + * Core functions for TI TPS65912x PMIC
> + *
> + * Copyright (C) 2015 Texas Instruments Incorporated - http://www.ti.com/
> + *
> + * Author: Andrew F. Davis 
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License version 2 as
> + * published by the Free Software Foundation.
> + *
> + * This program is distributed "as is" WITHOUT ANY WARRANTY of any
> + * kind, whether expressed or implied; without even the implied warranty
> + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU General Public License version 2 for more details.
> + *
> + * Based on the TPS65218 driver and the previous TPS65912 driver by
> + * Margarita Olaya Cabrera 
> + */
> +
> +#include 
> +#include 
> +#include 
> +
> +#include 
> +
> +static const struct regmap_irq tps65912_irqs[] = {
> + /* INT_STS IRQs */
> + REGMAP_IRQ_REG(TPS65912_IRQ_PWRHOLD_F, 0, TPS65912_INT_STS_PWRHOLD_F),
> + REGMAP_IRQ_REG(TPS65912_IRQ_VMON, 0, TPS65912_INT_STS_VMON),
> + REGMAP_IRQ_REG(TPS65912_IRQ_PWRON, 0, TPS65912_INT_STS_PWRON),
> + REGMAP_IRQ_REG(TPS65912_IRQ_PWRON_LP, 0, TPS65912_INT_STS_PWRON_LP),
> + REGMAP_IRQ_REG(TPS65912_IRQ_PWRHOLD_R, 0, TPS65912_INT_STS_PWRHOLD_R),
> + REGMAP_IRQ_REG(TPS65912_IRQ_HOTDIE, 0, TPS65912_INT_STS_HOTDIE),
> + REGMAP_IRQ_REG(TPS65912_IRQ_GPIO1_R, 0, TPS65912_INT_STS_GPIO1_R),
> + REGMAP_IRQ_REG(TPS65912_IRQ_GPIO1_F, 0, TPS65912_INT_STS_GPIO1_F),
> + /* INT_STS2 IRQs */
> + REGMAP_IRQ_REG(TPS65912_IRQ_GPIO2_R, 1, TPS65912_INT_STS2_GPIO2_R),
> + REGMAP_IRQ_REG(TPS65912_IRQ_GPIO2_F, 1, TPS65912_INT_STS2_GPIO2_F),
> + REGMAP_IRQ_REG(TPS65912_IRQ_GPIO3_R, 1, TPS65912_INT_STS2_GPIO3_R),
> + REGMAP_IRQ_REG(TPS65912_IRQ_GPIO3_F, 1, TPS65912_INT_STS2_GPIO3_F),
> + REGMAP_IRQ_REG(TPS65912_IRQ_GPIO4_R, 1, TPS65912_INT_STS2_GPIO4_R),
> + REGMAP_IRQ_REG(TPS65912_IRQ_GPIO4_F, 1, TPS65912_INT_STS2_GPIO4_F),
> + REGMAP_IRQ_REG(TPS65912_IRQ_GPIO5_R, 1, TPS65912_INT_STS2_GPIO5_R),
> + REGMAP_IRQ_REG(TPS65912_IRQ_GPIO5_F, 1, TPS65912_INT_STS2_GPIO5_F),
> +

Re: [PATCH v4 3/5] mfd: tps65912: Add driver for the TPS65912 PMIC

2015-10-01 Thread Andrew F. Davis

On 10/01/2015 03:37 PM, Andrew F. Davis wrote:

This patch adds support for TPS65912 mfd device. It provides
communication through the I2C and SPI interfaces. It contains
the following components:

  - Regulators
  - GPIO controller

Signed-off-by: Andrew F. Davis 


Forgot to mention, as the kbuild bot figured out, this patch needs
b4fe8ba ("regmap: Add generic macro to define regmap_irq")
from Lee Jones' tree to build.
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v4 3/5] mfd: tps65912: Add driver for the TPS65912 PMIC

2015-10-01 Thread kbuild test robot
Hi Andrew,

[auto build test results on v4.3-rc3 -- if it's inappropriate base, please 
ignore]

config: xtensa-allyesconfig (attached as .config)
reproduce:
wget 
https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross
 -O ~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout d617dea974adf7dc262f2d49dea24a673e0403e2
# save the attached .config to linux build tree
make.cross ARCH=xtensa 

All warnings (new ones prefixed by >>):

   drivers/mfd/tps65912-core.c:29:2: error: implicit declaration of function 
'REGMAP_IRQ_REG' [-Werror=implicit-function-declaration]
 REGMAP_IRQ_REG(TPS65912_IRQ_PWRHOLD_F, 0, TPS65912_INT_STS_PWRHOLD_F),
 ^
>> drivers/mfd/tps65912-core.c:29:2: warning: missing braces around initializer 
>> [-Wmissing-braces]
>> drivers/mfd/tps65912-core.c:29:2: warning: (near initialization for 
>> 'tps65912_irqs[0]') [-Wmissing-braces]
   drivers/mfd/tps65912-core.c:29:2: error: initializer element is not constant
   drivers/mfd/tps65912-core.c:29:2: error: (near initialization for 
'tps65912_irqs[0].reg_offset')
   drivers/mfd/tps65912-core.c:30:2: error: initializer element is not constant
 REGMAP_IRQ_REG(TPS65912_IRQ_VMON, 0, TPS65912_INT_STS_VMON),
 ^
   drivers/mfd/tps65912-core.c:30:2: error: (near initialization for 
'tps65912_irqs[0].mask')
   drivers/mfd/tps65912-core.c:31:2: error: initializer element is not constant
 REGMAP_IRQ_REG(TPS65912_IRQ_PWRON, 0, TPS65912_INT_STS_PWRON),
 ^
   drivers/mfd/tps65912-core.c:31:2: error: (near initialization for 
'tps65912_irqs[1].reg_offset')
   drivers/mfd/tps65912-core.c:32:2: error: initializer element is not constant
 REGMAP_IRQ_REG(TPS65912_IRQ_PWRON_LP, 0, TPS65912_INT_STS_PWRON_LP),
 ^
   drivers/mfd/tps65912-core.c:32:2: error: (near initialization for 
'tps65912_irqs[1].mask')
   drivers/mfd/tps65912-core.c:33:2: error: initializer element is not constant
 REGMAP_IRQ_REG(TPS65912_IRQ_PWRHOLD_R, 0, TPS65912_INT_STS_PWRHOLD_R),
 ^
   drivers/mfd/tps65912-core.c:33:2: error: (near initialization for 
'tps65912_irqs[2].reg_offset')
   drivers/mfd/tps65912-core.c:34:2: error: initializer element is not constant
 REGMAP_IRQ_REG(TPS65912_IRQ_HOTDIE, 0, TPS65912_INT_STS_HOTDIE),
 ^
   drivers/mfd/tps65912-core.c:34:2: error: (near initialization for 
'tps65912_irqs[2].mask')
   drivers/mfd/tps65912-core.c:35:2: error: initializer element is not constant
 REGMAP_IRQ_REG(TPS65912_IRQ_GPIO1_R, 0, TPS65912_INT_STS_GPIO1_R),
 ^
   drivers/mfd/tps65912-core.c:35:2: error: (near initialization for 
'tps65912_irqs[3].reg_offset')
   drivers/mfd/tps65912-core.c:36:2: error: initializer element is not constant
 REGMAP_IRQ_REG(TPS65912_IRQ_GPIO1_F, 0, TPS65912_INT_STS_GPIO1_F),
 ^
   drivers/mfd/tps65912-core.c:36:2: error: (near initialization for 
'tps65912_irqs[3].mask')
   drivers/mfd/tps65912-core.c:38:2: error: initializer element is not constant
 REGMAP_IRQ_REG(TPS65912_IRQ_GPIO2_R, 1, TPS65912_INT_STS2_GPIO2_R),
 ^
   drivers/mfd/tps65912-core.c:38:2: error: (near initialization for 
'tps65912_irqs[4].reg_offset')
   drivers/mfd/tps65912-core.c:39:2: error: initializer element is not constant
 REGMAP_IRQ_REG(TPS65912_IRQ_GPIO2_F, 1, TPS65912_INT_STS2_GPIO2_F),
 ^
   drivers/mfd/tps65912-core.c:39:2: error: (near initialization for 
'tps65912_irqs[4].mask')
   drivers/mfd/tps65912-core.c:40:2: error: initializer element is not constant
 REGMAP_IRQ_REG(TPS65912_IRQ_GPIO3_R, 1, TPS65912_INT_STS2_GPIO3_R),
 ^
   drivers/mfd/tps65912-core.c:40:2: error: (near initialization for 
'tps65912_irqs[5].reg_offset')
   drivers/mfd/tps65912-core.c:41:2: error: initializer element is not constant
 REGMAP_IRQ_REG(TPS65912_IRQ_GPIO3_F, 1, TPS65912_INT_STS2_GPIO3_F),
 ^
   drivers/mfd/tps65912-core.c:41:2: error: (near initialization for 
'tps65912_irqs[5].mask')
   drivers/mfd/tps65912-core.c:42:2: error: initializer element is not constant
 REGMAP_IRQ_REG(TPS65912_IRQ_GPIO4_R, 1, TPS65912_INT_STS2_GPIO4_R),
 ^
   drivers/mfd/tps65912-core.c:42:2: error: (near initialization for 
'tps65912_irqs[6].reg_offset')
   drivers/mfd/tps65912-core.c:43:2: error: initializer element is not constant
 REGMAP_IRQ_REG(TPS65912_IRQ_GPIO4_F, 1, TPS65912_INT_STS2_GPIO4_F),
 ^
   drivers/mfd/tps65912-core.c:43:2: error: (near initialization for 
'tps65912_irqs[6].mask')
   drivers/mfd/tps65912-core.c:44:2: error: initializer element is not constant
 REGMAP_IRQ_REG(TPS65912_IRQ_GPIO5_R, 1, TPS65912_INT_STS2_GPIO5_R),
 ^
   drivers/mfd/tps65912-core.c:44:2: error: (near initialization for 
'tps65912_irqs[7].reg_offset')
   drivers/mfd/tps65912-core.c:45:2: error: initializer element is not constant
 REGMAP_IRQ_REG(TPS65912_IRQ_GPIO5_F, 1, TPS65912_INT_STS2_GPIO5_F),
 ^
   drivers/mfd/tps65912-core.c:45:2: error: (near initialization for 
'tps65912_irqs[7].mask')
   drivers/mfd/tps65912-c

Re: [PATCH v4 3/5] mfd: tps65912: Add driver for the TPS65912 PMIC

2015-10-01 Thread kbuild test robot
Hi Andrew,

[auto build test results on v4.3-rc3 -- if it's inappropriate base, please 
ignore]

config: tile-allyesconfig (attached as .config)
reproduce:
wget 
https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross
 -O ~/bin/make.cross
chmod +x ~/bin/make.cross
git checkout d617dea974adf7dc262f2d49dea24a673e0403e2
# save the attached .config to linux build tree
make.cross ARCH=tile 

All warnings (new ones prefixed by >>):

   drivers/mfd/tps65912-core.c:29:2: error: implicit declaration of function 
'REGMAP_IRQ_REG'
   drivers/mfd/tps65912-core.c:29:2: warning: missing braces around initializer
>> drivers/mfd/tps65912-core.c:29:2: warning: (near initialization for
   drivers/mfd/tps65912-core.c:29:2: error: initializer element is not constant
   drivers/mfd/tps65912-core.c:29:2: error: (near initialization for
   drivers/mfd/tps65912-core.c:30:2: error: initializer element is not constant
   drivers/mfd/tps65912-core.c:30:2: error: (near initialization for
   drivers/mfd/tps65912-core.c:31:2: error: initializer element is not constant
   drivers/mfd/tps65912-core.c:31:2: error: (near initialization for
   drivers/mfd/tps65912-core.c:32:2: error: initializer element is not constant
   drivers/mfd/tps65912-core.c:32:2: error: (near initialization for
   drivers/mfd/tps65912-core.c:33:2: error: initializer element is not constant
   drivers/mfd/tps65912-core.c:33:2: error: (near initialization for
   drivers/mfd/tps65912-core.c:34:2: error: initializer element is not constant
   drivers/mfd/tps65912-core.c:34:2: error: (near initialization for
   drivers/mfd/tps65912-core.c:35:2: error: initializer element is not constant
   drivers/mfd/tps65912-core.c:35:2: error: (near initialization for
   drivers/mfd/tps65912-core.c:36:2: error: initializer element is not constant
   drivers/mfd/tps65912-core.c:36:2: error: (near initialization for
   drivers/mfd/tps65912-core.c:38:2: error: initializer element is not constant
   drivers/mfd/tps65912-core.c:38:2: error: (near initialization for
   drivers/mfd/tps65912-core.c:39:2: error: initializer element is not constant
   drivers/mfd/tps65912-core.c:39:2: error: (near initialization for
   drivers/mfd/tps65912-core.c:40:2: error: initializer element is not constant
   drivers/mfd/tps65912-core.c:40:2: error: (near initialization for
   drivers/mfd/tps65912-core.c:41:2: error: initializer element is not constant
   drivers/mfd/tps65912-core.c:41:2: error: (near initialization for
   drivers/mfd/tps65912-core.c:42:2: error: initializer element is not constant
   drivers/mfd/tps65912-core.c:42:2: error: (near initialization for
   drivers/mfd/tps65912-core.c:43:2: error: initializer element is not constant
   drivers/mfd/tps65912-core.c:43:2: error: (near initialization for
   drivers/mfd/tps65912-core.c:44:2: error: initializer element is not constant
   drivers/mfd/tps65912-core.c:44:2: error: (near initialization for
   drivers/mfd/tps65912-core.c:45:2: error: initializer element is not constant
   drivers/mfd/tps65912-core.c:45:2: error: (near initialization for
   drivers/mfd/tps65912-core.c:47:2: error: initializer element is not constant
   drivers/mfd/tps65912-core.c:47:2: error: (near initialization for
   drivers/mfd/tps65912-core.c:48:2: error: initializer element is not constant
   drivers/mfd/tps65912-core.c:48:2: error: (near initialization for
   drivers/mfd/tps65912-core.c:49:2: error: initializer element is not constant
   drivers/mfd/tps65912-core.c:49:2: error: (near initialization for
   drivers/mfd/tps65912-core.c:50:2: error: initializer element is not constant
   drivers/mfd/tps65912-core.c:50:2: error: (near initialization for
   drivers/mfd/tps65912-core.c:51:2: error: initializer element is not constant
   drivers/mfd/tps65912-core.c:51:2: error: (near initialization for
   drivers/mfd/tps65912-core.c:52:2: error: initializer element is not constant
   drivers/mfd/tps65912-core.c:52:2: error: (near initialization for
   drivers/mfd/tps65912-core.c:53:2: error: initializer element is not constant
   drivers/mfd/tps65912-core.c:53:2: error: (near initialization for
   drivers/mfd/tps65912-core.c:54:2: error: initializer element is not constant
   drivers/mfd/tps65912-core.c:54:2: error: (near initialization for
   drivers/mfd/tps65912-core.c:56:2: error: initializer element is not constant
   drivers/mfd/tps65912-core.c:56:2: error: (near initialization for
   drivers/mfd/tps65912-core.c:57:2: error: initializer element is not constant
   drivers/mfd/tps65912-core.c:57:2: error: (near initialization for
   drivers/mfd/tps65912-core.c:58:2: error: initializer element is not constant
   drivers/mfd/tps65912-core.c:58:2: error: (near initialization for
   drivers/mfd/tps65912-core.c:59:2: error: initializer element is not constant
   drivers/mfd/tps65912-core.c:59:2: error: (near initialization for
   drivers/mfd/tps65912-core.c:60:2: error: initializer element is not constant
 

Re: [PATCH v4 3/5] mfd: tps65912: Add driver for the TPS65912 PMIC

2015-10-01 Thread kbuild test robot
Hi Andrew,

[auto build test results on v4.3-rc3 -- if it's inappropriate base, please 
ignore]

config: x86_64-allmodconfig (attached as .config)
reproduce:
git checkout d617dea974adf7dc262f2d49dea24a673e0403e2
# save the attached .config to linux build tree
make ARCH=x86_64 

All error/warnings (new ones prefixed by >>):

>> drivers/mfd/tps65912-core.c:29:2: error: implicit declaration of function 
>> 'REGMAP_IRQ_REG' [-Werror=implicit-function-declaration]
 REGMAP_IRQ_REG(TPS65912_IRQ_PWRHOLD_F, 0, TPS65912_INT_STS_PWRHOLD_F),
 ^
>> drivers/mfd/tps65912-core.c:29:2: error: initializer element is not constant
   drivers/mfd/tps65912-core.c:29:2: note: (near initialization for 
'tps65912_irqs[0].reg_offset')
   drivers/mfd/tps65912-core.c:30:2: error: initializer element is not constant
 REGMAP_IRQ_REG(TPS65912_IRQ_VMON, 0, TPS65912_INT_STS_VMON),
 ^
   drivers/mfd/tps65912-core.c:30:2: note: (near initialization for 
'tps65912_irqs[0].mask')
   drivers/mfd/tps65912-core.c:31:2: error: initializer element is not constant
 REGMAP_IRQ_REG(TPS65912_IRQ_PWRON, 0, TPS65912_INT_STS_PWRON),
 ^
   drivers/mfd/tps65912-core.c:31:2: note: (near initialization for 
'tps65912_irqs[1].reg_offset')
   drivers/mfd/tps65912-core.c:32:2: error: initializer element is not constant
 REGMAP_IRQ_REG(TPS65912_IRQ_PWRON_LP, 0, TPS65912_INT_STS_PWRON_LP),
 ^
   drivers/mfd/tps65912-core.c:32:2: note: (near initialization for 
'tps65912_irqs[1].mask')
   drivers/mfd/tps65912-core.c:33:2: error: initializer element is not constant
 REGMAP_IRQ_REG(TPS65912_IRQ_PWRHOLD_R, 0, TPS65912_INT_STS_PWRHOLD_R),
 ^
   drivers/mfd/tps65912-core.c:33:2: note: (near initialization for 
'tps65912_irqs[2].reg_offset')
   drivers/mfd/tps65912-core.c:34:2: error: initializer element is not constant
 REGMAP_IRQ_REG(TPS65912_IRQ_HOTDIE, 0, TPS65912_INT_STS_HOTDIE),
 ^
   drivers/mfd/tps65912-core.c:34:2: note: (near initialization for 
'tps65912_irqs[2].mask')
   drivers/mfd/tps65912-core.c:35:2: error: initializer element is not constant
 REGMAP_IRQ_REG(TPS65912_IRQ_GPIO1_R, 0, TPS65912_INT_STS_GPIO1_R),
 ^
   drivers/mfd/tps65912-core.c:35:2: note: (near initialization for 
'tps65912_irqs[3].reg_offset')
   drivers/mfd/tps65912-core.c:36:2: error: initializer element is not constant
 REGMAP_IRQ_REG(TPS65912_IRQ_GPIO1_F, 0, TPS65912_INT_STS_GPIO1_F),
 ^
   drivers/mfd/tps65912-core.c:36:2: note: (near initialization for 
'tps65912_irqs[3].mask')
   drivers/mfd/tps65912-core.c:38:2: error: initializer element is not constant
 REGMAP_IRQ_REG(TPS65912_IRQ_GPIO2_R, 1, TPS65912_INT_STS2_GPIO2_R),
 ^
   drivers/mfd/tps65912-core.c:38:2: note: (near initialization for 
'tps65912_irqs[4].reg_offset')
   drivers/mfd/tps65912-core.c:39:2: error: initializer element is not constant
 REGMAP_IRQ_REG(TPS65912_IRQ_GPIO2_F, 1, TPS65912_INT_STS2_GPIO2_F),
 ^
   drivers/mfd/tps65912-core.c:39:2: note: (near initialization for 
'tps65912_irqs[4].mask')
   drivers/mfd/tps65912-core.c:40:2: error: initializer element is not constant
 REGMAP_IRQ_REG(TPS65912_IRQ_GPIO3_R, 1, TPS65912_INT_STS2_GPIO3_R),
 ^
   drivers/mfd/tps65912-core.c:40:2: note: (near initialization for 
'tps65912_irqs[5].reg_offset')
   drivers/mfd/tps65912-core.c:41:2: error: initializer element is not constant
 REGMAP_IRQ_REG(TPS65912_IRQ_GPIO3_F, 1, TPS65912_INT_STS2_GPIO3_F),
 ^
   drivers/mfd/tps65912-core.c:41:2: note: (near initialization for 
'tps65912_irqs[5].mask')
   drivers/mfd/tps65912-core.c:42:2: error: initializer element is not constant
 REGMAP_IRQ_REG(TPS65912_IRQ_GPIO4_R, 1, TPS65912_INT_STS2_GPIO4_R),
 ^
   drivers/mfd/tps65912-core.c:42:2: note: (near initialization for 
'tps65912_irqs[6].reg_offset')
   drivers/mfd/tps65912-core.c:43:2: error: initializer element is not constant
 REGMAP_IRQ_REG(TPS65912_IRQ_GPIO4_F, 1, TPS65912_INT_STS2_GPIO4_F),
 ^
   drivers/mfd/tps65912-core.c:43:2: note: (near initialization for 
'tps65912_irqs[6].mask')
   drivers/mfd/tps65912-core.c:44:2: error: initializer element is not constant
 REGMAP_IRQ_REG(TPS65912_IRQ_GPIO5_R, 1, TPS65912_INT_STS2_GPIO5_R),
 ^
   drivers/mfd/tps65912-core.c:44:2: note: (near initialization for 
'tps65912_irqs[7].reg_offset')
   drivers/mfd/tps65912-core.c:45:2: error: initializer element is not constant
 REGMAP_IRQ_REG(TPS65912_IRQ_GPIO5_F, 1, TPS65912_INT_STS2_GPIO5_F),
 ^
   drivers/mfd/tps65912-core.c:45:2: note: (near initialization for 
'tps65912_irqs[7].mask')
   drivers/mfd/tps65912-core.c:47:2: error: initializer element is not constant
 REGMAP_IRQ_REG(TPS65912_IRQ_PGOOD_DCDC1, 2, TPS65912_INT_STS3_PGOOD_DCDC1),
 ^
   drivers/mfd/tps65912-core.c:47:2: note: (near initialization for 
'tps65912_irqs[8].reg_offset')
   drivers/mfd/tps65912-core.c:48:2: error: initializer element is not constant
 REGMAP_IRQ_REG(TPS65912_IRQ_PGOOD_DCDC2, 2, TPS65912_INT

[PATCH v4 3/5] mfd: tps65912: Add driver for the TPS65912 PMIC

2015-10-01 Thread Andrew F. Davis
This patch adds support for TPS65912 mfd device. It provides
communication through the I2C and SPI interfaces. It contains
the following components:

 - Regulators
 - GPIO controller

Signed-off-by: Andrew F. Davis 
---
 drivers/mfd/Kconfig  |  25 
 drivers/mfd/Makefile |   3 +
 drivers/mfd/tps65912-core.c  | 108 ++
 drivers/mfd/tps65912-i2c.c   |  82 ++
 drivers/mfd/tps65912-spi.c   |  81 ++
 include/linux/mfd/tps65912.h | 345 +++
 6 files changed, 644 insertions(+)
 create mode 100644 drivers/mfd/tps65912-core.c
 create mode 100644 drivers/mfd/tps65912-i2c.c
 create mode 100644 drivers/mfd/tps65912-spi.c
 create mode 100644 include/linux/mfd/tps65912.h

diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
index 9a8df8e..02b321f 100644
--- a/drivers/mfd/Kconfig
+++ b/drivers/mfd/Kconfig
@@ -1167,6 +1167,31 @@ config MFD_TPS65910
  if you say yes here you get support for the TPS65910 series of
  Power Management chips.
 
+config MFD_TPS65912
+   tristate
+   select REGMAP
+   select REGMAP_IRQ
+
+config MFD_TPS65912_I2C
+   tristate "TI TPS65912 Power Management chip with I2C"
+   select MFD_TPS65912
+   select REGMAP_I2C
+   depends on I2C
+   depends on OF || COMPILE_TEST
+   help
+ If you say yes here you get support for the TPS65912 series of
+ PM chips with I2C interface.
+
+config MFD_TPS65912_SPI
+   tristate "TI TPS65912 Power Management chip with SPI"
+   select MFD_TPS65912
+   select REGMAP_SPI
+   depends on SPI_MASTER
+   depends on OF || COMPILE_TEST
+   help
+ If you say yes here you get support for the TPS65912 series of
+ PM chips with SPI interface.
+
 config MFD_TPS80031
bool "TI TPS80031/TPS80032 Power Management chips"
depends on I2C=y
diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
index 004aa76..49c3530 100644
--- a/drivers/mfd/Makefile
+++ b/drivers/mfd/Makefile
@@ -69,6 +69,9 @@ obj-$(CONFIG_TPS6507X)+= tps6507x.o
 obj-$(CONFIG_MFD_TPS65217) += tps65217.o
 obj-$(CONFIG_MFD_TPS65218) += tps65218.o
 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_TPS80031) += tps80031.o
 obj-$(CONFIG_MENELAUS) += menelaus.o
 
diff --git a/drivers/mfd/tps65912-core.c b/drivers/mfd/tps65912-core.c
new file mode 100644
index 000..e787950
--- /dev/null
+++ b/drivers/mfd/tps65912-core.c
@@ -0,0 +1,108 @@
+/*
+ * Core functions for TI TPS65912x PMIC
+ *
+ * Copyright (C) 2015 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * Author: Andrew F. Davis 
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed "as is" WITHOUT ANY WARRANTY of any
+ * kind, whether expressed or implied; without even the implied warranty
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License version 2 for more details.
+ *
+ * Based on the TPS65218 driver and the previous TPS65912 driver by
+ * Margarita Olaya Cabrera 
+ */
+
+#include 
+#include 
+#include 
+
+#include 
+
+static const struct regmap_irq tps65912_irqs[] = {
+   /* INT_STS IRQs */
+   REGMAP_IRQ_REG(TPS65912_IRQ_PWRHOLD_F, 0, TPS65912_INT_STS_PWRHOLD_F),
+   REGMAP_IRQ_REG(TPS65912_IRQ_VMON, 0, TPS65912_INT_STS_VMON),
+   REGMAP_IRQ_REG(TPS65912_IRQ_PWRON, 0, TPS65912_INT_STS_PWRON),
+   REGMAP_IRQ_REG(TPS65912_IRQ_PWRON_LP, 0, TPS65912_INT_STS_PWRON_LP),
+   REGMAP_IRQ_REG(TPS65912_IRQ_PWRHOLD_R, 0, TPS65912_INT_STS_PWRHOLD_R),
+   REGMAP_IRQ_REG(TPS65912_IRQ_HOTDIE, 0, TPS65912_INT_STS_HOTDIE),
+   REGMAP_IRQ_REG(TPS65912_IRQ_GPIO1_R, 0, TPS65912_INT_STS_GPIO1_R),
+   REGMAP_IRQ_REG(TPS65912_IRQ_GPIO1_F, 0, TPS65912_INT_STS_GPIO1_F),
+   /* INT_STS2 IRQs */
+   REGMAP_IRQ_REG(TPS65912_IRQ_GPIO2_R, 1, TPS65912_INT_STS2_GPIO2_R),
+   REGMAP_IRQ_REG(TPS65912_IRQ_GPIO2_F, 1, TPS65912_INT_STS2_GPIO2_F),
+   REGMAP_IRQ_REG(TPS65912_IRQ_GPIO3_R, 1, TPS65912_INT_STS2_GPIO3_R),
+   REGMAP_IRQ_REG(TPS65912_IRQ_GPIO3_F, 1, TPS65912_INT_STS2_GPIO3_F),
+   REGMAP_IRQ_REG(TPS65912_IRQ_GPIO4_R, 1, TPS65912_INT_STS2_GPIO4_R),
+   REGMAP_IRQ_REG(TPS65912_IRQ_GPIO4_F, 1, TPS65912_INT_STS2_GPIO4_F),
+   REGMAP_IRQ_REG(TPS65912_IRQ_GPIO5_R, 1, TPS65912_INT_STS2_GPIO5_R),
+   REGMAP_IRQ_REG(TPS65912_IRQ_GPIO5_F, 1, TPS65912_INT_STS2_GPIO5_F),
+   /* INT_STS3 IRQs */
+   REGMAP_IRQ_REG(TPS65912_IRQ_PGOOD_DCDC1, 2, 
TPS65912_INT_STS3_PGOOD_DCDC1),
+   REGMAP_IRQ_REG(TPS65912_IRQ_PGOOD_DCDC2, 2, 
TPS65912_INT_STS3_PGOOD_DCDC2),
+   REGMAP_IRQ_REG(TPS65912