All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH resend v2 0/9] mfd: axp20x: Add support for AXP809 PMIC
@ 2016-03-29  9:22 ` Chen-Yu Tsai
  0 siblings, 0 replies; 54+ messages in thread
From: Chen-Yu Tsai @ 2016-03-29  9:22 UTC (permalink / raw)
  To: Lee Jones, Liam Girdwood, Mark Brown, Maxime Ripard
  Cc: Chen-Yu Tsai, linux-kernel, devicetree, linux-arm-kernel, linux-sunxi

Hi everyone,

This is a resend of v2 of the AXP809 PMIC support series. This adds
support for X-Powers' AXP809 PMIC. This is the primary PMIC accompanying
Allwinner's A80 SoC. For now, only the power button (PEK) and regulators
are supported. These are supported using existing axp20x drivers.

Driver patches are based on v4.6-rc1, while DT patches are based on
Maxime's sunxi/dt-for-4.7 branch.

Some regulator patches were merged into v4.6-rc1. Those have been
dropped from this series. Other than that there are no changes.

Patch 1 adds a MAINTAINERS entry for the X-Powers AXP PMICs.
I list myself as the maintainer.

Patch 2 adds AXP809 to the axp20x bindings.

Patch 3 adds AXP809 support to the axp20x mfd driver.

Patch 4 adds AXP809 support to the axp20x regulator driver.
This patch depends on patch 3.

Patch 5 adds a dtsi file for AXP809.

Patch 6 enables AXP809 support on the A80 Optimus board.

Patch 7 enables AXP809 support on the Cubieboard 4.

Patch 8 disables the dummy regulators from sunxi-common-regulators.dtsi
on the A80 Optimus board. These aren't used in the board DTS anymore.

Patch 9 disables the dummy regulators from sunxi-common-regulators.dtsi,
on the Cubieboard4. These aren't used in the board DTS anymore.


Regards
ChenYu

Chen-Yu Tsai (9):
  MAINTAINERS: Add entry for X-Powers AXP family PMIC drivers
  mfd: axp20x: Add bindings for AXP809 PMIC
  mfd: axp20x: Add support for AXP809 PMIC
  regulator: axp20x: support AXP809 variant
  ARM: dts: sunxi: Add dtsi file for AXP809 PMIC
  ARM: dts: sun9i: a80-optimus: Add AXP809 PMIC device node and
    regulators
  ARM: dts: sun9i: cubieboard4: Add AXP809 PMIC device node and
    regulators
  ARM: dts: sun9i: a80-optimus: Disable dummy regulators vcc3v0, vcc3v3,
    vcc5v0
  ARM: dts: sun9i: cubieboard4: Disable dummy regulators vcc3v0, vcc3v3,
    vcc5v0

 Documentation/devicetree/bindings/mfd/axp20x.txt   |  31 ++++-
 MAINTAINERS                                        |   6 +
 .../dts/{sun9i-a80-cubieboard4.dts => axp809.dtsi} |  98 ++------------
 arch/arm/boot/dts/sun9i-a80-cubieboard4.dts        | 143 ++++++++++++++++++++-
 arch/arm/boot/dts/sun9i-a80-optimus.dts            | 143 ++++++++++++++++++++-
 drivers/mfd/axp20x-rsb.c                           |   1 +
 drivers/mfd/axp20x.c                               |  79 ++++++++++++
 drivers/regulator/axp20x-regulator.c               | 119 ++++++++++++-----
 include/linux/mfd/axp20x.h                         |  59 +++++++++
 9 files changed, 554 insertions(+), 125 deletions(-)
 copy arch/arm/boot/dts/{sun9i-a80-cubieboard4.dts => axp809.dtsi} (52%)

-- 
2.7.0

^ permalink raw reply	[flat|nested] 54+ messages in thread

* [PATCH resend v2 0/9] mfd: axp20x: Add support for AXP809 PMIC
@ 2016-03-29  9:22 ` Chen-Yu Tsai
  0 siblings, 0 replies; 54+ messages in thread
From: Chen-Yu Tsai @ 2016-03-29  9:22 UTC (permalink / raw)
  To: Lee Jones, Liam Girdwood, Mark Brown, Maxime Ripard
  Cc: Chen-Yu Tsai, linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw

Hi everyone,

This is a resend of v2 of the AXP809 PMIC support series. This adds
support for X-Powers' AXP809 PMIC. This is the primary PMIC accompanying
Allwinner's A80 SoC. For now, only the power button (PEK) and regulators
are supported. These are supported using existing axp20x drivers.

Driver patches are based on v4.6-rc1, while DT patches are based on
Maxime's sunxi/dt-for-4.7 branch.

Some regulator patches were merged into v4.6-rc1. Those have been
dropped from this series. Other than that there are no changes.

Patch 1 adds a MAINTAINERS entry for the X-Powers AXP PMICs.
I list myself as the maintainer.

Patch 2 adds AXP809 to the axp20x bindings.

Patch 3 adds AXP809 support to the axp20x mfd driver.

Patch 4 adds AXP809 support to the axp20x regulator driver.
This patch depends on patch 3.

Patch 5 adds a dtsi file for AXP809.

Patch 6 enables AXP809 support on the A80 Optimus board.

Patch 7 enables AXP809 support on the Cubieboard 4.

Patch 8 disables the dummy regulators from sunxi-common-regulators.dtsi
on the A80 Optimus board. These aren't used in the board DTS anymore.

Patch 9 disables the dummy regulators from sunxi-common-regulators.dtsi,
on the Cubieboard4. These aren't used in the board DTS anymore.


Regards
ChenYu

Chen-Yu Tsai (9):
  MAINTAINERS: Add entry for X-Powers AXP family PMIC drivers
  mfd: axp20x: Add bindings for AXP809 PMIC
  mfd: axp20x: Add support for AXP809 PMIC
  regulator: axp20x: support AXP809 variant
  ARM: dts: sunxi: Add dtsi file for AXP809 PMIC
  ARM: dts: sun9i: a80-optimus: Add AXP809 PMIC device node and
    regulators
  ARM: dts: sun9i: cubieboard4: Add AXP809 PMIC device node and
    regulators
  ARM: dts: sun9i: a80-optimus: Disable dummy regulators vcc3v0, vcc3v3,
    vcc5v0
  ARM: dts: sun9i: cubieboard4: Disable dummy regulators vcc3v0, vcc3v3,
    vcc5v0

 Documentation/devicetree/bindings/mfd/axp20x.txt   |  31 ++++-
 MAINTAINERS                                        |   6 +
 .../dts/{sun9i-a80-cubieboard4.dts => axp809.dtsi} |  98 ++------------
 arch/arm/boot/dts/sun9i-a80-cubieboard4.dts        | 143 ++++++++++++++++++++-
 arch/arm/boot/dts/sun9i-a80-optimus.dts            | 143 ++++++++++++++++++++-
 drivers/mfd/axp20x-rsb.c                           |   1 +
 drivers/mfd/axp20x.c                               |  79 ++++++++++++
 drivers/regulator/axp20x-regulator.c               | 119 ++++++++++++-----
 include/linux/mfd/axp20x.h                         |  59 +++++++++
 9 files changed, 554 insertions(+), 125 deletions(-)
 copy arch/arm/boot/dts/{sun9i-a80-cubieboard4.dts => axp809.dtsi} (52%)

-- 
2.7.0

^ permalink raw reply	[flat|nested] 54+ messages in thread

* [PATCH resend v2 0/9] mfd: axp20x: Add support for AXP809 PMIC
@ 2016-03-29  9:22 ` Chen-Yu Tsai
  0 siblings, 0 replies; 54+ messages in thread
From: Chen-Yu Tsai @ 2016-03-29  9:22 UTC (permalink / raw)
  To: linux-arm-kernel

Hi everyone,

This is a resend of v2 of the AXP809 PMIC support series. This adds
support for X-Powers' AXP809 PMIC. This is the primary PMIC accompanying
Allwinner's A80 SoC. For now, only the power button (PEK) and regulators
are supported. These are supported using existing axp20x drivers.

Driver patches are based on v4.6-rc1, while DT patches are based on
Maxime's sunxi/dt-for-4.7 branch.

Some regulator patches were merged into v4.6-rc1. Those have been
dropped from this series. Other than that there are no changes.

Patch 1 adds a MAINTAINERS entry for the X-Powers AXP PMICs.
I list myself as the maintainer.

Patch 2 adds AXP809 to the axp20x bindings.

Patch 3 adds AXP809 support to the axp20x mfd driver.

Patch 4 adds AXP809 support to the axp20x regulator driver.
This patch depends on patch 3.

Patch 5 adds a dtsi file for AXP809.

Patch 6 enables AXP809 support on the A80 Optimus board.

Patch 7 enables AXP809 support on the Cubieboard 4.

Patch 8 disables the dummy regulators from sunxi-common-regulators.dtsi
on the A80 Optimus board. These aren't used in the board DTS anymore.

Patch 9 disables the dummy regulators from sunxi-common-regulators.dtsi,
on the Cubieboard4. These aren't used in the board DTS anymore.


Regards
ChenYu

Chen-Yu Tsai (9):
  MAINTAINERS: Add entry for X-Powers AXP family PMIC drivers
  mfd: axp20x: Add bindings for AXP809 PMIC
  mfd: axp20x: Add support for AXP809 PMIC
  regulator: axp20x: support AXP809 variant
  ARM: dts: sunxi: Add dtsi file for AXP809 PMIC
  ARM: dts: sun9i: a80-optimus: Add AXP809 PMIC device node and
    regulators
  ARM: dts: sun9i: cubieboard4: Add AXP809 PMIC device node and
    regulators
  ARM: dts: sun9i: a80-optimus: Disable dummy regulators vcc3v0, vcc3v3,
    vcc5v0
  ARM: dts: sun9i: cubieboard4: Disable dummy regulators vcc3v0, vcc3v3,
    vcc5v0

 Documentation/devicetree/bindings/mfd/axp20x.txt   |  31 ++++-
 MAINTAINERS                                        |   6 +
 .../dts/{sun9i-a80-cubieboard4.dts => axp809.dtsi} |  98 ++------------
 arch/arm/boot/dts/sun9i-a80-cubieboard4.dts        | 143 ++++++++++++++++++++-
 arch/arm/boot/dts/sun9i-a80-optimus.dts            | 143 ++++++++++++++++++++-
 drivers/mfd/axp20x-rsb.c                           |   1 +
 drivers/mfd/axp20x.c                               |  79 ++++++++++++
 drivers/regulator/axp20x-regulator.c               | 119 ++++++++++++-----
 include/linux/mfd/axp20x.h                         |  59 +++++++++
 9 files changed, 554 insertions(+), 125 deletions(-)
 copy arch/arm/boot/dts/{sun9i-a80-cubieboard4.dts => axp809.dtsi} (52%)

-- 
2.7.0

^ permalink raw reply	[flat|nested] 54+ messages in thread

* [PATCH resend v2 1/9] MAINTAINERS: Add entry for X-Powers AXP family PMIC drivers
@ 2016-03-29  9:22   ` Chen-Yu Tsai
  0 siblings, 0 replies; 54+ messages in thread
From: Chen-Yu Tsai @ 2016-03-29  9:22 UTC (permalink / raw)
  To: Lee Jones, Liam Girdwood, Mark Brown, Maxime Ripard
  Cc: Chen-Yu Tsai, linux-kernel, devicetree, linux-arm-kernel,
	linux-sunxi, Carlo Caione, Ramakrishna Pallala, Todd Brandt,
	Jacob Pan

Add an entry for X-Powers AXP family PMIC drivers and list myself
as maintainer.

Cc: Carlo Caione <carlo@caione.org>
Cc: Maxime Ripard <maxime.ripard@free-electrons.com>
Cc: Ramakrishna Pallala <ramakrishna.pallala@intel.com>
Cc: Todd Brandt <todd.e.brandt@linux.intel.com>
Cc: Jacob Pan <jacob.jun.pan@linux.intel.com>
Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
---
 MAINTAINERS | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/MAINTAINERS b/MAINTAINERS
index 03e00c7c88eb..53f2bdfa20c4 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -12147,6 +12147,12 @@ F:	include/linux/workqueue.h
 F:	kernel/workqueue.c
 F:	Documentation/workqueue.txt
 
+X-POWERS MULTIFUNCTION PMIC DEVICE DRIVERS
+M:	Chen-Yu Tsai <wens@csie.org>
+L:	linux-kernel@vger.kernel.org
+S:	Maintained
+N:	axp[128]
+
 X.25 NETWORK LAYER
 M:	Andrew Hendry <andrew.hendry@gmail.com>
 L:	linux-x25@vger.kernel.org
-- 
2.7.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [PATCH resend v2 1/9] MAINTAINERS: Add entry for X-Powers AXP family PMIC drivers
@ 2016-03-29  9:22   ` Chen-Yu Tsai
  0 siblings, 0 replies; 54+ messages in thread
From: Chen-Yu Tsai @ 2016-03-29  9:22 UTC (permalink / raw)
  To: Lee Jones, Liam Girdwood, Mark Brown, Maxime Ripard
  Cc: Chen-Yu Tsai, linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw, Carlo Caione,
	Ramakrishna Pallala, Todd Brandt, Jacob Pan

Add an entry for X-Powers AXP family PMIC drivers and list myself
as maintainer.

Cc: Carlo Caione <carlo-KA+7E9HrN00dnm+yROfE0A@public.gmane.org>
Cc: Maxime Ripard <maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
Cc: Ramakrishna Pallala <ramakrishna.pallala-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Cc: Todd Brandt <todd.e.brandt-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
Cc: Jacob Pan <jacob.jun.pan-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
Signed-off-by: Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>
Acked-by: Maxime Ripard <maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
---
 MAINTAINERS | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/MAINTAINERS b/MAINTAINERS
index 03e00c7c88eb..53f2bdfa20c4 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -12147,6 +12147,12 @@ F:	include/linux/workqueue.h
 F:	kernel/workqueue.c
 F:	Documentation/workqueue.txt
 
+X-POWERS MULTIFUNCTION PMIC DEVICE DRIVERS
+M:	Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>
+L:	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
+S:	Maintained
+N:	axp[128]
+
 X.25 NETWORK LAYER
 M:	Andrew Hendry <andrew.hendry-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
 L:	linux-x25-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
-- 
2.7.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [PATCH resend v2 1/9] MAINTAINERS: Add entry for X-Powers AXP family PMIC drivers
@ 2016-03-29  9:22   ` Chen-Yu Tsai
  0 siblings, 0 replies; 54+ messages in thread
From: Chen-Yu Tsai @ 2016-03-29  9:22 UTC (permalink / raw)
  To: linux-arm-kernel

Add an entry for X-Powers AXP family PMIC drivers and list myself
as maintainer.

Cc: Carlo Caione <carlo@caione.org>
Cc: Maxime Ripard <maxime.ripard@free-electrons.com>
Cc: Ramakrishna Pallala <ramakrishna.pallala@intel.com>
Cc: Todd Brandt <todd.e.brandt@linux.intel.com>
Cc: Jacob Pan <jacob.jun.pan@linux.intel.com>
Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
---
 MAINTAINERS | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/MAINTAINERS b/MAINTAINERS
index 03e00c7c88eb..53f2bdfa20c4 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -12147,6 +12147,12 @@ F:	include/linux/workqueue.h
 F:	kernel/workqueue.c
 F:	Documentation/workqueue.txt
 
+X-POWERS MULTIFUNCTION PMIC DEVICE DRIVERS
+M:	Chen-Yu Tsai <wens@csie.org>
+L:	linux-kernel at vger.kernel.org
+S:	Maintained
+N:	axp[128]
+
 X.25 NETWORK LAYER
 M:	Andrew Hendry <andrew.hendry@gmail.com>
 L:	linux-x25 at vger.kernel.org
-- 
2.7.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [PATCH resend v2 2/9] mfd: axp20x: Add bindings for AXP809 PMIC
@ 2016-03-29  9:22   ` Chen-Yu Tsai
  0 siblings, 0 replies; 54+ messages in thread
From: Chen-Yu Tsai @ 2016-03-29  9:22 UTC (permalink / raw)
  To: Lee Jones, Liam Girdwood, Mark Brown, Maxime Ripard
  Cc: Chen-Yu Tsai, linux-kernel, devicetree, linux-arm-kernel, linux-sunxi

This patch adds the basic and regulator bindings for the X-Powers AXP809
PMIC.

Also update the DC-DC converter operating frequency for AXP22X/AXP80X.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Acked-by: Rob Herring <robh@kernel.org>
---
 Documentation/devicetree/bindings/mfd/axp20x.txt | 31 ++++++++++++++++++++++--
 1 file changed, 29 insertions(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/mfd/axp20x.txt b/Documentation/devicetree/bindings/mfd/axp20x.txt
index fd39fa54571b..d20b1034e967 100644
--- a/Documentation/devicetree/bindings/mfd/axp20x.txt
+++ b/Documentation/devicetree/bindings/mfd/axp20x.txt
@@ -6,10 +6,11 @@ axp202 (X-Powers)
 axp209 (X-Powers)
 axp221 (X-Powers)
 axp223 (X-Powers)
+axp809 (X-Powers)
 
 Required properties:
 - compatible: "x-powers,axp152", "x-powers,axp202", "x-powers,axp209",
-	      "x-powers,axp221", "x-powers,axp223"
+	      "x-powers,axp221", "x-powers,axp223", "x-powers,axp809"
 - reg: The I2C slave address or RSB hardware address for the AXP chip
 - interrupt-parent: The parent interrupt controller
 - interrupts: SoC NMI / GPIO interrupt connected to the PMIC's IRQ pin
@@ -18,7 +19,9 @@ Required properties:
 
 Optional properties:
 - x-powers,dcdc-freq: defines the work frequency of DC-DC in KHz
-		      (range: 750-1875). Default: 1.5MHz
+		      AXP152/20X: range:  750-1875, Default: 1.5 MHz
+		      AXP22X/80X: range: 1800-4050, Default: 3   MHz
+
 - <input>-supply: a phandle to the regulator supply node. May be omitted if
 		  inputs are unregulated, such as using the IPSOUT output
 		  from the PMIC.
@@ -77,6 +80,30 @@ LDO_IO0		: LDO		: ips-supply		: GPIO 0
 LDO_IO1		: LDO		: ips-supply		: GPIO 1
 RTC_LDO		: LDO		: ips-supply		: always on
 
+AXP809 regulators, type, and corresponding input supply names:
+
+Regulator	  Type		  Supply Name		  Notes
+---------	  ----		  -----------		  -----
+DCDC1		: DC-DC buck	: vin1-supply
+DCDC2		: DC-DC buck	: vin2-supply
+DCDC3		: DC-DC	buck	: vin3-supply
+DCDC4		: DC-DC	buck	: vin4-supply
+DCDC5		: DC-DC	buck	: vin5-supply
+DC1SW		: On/Off Switch	:			: DCDC1 secondary output
+DC5LDO		: LDO		:			: input from DCDC5
+ALDO1		: LDO		: aldoin-supply		: shared supply
+ALDO2		: LDO		: aldoin-supply		: shared supply
+ALDO3		: LDO		: aldoin-supply		: shared supply
+DLDO1		: LDO		: dldoin-supply		: shared supply
+DLDO2		: LDO		: dldoin-supply		: shared supply
+ELDO1		: LDO		: eldoin-supply		: shared supply
+ELDO2		: LDO		: eldoin-supply		: shared supply
+ELDO3		: LDO		: eldoin-supply		: shared supply
+LDO_IO0		: LDO		: ips-supply		: GPIO 0
+LDO_IO1		: LDO		: ips-supply		: GPIO 1
+RTC_LDO		: LDO		: ips-supply		: always on
+SW		: On/Off Switch : swin-supply
+
 Example:
 
 axp209: pmic@34 {
-- 
2.7.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [PATCH resend v2 2/9] mfd: axp20x: Add bindings for AXP809 PMIC
@ 2016-03-29  9:22   ` Chen-Yu Tsai
  0 siblings, 0 replies; 54+ messages in thread
From: Chen-Yu Tsai @ 2016-03-29  9:22 UTC (permalink / raw)
  To: Lee Jones, Liam Girdwood, Mark Brown, Maxime Ripard
  Cc: Chen-Yu Tsai, linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw

This patch adds the basic and regulator bindings for the X-Powers AXP809
PMIC.

Also update the DC-DC converter operating frequency for AXP22X/AXP80X.

Signed-off-by: Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>
Acked-by: Rob Herring <robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
---
 Documentation/devicetree/bindings/mfd/axp20x.txt | 31 ++++++++++++++++++++++--
 1 file changed, 29 insertions(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/mfd/axp20x.txt b/Documentation/devicetree/bindings/mfd/axp20x.txt
index fd39fa54571b..d20b1034e967 100644
--- a/Documentation/devicetree/bindings/mfd/axp20x.txt
+++ b/Documentation/devicetree/bindings/mfd/axp20x.txt
@@ -6,10 +6,11 @@ axp202 (X-Powers)
 axp209 (X-Powers)
 axp221 (X-Powers)
 axp223 (X-Powers)
+axp809 (X-Powers)
 
 Required properties:
 - compatible: "x-powers,axp152", "x-powers,axp202", "x-powers,axp209",
-	      "x-powers,axp221", "x-powers,axp223"
+	      "x-powers,axp221", "x-powers,axp223", "x-powers,axp809"
 - reg: The I2C slave address or RSB hardware address for the AXP chip
 - interrupt-parent: The parent interrupt controller
 - interrupts: SoC NMI / GPIO interrupt connected to the PMIC's IRQ pin
@@ -18,7 +19,9 @@ Required properties:
 
 Optional properties:
 - x-powers,dcdc-freq: defines the work frequency of DC-DC in KHz
-		      (range: 750-1875). Default: 1.5MHz
+		      AXP152/20X: range:  750-1875, Default: 1.5 MHz
+		      AXP22X/80X: range: 1800-4050, Default: 3   MHz
+
 - <input>-supply: a phandle to the regulator supply node. May be omitted if
 		  inputs are unregulated, such as using the IPSOUT output
 		  from the PMIC.
@@ -77,6 +80,30 @@ LDO_IO0		: LDO		: ips-supply		: GPIO 0
 LDO_IO1		: LDO		: ips-supply		: GPIO 1
 RTC_LDO		: LDO		: ips-supply		: always on
 
+AXP809 regulators, type, and corresponding input supply names:
+
+Regulator	  Type		  Supply Name		  Notes
+---------	  ----		  -----------		  -----
+DCDC1		: DC-DC buck	: vin1-supply
+DCDC2		: DC-DC buck	: vin2-supply
+DCDC3		: DC-DC	buck	: vin3-supply
+DCDC4		: DC-DC	buck	: vin4-supply
+DCDC5		: DC-DC	buck	: vin5-supply
+DC1SW		: On/Off Switch	:			: DCDC1 secondary output
+DC5LDO		: LDO		:			: input from DCDC5
+ALDO1		: LDO		: aldoin-supply		: shared supply
+ALDO2		: LDO		: aldoin-supply		: shared supply
+ALDO3		: LDO		: aldoin-supply		: shared supply
+DLDO1		: LDO		: dldoin-supply		: shared supply
+DLDO2		: LDO		: dldoin-supply		: shared supply
+ELDO1		: LDO		: eldoin-supply		: shared supply
+ELDO2		: LDO		: eldoin-supply		: shared supply
+ELDO3		: LDO		: eldoin-supply		: shared supply
+LDO_IO0		: LDO		: ips-supply		: GPIO 0
+LDO_IO1		: LDO		: ips-supply		: GPIO 1
+RTC_LDO		: LDO		: ips-supply		: always on
+SW		: On/Off Switch : swin-supply
+
 Example:
 
 axp209: pmic@34 {
-- 
2.7.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [PATCH resend v2 2/9] mfd: axp20x: Add bindings for AXP809 PMIC
@ 2016-03-29  9:22   ` Chen-Yu Tsai
  0 siblings, 0 replies; 54+ messages in thread
From: Chen-Yu Tsai @ 2016-03-29  9:22 UTC (permalink / raw)
  To: linux-arm-kernel

This patch adds the basic and regulator bindings for the X-Powers AXP809
PMIC.

Also update the DC-DC converter operating frequency for AXP22X/AXP80X.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
Acked-by: Rob Herring <robh@kernel.org>
---
 Documentation/devicetree/bindings/mfd/axp20x.txt | 31 ++++++++++++++++++++++--
 1 file changed, 29 insertions(+), 2 deletions(-)

diff --git a/Documentation/devicetree/bindings/mfd/axp20x.txt b/Documentation/devicetree/bindings/mfd/axp20x.txt
index fd39fa54571b..d20b1034e967 100644
--- a/Documentation/devicetree/bindings/mfd/axp20x.txt
+++ b/Documentation/devicetree/bindings/mfd/axp20x.txt
@@ -6,10 +6,11 @@ axp202 (X-Powers)
 axp209 (X-Powers)
 axp221 (X-Powers)
 axp223 (X-Powers)
+axp809 (X-Powers)
 
 Required properties:
 - compatible: "x-powers,axp152", "x-powers,axp202", "x-powers,axp209",
-	      "x-powers,axp221", "x-powers,axp223"
+	      "x-powers,axp221", "x-powers,axp223", "x-powers,axp809"
 - reg: The I2C slave address or RSB hardware address for the AXP chip
 - interrupt-parent: The parent interrupt controller
 - interrupts: SoC NMI / GPIO interrupt connected to the PMIC's IRQ pin
@@ -18,7 +19,9 @@ Required properties:
 
 Optional properties:
 - x-powers,dcdc-freq: defines the work frequency of DC-DC in KHz
-		      (range: 750-1875). Default: 1.5MHz
+		      AXP152/20X: range:  750-1875, Default: 1.5 MHz
+		      AXP22X/80X: range: 1800-4050, Default: 3   MHz
+
 - <input>-supply: a phandle to the regulator supply node. May be omitted if
 		  inputs are unregulated, such as using the IPSOUT output
 		  from the PMIC.
@@ -77,6 +80,30 @@ LDO_IO0		: LDO		: ips-supply		: GPIO 0
 LDO_IO1		: LDO		: ips-supply		: GPIO 1
 RTC_LDO		: LDO		: ips-supply		: always on
 
+AXP809 regulators, type, and corresponding input supply names:
+
+Regulator	  Type		  Supply Name		  Notes
+---------	  ----		  -----------		  -----
+DCDC1		: DC-DC buck	: vin1-supply
+DCDC2		: DC-DC buck	: vin2-supply
+DCDC3		: DC-DC	buck	: vin3-supply
+DCDC4		: DC-DC	buck	: vin4-supply
+DCDC5		: DC-DC	buck	: vin5-supply
+DC1SW		: On/Off Switch	:			: DCDC1 secondary output
+DC5LDO		: LDO		:			: input from DCDC5
+ALDO1		: LDO		: aldoin-supply		: shared supply
+ALDO2		: LDO		: aldoin-supply		: shared supply
+ALDO3		: LDO		: aldoin-supply		: shared supply
+DLDO1		: LDO		: dldoin-supply		: shared supply
+DLDO2		: LDO		: dldoin-supply		: shared supply
+ELDO1		: LDO		: eldoin-supply		: shared supply
+ELDO2		: LDO		: eldoin-supply		: shared supply
+ELDO3		: LDO		: eldoin-supply		: shared supply
+LDO_IO0		: LDO		: ips-supply		: GPIO 0
+LDO_IO1		: LDO		: ips-supply		: GPIO 1
+RTC_LDO		: LDO		: ips-supply		: always on
+SW		: On/Off Switch : swin-supply
+
 Example:
 
 axp209: pmic at 34 {
-- 
2.7.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [PATCH resend v2 3/9] mfd: axp20x: Add support for AXP809 PMIC
@ 2016-03-29  9:22   ` Chen-Yu Tsai
  0 siblings, 0 replies; 54+ messages in thread
From: Chen-Yu Tsai @ 2016-03-29  9:22 UTC (permalink / raw)
  To: Lee Jones, Liam Girdwood, Mark Brown, Maxime Ripard
  Cc: Chen-Yu Tsai, linux-kernel, devicetree, linux-arm-kernel, linux-sunxi

The X-Powers AXP809 is a new PMIC that is paired with Allwinner's A80
SoC, along with a slave AXP806 PMIC.

This PMIC is quite similar to the earlier AXP223, though the interrupts
and regulator have changed a bit.

This patch adds support for the interrupts and power button of the PMIC.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
---
 drivers/mfd/axp20x-rsb.c   |  1 +
 drivers/mfd/axp20x.c       | 79 ++++++++++++++++++++++++++++++++++++++++++++++
 include/linux/mfd/axp20x.h | 59 ++++++++++++++++++++++++++++++++++
 3 files changed, 139 insertions(+)

diff --git a/drivers/mfd/axp20x-rsb.c b/drivers/mfd/axp20x-rsb.c
index 28c20247c112..a407527bcd09 100644
--- a/drivers/mfd/axp20x-rsb.c
+++ b/drivers/mfd/axp20x-rsb.c
@@ -61,6 +61,7 @@ static int axp20x_rsb_remove(struct sunxi_rsb_device *rdev)
 
 static const struct of_device_id axp20x_rsb_of_match[] = {
 	{ .compatible = "x-powers,axp223", .data = (void *)AXP223_ID },
+	{ .compatible = "x-powers,axp809", .data = (void *)AXP809_ID },
 	{ },
 };
 MODULE_DEVICE_TABLE(of, axp20x_rsb_of_match);
diff --git a/drivers/mfd/axp20x.c b/drivers/mfd/axp20x.c
index a57d6e940610..1ce923277cc8 100644
--- a/drivers/mfd/axp20x.c
+++ b/drivers/mfd/axp20x.c
@@ -37,6 +37,7 @@ static const char * const axp20x_model_names[] = {
 	"AXP221",
 	"AXP223",
 	"AXP288",
+	"AXP809",
 };
 
 static const struct regmap_range axp152_writeable_ranges[] = {
@@ -85,6 +86,7 @@ static const struct regmap_access_table axp20x_volatile_table = {
 	.n_yes_ranges	= ARRAY_SIZE(axp20x_volatile_ranges),
 };
 
+/* AXP22x ranges are shared with the AXP809, as they cover the same range */
 static const struct regmap_range axp22x_writeable_ranges[] = {
 	regmap_reg_range(AXP20X_DATACACHE(0), AXP20X_IRQ5_STATE),
 	regmap_reg_range(AXP20X_DCDC_MODE, AXP22X_BATLOW_THRES1),
@@ -211,6 +213,20 @@ static struct resource axp288_fuel_gauge_resources[] = {
 	},
 };
 
+static struct resource axp809_pek_resources[] = {
+	{
+		.name   = "PEK_DBR",
+		.start  = AXP809_IRQ_PEK_RIS_EDGE,
+		.end    = AXP809_IRQ_PEK_RIS_EDGE,
+		.flags  = IORESOURCE_IRQ,
+	}, {
+		.name   = "PEK_DBF",
+		.start  = AXP809_IRQ_PEK_FAL_EDGE,
+		.end    = AXP809_IRQ_PEK_FAL_EDGE,
+		.flags  = IORESOURCE_IRQ,
+	},
+};
+
 static const struct regmap_config axp152_regmap_config = {
 	.reg_bits	= 8,
 	.val_bits	= 8,
@@ -378,6 +394,41 @@ static const struct regmap_irq axp288_regmap_irqs[] = {
 	INIT_REGMAP_IRQ(AXP288, BC_USB_CHNG,            5, 1),
 };
 
+static const struct regmap_irq axp809_regmap_irqs[] = {
+	INIT_REGMAP_IRQ(AXP809, ACIN_OVER_V,		0, 7),
+	INIT_REGMAP_IRQ(AXP809, ACIN_PLUGIN,		0, 6),
+	INIT_REGMAP_IRQ(AXP809, ACIN_REMOVAL,	        0, 5),
+	INIT_REGMAP_IRQ(AXP809, VBUS_OVER_V,		0, 4),
+	INIT_REGMAP_IRQ(AXP809, VBUS_PLUGIN,		0, 3),
+	INIT_REGMAP_IRQ(AXP809, VBUS_REMOVAL,	        0, 2),
+	INIT_REGMAP_IRQ(AXP809, VBUS_V_LOW,		0, 1),
+	INIT_REGMAP_IRQ(AXP809, BATT_PLUGIN,		1, 7),
+	INIT_REGMAP_IRQ(AXP809, BATT_REMOVAL,	        1, 6),
+	INIT_REGMAP_IRQ(AXP809, BATT_ENT_ACT_MODE,	1, 5),
+	INIT_REGMAP_IRQ(AXP809, BATT_EXIT_ACT_MODE,	1, 4),
+	INIT_REGMAP_IRQ(AXP809, CHARG,		        1, 3),
+	INIT_REGMAP_IRQ(AXP809, CHARG_DONE,		1, 2),
+	INIT_REGMAP_IRQ(AXP809, BATT_CHG_TEMP_HIGH,	2, 7),
+	INIT_REGMAP_IRQ(AXP809, BATT_CHG_TEMP_HIGH_END,	2, 6),
+	INIT_REGMAP_IRQ(AXP809, BATT_CHG_TEMP_LOW,	2, 5),
+	INIT_REGMAP_IRQ(AXP809, BATT_CHG_TEMP_LOW_END,	2, 4),
+	INIT_REGMAP_IRQ(AXP809, BATT_ACT_TEMP_HIGH,	2, 3),
+	INIT_REGMAP_IRQ(AXP809, BATT_ACT_TEMP_HIGH_END,	2, 2),
+	INIT_REGMAP_IRQ(AXP809, BATT_ACT_TEMP_LOW,	2, 1),
+	INIT_REGMAP_IRQ(AXP809, BATT_ACT_TEMP_LOW_END,	2, 0),
+	INIT_REGMAP_IRQ(AXP809, DIE_TEMP_HIGH,	        3, 7),
+	INIT_REGMAP_IRQ(AXP809, LOW_PWR_LVL1,	        3, 1),
+	INIT_REGMAP_IRQ(AXP809, LOW_PWR_LVL2,	        3, 0),
+	INIT_REGMAP_IRQ(AXP809, TIMER,		        4, 7),
+	INIT_REGMAP_IRQ(AXP809, PEK_RIS_EDGE,	        4, 6),
+	INIT_REGMAP_IRQ(AXP809, PEK_FAL_EDGE,	        4, 5),
+	INIT_REGMAP_IRQ(AXP809, PEK_SHORT,		4, 4),
+	INIT_REGMAP_IRQ(AXP809, PEK_LONG,		4, 3),
+	INIT_REGMAP_IRQ(AXP809, PEK_OVER_OFF,		4, 2),
+	INIT_REGMAP_IRQ(AXP809, GPIO1_INPUT,		4, 1),
+	INIT_REGMAP_IRQ(AXP809, GPIO0_INPUT,		4, 0),
+};
+
 static const struct regmap_irq_chip axp152_regmap_irq_chip = {
 	.name			= "axp152_irq_chip",
 	.status_base		= AXP152_IRQ1_STATE,
@@ -428,6 +479,18 @@ static const struct regmap_irq_chip axp288_regmap_irq_chip = {
 
 };
 
+static const struct regmap_irq_chip axp809_regmap_irq_chip = {
+	.name			= "axp809",
+	.status_base		= AXP20X_IRQ1_STATE,
+	.ack_base		= AXP20X_IRQ1_STATE,
+	.mask_base		= AXP20X_IRQ1_EN,
+	.mask_invert		= true,
+	.init_ack_masked	= true,
+	.irqs			= axp809_regmap_irqs,
+	.num_irqs		= ARRAY_SIZE(axp809_regmap_irqs),
+	.num_regs		= 5,
+};
+
 static struct mfd_cell axp20x_cells[] = {
 	{
 		.name		= "axp20x-pek",
@@ -572,6 +635,16 @@ static struct mfd_cell axp288_cells[] = {
 	},
 };
 
+static struct mfd_cell axp809_cells[] = {
+	{
+		.name			= "axp20x-pek",
+		.num_resources		= ARRAY_SIZE(axp809_pek_resources),
+		.resources		= axp809_pek_resources,
+	}, {
+		.name			= "axp20x-regulator",
+	},
+};
+
 static struct axp20x_dev *axp20x_pm_power_off;
 static void axp20x_power_off(void)
 {
@@ -631,6 +704,12 @@ int axp20x_match_device(struct axp20x_dev *axp20x)
 		axp20x->regmap_cfg = &axp288_regmap_config;
 		axp20x->regmap_irq_chip = &axp288_regmap_irq_chip;
 		break;
+	case AXP809_ID:
+		axp20x->nr_cells = ARRAY_SIZE(axp809_cells);
+		axp20x->cells = axp809_cells;
+		axp20x->regmap_cfg = &axp22x_regmap_config;
+		axp20x->regmap_irq_chip = &axp809_regmap_irq_chip;
+		break;
 	default:
 		dev_err(dev, "unsupported AXP20X ID %lu\n", axp20x->variant);
 		return -EINVAL;
diff --git a/include/linux/mfd/axp20x.h b/include/linux/mfd/axp20x.h
index d82e7d51372b..0be4982f08fe 100644
--- a/include/linux/mfd/axp20x.h
+++ b/include/linux/mfd/axp20x.h
@@ -20,6 +20,7 @@ enum {
 	AXP221_ID,
 	AXP223_ID,
 	AXP288_ID,
+	AXP809_ID,
 	NR_AXP20X_VARIANTS,
 };
 
@@ -264,6 +265,29 @@ enum {
 	AXP22X_REG_ID_MAX,
 };
 
+enum {
+	AXP809_DCDC1 = 0,
+	AXP809_DCDC2,
+	AXP809_DCDC3,
+	AXP809_DCDC4,
+	AXP809_DCDC5,
+	AXP809_DC1SW,
+	AXP809_DC5LDO,
+	AXP809_ALDO1,
+	AXP809_ALDO2,
+	AXP809_ALDO3,
+	AXP809_ELDO1,
+	AXP809_ELDO2,
+	AXP809_ELDO3,
+	AXP809_DLDO1,
+	AXP809_DLDO2,
+	AXP809_RTC_LDO,
+	AXP809_LDO_IO0,
+	AXP809_LDO_IO1,
+	AXP809_SW,
+	AXP809_REG_ID_MAX,
+};
+
 /* IRQs */
 enum {
 	AXP152_IRQ_LDO0IN_CONNECT = 1,
@@ -390,6 +414,41 @@ enum axp288_irqs {
 	AXP288_IRQ_BC_USB_CHNG,
 };
 
+enum axp809_irqs {
+	AXP809_IRQ_ACIN_OVER_V = 1,
+	AXP809_IRQ_ACIN_PLUGIN,
+	AXP809_IRQ_ACIN_REMOVAL,
+	AXP809_IRQ_VBUS_OVER_V,
+	AXP809_IRQ_VBUS_PLUGIN,
+	AXP809_IRQ_VBUS_REMOVAL,
+	AXP809_IRQ_VBUS_V_LOW,
+	AXP809_IRQ_BATT_PLUGIN,
+	AXP809_IRQ_BATT_REMOVAL,
+	AXP809_IRQ_BATT_ENT_ACT_MODE,
+	AXP809_IRQ_BATT_EXIT_ACT_MODE,
+	AXP809_IRQ_CHARG,
+	AXP809_IRQ_CHARG_DONE,
+	AXP809_IRQ_BATT_CHG_TEMP_HIGH,
+	AXP809_IRQ_BATT_CHG_TEMP_HIGH_END,
+	AXP809_IRQ_BATT_CHG_TEMP_LOW,
+	AXP809_IRQ_BATT_CHG_TEMP_LOW_END,
+	AXP809_IRQ_BATT_ACT_TEMP_HIGH,
+	AXP809_IRQ_BATT_ACT_TEMP_HIGH_END,
+	AXP809_IRQ_BATT_ACT_TEMP_LOW,
+	AXP809_IRQ_BATT_ACT_TEMP_LOW_END,
+	AXP809_IRQ_DIE_TEMP_HIGH,
+	AXP809_IRQ_LOW_PWR_LVL1,
+	AXP809_IRQ_LOW_PWR_LVL2,
+	AXP809_IRQ_TIMER,
+	AXP809_IRQ_PEK_RIS_EDGE,
+	AXP809_IRQ_PEK_FAL_EDGE,
+	AXP809_IRQ_PEK_SHORT,
+	AXP809_IRQ_PEK_LONG,
+	AXP809_IRQ_PEK_OVER_OFF,
+	AXP809_IRQ_GPIO1_INPUT,
+	AXP809_IRQ_GPIO0_INPUT,
+};
+
 #define AXP288_TS_ADC_H		0x58
 #define AXP288_TS_ADC_L		0x59
 #define AXP288_GP_ADC_H		0x5a
-- 
2.7.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [PATCH resend v2 3/9] mfd: axp20x: Add support for AXP809 PMIC
@ 2016-03-29  9:22   ` Chen-Yu Tsai
  0 siblings, 0 replies; 54+ messages in thread
From: Chen-Yu Tsai @ 2016-03-29  9:22 UTC (permalink / raw)
  To: Lee Jones, Liam Girdwood, Mark Brown, Maxime Ripard
  Cc: Chen-Yu Tsai, linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw

The X-Powers AXP809 is a new PMIC that is paired with Allwinner's A80
SoC, along with a slave AXP806 PMIC.

This PMIC is quite similar to the earlier AXP223, though the interrupts
and regulator have changed a bit.

This patch adds support for the interrupts and power button of the PMIC.

Signed-off-by: Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>
---
 drivers/mfd/axp20x-rsb.c   |  1 +
 drivers/mfd/axp20x.c       | 79 ++++++++++++++++++++++++++++++++++++++++++++++
 include/linux/mfd/axp20x.h | 59 ++++++++++++++++++++++++++++++++++
 3 files changed, 139 insertions(+)

diff --git a/drivers/mfd/axp20x-rsb.c b/drivers/mfd/axp20x-rsb.c
index 28c20247c112..a407527bcd09 100644
--- a/drivers/mfd/axp20x-rsb.c
+++ b/drivers/mfd/axp20x-rsb.c
@@ -61,6 +61,7 @@ static int axp20x_rsb_remove(struct sunxi_rsb_device *rdev)
 
 static const struct of_device_id axp20x_rsb_of_match[] = {
 	{ .compatible = "x-powers,axp223", .data = (void *)AXP223_ID },
+	{ .compatible = "x-powers,axp809", .data = (void *)AXP809_ID },
 	{ },
 };
 MODULE_DEVICE_TABLE(of, axp20x_rsb_of_match);
diff --git a/drivers/mfd/axp20x.c b/drivers/mfd/axp20x.c
index a57d6e940610..1ce923277cc8 100644
--- a/drivers/mfd/axp20x.c
+++ b/drivers/mfd/axp20x.c
@@ -37,6 +37,7 @@ static const char * const axp20x_model_names[] = {
 	"AXP221",
 	"AXP223",
 	"AXP288",
+	"AXP809",
 };
 
 static const struct regmap_range axp152_writeable_ranges[] = {
@@ -85,6 +86,7 @@ static const struct regmap_access_table axp20x_volatile_table = {
 	.n_yes_ranges	= ARRAY_SIZE(axp20x_volatile_ranges),
 };
 
+/* AXP22x ranges are shared with the AXP809, as they cover the same range */
 static const struct regmap_range axp22x_writeable_ranges[] = {
 	regmap_reg_range(AXP20X_DATACACHE(0), AXP20X_IRQ5_STATE),
 	regmap_reg_range(AXP20X_DCDC_MODE, AXP22X_BATLOW_THRES1),
@@ -211,6 +213,20 @@ static struct resource axp288_fuel_gauge_resources[] = {
 	},
 };
 
+static struct resource axp809_pek_resources[] = {
+	{
+		.name   = "PEK_DBR",
+		.start  = AXP809_IRQ_PEK_RIS_EDGE,
+		.end    = AXP809_IRQ_PEK_RIS_EDGE,
+		.flags  = IORESOURCE_IRQ,
+	}, {
+		.name   = "PEK_DBF",
+		.start  = AXP809_IRQ_PEK_FAL_EDGE,
+		.end    = AXP809_IRQ_PEK_FAL_EDGE,
+		.flags  = IORESOURCE_IRQ,
+	},
+};
+
 static const struct regmap_config axp152_regmap_config = {
 	.reg_bits	= 8,
 	.val_bits	= 8,
@@ -378,6 +394,41 @@ static const struct regmap_irq axp288_regmap_irqs[] = {
 	INIT_REGMAP_IRQ(AXP288, BC_USB_CHNG,            5, 1),
 };
 
+static const struct regmap_irq axp809_regmap_irqs[] = {
+	INIT_REGMAP_IRQ(AXP809, ACIN_OVER_V,		0, 7),
+	INIT_REGMAP_IRQ(AXP809, ACIN_PLUGIN,		0, 6),
+	INIT_REGMAP_IRQ(AXP809, ACIN_REMOVAL,	        0, 5),
+	INIT_REGMAP_IRQ(AXP809, VBUS_OVER_V,		0, 4),
+	INIT_REGMAP_IRQ(AXP809, VBUS_PLUGIN,		0, 3),
+	INIT_REGMAP_IRQ(AXP809, VBUS_REMOVAL,	        0, 2),
+	INIT_REGMAP_IRQ(AXP809, VBUS_V_LOW,		0, 1),
+	INIT_REGMAP_IRQ(AXP809, BATT_PLUGIN,		1, 7),
+	INIT_REGMAP_IRQ(AXP809, BATT_REMOVAL,	        1, 6),
+	INIT_REGMAP_IRQ(AXP809, BATT_ENT_ACT_MODE,	1, 5),
+	INIT_REGMAP_IRQ(AXP809, BATT_EXIT_ACT_MODE,	1, 4),
+	INIT_REGMAP_IRQ(AXP809, CHARG,		        1, 3),
+	INIT_REGMAP_IRQ(AXP809, CHARG_DONE,		1, 2),
+	INIT_REGMAP_IRQ(AXP809, BATT_CHG_TEMP_HIGH,	2, 7),
+	INIT_REGMAP_IRQ(AXP809, BATT_CHG_TEMP_HIGH_END,	2, 6),
+	INIT_REGMAP_IRQ(AXP809, BATT_CHG_TEMP_LOW,	2, 5),
+	INIT_REGMAP_IRQ(AXP809, BATT_CHG_TEMP_LOW_END,	2, 4),
+	INIT_REGMAP_IRQ(AXP809, BATT_ACT_TEMP_HIGH,	2, 3),
+	INIT_REGMAP_IRQ(AXP809, BATT_ACT_TEMP_HIGH_END,	2, 2),
+	INIT_REGMAP_IRQ(AXP809, BATT_ACT_TEMP_LOW,	2, 1),
+	INIT_REGMAP_IRQ(AXP809, BATT_ACT_TEMP_LOW_END,	2, 0),
+	INIT_REGMAP_IRQ(AXP809, DIE_TEMP_HIGH,	        3, 7),
+	INIT_REGMAP_IRQ(AXP809, LOW_PWR_LVL1,	        3, 1),
+	INIT_REGMAP_IRQ(AXP809, LOW_PWR_LVL2,	        3, 0),
+	INIT_REGMAP_IRQ(AXP809, TIMER,		        4, 7),
+	INIT_REGMAP_IRQ(AXP809, PEK_RIS_EDGE,	        4, 6),
+	INIT_REGMAP_IRQ(AXP809, PEK_FAL_EDGE,	        4, 5),
+	INIT_REGMAP_IRQ(AXP809, PEK_SHORT,		4, 4),
+	INIT_REGMAP_IRQ(AXP809, PEK_LONG,		4, 3),
+	INIT_REGMAP_IRQ(AXP809, PEK_OVER_OFF,		4, 2),
+	INIT_REGMAP_IRQ(AXP809, GPIO1_INPUT,		4, 1),
+	INIT_REGMAP_IRQ(AXP809, GPIO0_INPUT,		4, 0),
+};
+
 static const struct regmap_irq_chip axp152_regmap_irq_chip = {
 	.name			= "axp152_irq_chip",
 	.status_base		= AXP152_IRQ1_STATE,
@@ -428,6 +479,18 @@ static const struct regmap_irq_chip axp288_regmap_irq_chip = {
 
 };
 
+static const struct regmap_irq_chip axp809_regmap_irq_chip = {
+	.name			= "axp809",
+	.status_base		= AXP20X_IRQ1_STATE,
+	.ack_base		= AXP20X_IRQ1_STATE,
+	.mask_base		= AXP20X_IRQ1_EN,
+	.mask_invert		= true,
+	.init_ack_masked	= true,
+	.irqs			= axp809_regmap_irqs,
+	.num_irqs		= ARRAY_SIZE(axp809_regmap_irqs),
+	.num_regs		= 5,
+};
+
 static struct mfd_cell axp20x_cells[] = {
 	{
 		.name		= "axp20x-pek",
@@ -572,6 +635,16 @@ static struct mfd_cell axp288_cells[] = {
 	},
 };
 
+static struct mfd_cell axp809_cells[] = {
+	{
+		.name			= "axp20x-pek",
+		.num_resources		= ARRAY_SIZE(axp809_pek_resources),
+		.resources		= axp809_pek_resources,
+	}, {
+		.name			= "axp20x-regulator",
+	},
+};
+
 static struct axp20x_dev *axp20x_pm_power_off;
 static void axp20x_power_off(void)
 {
@@ -631,6 +704,12 @@ int axp20x_match_device(struct axp20x_dev *axp20x)
 		axp20x->regmap_cfg = &axp288_regmap_config;
 		axp20x->regmap_irq_chip = &axp288_regmap_irq_chip;
 		break;
+	case AXP809_ID:
+		axp20x->nr_cells = ARRAY_SIZE(axp809_cells);
+		axp20x->cells = axp809_cells;
+		axp20x->regmap_cfg = &axp22x_regmap_config;
+		axp20x->regmap_irq_chip = &axp809_regmap_irq_chip;
+		break;
 	default:
 		dev_err(dev, "unsupported AXP20X ID %lu\n", axp20x->variant);
 		return -EINVAL;
diff --git a/include/linux/mfd/axp20x.h b/include/linux/mfd/axp20x.h
index d82e7d51372b..0be4982f08fe 100644
--- a/include/linux/mfd/axp20x.h
+++ b/include/linux/mfd/axp20x.h
@@ -20,6 +20,7 @@ enum {
 	AXP221_ID,
 	AXP223_ID,
 	AXP288_ID,
+	AXP809_ID,
 	NR_AXP20X_VARIANTS,
 };
 
@@ -264,6 +265,29 @@ enum {
 	AXP22X_REG_ID_MAX,
 };
 
+enum {
+	AXP809_DCDC1 = 0,
+	AXP809_DCDC2,
+	AXP809_DCDC3,
+	AXP809_DCDC4,
+	AXP809_DCDC5,
+	AXP809_DC1SW,
+	AXP809_DC5LDO,
+	AXP809_ALDO1,
+	AXP809_ALDO2,
+	AXP809_ALDO3,
+	AXP809_ELDO1,
+	AXP809_ELDO2,
+	AXP809_ELDO3,
+	AXP809_DLDO1,
+	AXP809_DLDO2,
+	AXP809_RTC_LDO,
+	AXP809_LDO_IO0,
+	AXP809_LDO_IO1,
+	AXP809_SW,
+	AXP809_REG_ID_MAX,
+};
+
 /* IRQs */
 enum {
 	AXP152_IRQ_LDO0IN_CONNECT = 1,
@@ -390,6 +414,41 @@ enum axp288_irqs {
 	AXP288_IRQ_BC_USB_CHNG,
 };
 
+enum axp809_irqs {
+	AXP809_IRQ_ACIN_OVER_V = 1,
+	AXP809_IRQ_ACIN_PLUGIN,
+	AXP809_IRQ_ACIN_REMOVAL,
+	AXP809_IRQ_VBUS_OVER_V,
+	AXP809_IRQ_VBUS_PLUGIN,
+	AXP809_IRQ_VBUS_REMOVAL,
+	AXP809_IRQ_VBUS_V_LOW,
+	AXP809_IRQ_BATT_PLUGIN,
+	AXP809_IRQ_BATT_REMOVAL,
+	AXP809_IRQ_BATT_ENT_ACT_MODE,
+	AXP809_IRQ_BATT_EXIT_ACT_MODE,
+	AXP809_IRQ_CHARG,
+	AXP809_IRQ_CHARG_DONE,
+	AXP809_IRQ_BATT_CHG_TEMP_HIGH,
+	AXP809_IRQ_BATT_CHG_TEMP_HIGH_END,
+	AXP809_IRQ_BATT_CHG_TEMP_LOW,
+	AXP809_IRQ_BATT_CHG_TEMP_LOW_END,
+	AXP809_IRQ_BATT_ACT_TEMP_HIGH,
+	AXP809_IRQ_BATT_ACT_TEMP_HIGH_END,
+	AXP809_IRQ_BATT_ACT_TEMP_LOW,
+	AXP809_IRQ_BATT_ACT_TEMP_LOW_END,
+	AXP809_IRQ_DIE_TEMP_HIGH,
+	AXP809_IRQ_LOW_PWR_LVL1,
+	AXP809_IRQ_LOW_PWR_LVL2,
+	AXP809_IRQ_TIMER,
+	AXP809_IRQ_PEK_RIS_EDGE,
+	AXP809_IRQ_PEK_FAL_EDGE,
+	AXP809_IRQ_PEK_SHORT,
+	AXP809_IRQ_PEK_LONG,
+	AXP809_IRQ_PEK_OVER_OFF,
+	AXP809_IRQ_GPIO1_INPUT,
+	AXP809_IRQ_GPIO0_INPUT,
+};
+
 #define AXP288_TS_ADC_H		0x58
 #define AXP288_TS_ADC_L		0x59
 #define AXP288_GP_ADC_H		0x5a
-- 
2.7.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [PATCH resend v2 3/9] mfd: axp20x: Add support for AXP809 PMIC
@ 2016-03-29  9:22   ` Chen-Yu Tsai
  0 siblings, 0 replies; 54+ messages in thread
From: Chen-Yu Tsai @ 2016-03-29  9:22 UTC (permalink / raw)
  To: linux-arm-kernel

The X-Powers AXP809 is a new PMIC that is paired with Allwinner's A80
SoC, along with a slave AXP806 PMIC.

This PMIC is quite similar to the earlier AXP223, though the interrupts
and regulator have changed a bit.

This patch adds support for the interrupts and power button of the PMIC.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
---
 drivers/mfd/axp20x-rsb.c   |  1 +
 drivers/mfd/axp20x.c       | 79 ++++++++++++++++++++++++++++++++++++++++++++++
 include/linux/mfd/axp20x.h | 59 ++++++++++++++++++++++++++++++++++
 3 files changed, 139 insertions(+)

diff --git a/drivers/mfd/axp20x-rsb.c b/drivers/mfd/axp20x-rsb.c
index 28c20247c112..a407527bcd09 100644
--- a/drivers/mfd/axp20x-rsb.c
+++ b/drivers/mfd/axp20x-rsb.c
@@ -61,6 +61,7 @@ static int axp20x_rsb_remove(struct sunxi_rsb_device *rdev)
 
 static const struct of_device_id axp20x_rsb_of_match[] = {
 	{ .compatible = "x-powers,axp223", .data = (void *)AXP223_ID },
+	{ .compatible = "x-powers,axp809", .data = (void *)AXP809_ID },
 	{ },
 };
 MODULE_DEVICE_TABLE(of, axp20x_rsb_of_match);
diff --git a/drivers/mfd/axp20x.c b/drivers/mfd/axp20x.c
index a57d6e940610..1ce923277cc8 100644
--- a/drivers/mfd/axp20x.c
+++ b/drivers/mfd/axp20x.c
@@ -37,6 +37,7 @@ static const char * const axp20x_model_names[] = {
 	"AXP221",
 	"AXP223",
 	"AXP288",
+	"AXP809",
 };
 
 static const struct regmap_range axp152_writeable_ranges[] = {
@@ -85,6 +86,7 @@ static const struct regmap_access_table axp20x_volatile_table = {
 	.n_yes_ranges	= ARRAY_SIZE(axp20x_volatile_ranges),
 };
 
+/* AXP22x ranges are shared with the AXP809, as they cover the same range */
 static const struct regmap_range axp22x_writeable_ranges[] = {
 	regmap_reg_range(AXP20X_DATACACHE(0), AXP20X_IRQ5_STATE),
 	regmap_reg_range(AXP20X_DCDC_MODE, AXP22X_BATLOW_THRES1),
@@ -211,6 +213,20 @@ static struct resource axp288_fuel_gauge_resources[] = {
 	},
 };
 
+static struct resource axp809_pek_resources[] = {
+	{
+		.name   = "PEK_DBR",
+		.start  = AXP809_IRQ_PEK_RIS_EDGE,
+		.end    = AXP809_IRQ_PEK_RIS_EDGE,
+		.flags  = IORESOURCE_IRQ,
+	}, {
+		.name   = "PEK_DBF",
+		.start  = AXP809_IRQ_PEK_FAL_EDGE,
+		.end    = AXP809_IRQ_PEK_FAL_EDGE,
+		.flags  = IORESOURCE_IRQ,
+	},
+};
+
 static const struct regmap_config axp152_regmap_config = {
 	.reg_bits	= 8,
 	.val_bits	= 8,
@@ -378,6 +394,41 @@ static const struct regmap_irq axp288_regmap_irqs[] = {
 	INIT_REGMAP_IRQ(AXP288, BC_USB_CHNG,            5, 1),
 };
 
+static const struct regmap_irq axp809_regmap_irqs[] = {
+	INIT_REGMAP_IRQ(AXP809, ACIN_OVER_V,		0, 7),
+	INIT_REGMAP_IRQ(AXP809, ACIN_PLUGIN,		0, 6),
+	INIT_REGMAP_IRQ(AXP809, ACIN_REMOVAL,	        0, 5),
+	INIT_REGMAP_IRQ(AXP809, VBUS_OVER_V,		0, 4),
+	INIT_REGMAP_IRQ(AXP809, VBUS_PLUGIN,		0, 3),
+	INIT_REGMAP_IRQ(AXP809, VBUS_REMOVAL,	        0, 2),
+	INIT_REGMAP_IRQ(AXP809, VBUS_V_LOW,		0, 1),
+	INIT_REGMAP_IRQ(AXP809, BATT_PLUGIN,		1, 7),
+	INIT_REGMAP_IRQ(AXP809, BATT_REMOVAL,	        1, 6),
+	INIT_REGMAP_IRQ(AXP809, BATT_ENT_ACT_MODE,	1, 5),
+	INIT_REGMAP_IRQ(AXP809, BATT_EXIT_ACT_MODE,	1, 4),
+	INIT_REGMAP_IRQ(AXP809, CHARG,		        1, 3),
+	INIT_REGMAP_IRQ(AXP809, CHARG_DONE,		1, 2),
+	INIT_REGMAP_IRQ(AXP809, BATT_CHG_TEMP_HIGH,	2, 7),
+	INIT_REGMAP_IRQ(AXP809, BATT_CHG_TEMP_HIGH_END,	2, 6),
+	INIT_REGMAP_IRQ(AXP809, BATT_CHG_TEMP_LOW,	2, 5),
+	INIT_REGMAP_IRQ(AXP809, BATT_CHG_TEMP_LOW_END,	2, 4),
+	INIT_REGMAP_IRQ(AXP809, BATT_ACT_TEMP_HIGH,	2, 3),
+	INIT_REGMAP_IRQ(AXP809, BATT_ACT_TEMP_HIGH_END,	2, 2),
+	INIT_REGMAP_IRQ(AXP809, BATT_ACT_TEMP_LOW,	2, 1),
+	INIT_REGMAP_IRQ(AXP809, BATT_ACT_TEMP_LOW_END,	2, 0),
+	INIT_REGMAP_IRQ(AXP809, DIE_TEMP_HIGH,	        3, 7),
+	INIT_REGMAP_IRQ(AXP809, LOW_PWR_LVL1,	        3, 1),
+	INIT_REGMAP_IRQ(AXP809, LOW_PWR_LVL2,	        3, 0),
+	INIT_REGMAP_IRQ(AXP809, TIMER,		        4, 7),
+	INIT_REGMAP_IRQ(AXP809, PEK_RIS_EDGE,	        4, 6),
+	INIT_REGMAP_IRQ(AXP809, PEK_FAL_EDGE,	        4, 5),
+	INIT_REGMAP_IRQ(AXP809, PEK_SHORT,		4, 4),
+	INIT_REGMAP_IRQ(AXP809, PEK_LONG,		4, 3),
+	INIT_REGMAP_IRQ(AXP809, PEK_OVER_OFF,		4, 2),
+	INIT_REGMAP_IRQ(AXP809, GPIO1_INPUT,		4, 1),
+	INIT_REGMAP_IRQ(AXP809, GPIO0_INPUT,		4, 0),
+};
+
 static const struct regmap_irq_chip axp152_regmap_irq_chip = {
 	.name			= "axp152_irq_chip",
 	.status_base		= AXP152_IRQ1_STATE,
@@ -428,6 +479,18 @@ static const struct regmap_irq_chip axp288_regmap_irq_chip = {
 
 };
 
+static const struct regmap_irq_chip axp809_regmap_irq_chip = {
+	.name			= "axp809",
+	.status_base		= AXP20X_IRQ1_STATE,
+	.ack_base		= AXP20X_IRQ1_STATE,
+	.mask_base		= AXP20X_IRQ1_EN,
+	.mask_invert		= true,
+	.init_ack_masked	= true,
+	.irqs			= axp809_regmap_irqs,
+	.num_irqs		= ARRAY_SIZE(axp809_regmap_irqs),
+	.num_regs		= 5,
+};
+
 static struct mfd_cell axp20x_cells[] = {
 	{
 		.name		= "axp20x-pek",
@@ -572,6 +635,16 @@ static struct mfd_cell axp288_cells[] = {
 	},
 };
 
+static struct mfd_cell axp809_cells[] = {
+	{
+		.name			= "axp20x-pek",
+		.num_resources		= ARRAY_SIZE(axp809_pek_resources),
+		.resources		= axp809_pek_resources,
+	}, {
+		.name			= "axp20x-regulator",
+	},
+};
+
 static struct axp20x_dev *axp20x_pm_power_off;
 static void axp20x_power_off(void)
 {
@@ -631,6 +704,12 @@ int axp20x_match_device(struct axp20x_dev *axp20x)
 		axp20x->regmap_cfg = &axp288_regmap_config;
 		axp20x->regmap_irq_chip = &axp288_regmap_irq_chip;
 		break;
+	case AXP809_ID:
+		axp20x->nr_cells = ARRAY_SIZE(axp809_cells);
+		axp20x->cells = axp809_cells;
+		axp20x->regmap_cfg = &axp22x_regmap_config;
+		axp20x->regmap_irq_chip = &axp809_regmap_irq_chip;
+		break;
 	default:
 		dev_err(dev, "unsupported AXP20X ID %lu\n", axp20x->variant);
 		return -EINVAL;
diff --git a/include/linux/mfd/axp20x.h b/include/linux/mfd/axp20x.h
index d82e7d51372b..0be4982f08fe 100644
--- a/include/linux/mfd/axp20x.h
+++ b/include/linux/mfd/axp20x.h
@@ -20,6 +20,7 @@ enum {
 	AXP221_ID,
 	AXP223_ID,
 	AXP288_ID,
+	AXP809_ID,
 	NR_AXP20X_VARIANTS,
 };
 
@@ -264,6 +265,29 @@ enum {
 	AXP22X_REG_ID_MAX,
 };
 
+enum {
+	AXP809_DCDC1 = 0,
+	AXP809_DCDC2,
+	AXP809_DCDC3,
+	AXP809_DCDC4,
+	AXP809_DCDC5,
+	AXP809_DC1SW,
+	AXP809_DC5LDO,
+	AXP809_ALDO1,
+	AXP809_ALDO2,
+	AXP809_ALDO3,
+	AXP809_ELDO1,
+	AXP809_ELDO2,
+	AXP809_ELDO3,
+	AXP809_DLDO1,
+	AXP809_DLDO2,
+	AXP809_RTC_LDO,
+	AXP809_LDO_IO0,
+	AXP809_LDO_IO1,
+	AXP809_SW,
+	AXP809_REG_ID_MAX,
+};
+
 /* IRQs */
 enum {
 	AXP152_IRQ_LDO0IN_CONNECT = 1,
@@ -390,6 +414,41 @@ enum axp288_irqs {
 	AXP288_IRQ_BC_USB_CHNG,
 };
 
+enum axp809_irqs {
+	AXP809_IRQ_ACIN_OVER_V = 1,
+	AXP809_IRQ_ACIN_PLUGIN,
+	AXP809_IRQ_ACIN_REMOVAL,
+	AXP809_IRQ_VBUS_OVER_V,
+	AXP809_IRQ_VBUS_PLUGIN,
+	AXP809_IRQ_VBUS_REMOVAL,
+	AXP809_IRQ_VBUS_V_LOW,
+	AXP809_IRQ_BATT_PLUGIN,
+	AXP809_IRQ_BATT_REMOVAL,
+	AXP809_IRQ_BATT_ENT_ACT_MODE,
+	AXP809_IRQ_BATT_EXIT_ACT_MODE,
+	AXP809_IRQ_CHARG,
+	AXP809_IRQ_CHARG_DONE,
+	AXP809_IRQ_BATT_CHG_TEMP_HIGH,
+	AXP809_IRQ_BATT_CHG_TEMP_HIGH_END,
+	AXP809_IRQ_BATT_CHG_TEMP_LOW,
+	AXP809_IRQ_BATT_CHG_TEMP_LOW_END,
+	AXP809_IRQ_BATT_ACT_TEMP_HIGH,
+	AXP809_IRQ_BATT_ACT_TEMP_HIGH_END,
+	AXP809_IRQ_BATT_ACT_TEMP_LOW,
+	AXP809_IRQ_BATT_ACT_TEMP_LOW_END,
+	AXP809_IRQ_DIE_TEMP_HIGH,
+	AXP809_IRQ_LOW_PWR_LVL1,
+	AXP809_IRQ_LOW_PWR_LVL2,
+	AXP809_IRQ_TIMER,
+	AXP809_IRQ_PEK_RIS_EDGE,
+	AXP809_IRQ_PEK_FAL_EDGE,
+	AXP809_IRQ_PEK_SHORT,
+	AXP809_IRQ_PEK_LONG,
+	AXP809_IRQ_PEK_OVER_OFF,
+	AXP809_IRQ_GPIO1_INPUT,
+	AXP809_IRQ_GPIO0_INPUT,
+};
+
 #define AXP288_TS_ADC_H		0x58
 #define AXP288_TS_ADC_L		0x59
 #define AXP288_GP_ADC_H		0x5a
-- 
2.7.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [PATCH resend v2 4/9] regulator: axp20x: support AXP809 variant
@ 2016-03-29  9:22   ` Chen-Yu Tsai
  0 siblings, 0 replies; 54+ messages in thread
From: Chen-Yu Tsai @ 2016-03-29  9:22 UTC (permalink / raw)
  To: Lee Jones, Liam Girdwood, Mark Brown, Maxime Ripard
  Cc: Chen-Yu Tsai, linux-kernel, devicetree, linux-arm-kernel, linux-sunxi

The X-Powers AXP809 PMIC has a similar set of regulators as the AXP221,
though a few LDOs were removed, and a new switch output added. Like the
AXP221, AXP809 also has DC1SW and DC5LDO, which are internally chained
to DCDC1 and DCDC5, respectively.

Add support for this new variant. Also remove the "axp22x_" prefix from
DC1SW/DC5LDO supply handling code, as the AXP809 uses it as well.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
---
 drivers/regulator/axp20x-regulator.c | 119 ++++++++++++++++++++++++++---------
 1 file changed, 90 insertions(+), 29 deletions(-)

diff --git a/drivers/regulator/axp20x-regulator.c b/drivers/regulator/axp20x-regulator.c
index 40cd894e4df5..6a601f377019 100644
--- a/drivers/regulator/axp20x-regulator.c
+++ b/drivers/regulator/axp20x-regulator.c
@@ -224,6 +224,61 @@ static const struct regulator_desc axp22x_regulators[] = {
 	AXP_DESC_FIXED(AXP22X, RTC_LDO, "rtc_ldo", "ips", 3000),
 };
 
+static const struct regulator_linear_range axp809_dcdc4_ranges[] = {
+	REGULATOR_LINEAR_RANGE(600000, 0x0, 0x2f, 20000),
+	REGULATOR_LINEAR_RANGE(1800000, 0x30, 0x38, 100000),
+};
+
+static const struct regulator_linear_range axp809_dldo1_ranges[] = {
+	REGULATOR_LINEAR_RANGE(700000, 0x0, 0x1a, 100000),
+	REGULATOR_LINEAR_RANGE(3400000, 0x1b, 0x1f, 200000),
+};
+
+static const struct regulator_desc axp809_regulators[] = {
+	AXP_DESC(AXP809, DCDC1, "dcdc1", "vin1", 1600, 3400, 100,
+		 AXP22X_DCDC1_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL1, BIT(1)),
+	AXP_DESC(AXP809, DCDC2, "dcdc2", "vin2", 600, 1540, 20,
+		 AXP22X_DCDC2_V_OUT, 0x3f, AXP22X_PWR_OUT_CTRL1, BIT(2)),
+	AXP_DESC(AXP809, DCDC3, "dcdc3", "vin3", 600, 1860, 20,
+		 AXP22X_DCDC3_V_OUT, 0x3f, AXP22X_PWR_OUT_CTRL1, BIT(3)),
+	AXP_DESC_RANGES(AXP809, DCDC4, "dcdc4", "vin4", axp809_dcdc4_ranges,
+			57, AXP22X_DCDC4_V_OUT, 0x3f, AXP22X_PWR_OUT_CTRL1,
+			BIT(4)),
+	AXP_DESC(AXP809, DCDC5, "dcdc5", "vin5", 1000, 2550, 50,
+		 AXP22X_DCDC5_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL1, BIT(5)),
+	/* secondary switchable output of DCDC1 */
+	AXP_DESC_SW(AXP809, DC1SW, "dc1sw", NULL, AXP22X_PWR_OUT_CTRL2,
+		    BIT(7)),
+	/* LDO regulator internally chained to DCDC5 */
+	AXP_DESC(AXP809, DC5LDO, "dc5ldo", NULL, 700, 1400, 100,
+		 AXP22X_DC5LDO_V_OUT, 0x7, AXP22X_PWR_OUT_CTRL1, BIT(0)),
+	AXP_DESC(AXP809, ALDO1, "aldo1", "aldoin", 700, 3300, 100,
+		 AXP22X_ALDO1_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL1, BIT(6)),
+	AXP_DESC(AXP809, ALDO2, "aldo2", "aldoin", 700, 3300, 100,
+		 AXP22X_ALDO2_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL1, BIT(7)),
+	AXP_DESC(AXP809, ALDO3, "aldo3", "aldoin", 700, 3300, 100,
+		 AXP22X_ALDO3_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL2, BIT(5)),
+	AXP_DESC_RANGES(AXP809, DLDO1, "dldo1", "dldoin", axp809_dldo1_ranges,
+			32, AXP22X_DLDO1_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL2,
+			BIT(3)),
+	AXP_DESC(AXP809, DLDO2, "dldo2", "dldoin", 700, 3300, 100,
+		 AXP22X_DLDO2_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL2, BIT(4)),
+	AXP_DESC(AXP809, ELDO1, "eldo1", "eldoin", 700, 3300, 100,
+		 AXP22X_ELDO1_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL2, BIT(0)),
+	AXP_DESC(AXP809, ELDO2, "eldo2", "eldoin", 700, 3300, 100,
+		 AXP22X_ELDO2_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL2, BIT(1)),
+	AXP_DESC(AXP809, ELDO3, "eldo3", "eldoin", 700, 3300, 100,
+		 AXP22X_ELDO3_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL2, BIT(2)),
+	AXP_DESC_IO(AXP809, LDO_IO0, "ldo_io0", "ips", 700, 3300, 100,
+		    AXP22X_LDO_IO0_V_OUT, 0x1f, AXP20X_GPIO0_CTRL, 0x07,
+		    AXP22X_IO_ENABLED, AXP22X_IO_DISABLED),
+	AXP_DESC_IO(AXP809, LDO_IO1, "ldo_io1", "ips", 700, 3300, 100,
+		    AXP22X_LDO_IO1_V_OUT, 0x1f, AXP20X_GPIO1_CTRL, 0x07,
+		    AXP22X_IO_ENABLED, AXP22X_IO_DISABLED),
+	AXP_DESC_FIXED(AXP809, RTC_LDO, "rtc_ldo", "ips", 1800),
+	AXP_DESC_SW(AXP809, SW, "sw", "swin", AXP22X_PWR_OUT_CTRL2, BIT(6)),
+};
+
 static int axp20x_set_dcdc_freq(struct platform_device *pdev, u32 dcdcfreq)
 {
 	struct axp20x_dev *axp20x = dev_get_drvdata(pdev->dev.parent);
@@ -239,6 +294,7 @@ static int axp20x_set_dcdc_freq(struct platform_device *pdev, u32 dcdcfreq)
 		break;
 	case AXP221_ID:
 	case AXP223_ID:
+	case AXP809_ID:
 		min = 1800;
 		max = 4050;
 		def = 3000;
@@ -318,6 +374,7 @@ static int axp20x_set_dcdc_workmode(struct regulator_dev *rdev, int id, u32 work
 
 	case AXP221_ID:
 	case AXP223_ID:
+	case AXP809_ID:
 		if (id < AXP22X_DCDC1 || id > AXP22X_DCDC5)
 			return -EINVAL;
 
@@ -346,8 +403,8 @@ static int axp20x_regulator_probe(struct platform_device *pdev)
 	};
 	int ret, i, nregulators;
 	u32 workmode;
-	const char *axp22x_dc1_name = axp22x_regulators[AXP22X_DCDC1].name;
-	const char *axp22x_dc5_name = axp22x_regulators[AXP22X_DCDC5].name;
+	const char *dcdc1_name = axp22x_regulators[AXP22X_DCDC1].name;
+	const char *dcdc5_name = axp22x_regulators[AXP22X_DCDC5].name;
 
 	switch (axp20x->variant) {
 	case AXP202_ID:
@@ -360,6 +417,10 @@ static int axp20x_regulator_probe(struct platform_device *pdev)
 		regulators = axp22x_regulators;
 		nregulators = AXP22X_REG_ID_MAX;
 		break;
+	case AXP809_ID:
+		regulators = axp809_regulators;
+		nregulators = AXP809_REG_ID_MAX;
+		break;
 	default:
 		dev_err(&pdev->dev, "Unsupported AXP variant: %ld\n",
 			axp20x->variant);
@@ -382,22 +443,22 @@ static int axp20x_regulator_probe(struct platform_device *pdev)
 		 * part of this loop to see where we save the DT defined
 		 * name.
 		 */
-		if (regulators == axp22x_regulators) {
-			if (i == AXP22X_DC1SW) {
-				new_desc = devm_kzalloc(&pdev->dev,
-							sizeof(*desc),
-							GFP_KERNEL);
-				*new_desc = regulators[i];
-				new_desc->supply_name = axp22x_dc1_name;
-				desc = new_desc;
-			} else if (i == AXP22X_DC5LDO) {
-				new_desc = devm_kzalloc(&pdev->dev,
-							sizeof(*desc),
-							GFP_KERNEL);
-				*new_desc = regulators[i];
-				new_desc->supply_name = axp22x_dc5_name;
-				desc = new_desc;
-			}
+		if ((regulators == axp22x_regulators && i == AXP22X_DC1SW) ||
+		    (regulators == axp809_regulators && i == AXP809_DC1SW)) {
+			new_desc = devm_kzalloc(&pdev->dev, sizeof(*desc),
+						GFP_KERNEL);
+			*new_desc = regulators[i];
+			new_desc->supply_name = dcdc1_name;
+			desc = new_desc;
+		}
+
+		if ((regulators == axp22x_regulators && i == AXP22X_DC5LDO) ||
+		    (regulators == axp809_regulators && i == AXP809_DC5LDO)) {
+			new_desc = devm_kzalloc(&pdev->dev, sizeof(*desc),
+						GFP_KERNEL);
+			*new_desc = regulators[i];
+			new_desc->supply_name = dcdc5_name;
+			desc = new_desc;
 		}
 
 		rdev = devm_regulator_register(&pdev->dev, desc, &config);
@@ -420,17 +481,17 @@ static int axp20x_regulator_probe(struct platform_device *pdev)
 		/*
 		 * Save AXP22X DCDC1 / DCDC5 regulator names for later.
 		 */
-		if (regulators == axp22x_regulators) {
-			/* Can we use rdev->constraints->name instead? */
-			if (i == AXP22X_DCDC1)
-				of_property_read_string(rdev->dev.of_node,
-							"regulator-name",
-							&axp22x_dc1_name);
-			else if (i == AXP22X_DCDC5)
-				of_property_read_string(rdev->dev.of_node,
-							"regulator-name",
-							&axp22x_dc5_name);
-		}
+		if ((regulators == axp22x_regulators && i == AXP22X_DCDC1) ||
+		    (regulators == axp809_regulators && i == AXP809_DCDC1))
+			of_property_read_string(rdev->dev.of_node,
+						"regulator-name",
+						&dcdc1_name);
+
+		if ((regulators == axp22x_regulators && i == AXP22X_DCDC5) ||
+		    (regulators == axp809_regulators && i == AXP809_DCDC5))
+			of_property_read_string(rdev->dev.of_node,
+						"regulator-name",
+						&dcdc5_name);
 	}
 
 	return 0;
-- 
2.7.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [PATCH resend v2 4/9] regulator: axp20x: support AXP809 variant
@ 2016-03-29  9:22   ` Chen-Yu Tsai
  0 siblings, 0 replies; 54+ messages in thread
From: Chen-Yu Tsai @ 2016-03-29  9:22 UTC (permalink / raw)
  To: Lee Jones, Liam Girdwood, Mark Brown, Maxime Ripard
  Cc: Chen-Yu Tsai, linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw

The X-Powers AXP809 PMIC has a similar set of regulators as the AXP221,
though a few LDOs were removed, and a new switch output added. Like the
AXP221, AXP809 also has DC1SW and DC5LDO, which are internally chained
to DCDC1 and DCDC5, respectively.

Add support for this new variant. Also remove the "axp22x_" prefix from
DC1SW/DC5LDO supply handling code, as the AXP809 uses it as well.

Signed-off-by: Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>
---
 drivers/regulator/axp20x-regulator.c | 119 ++++++++++++++++++++++++++---------
 1 file changed, 90 insertions(+), 29 deletions(-)

diff --git a/drivers/regulator/axp20x-regulator.c b/drivers/regulator/axp20x-regulator.c
index 40cd894e4df5..6a601f377019 100644
--- a/drivers/regulator/axp20x-regulator.c
+++ b/drivers/regulator/axp20x-regulator.c
@@ -224,6 +224,61 @@ static const struct regulator_desc axp22x_regulators[] = {
 	AXP_DESC_FIXED(AXP22X, RTC_LDO, "rtc_ldo", "ips", 3000),
 };
 
+static const struct regulator_linear_range axp809_dcdc4_ranges[] = {
+	REGULATOR_LINEAR_RANGE(600000, 0x0, 0x2f, 20000),
+	REGULATOR_LINEAR_RANGE(1800000, 0x30, 0x38, 100000),
+};
+
+static const struct regulator_linear_range axp809_dldo1_ranges[] = {
+	REGULATOR_LINEAR_RANGE(700000, 0x0, 0x1a, 100000),
+	REGULATOR_LINEAR_RANGE(3400000, 0x1b, 0x1f, 200000),
+};
+
+static const struct regulator_desc axp809_regulators[] = {
+	AXP_DESC(AXP809, DCDC1, "dcdc1", "vin1", 1600, 3400, 100,
+		 AXP22X_DCDC1_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL1, BIT(1)),
+	AXP_DESC(AXP809, DCDC2, "dcdc2", "vin2", 600, 1540, 20,
+		 AXP22X_DCDC2_V_OUT, 0x3f, AXP22X_PWR_OUT_CTRL1, BIT(2)),
+	AXP_DESC(AXP809, DCDC3, "dcdc3", "vin3", 600, 1860, 20,
+		 AXP22X_DCDC3_V_OUT, 0x3f, AXP22X_PWR_OUT_CTRL1, BIT(3)),
+	AXP_DESC_RANGES(AXP809, DCDC4, "dcdc4", "vin4", axp809_dcdc4_ranges,
+			57, AXP22X_DCDC4_V_OUT, 0x3f, AXP22X_PWR_OUT_CTRL1,
+			BIT(4)),
+	AXP_DESC(AXP809, DCDC5, "dcdc5", "vin5", 1000, 2550, 50,
+		 AXP22X_DCDC5_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL1, BIT(5)),
+	/* secondary switchable output of DCDC1 */
+	AXP_DESC_SW(AXP809, DC1SW, "dc1sw", NULL, AXP22X_PWR_OUT_CTRL2,
+		    BIT(7)),
+	/* LDO regulator internally chained to DCDC5 */
+	AXP_DESC(AXP809, DC5LDO, "dc5ldo", NULL, 700, 1400, 100,
+		 AXP22X_DC5LDO_V_OUT, 0x7, AXP22X_PWR_OUT_CTRL1, BIT(0)),
+	AXP_DESC(AXP809, ALDO1, "aldo1", "aldoin", 700, 3300, 100,
+		 AXP22X_ALDO1_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL1, BIT(6)),
+	AXP_DESC(AXP809, ALDO2, "aldo2", "aldoin", 700, 3300, 100,
+		 AXP22X_ALDO2_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL1, BIT(7)),
+	AXP_DESC(AXP809, ALDO3, "aldo3", "aldoin", 700, 3300, 100,
+		 AXP22X_ALDO3_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL2, BIT(5)),
+	AXP_DESC_RANGES(AXP809, DLDO1, "dldo1", "dldoin", axp809_dldo1_ranges,
+			32, AXP22X_DLDO1_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL2,
+			BIT(3)),
+	AXP_DESC(AXP809, DLDO2, "dldo2", "dldoin", 700, 3300, 100,
+		 AXP22X_DLDO2_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL2, BIT(4)),
+	AXP_DESC(AXP809, ELDO1, "eldo1", "eldoin", 700, 3300, 100,
+		 AXP22X_ELDO1_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL2, BIT(0)),
+	AXP_DESC(AXP809, ELDO2, "eldo2", "eldoin", 700, 3300, 100,
+		 AXP22X_ELDO2_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL2, BIT(1)),
+	AXP_DESC(AXP809, ELDO3, "eldo3", "eldoin", 700, 3300, 100,
+		 AXP22X_ELDO3_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL2, BIT(2)),
+	AXP_DESC_IO(AXP809, LDO_IO0, "ldo_io0", "ips", 700, 3300, 100,
+		    AXP22X_LDO_IO0_V_OUT, 0x1f, AXP20X_GPIO0_CTRL, 0x07,
+		    AXP22X_IO_ENABLED, AXP22X_IO_DISABLED),
+	AXP_DESC_IO(AXP809, LDO_IO1, "ldo_io1", "ips", 700, 3300, 100,
+		    AXP22X_LDO_IO1_V_OUT, 0x1f, AXP20X_GPIO1_CTRL, 0x07,
+		    AXP22X_IO_ENABLED, AXP22X_IO_DISABLED),
+	AXP_DESC_FIXED(AXP809, RTC_LDO, "rtc_ldo", "ips", 1800),
+	AXP_DESC_SW(AXP809, SW, "sw", "swin", AXP22X_PWR_OUT_CTRL2, BIT(6)),
+};
+
 static int axp20x_set_dcdc_freq(struct platform_device *pdev, u32 dcdcfreq)
 {
 	struct axp20x_dev *axp20x = dev_get_drvdata(pdev->dev.parent);
@@ -239,6 +294,7 @@ static int axp20x_set_dcdc_freq(struct platform_device *pdev, u32 dcdcfreq)
 		break;
 	case AXP221_ID:
 	case AXP223_ID:
+	case AXP809_ID:
 		min = 1800;
 		max = 4050;
 		def = 3000;
@@ -318,6 +374,7 @@ static int axp20x_set_dcdc_workmode(struct regulator_dev *rdev, int id, u32 work
 
 	case AXP221_ID:
 	case AXP223_ID:
+	case AXP809_ID:
 		if (id < AXP22X_DCDC1 || id > AXP22X_DCDC5)
 			return -EINVAL;
 
@@ -346,8 +403,8 @@ static int axp20x_regulator_probe(struct platform_device *pdev)
 	};
 	int ret, i, nregulators;
 	u32 workmode;
-	const char *axp22x_dc1_name = axp22x_regulators[AXP22X_DCDC1].name;
-	const char *axp22x_dc5_name = axp22x_regulators[AXP22X_DCDC5].name;
+	const char *dcdc1_name = axp22x_regulators[AXP22X_DCDC1].name;
+	const char *dcdc5_name = axp22x_regulators[AXP22X_DCDC5].name;
 
 	switch (axp20x->variant) {
 	case AXP202_ID:
@@ -360,6 +417,10 @@ static int axp20x_regulator_probe(struct platform_device *pdev)
 		regulators = axp22x_regulators;
 		nregulators = AXP22X_REG_ID_MAX;
 		break;
+	case AXP809_ID:
+		regulators = axp809_regulators;
+		nregulators = AXP809_REG_ID_MAX;
+		break;
 	default:
 		dev_err(&pdev->dev, "Unsupported AXP variant: %ld\n",
 			axp20x->variant);
@@ -382,22 +443,22 @@ static int axp20x_regulator_probe(struct platform_device *pdev)
 		 * part of this loop to see where we save the DT defined
 		 * name.
 		 */
-		if (regulators == axp22x_regulators) {
-			if (i == AXP22X_DC1SW) {
-				new_desc = devm_kzalloc(&pdev->dev,
-							sizeof(*desc),
-							GFP_KERNEL);
-				*new_desc = regulators[i];
-				new_desc->supply_name = axp22x_dc1_name;
-				desc = new_desc;
-			} else if (i == AXP22X_DC5LDO) {
-				new_desc = devm_kzalloc(&pdev->dev,
-							sizeof(*desc),
-							GFP_KERNEL);
-				*new_desc = regulators[i];
-				new_desc->supply_name = axp22x_dc5_name;
-				desc = new_desc;
-			}
+		if ((regulators == axp22x_regulators && i == AXP22X_DC1SW) ||
+		    (regulators == axp809_regulators && i == AXP809_DC1SW)) {
+			new_desc = devm_kzalloc(&pdev->dev, sizeof(*desc),
+						GFP_KERNEL);
+			*new_desc = regulators[i];
+			new_desc->supply_name = dcdc1_name;
+			desc = new_desc;
+		}
+
+		if ((regulators == axp22x_regulators && i == AXP22X_DC5LDO) ||
+		    (regulators == axp809_regulators && i == AXP809_DC5LDO)) {
+			new_desc = devm_kzalloc(&pdev->dev, sizeof(*desc),
+						GFP_KERNEL);
+			*new_desc = regulators[i];
+			new_desc->supply_name = dcdc5_name;
+			desc = new_desc;
 		}
 
 		rdev = devm_regulator_register(&pdev->dev, desc, &config);
@@ -420,17 +481,17 @@ static int axp20x_regulator_probe(struct platform_device *pdev)
 		/*
 		 * Save AXP22X DCDC1 / DCDC5 regulator names for later.
 		 */
-		if (regulators == axp22x_regulators) {
-			/* Can we use rdev->constraints->name instead? */
-			if (i == AXP22X_DCDC1)
-				of_property_read_string(rdev->dev.of_node,
-							"regulator-name",
-							&axp22x_dc1_name);
-			else if (i == AXP22X_DCDC5)
-				of_property_read_string(rdev->dev.of_node,
-							"regulator-name",
-							&axp22x_dc5_name);
-		}
+		if ((regulators == axp22x_regulators && i == AXP22X_DCDC1) ||
+		    (regulators == axp809_regulators && i == AXP809_DCDC1))
+			of_property_read_string(rdev->dev.of_node,
+						"regulator-name",
+						&dcdc1_name);
+
+		if ((regulators == axp22x_regulators && i == AXP22X_DCDC5) ||
+		    (regulators == axp809_regulators && i == AXP809_DCDC5))
+			of_property_read_string(rdev->dev.of_node,
+						"regulator-name",
+						&dcdc5_name);
 	}
 
 	return 0;
-- 
2.7.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [PATCH resend v2 4/9] regulator: axp20x: support AXP809 variant
@ 2016-03-29  9:22   ` Chen-Yu Tsai
  0 siblings, 0 replies; 54+ messages in thread
From: Chen-Yu Tsai @ 2016-03-29  9:22 UTC (permalink / raw)
  To: linux-arm-kernel

The X-Powers AXP809 PMIC has a similar set of regulators as the AXP221,
though a few LDOs were removed, and a new switch output added. Like the
AXP221, AXP809 also has DC1SW and DC5LDO, which are internally chained
to DCDC1 and DCDC5, respectively.

Add support for this new variant. Also remove the "axp22x_" prefix from
DC1SW/DC5LDO supply handling code, as the AXP809 uses it as well.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
---
 drivers/regulator/axp20x-regulator.c | 119 ++++++++++++++++++++++++++---------
 1 file changed, 90 insertions(+), 29 deletions(-)

diff --git a/drivers/regulator/axp20x-regulator.c b/drivers/regulator/axp20x-regulator.c
index 40cd894e4df5..6a601f377019 100644
--- a/drivers/regulator/axp20x-regulator.c
+++ b/drivers/regulator/axp20x-regulator.c
@@ -224,6 +224,61 @@ static const struct regulator_desc axp22x_regulators[] = {
 	AXP_DESC_FIXED(AXP22X, RTC_LDO, "rtc_ldo", "ips", 3000),
 };
 
+static const struct regulator_linear_range axp809_dcdc4_ranges[] = {
+	REGULATOR_LINEAR_RANGE(600000, 0x0, 0x2f, 20000),
+	REGULATOR_LINEAR_RANGE(1800000, 0x30, 0x38, 100000),
+};
+
+static const struct regulator_linear_range axp809_dldo1_ranges[] = {
+	REGULATOR_LINEAR_RANGE(700000, 0x0, 0x1a, 100000),
+	REGULATOR_LINEAR_RANGE(3400000, 0x1b, 0x1f, 200000),
+};
+
+static const struct regulator_desc axp809_regulators[] = {
+	AXP_DESC(AXP809, DCDC1, "dcdc1", "vin1", 1600, 3400, 100,
+		 AXP22X_DCDC1_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL1, BIT(1)),
+	AXP_DESC(AXP809, DCDC2, "dcdc2", "vin2", 600, 1540, 20,
+		 AXP22X_DCDC2_V_OUT, 0x3f, AXP22X_PWR_OUT_CTRL1, BIT(2)),
+	AXP_DESC(AXP809, DCDC3, "dcdc3", "vin3", 600, 1860, 20,
+		 AXP22X_DCDC3_V_OUT, 0x3f, AXP22X_PWR_OUT_CTRL1, BIT(3)),
+	AXP_DESC_RANGES(AXP809, DCDC4, "dcdc4", "vin4", axp809_dcdc4_ranges,
+			57, AXP22X_DCDC4_V_OUT, 0x3f, AXP22X_PWR_OUT_CTRL1,
+			BIT(4)),
+	AXP_DESC(AXP809, DCDC5, "dcdc5", "vin5", 1000, 2550, 50,
+		 AXP22X_DCDC5_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL1, BIT(5)),
+	/* secondary switchable output of DCDC1 */
+	AXP_DESC_SW(AXP809, DC1SW, "dc1sw", NULL, AXP22X_PWR_OUT_CTRL2,
+		    BIT(7)),
+	/* LDO regulator internally chained to DCDC5 */
+	AXP_DESC(AXP809, DC5LDO, "dc5ldo", NULL, 700, 1400, 100,
+		 AXP22X_DC5LDO_V_OUT, 0x7, AXP22X_PWR_OUT_CTRL1, BIT(0)),
+	AXP_DESC(AXP809, ALDO1, "aldo1", "aldoin", 700, 3300, 100,
+		 AXP22X_ALDO1_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL1, BIT(6)),
+	AXP_DESC(AXP809, ALDO2, "aldo2", "aldoin", 700, 3300, 100,
+		 AXP22X_ALDO2_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL1, BIT(7)),
+	AXP_DESC(AXP809, ALDO3, "aldo3", "aldoin", 700, 3300, 100,
+		 AXP22X_ALDO3_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL2, BIT(5)),
+	AXP_DESC_RANGES(AXP809, DLDO1, "dldo1", "dldoin", axp809_dldo1_ranges,
+			32, AXP22X_DLDO1_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL2,
+			BIT(3)),
+	AXP_DESC(AXP809, DLDO2, "dldo2", "dldoin", 700, 3300, 100,
+		 AXP22X_DLDO2_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL2, BIT(4)),
+	AXP_DESC(AXP809, ELDO1, "eldo1", "eldoin", 700, 3300, 100,
+		 AXP22X_ELDO1_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL2, BIT(0)),
+	AXP_DESC(AXP809, ELDO2, "eldo2", "eldoin", 700, 3300, 100,
+		 AXP22X_ELDO2_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL2, BIT(1)),
+	AXP_DESC(AXP809, ELDO3, "eldo3", "eldoin", 700, 3300, 100,
+		 AXP22X_ELDO3_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL2, BIT(2)),
+	AXP_DESC_IO(AXP809, LDO_IO0, "ldo_io0", "ips", 700, 3300, 100,
+		    AXP22X_LDO_IO0_V_OUT, 0x1f, AXP20X_GPIO0_CTRL, 0x07,
+		    AXP22X_IO_ENABLED, AXP22X_IO_DISABLED),
+	AXP_DESC_IO(AXP809, LDO_IO1, "ldo_io1", "ips", 700, 3300, 100,
+		    AXP22X_LDO_IO1_V_OUT, 0x1f, AXP20X_GPIO1_CTRL, 0x07,
+		    AXP22X_IO_ENABLED, AXP22X_IO_DISABLED),
+	AXP_DESC_FIXED(AXP809, RTC_LDO, "rtc_ldo", "ips", 1800),
+	AXP_DESC_SW(AXP809, SW, "sw", "swin", AXP22X_PWR_OUT_CTRL2, BIT(6)),
+};
+
 static int axp20x_set_dcdc_freq(struct platform_device *pdev, u32 dcdcfreq)
 {
 	struct axp20x_dev *axp20x = dev_get_drvdata(pdev->dev.parent);
@@ -239,6 +294,7 @@ static int axp20x_set_dcdc_freq(struct platform_device *pdev, u32 dcdcfreq)
 		break;
 	case AXP221_ID:
 	case AXP223_ID:
+	case AXP809_ID:
 		min = 1800;
 		max = 4050;
 		def = 3000;
@@ -318,6 +374,7 @@ static int axp20x_set_dcdc_workmode(struct regulator_dev *rdev, int id, u32 work
 
 	case AXP221_ID:
 	case AXP223_ID:
+	case AXP809_ID:
 		if (id < AXP22X_DCDC1 || id > AXP22X_DCDC5)
 			return -EINVAL;
 
@@ -346,8 +403,8 @@ static int axp20x_regulator_probe(struct platform_device *pdev)
 	};
 	int ret, i, nregulators;
 	u32 workmode;
-	const char *axp22x_dc1_name = axp22x_regulators[AXP22X_DCDC1].name;
-	const char *axp22x_dc5_name = axp22x_regulators[AXP22X_DCDC5].name;
+	const char *dcdc1_name = axp22x_regulators[AXP22X_DCDC1].name;
+	const char *dcdc5_name = axp22x_regulators[AXP22X_DCDC5].name;
 
 	switch (axp20x->variant) {
 	case AXP202_ID:
@@ -360,6 +417,10 @@ static int axp20x_regulator_probe(struct platform_device *pdev)
 		regulators = axp22x_regulators;
 		nregulators = AXP22X_REG_ID_MAX;
 		break;
+	case AXP809_ID:
+		regulators = axp809_regulators;
+		nregulators = AXP809_REG_ID_MAX;
+		break;
 	default:
 		dev_err(&pdev->dev, "Unsupported AXP variant: %ld\n",
 			axp20x->variant);
@@ -382,22 +443,22 @@ static int axp20x_regulator_probe(struct platform_device *pdev)
 		 * part of this loop to see where we save the DT defined
 		 * name.
 		 */
-		if (regulators == axp22x_regulators) {
-			if (i == AXP22X_DC1SW) {
-				new_desc = devm_kzalloc(&pdev->dev,
-							sizeof(*desc),
-							GFP_KERNEL);
-				*new_desc = regulators[i];
-				new_desc->supply_name = axp22x_dc1_name;
-				desc = new_desc;
-			} else if (i == AXP22X_DC5LDO) {
-				new_desc = devm_kzalloc(&pdev->dev,
-							sizeof(*desc),
-							GFP_KERNEL);
-				*new_desc = regulators[i];
-				new_desc->supply_name = axp22x_dc5_name;
-				desc = new_desc;
-			}
+		if ((regulators == axp22x_regulators && i == AXP22X_DC1SW) ||
+		    (regulators == axp809_regulators && i == AXP809_DC1SW)) {
+			new_desc = devm_kzalloc(&pdev->dev, sizeof(*desc),
+						GFP_KERNEL);
+			*new_desc = regulators[i];
+			new_desc->supply_name = dcdc1_name;
+			desc = new_desc;
+		}
+
+		if ((regulators == axp22x_regulators && i == AXP22X_DC5LDO) ||
+		    (regulators == axp809_regulators && i == AXP809_DC5LDO)) {
+			new_desc = devm_kzalloc(&pdev->dev, sizeof(*desc),
+						GFP_KERNEL);
+			*new_desc = regulators[i];
+			new_desc->supply_name = dcdc5_name;
+			desc = new_desc;
 		}
 
 		rdev = devm_regulator_register(&pdev->dev, desc, &config);
@@ -420,17 +481,17 @@ static int axp20x_regulator_probe(struct platform_device *pdev)
 		/*
 		 * Save AXP22X DCDC1 / DCDC5 regulator names for later.
 		 */
-		if (regulators == axp22x_regulators) {
-			/* Can we use rdev->constraints->name instead? */
-			if (i == AXP22X_DCDC1)
-				of_property_read_string(rdev->dev.of_node,
-							"regulator-name",
-							&axp22x_dc1_name);
-			else if (i == AXP22X_DCDC5)
-				of_property_read_string(rdev->dev.of_node,
-							"regulator-name",
-							&axp22x_dc5_name);
-		}
+		if ((regulators == axp22x_regulators && i == AXP22X_DCDC1) ||
+		    (regulators == axp809_regulators && i == AXP809_DCDC1))
+			of_property_read_string(rdev->dev.of_node,
+						"regulator-name",
+						&dcdc1_name);
+
+		if ((regulators == axp22x_regulators && i == AXP22X_DCDC5) ||
+		    (regulators == axp809_regulators && i == AXP809_DCDC5))
+			of_property_read_string(rdev->dev.of_node,
+						"regulator-name",
+						&dcdc5_name);
 	}
 
 	return 0;
-- 
2.7.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [PATCH resend v2 5/9] ARM: dts: sunxi: Add dtsi file for AXP809 PMIC
@ 2016-03-29  9:22   ` Chen-Yu Tsai
  0 siblings, 0 replies; 54+ messages in thread
From: Chen-Yu Tsai @ 2016-03-29  9:22 UTC (permalink / raw)
  To: Lee Jones, Liam Girdwood, Mark Brown, Maxime Ripard
  Cc: Chen-Yu Tsai, linux-kernel, devicetree, linux-arm-kernel, linux-sunxi

The AXP809 PMIC is used with the Allwinner A80 SoC, along with
an AXP806 PMIC as a slave.

This patch adds a dtsi file for all the common bindings and default
values unrelated to board design. Currently this is just the interrupt
properties.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
---
 arch/arm/boot/dts/axp809.dtsi | 53 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)
 create mode 100644 arch/arm/boot/dts/axp809.dtsi

diff --git a/arch/arm/boot/dts/axp809.dtsi b/arch/arm/boot/dts/axp809.dtsi
new file mode 100644
index 000000000000..ab8e5f2d9246
--- /dev/null
+++ b/arch/arm/boot/dts/axp809.dtsi
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2015 Chen-Yu Tsai
+ *
+ * Chen-Yu Tsai <wens@csie.org>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file 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 file 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.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/*
+ * AXP809 Integrated Power Management Chip
+ */
+
+&axp809 {
+	compatible = "x-powers,axp809";
+	interrupt-controller;
+	#interrupt-cells = <1>;
+};
-- 
2.7.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [PATCH resend v2 5/9] ARM: dts: sunxi: Add dtsi file for AXP809 PMIC
@ 2016-03-29  9:22   ` Chen-Yu Tsai
  0 siblings, 0 replies; 54+ messages in thread
From: Chen-Yu Tsai @ 2016-03-29  9:22 UTC (permalink / raw)
  To: Lee Jones, Liam Girdwood, Mark Brown, Maxime Ripard
  Cc: Chen-Yu Tsai, linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw

The AXP809 PMIC is used with the Allwinner A80 SoC, along with
an AXP806 PMIC as a slave.

This patch adds a dtsi file for all the common bindings and default
values unrelated to board design. Currently this is just the interrupt
properties.

Signed-off-by: Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>
---
 arch/arm/boot/dts/axp809.dtsi | 53 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)
 create mode 100644 arch/arm/boot/dts/axp809.dtsi

diff --git a/arch/arm/boot/dts/axp809.dtsi b/arch/arm/boot/dts/axp809.dtsi
new file mode 100644
index 000000000000..ab8e5f2d9246
--- /dev/null
+++ b/arch/arm/boot/dts/axp809.dtsi
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2015 Chen-Yu Tsai
+ *
+ * Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file 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 file 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.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/*
+ * AXP809 Integrated Power Management Chip
+ */
+
+&axp809 {
+	compatible = "x-powers,axp809";
+	interrupt-controller;
+	#interrupt-cells = <1>;
+};
-- 
2.7.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [PATCH resend v2 5/9] ARM: dts: sunxi: Add dtsi file for AXP809 PMIC
@ 2016-03-29  9:22   ` Chen-Yu Tsai
  0 siblings, 0 replies; 54+ messages in thread
From: Chen-Yu Tsai @ 2016-03-29  9:22 UTC (permalink / raw)
  To: linux-arm-kernel

The AXP809 PMIC is used with the Allwinner A80 SoC, along with
an AXP806 PMIC as a slave.

This patch adds a dtsi file for all the common bindings and default
values unrelated to board design. Currently this is just the interrupt
properties.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
---
 arch/arm/boot/dts/axp809.dtsi | 53 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 53 insertions(+)
 create mode 100644 arch/arm/boot/dts/axp809.dtsi

diff --git a/arch/arm/boot/dts/axp809.dtsi b/arch/arm/boot/dts/axp809.dtsi
new file mode 100644
index 000000000000..ab8e5f2d9246
--- /dev/null
+++ b/arch/arm/boot/dts/axp809.dtsi
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2015 Chen-Yu Tsai
+ *
+ * Chen-Yu Tsai <wens@csie.org>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file 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 file 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.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/*
+ * AXP809 Integrated Power Management Chip
+ */
+
+&axp809 {
+	compatible = "x-powers,axp809";
+	interrupt-controller;
+	#interrupt-cells = <1>;
+};
-- 
2.7.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [PATCH resend v2 6/9] ARM: dts: sun9i: a80-optimus: Add AXP809 PMIC device node and regulators
@ 2016-03-29  9:22   ` Chen-Yu Tsai
  0 siblings, 0 replies; 54+ messages in thread
From: Chen-Yu Tsai @ 2016-03-29  9:22 UTC (permalink / raw)
  To: Lee Jones, Liam Girdwood, Mark Brown, Maxime Ripard
  Cc: Chen-Yu Tsai, linux-kernel, devicetree, linux-arm-kernel, linux-sunxi

The AXP809 PMIC is the primary PMIC. It provides various supply voltages
for the SoC and other peripherals. The PMIC's interrupt line is
connected to NMI pin of the SoC.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
---
 arch/arm/boot/dts/sun9i-a80-optimus.dts | 131 +++++++++++++++++++++++++++++++-
 1 file changed, 129 insertions(+), 2 deletions(-)

diff --git a/arch/arm/boot/dts/sun9i-a80-optimus.dts b/arch/arm/boot/dts/sun9i-a80-optimus.dts
index d7a20d92b114..6cfc02194035 100644
--- a/arch/arm/boot/dts/sun9i-a80-optimus.dts
+++ b/arch/arm/boot/dts/sun9i-a80-optimus.dts
@@ -150,7 +150,7 @@
 &mmc0 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&mmc0_pins>, <&mmc0_cd_pin_optimus>;
-	vmmc-supply = <&reg_vcc3v0>;
+	vmmc-supply = <&reg_dcdc1>;
 	bus-width = <4>;
 	cd-gpios = <&pio 7 18 GPIO_ACTIVE_HIGH>; /* PH8 */
 	cd-inverted;
@@ -160,7 +160,7 @@
 &mmc2 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&mmc2_8bit_pins>;
-	vmmc-supply = <&reg_vcc3v0>;
+	vmmc-supply = <&reg_dcdc1>;
 	bus-width = <8>;
 	non-removable;
 	cap-mmc-hw-reset;
@@ -193,8 +193,135 @@
 
 &r_rsb {
 	status = "okay";
+
+	axp809: pmic@3a3 {
+		reg = <0x3a3>;
+		interrupt-parent = <&nmi_intc>;
+		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+
+		regulators {
+			reg_aldo1: aldo1 {
+				/*
+				 * TODO: This should be handled by the
+				 * USB PHY driver.
+				 */
+				regulator-always-on;
+				regulator-min-microvolt = <3000000>;
+				regulator-max-microvolt = <3000000>;
+				regulator-name = "vcc33-usbh";
+			};
+
+			reg_aldo2: aldo2 {
+				regulator-min-microvolt = <1800000>;
+				regulator-max-microvolt = <1800000>;
+				regulator-name = "vcc-pb-io-cam";
+			};
+
+			aldo3 {
+				/* unused */
+			};
+
+			reg_dc5ldo: dc5ldo {
+				regulator-always-on;
+				regulator-min-microvolt = <800000>;
+				regulator-max-microvolt = <1100000>;
+				regulator-name = "vdd-cpus-09-usbh";
+			};
+
+			reg_dcdc1: dcdc1 {
+				regulator-always-on;
+				regulator-min-microvolt = <3000000>;
+				regulator-max-microvolt = <3000000>;
+				regulator-name = "vcc-3v";
+			};
+
+			reg_dcdc2: dcdc2 {
+				regulator-min-microvolt = <800000>;
+				regulator-max-microvolt = <1100000>;
+				regulator-name = "vdd-gpu";
+			};
+
+			reg_dcdc3: dcdc3 {
+				regulator-always-on;
+				regulator-min-microvolt = <800000>;
+				regulator-max-microvolt = <1100000>;
+				regulator-name = "vdd-cpua";
+			};
+
+			reg_dcdc4: dcdc4 {
+				regulator-always-on;
+				regulator-min-microvolt = <800000>;
+				regulator-max-microvolt = <1100000>;
+				regulator-name = "vdd-sys-usb0-hdmi";
+			};
+
+			reg_dcdc5: dcdc5 {
+				regulator-always-on;
+				regulator-min-microvolt = <1425000>;
+				regulator-max-microvolt = <1575000>;
+				regulator-name = "vcc-dram";
+			};
+
+			reg_dldo1: dldo1 {
+				/*
+				 * The WiFi chip supports a wide range
+				 * (3.0 ~ 4.8V) of voltages, and so does
+				 * this regulator (3.0 ~ 4.2V), but
+				 * Allwinner SDK always sets it to 3.3V.
+				 */
+				regulator-min-microvolt = <3300000>;
+				regulator-max-microvolt = <3300000>;
+				regulator-name = "vcc-wifi";
+			};
+
+			reg_dldo2: dldo2 {
+				regulator-always-on;
+				regulator-min-microvolt = <3000000>;
+				regulator-max-microvolt = <3000000>;
+				regulator-name = "vcc-pl";
+			};
+
+			reg_eldo1: eldo1 {
+				regulator-min-microvolt = <1200000>;
+				regulator-max-microvolt = <1200000>;
+				regulator-name = "vcc-dvdd-cam";
+			};
+
+			reg_eldo2: eldo2 {
+				regulator-min-microvolt = <1800000>;
+				regulator-max-microvolt = <1800000>;
+				regulator-name = "vcc-pe";
+			};
+
+			reg_eldo3: eldo3 {
+				regulator-always-on;
+				regulator-min-microvolt = <3000000>;
+				regulator-max-microvolt = <3000000>;
+				regulator-name = "vcc-pm-codec-io1";
+			};
+
+			reg_ldo_io0: ldo_io0 {
+				regulator-always-on;
+				regulator-min-microvolt = <3000000>;
+				regulator-max-microvolt = <3000000>;
+				regulator-name = "vcc-pg";
+			};
+
+			reg_ldo_io1: ldo_io1 {
+				regulator-min-microvolt = <2500000>;
+				regulator-max-microvolt = <2500000>;
+				regulator-name = "vcc-pa-gmac-2v5";
+			};
+
+			reg_rtc_ldo: rtc_ldo {
+				regulator-name = "vcc-rtc-vdd1v8-io";
+			};
+		};
+	};
 };
 
+#include "axp809.dtsi"
+
 &uart0 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&uart0_pins_a>;
-- 
2.7.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [PATCH resend v2 6/9] ARM: dts: sun9i: a80-optimus: Add AXP809 PMIC device node and regulators
@ 2016-03-29  9:22   ` Chen-Yu Tsai
  0 siblings, 0 replies; 54+ messages in thread
From: Chen-Yu Tsai @ 2016-03-29  9:22 UTC (permalink / raw)
  To: Lee Jones, Liam Girdwood, Mark Brown, Maxime Ripard
  Cc: Chen-Yu Tsai, linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw

The AXP809 PMIC is the primary PMIC. It provides various supply voltages
for the SoC and other peripherals. The PMIC's interrupt line is
connected to NMI pin of the SoC.

Signed-off-by: Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>
---
 arch/arm/boot/dts/sun9i-a80-optimus.dts | 131 +++++++++++++++++++++++++++++++-
 1 file changed, 129 insertions(+), 2 deletions(-)

diff --git a/arch/arm/boot/dts/sun9i-a80-optimus.dts b/arch/arm/boot/dts/sun9i-a80-optimus.dts
index d7a20d92b114..6cfc02194035 100644
--- a/arch/arm/boot/dts/sun9i-a80-optimus.dts
+++ b/arch/arm/boot/dts/sun9i-a80-optimus.dts
@@ -150,7 +150,7 @@
 &mmc0 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&mmc0_pins>, <&mmc0_cd_pin_optimus>;
-	vmmc-supply = <&reg_vcc3v0>;
+	vmmc-supply = <&reg_dcdc1>;
 	bus-width = <4>;
 	cd-gpios = <&pio 7 18 GPIO_ACTIVE_HIGH>; /* PH8 */
 	cd-inverted;
@@ -160,7 +160,7 @@
 &mmc2 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&mmc2_8bit_pins>;
-	vmmc-supply = <&reg_vcc3v0>;
+	vmmc-supply = <&reg_dcdc1>;
 	bus-width = <8>;
 	non-removable;
 	cap-mmc-hw-reset;
@@ -193,8 +193,135 @@
 
 &r_rsb {
 	status = "okay";
+
+	axp809: pmic@3a3 {
+		reg = <0x3a3>;
+		interrupt-parent = <&nmi_intc>;
+		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+
+		regulators {
+			reg_aldo1: aldo1 {
+				/*
+				 * TODO: This should be handled by the
+				 * USB PHY driver.
+				 */
+				regulator-always-on;
+				regulator-min-microvolt = <3000000>;
+				regulator-max-microvolt = <3000000>;
+				regulator-name = "vcc33-usbh";
+			};
+
+			reg_aldo2: aldo2 {
+				regulator-min-microvolt = <1800000>;
+				regulator-max-microvolt = <1800000>;
+				regulator-name = "vcc-pb-io-cam";
+			};
+
+			aldo3 {
+				/* unused */
+			};
+
+			reg_dc5ldo: dc5ldo {
+				regulator-always-on;
+				regulator-min-microvolt = <800000>;
+				regulator-max-microvolt = <1100000>;
+				regulator-name = "vdd-cpus-09-usbh";
+			};
+
+			reg_dcdc1: dcdc1 {
+				regulator-always-on;
+				regulator-min-microvolt = <3000000>;
+				regulator-max-microvolt = <3000000>;
+				regulator-name = "vcc-3v";
+			};
+
+			reg_dcdc2: dcdc2 {
+				regulator-min-microvolt = <800000>;
+				regulator-max-microvolt = <1100000>;
+				regulator-name = "vdd-gpu";
+			};
+
+			reg_dcdc3: dcdc3 {
+				regulator-always-on;
+				regulator-min-microvolt = <800000>;
+				regulator-max-microvolt = <1100000>;
+				regulator-name = "vdd-cpua";
+			};
+
+			reg_dcdc4: dcdc4 {
+				regulator-always-on;
+				regulator-min-microvolt = <800000>;
+				regulator-max-microvolt = <1100000>;
+				regulator-name = "vdd-sys-usb0-hdmi";
+			};
+
+			reg_dcdc5: dcdc5 {
+				regulator-always-on;
+				regulator-min-microvolt = <1425000>;
+				regulator-max-microvolt = <1575000>;
+				regulator-name = "vcc-dram";
+			};
+
+			reg_dldo1: dldo1 {
+				/*
+				 * The WiFi chip supports a wide range
+				 * (3.0 ~ 4.8V) of voltages, and so does
+				 * this regulator (3.0 ~ 4.2V), but
+				 * Allwinner SDK always sets it to 3.3V.
+				 */
+				regulator-min-microvolt = <3300000>;
+				regulator-max-microvolt = <3300000>;
+				regulator-name = "vcc-wifi";
+			};
+
+			reg_dldo2: dldo2 {
+				regulator-always-on;
+				regulator-min-microvolt = <3000000>;
+				regulator-max-microvolt = <3000000>;
+				regulator-name = "vcc-pl";
+			};
+
+			reg_eldo1: eldo1 {
+				regulator-min-microvolt = <1200000>;
+				regulator-max-microvolt = <1200000>;
+				regulator-name = "vcc-dvdd-cam";
+			};
+
+			reg_eldo2: eldo2 {
+				regulator-min-microvolt = <1800000>;
+				regulator-max-microvolt = <1800000>;
+				regulator-name = "vcc-pe";
+			};
+
+			reg_eldo3: eldo3 {
+				regulator-always-on;
+				regulator-min-microvolt = <3000000>;
+				regulator-max-microvolt = <3000000>;
+				regulator-name = "vcc-pm-codec-io1";
+			};
+
+			reg_ldo_io0: ldo_io0 {
+				regulator-always-on;
+				regulator-min-microvolt = <3000000>;
+				regulator-max-microvolt = <3000000>;
+				regulator-name = "vcc-pg";
+			};
+
+			reg_ldo_io1: ldo_io1 {
+				regulator-min-microvolt = <2500000>;
+				regulator-max-microvolt = <2500000>;
+				regulator-name = "vcc-pa-gmac-2v5";
+			};
+
+			reg_rtc_ldo: rtc_ldo {
+				regulator-name = "vcc-rtc-vdd1v8-io";
+			};
+		};
+	};
 };
 
+#include "axp809.dtsi"
+
 &uart0 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&uart0_pins_a>;
-- 
2.7.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [PATCH resend v2 6/9] ARM: dts: sun9i: a80-optimus: Add AXP809 PMIC device node and regulators
@ 2016-03-29  9:22   ` Chen-Yu Tsai
  0 siblings, 0 replies; 54+ messages in thread
From: Chen-Yu Tsai @ 2016-03-29  9:22 UTC (permalink / raw)
  To: linux-arm-kernel

The AXP809 PMIC is the primary PMIC. It provides various supply voltages
for the SoC and other peripherals. The PMIC's interrupt line is
connected to NMI pin of the SoC.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
---
 arch/arm/boot/dts/sun9i-a80-optimus.dts | 131 +++++++++++++++++++++++++++++++-
 1 file changed, 129 insertions(+), 2 deletions(-)

diff --git a/arch/arm/boot/dts/sun9i-a80-optimus.dts b/arch/arm/boot/dts/sun9i-a80-optimus.dts
index d7a20d92b114..6cfc02194035 100644
--- a/arch/arm/boot/dts/sun9i-a80-optimus.dts
+++ b/arch/arm/boot/dts/sun9i-a80-optimus.dts
@@ -150,7 +150,7 @@
 &mmc0 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&mmc0_pins>, <&mmc0_cd_pin_optimus>;
-	vmmc-supply = <&reg_vcc3v0>;
+	vmmc-supply = <&reg_dcdc1>;
 	bus-width = <4>;
 	cd-gpios = <&pio 7 18 GPIO_ACTIVE_HIGH>; /* PH8 */
 	cd-inverted;
@@ -160,7 +160,7 @@
 &mmc2 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&mmc2_8bit_pins>;
-	vmmc-supply = <&reg_vcc3v0>;
+	vmmc-supply = <&reg_dcdc1>;
 	bus-width = <8>;
 	non-removable;
 	cap-mmc-hw-reset;
@@ -193,8 +193,135 @@
 
 &r_rsb {
 	status = "okay";
+
+	axp809: pmic at 3a3 {
+		reg = <0x3a3>;
+		interrupt-parent = <&nmi_intc>;
+		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+
+		regulators {
+			reg_aldo1: aldo1 {
+				/*
+				 * TODO: This should be handled by the
+				 * USB PHY driver.
+				 */
+				regulator-always-on;
+				regulator-min-microvolt = <3000000>;
+				regulator-max-microvolt = <3000000>;
+				regulator-name = "vcc33-usbh";
+			};
+
+			reg_aldo2: aldo2 {
+				regulator-min-microvolt = <1800000>;
+				regulator-max-microvolt = <1800000>;
+				regulator-name = "vcc-pb-io-cam";
+			};
+
+			aldo3 {
+				/* unused */
+			};
+
+			reg_dc5ldo: dc5ldo {
+				regulator-always-on;
+				regulator-min-microvolt = <800000>;
+				regulator-max-microvolt = <1100000>;
+				regulator-name = "vdd-cpus-09-usbh";
+			};
+
+			reg_dcdc1: dcdc1 {
+				regulator-always-on;
+				regulator-min-microvolt = <3000000>;
+				regulator-max-microvolt = <3000000>;
+				regulator-name = "vcc-3v";
+			};
+
+			reg_dcdc2: dcdc2 {
+				regulator-min-microvolt = <800000>;
+				regulator-max-microvolt = <1100000>;
+				regulator-name = "vdd-gpu";
+			};
+
+			reg_dcdc3: dcdc3 {
+				regulator-always-on;
+				regulator-min-microvolt = <800000>;
+				regulator-max-microvolt = <1100000>;
+				regulator-name = "vdd-cpua";
+			};
+
+			reg_dcdc4: dcdc4 {
+				regulator-always-on;
+				regulator-min-microvolt = <800000>;
+				regulator-max-microvolt = <1100000>;
+				regulator-name = "vdd-sys-usb0-hdmi";
+			};
+
+			reg_dcdc5: dcdc5 {
+				regulator-always-on;
+				regulator-min-microvolt = <1425000>;
+				regulator-max-microvolt = <1575000>;
+				regulator-name = "vcc-dram";
+			};
+
+			reg_dldo1: dldo1 {
+				/*
+				 * The WiFi chip supports a wide range
+				 * (3.0 ~ 4.8V) of voltages, and so does
+				 * this regulator (3.0 ~ 4.2V), but
+				 * Allwinner SDK always sets it to 3.3V.
+				 */
+				regulator-min-microvolt = <3300000>;
+				regulator-max-microvolt = <3300000>;
+				regulator-name = "vcc-wifi";
+			};
+
+			reg_dldo2: dldo2 {
+				regulator-always-on;
+				regulator-min-microvolt = <3000000>;
+				regulator-max-microvolt = <3000000>;
+				regulator-name = "vcc-pl";
+			};
+
+			reg_eldo1: eldo1 {
+				regulator-min-microvolt = <1200000>;
+				regulator-max-microvolt = <1200000>;
+				regulator-name = "vcc-dvdd-cam";
+			};
+
+			reg_eldo2: eldo2 {
+				regulator-min-microvolt = <1800000>;
+				regulator-max-microvolt = <1800000>;
+				regulator-name = "vcc-pe";
+			};
+
+			reg_eldo3: eldo3 {
+				regulator-always-on;
+				regulator-min-microvolt = <3000000>;
+				regulator-max-microvolt = <3000000>;
+				regulator-name = "vcc-pm-codec-io1";
+			};
+
+			reg_ldo_io0: ldo_io0 {
+				regulator-always-on;
+				regulator-min-microvolt = <3000000>;
+				regulator-max-microvolt = <3000000>;
+				regulator-name = "vcc-pg";
+			};
+
+			reg_ldo_io1: ldo_io1 {
+				regulator-min-microvolt = <2500000>;
+				regulator-max-microvolt = <2500000>;
+				regulator-name = "vcc-pa-gmac-2v5";
+			};
+
+			reg_rtc_ldo: rtc_ldo {
+				regulator-name = "vcc-rtc-vdd1v8-io";
+			};
+		};
+	};
 };
 
+#include "axp809.dtsi"
+
 &uart0 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&uart0_pins_a>;
-- 
2.7.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [PATCH resend v2 7/9] ARM: dts: sun9i: cubieboard4: Add AXP809 PMIC device node and regulators
@ 2016-03-29  9:22   ` Chen-Yu Tsai
  0 siblings, 0 replies; 54+ messages in thread
From: Chen-Yu Tsai @ 2016-03-29  9:22 UTC (permalink / raw)
  To: Lee Jones, Liam Girdwood, Mark Brown, Maxime Ripard
  Cc: Chen-Yu Tsai, linux-kernel, devicetree, linux-arm-kernel, linux-sunxi

The AXP809 PMIC is the primary PMIC. It provides various supply voltages
for the SoC and other peripherals. The PMIC's interrupt line is connected
to NMI pin of the SoC.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
---
 arch/arm/boot/dts/sun9i-a80-cubieboard4.dts | 131 +++++++++++++++++++++++++++-
 1 file changed, 129 insertions(+), 2 deletions(-)

diff --git a/arch/arm/boot/dts/sun9i-a80-cubieboard4.dts b/arch/arm/boot/dts/sun9i-a80-cubieboard4.dts
index eb2ccd0a3bd5..8d8af1189d87 100644
--- a/arch/arm/boot/dts/sun9i-a80-cubieboard4.dts
+++ b/arch/arm/boot/dts/sun9i-a80-cubieboard4.dts
@@ -98,7 +98,7 @@
 &mmc0 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&mmc0_pins>, <&mmc0_cd_pin_cubieboard4>;
-	vmmc-supply = <&reg_vcc3v0>;
+	vmmc-supply = <&reg_dcdc1>;
 	bus-width = <4>;
 	cd-gpios = <&pio 7 18 GPIO_ACTIVE_HIGH>; /* PH18 */
 	cd-inverted;
@@ -108,7 +108,7 @@
 &mmc2 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&mmc2_8bit_pins>;
-	vmmc-supply = <&reg_vcc3v0>;
+	vmmc-supply = <&reg_dcdc1>;
 	bus-width = <8>;
 	non-removable;
 	cap-mmc-hw-reset;
@@ -126,8 +126,135 @@
 
 &r_rsb {
 	status = "okay";
+
+	axp809: pmic@3a3 {
+		reg = <0x3a3>;
+		interrupt-parent = <&nmi_intc>;
+		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+
+		regulators {
+			reg_aldo1: aldo1 {
+				/*
+				 * TODO: This should be handled by the
+				 * USB PHY driver.
+				 */
+				regulator-always-on;
+				regulator-min-microvolt = <3000000>;
+				regulator-max-microvolt = <3000000>;
+				regulator-name = "vcc33-usbh";
+			};
+
+			reg_aldo2: aldo2 {
+				regulator-min-microvolt = <1800000>;
+				regulator-max-microvolt = <1800000>;
+				regulator-name = "vcc-pb-io-cam";
+			};
+
+			aldo3 {
+				/* unused */
+			};
+
+			reg_dc5ldo: dc5ldo {
+				regulator-always-on;
+				regulator-min-microvolt = <800000>;
+				regulator-max-microvolt = <1100000>;
+				regulator-name = "vdd-cpus-09-usbh";
+			};
+
+			reg_dcdc1: dcdc1 {
+				regulator-always-on;
+				regulator-min-microvolt = <3000000>;
+				regulator-max-microvolt = <3000000>;
+				regulator-name = "vcc-3v";
+			};
+
+			reg_dcdc2: dcdc2 {
+				regulator-min-microvolt = <800000>;
+				regulator-max-microvolt = <1100000>;
+				regulator-name = "vdd-gpu";
+			};
+
+			reg_dcdc3: dcdc3 {
+				regulator-always-on;
+				regulator-min-microvolt = <800000>;
+				regulator-max-microvolt = <1100000>;
+				regulator-name = "vdd-cpua";
+			};
+
+			reg_dcdc4: dcdc4 {
+				regulator-always-on;
+				regulator-min-microvolt = <800000>;
+				regulator-max-microvolt = <1100000>;
+				regulator-name = "vdd-sys-usb0-hdmi";
+			};
+
+			reg_dcdc5: dcdc5 {
+				regulator-always-on;
+				regulator-min-microvolt = <1425000>;
+				regulator-max-microvolt = <1575000>;
+				regulator-name = "vcc-dram";
+			};
+
+			reg_dldo1: dldo1 {
+				/*
+				 * The WiFi chip supports a wide range
+				 * (3.0 ~ 4.8V) of voltages, and so does
+				 * this regulator (3.0 ~ 4.2V), but
+				 * Allwinner SDK always sets it to 3.3V.
+				 */
+				regulator-min-microvolt = <3300000>;
+				regulator-max-microvolt = <3300000>;
+				regulator-name = "vcc-wifi";
+			};
+
+			reg_dldo2: dldo2 {
+				regulator-always-on;
+				regulator-min-microvolt = <3000000>;
+				regulator-max-microvolt = <3000000>;
+				regulator-name = "vcc-pl";
+			};
+
+			reg_eldo1: eldo1 {
+				regulator-min-microvolt = <1200000>;
+				regulator-max-microvolt = <1200000>;
+				regulator-name = "vcc-dvdd-cam";
+			};
+
+			reg_eldo2: eldo2 {
+				regulator-min-microvolt = <1800000>;
+				regulator-max-microvolt = <1800000>;
+				regulator-name = "vcc-pe";
+			};
+
+			reg_eldo3: eldo3 {
+				regulator-always-on;
+				regulator-min-microvolt = <3000000>;
+				regulator-max-microvolt = <3000000>;
+				regulator-name = "vcc-pm-codec-io1";
+			};
+
+			reg_ldo_io0: ldo_io0 {
+				regulator-always-on;
+				regulator-min-microvolt = <3000000>;
+				regulator-max-microvolt = <3000000>;
+				regulator-name = "vcc-pg";
+			};
+
+			reg_ldo_io1: ldo_io1 {
+				regulator-min-microvolt = <2500000>;
+				regulator-max-microvolt = <2500000>;
+				regulator-name = "vcc-pa-gmac-2v5";
+			};
+
+			reg_rtc_ldo: rtc_ldo {
+				regulator-name = "vcc-rtc-vdd1v8-io";
+			};
+		};
+	};
 };
 
+#include "axp809.dtsi"
+
 &uart0 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&uart0_pins_a>;
-- 
2.7.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [PATCH resend v2 7/9] ARM: dts: sun9i: cubieboard4: Add AXP809 PMIC device node and regulators
@ 2016-03-29  9:22   ` Chen-Yu Tsai
  0 siblings, 0 replies; 54+ messages in thread
From: Chen-Yu Tsai @ 2016-03-29  9:22 UTC (permalink / raw)
  To: Lee Jones, Liam Girdwood, Mark Brown, Maxime Ripard
  Cc: Chen-Yu Tsai, linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw

The AXP809 PMIC is the primary PMIC. It provides various supply voltages
for the SoC and other peripherals. The PMIC's interrupt line is connected
to NMI pin of the SoC.

Signed-off-by: Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>
---
 arch/arm/boot/dts/sun9i-a80-cubieboard4.dts | 131 +++++++++++++++++++++++++++-
 1 file changed, 129 insertions(+), 2 deletions(-)

diff --git a/arch/arm/boot/dts/sun9i-a80-cubieboard4.dts b/arch/arm/boot/dts/sun9i-a80-cubieboard4.dts
index eb2ccd0a3bd5..8d8af1189d87 100644
--- a/arch/arm/boot/dts/sun9i-a80-cubieboard4.dts
+++ b/arch/arm/boot/dts/sun9i-a80-cubieboard4.dts
@@ -98,7 +98,7 @@
 &mmc0 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&mmc0_pins>, <&mmc0_cd_pin_cubieboard4>;
-	vmmc-supply = <&reg_vcc3v0>;
+	vmmc-supply = <&reg_dcdc1>;
 	bus-width = <4>;
 	cd-gpios = <&pio 7 18 GPIO_ACTIVE_HIGH>; /* PH18 */
 	cd-inverted;
@@ -108,7 +108,7 @@
 &mmc2 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&mmc2_8bit_pins>;
-	vmmc-supply = <&reg_vcc3v0>;
+	vmmc-supply = <&reg_dcdc1>;
 	bus-width = <8>;
 	non-removable;
 	cap-mmc-hw-reset;
@@ -126,8 +126,135 @@
 
 &r_rsb {
 	status = "okay";
+
+	axp809: pmic@3a3 {
+		reg = <0x3a3>;
+		interrupt-parent = <&nmi_intc>;
+		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+
+		regulators {
+			reg_aldo1: aldo1 {
+				/*
+				 * TODO: This should be handled by the
+				 * USB PHY driver.
+				 */
+				regulator-always-on;
+				regulator-min-microvolt = <3000000>;
+				regulator-max-microvolt = <3000000>;
+				regulator-name = "vcc33-usbh";
+			};
+
+			reg_aldo2: aldo2 {
+				regulator-min-microvolt = <1800000>;
+				regulator-max-microvolt = <1800000>;
+				regulator-name = "vcc-pb-io-cam";
+			};
+
+			aldo3 {
+				/* unused */
+			};
+
+			reg_dc5ldo: dc5ldo {
+				regulator-always-on;
+				regulator-min-microvolt = <800000>;
+				regulator-max-microvolt = <1100000>;
+				regulator-name = "vdd-cpus-09-usbh";
+			};
+
+			reg_dcdc1: dcdc1 {
+				regulator-always-on;
+				regulator-min-microvolt = <3000000>;
+				regulator-max-microvolt = <3000000>;
+				regulator-name = "vcc-3v";
+			};
+
+			reg_dcdc2: dcdc2 {
+				regulator-min-microvolt = <800000>;
+				regulator-max-microvolt = <1100000>;
+				regulator-name = "vdd-gpu";
+			};
+
+			reg_dcdc3: dcdc3 {
+				regulator-always-on;
+				regulator-min-microvolt = <800000>;
+				regulator-max-microvolt = <1100000>;
+				regulator-name = "vdd-cpua";
+			};
+
+			reg_dcdc4: dcdc4 {
+				regulator-always-on;
+				regulator-min-microvolt = <800000>;
+				regulator-max-microvolt = <1100000>;
+				regulator-name = "vdd-sys-usb0-hdmi";
+			};
+
+			reg_dcdc5: dcdc5 {
+				regulator-always-on;
+				regulator-min-microvolt = <1425000>;
+				regulator-max-microvolt = <1575000>;
+				regulator-name = "vcc-dram";
+			};
+
+			reg_dldo1: dldo1 {
+				/*
+				 * The WiFi chip supports a wide range
+				 * (3.0 ~ 4.8V) of voltages, and so does
+				 * this regulator (3.0 ~ 4.2V), but
+				 * Allwinner SDK always sets it to 3.3V.
+				 */
+				regulator-min-microvolt = <3300000>;
+				regulator-max-microvolt = <3300000>;
+				regulator-name = "vcc-wifi";
+			};
+
+			reg_dldo2: dldo2 {
+				regulator-always-on;
+				regulator-min-microvolt = <3000000>;
+				regulator-max-microvolt = <3000000>;
+				regulator-name = "vcc-pl";
+			};
+
+			reg_eldo1: eldo1 {
+				regulator-min-microvolt = <1200000>;
+				regulator-max-microvolt = <1200000>;
+				regulator-name = "vcc-dvdd-cam";
+			};
+
+			reg_eldo2: eldo2 {
+				regulator-min-microvolt = <1800000>;
+				regulator-max-microvolt = <1800000>;
+				regulator-name = "vcc-pe";
+			};
+
+			reg_eldo3: eldo3 {
+				regulator-always-on;
+				regulator-min-microvolt = <3000000>;
+				regulator-max-microvolt = <3000000>;
+				regulator-name = "vcc-pm-codec-io1";
+			};
+
+			reg_ldo_io0: ldo_io0 {
+				regulator-always-on;
+				regulator-min-microvolt = <3000000>;
+				regulator-max-microvolt = <3000000>;
+				regulator-name = "vcc-pg";
+			};
+
+			reg_ldo_io1: ldo_io1 {
+				regulator-min-microvolt = <2500000>;
+				regulator-max-microvolt = <2500000>;
+				regulator-name = "vcc-pa-gmac-2v5";
+			};
+
+			reg_rtc_ldo: rtc_ldo {
+				regulator-name = "vcc-rtc-vdd1v8-io";
+			};
+		};
+	};
 };
 
+#include "axp809.dtsi"
+
 &uart0 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&uart0_pins_a>;
-- 
2.7.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [PATCH resend v2 7/9] ARM: dts: sun9i: cubieboard4: Add AXP809 PMIC device node and regulators
@ 2016-03-29  9:22   ` Chen-Yu Tsai
  0 siblings, 0 replies; 54+ messages in thread
From: Chen-Yu Tsai @ 2016-03-29  9:22 UTC (permalink / raw)
  To: linux-arm-kernel

The AXP809 PMIC is the primary PMIC. It provides various supply voltages
for the SoC and other peripherals. The PMIC's interrupt line is connected
to NMI pin of the SoC.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
---
 arch/arm/boot/dts/sun9i-a80-cubieboard4.dts | 131 +++++++++++++++++++++++++++-
 1 file changed, 129 insertions(+), 2 deletions(-)

diff --git a/arch/arm/boot/dts/sun9i-a80-cubieboard4.dts b/arch/arm/boot/dts/sun9i-a80-cubieboard4.dts
index eb2ccd0a3bd5..8d8af1189d87 100644
--- a/arch/arm/boot/dts/sun9i-a80-cubieboard4.dts
+++ b/arch/arm/boot/dts/sun9i-a80-cubieboard4.dts
@@ -98,7 +98,7 @@
 &mmc0 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&mmc0_pins>, <&mmc0_cd_pin_cubieboard4>;
-	vmmc-supply = <&reg_vcc3v0>;
+	vmmc-supply = <&reg_dcdc1>;
 	bus-width = <4>;
 	cd-gpios = <&pio 7 18 GPIO_ACTIVE_HIGH>; /* PH18 */
 	cd-inverted;
@@ -108,7 +108,7 @@
 &mmc2 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&mmc2_8bit_pins>;
-	vmmc-supply = <&reg_vcc3v0>;
+	vmmc-supply = <&reg_dcdc1>;
 	bus-width = <8>;
 	non-removable;
 	cap-mmc-hw-reset;
@@ -126,8 +126,135 @@
 
 &r_rsb {
 	status = "okay";
+
+	axp809: pmic at 3a3 {
+		reg = <0x3a3>;
+		interrupt-parent = <&nmi_intc>;
+		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+
+		regulators {
+			reg_aldo1: aldo1 {
+				/*
+				 * TODO: This should be handled by the
+				 * USB PHY driver.
+				 */
+				regulator-always-on;
+				regulator-min-microvolt = <3000000>;
+				regulator-max-microvolt = <3000000>;
+				regulator-name = "vcc33-usbh";
+			};
+
+			reg_aldo2: aldo2 {
+				regulator-min-microvolt = <1800000>;
+				regulator-max-microvolt = <1800000>;
+				regulator-name = "vcc-pb-io-cam";
+			};
+
+			aldo3 {
+				/* unused */
+			};
+
+			reg_dc5ldo: dc5ldo {
+				regulator-always-on;
+				regulator-min-microvolt = <800000>;
+				regulator-max-microvolt = <1100000>;
+				regulator-name = "vdd-cpus-09-usbh";
+			};
+
+			reg_dcdc1: dcdc1 {
+				regulator-always-on;
+				regulator-min-microvolt = <3000000>;
+				regulator-max-microvolt = <3000000>;
+				regulator-name = "vcc-3v";
+			};
+
+			reg_dcdc2: dcdc2 {
+				regulator-min-microvolt = <800000>;
+				regulator-max-microvolt = <1100000>;
+				regulator-name = "vdd-gpu";
+			};
+
+			reg_dcdc3: dcdc3 {
+				regulator-always-on;
+				regulator-min-microvolt = <800000>;
+				regulator-max-microvolt = <1100000>;
+				regulator-name = "vdd-cpua";
+			};
+
+			reg_dcdc4: dcdc4 {
+				regulator-always-on;
+				regulator-min-microvolt = <800000>;
+				regulator-max-microvolt = <1100000>;
+				regulator-name = "vdd-sys-usb0-hdmi";
+			};
+
+			reg_dcdc5: dcdc5 {
+				regulator-always-on;
+				regulator-min-microvolt = <1425000>;
+				regulator-max-microvolt = <1575000>;
+				regulator-name = "vcc-dram";
+			};
+
+			reg_dldo1: dldo1 {
+				/*
+				 * The WiFi chip supports a wide range
+				 * (3.0 ~ 4.8V) of voltages, and so does
+				 * this regulator (3.0 ~ 4.2V), but
+				 * Allwinner SDK always sets it to 3.3V.
+				 */
+				regulator-min-microvolt = <3300000>;
+				regulator-max-microvolt = <3300000>;
+				regulator-name = "vcc-wifi";
+			};
+
+			reg_dldo2: dldo2 {
+				regulator-always-on;
+				regulator-min-microvolt = <3000000>;
+				regulator-max-microvolt = <3000000>;
+				regulator-name = "vcc-pl";
+			};
+
+			reg_eldo1: eldo1 {
+				regulator-min-microvolt = <1200000>;
+				regulator-max-microvolt = <1200000>;
+				regulator-name = "vcc-dvdd-cam";
+			};
+
+			reg_eldo2: eldo2 {
+				regulator-min-microvolt = <1800000>;
+				regulator-max-microvolt = <1800000>;
+				regulator-name = "vcc-pe";
+			};
+
+			reg_eldo3: eldo3 {
+				regulator-always-on;
+				regulator-min-microvolt = <3000000>;
+				regulator-max-microvolt = <3000000>;
+				regulator-name = "vcc-pm-codec-io1";
+			};
+
+			reg_ldo_io0: ldo_io0 {
+				regulator-always-on;
+				regulator-min-microvolt = <3000000>;
+				regulator-max-microvolt = <3000000>;
+				regulator-name = "vcc-pg";
+			};
+
+			reg_ldo_io1: ldo_io1 {
+				regulator-min-microvolt = <2500000>;
+				regulator-max-microvolt = <2500000>;
+				regulator-name = "vcc-pa-gmac-2v5";
+			};
+
+			reg_rtc_ldo: rtc_ldo {
+				regulator-name = "vcc-rtc-vdd1v8-io";
+			};
+		};
+	};
 };
 
+#include "axp809.dtsi"
+
 &uart0 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&uart0_pins_a>;
-- 
2.7.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [PATCH resend v2 8/9] ARM: dts: sun9i: a80-optimus: Disable dummy regulators vcc3v0, vcc3v3, vcc5v0
@ 2016-03-29  9:22   ` Chen-Yu Tsai
  0 siblings, 0 replies; 54+ messages in thread
From: Chen-Yu Tsai @ 2016-03-29  9:22 UTC (permalink / raw)
  To: Lee Jones, Liam Girdwood, Mark Brown, Maxime Ripard
  Cc: Chen-Yu Tsai, linux-kernel, devicetree, linux-arm-kernel, linux-sunxi

These 3 regulators are provided in sunxi-common-regulators.dtsi.
3.0V/3.3V and 5.0V are commonly used voltages in Allwinner devices.
These dummy regulators provide a stand-in when bindings that require
one, but the real regulator is not supported yet.

Since these are no longer needed, we can disable them.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
---
 arch/arm/boot/dts/sun9i-a80-optimus.dts | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/arch/arm/boot/dts/sun9i-a80-optimus.dts b/arch/arm/boot/dts/sun9i-a80-optimus.dts
index 6cfc02194035..991337d1d6f1 100644
--- a/arch/arm/boot/dts/sun9i-a80-optimus.dts
+++ b/arch/arm/boot/dts/sun9i-a80-optimus.dts
@@ -322,6 +322,18 @@
 
 #include "axp809.dtsi"
 
+&reg_vcc3v0 {
+	status = "disabled";
+};
+
+&reg_vcc3v3 {
+	status = "disabled";
+};
+
+&reg_vcc5v0 {
+	status = "disabled";
+};
+
 &uart0 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&uart0_pins_a>;
-- 
2.7.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [PATCH resend v2 8/9] ARM: dts: sun9i: a80-optimus: Disable dummy regulators vcc3v0, vcc3v3, vcc5v0
@ 2016-03-29  9:22   ` Chen-Yu Tsai
  0 siblings, 0 replies; 54+ messages in thread
From: Chen-Yu Tsai @ 2016-03-29  9:22 UTC (permalink / raw)
  To: Lee Jones, Liam Girdwood, Mark Brown, Maxime Ripard
  Cc: Chen-Yu Tsai, linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw

These 3 regulators are provided in sunxi-common-regulators.dtsi.
3.0V/3.3V and 5.0V are commonly used voltages in Allwinner devices.
These dummy regulators provide a stand-in when bindings that require
one, but the real regulator is not supported yet.

Since these are no longer needed, we can disable them.

Signed-off-by: Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>
---
 arch/arm/boot/dts/sun9i-a80-optimus.dts | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/arch/arm/boot/dts/sun9i-a80-optimus.dts b/arch/arm/boot/dts/sun9i-a80-optimus.dts
index 6cfc02194035..991337d1d6f1 100644
--- a/arch/arm/boot/dts/sun9i-a80-optimus.dts
+++ b/arch/arm/boot/dts/sun9i-a80-optimus.dts
@@ -322,6 +322,18 @@
 
 #include "axp809.dtsi"
 
+&reg_vcc3v0 {
+	status = "disabled";
+};
+
+&reg_vcc3v3 {
+	status = "disabled";
+};
+
+&reg_vcc5v0 {
+	status = "disabled";
+};
+
 &uart0 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&uart0_pins_a>;
-- 
2.7.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [PATCH resend v2 8/9] ARM: dts: sun9i: a80-optimus: Disable dummy regulators vcc3v0, vcc3v3, vcc5v0
@ 2016-03-29  9:22   ` Chen-Yu Tsai
  0 siblings, 0 replies; 54+ messages in thread
From: Chen-Yu Tsai @ 2016-03-29  9:22 UTC (permalink / raw)
  To: linux-arm-kernel

These 3 regulators are provided in sunxi-common-regulators.dtsi.
3.0V/3.3V and 5.0V are commonly used voltages in Allwinner devices.
These dummy regulators provide a stand-in when bindings that require
one, but the real regulator is not supported yet.

Since these are no longer needed, we can disable them.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
---
 arch/arm/boot/dts/sun9i-a80-optimus.dts | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/arch/arm/boot/dts/sun9i-a80-optimus.dts b/arch/arm/boot/dts/sun9i-a80-optimus.dts
index 6cfc02194035..991337d1d6f1 100644
--- a/arch/arm/boot/dts/sun9i-a80-optimus.dts
+++ b/arch/arm/boot/dts/sun9i-a80-optimus.dts
@@ -322,6 +322,18 @@
 
 #include "axp809.dtsi"
 
+&reg_vcc3v0 {
+	status = "disabled";
+};
+
+&reg_vcc3v3 {
+	status = "disabled";
+};
+
+&reg_vcc5v0 {
+	status = "disabled";
+};
+
 &uart0 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&uart0_pins_a>;
-- 
2.7.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [PATCH resend v2 9/9] ARM: dts: sun9i: cubieboard4: Disable dummy regulators vcc3v0, vcc3v3, vcc5v0
@ 2016-03-29  9:22   ` Chen-Yu Tsai
  0 siblings, 0 replies; 54+ messages in thread
From: Chen-Yu Tsai @ 2016-03-29  9:22 UTC (permalink / raw)
  To: Lee Jones, Liam Girdwood, Mark Brown, Maxime Ripard
  Cc: Chen-Yu Tsai, linux-kernel, devicetree, linux-arm-kernel, linux-sunxi

These 3 regulators are provided in sunxi-common-regulators.dtsi.
3.0V/3.3V and 5.0V are commonly used voltages in Allwinner devices.
These dummy regulators provide a stand-in when bindings that require
one, but the real regulator is not supported yet.

Since these are no longer needed, we can disable them.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
---
 arch/arm/boot/dts/sun9i-a80-cubieboard4.dts | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/arch/arm/boot/dts/sun9i-a80-cubieboard4.dts b/arch/arm/boot/dts/sun9i-a80-cubieboard4.dts
index 8d8af1189d87..84a12fef5768 100644
--- a/arch/arm/boot/dts/sun9i-a80-cubieboard4.dts
+++ b/arch/arm/boot/dts/sun9i-a80-cubieboard4.dts
@@ -255,6 +255,18 @@
 
 #include "axp809.dtsi"
 
+&reg_vcc3v0 {
+	status = "disabled";
+};
+
+&reg_vcc3v3 {
+	status = "disabled";
+};
+
+&reg_vcc5v0 {
+	status = "disabled";
+};
+
 &uart0 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&uart0_pins_a>;
-- 
2.7.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [PATCH resend v2 9/9] ARM: dts: sun9i: cubieboard4: Disable dummy regulators vcc3v0, vcc3v3, vcc5v0
@ 2016-03-29  9:22   ` Chen-Yu Tsai
  0 siblings, 0 replies; 54+ messages in thread
From: Chen-Yu Tsai @ 2016-03-29  9:22 UTC (permalink / raw)
  To: Lee Jones, Liam Girdwood, Mark Brown, Maxime Ripard
  Cc: Chen-Yu Tsai, linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw

These 3 regulators are provided in sunxi-common-regulators.dtsi.
3.0V/3.3V and 5.0V are commonly used voltages in Allwinner devices.
These dummy regulators provide a stand-in when bindings that require
one, but the real regulator is not supported yet.

Since these are no longer needed, we can disable them.

Signed-off-by: Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>
---
 arch/arm/boot/dts/sun9i-a80-cubieboard4.dts | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/arch/arm/boot/dts/sun9i-a80-cubieboard4.dts b/arch/arm/boot/dts/sun9i-a80-cubieboard4.dts
index 8d8af1189d87..84a12fef5768 100644
--- a/arch/arm/boot/dts/sun9i-a80-cubieboard4.dts
+++ b/arch/arm/boot/dts/sun9i-a80-cubieboard4.dts
@@ -255,6 +255,18 @@
 
 #include "axp809.dtsi"
 
+&reg_vcc3v0 {
+	status = "disabled";
+};
+
+&reg_vcc3v3 {
+	status = "disabled";
+};
+
+&reg_vcc5v0 {
+	status = "disabled";
+};
+
 &uart0 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&uart0_pins_a>;
-- 
2.7.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* [PATCH resend v2 9/9] ARM: dts: sun9i: cubieboard4: Disable dummy regulators vcc3v0, vcc3v3, vcc5v0
@ 2016-03-29  9:22   ` Chen-Yu Tsai
  0 siblings, 0 replies; 54+ messages in thread
From: Chen-Yu Tsai @ 2016-03-29  9:22 UTC (permalink / raw)
  To: linux-arm-kernel

These 3 regulators are provided in sunxi-common-regulators.dtsi.
3.0V/3.3V and 5.0V are commonly used voltages in Allwinner devices.
These dummy regulators provide a stand-in when bindings that require
one, but the real regulator is not supported yet.

Since these are no longer needed, we can disable them.

Signed-off-by: Chen-Yu Tsai <wens@csie.org>
---
 arch/arm/boot/dts/sun9i-a80-cubieboard4.dts | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/arch/arm/boot/dts/sun9i-a80-cubieboard4.dts b/arch/arm/boot/dts/sun9i-a80-cubieboard4.dts
index 8d8af1189d87..84a12fef5768 100644
--- a/arch/arm/boot/dts/sun9i-a80-cubieboard4.dts
+++ b/arch/arm/boot/dts/sun9i-a80-cubieboard4.dts
@@ -255,6 +255,18 @@
 
 #include "axp809.dtsi"
 
+&reg_vcc3v0 {
+	status = "disabled";
+};
+
+&reg_vcc3v3 {
+	status = "disabled";
+};
+
+&reg_vcc5v0 {
+	status = "disabled";
+};
+
 &uart0 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&uart0_pins_a>;
-- 
2.7.0

^ permalink raw reply related	[flat|nested] 54+ messages in thread

* Re: [linux-sunxi] [PATCH resend v2 4/9] regulator: axp20x: support AXP809 variant
@ 2016-03-29  9:51     ` Priit Laes
  0 siblings, 0 replies; 54+ messages in thread
From: Priit Laes @ 2016-03-29  9:51 UTC (permalink / raw)
  To: wens, Lee Jones, Liam Girdwood, Mark Brown, Maxime Ripard
  Cc: linux-kernel, devicetree, linux-arm-kernel, linux-sunxi

On Tue, 2016-03-29 at 17:22 +0800, Chen-Yu Tsai wrote:
> The X-Powers AXP809 PMIC has a similar set of regulators as the
> AXP221,
> though a few LDOs were removed, and a new switch output added. Like
> the
> AXP221, AXP809 also has DC1SW and DC5LDO, which are internally
> chained
> to DCDC1 and DCDC5, respectively.
> 
> Add support for this new variant. Also remove the "axp22x_" prefix
> from
> DC1SW/DC5LDO supply handling code, as the AXP809 uses it as well.
> 
> Signed-off-by: Chen-Yu Tsai <wens@csie.org>
> ---
>  drivers/regulator/axp20x-regulator.c | 119
> ++++++++++++++++++++++++++---------
>  1 file changed, 90 insertions(+), 29 deletions(-)
> 

[...]

> @@ -420,17 +481,17 @@ static int axp20x_regulator_probe(struct
> platform_device *pdev)
>  		/*
>  		 * Save AXP22X DCDC1 / DCDC5 regulator names for
> later.
>  		 */

You should probably update this comment too, due to changes below.

> -		if (regulators == axp22x_regulators) {
> -			/* Can we use rdev->constraints->name
> instead? */
> -			if (i == AXP22X_DCDC1)
> -				of_property_read_string(rdev
> ->dev.of_node,
> -							"regulator
> -name",
> -							&axp22x_dc1_
> name);
> -			else if (i == AXP22X_DCDC5)
> -				of_property_read_string(rdev
> ->dev.of_node,
> -							"regulator
> -name",
> -							&axp22x_dc5_
> name);
> -		}
> +		if ((regulators == axp22x_regulators && i ==
> AXP22X_DCDC1) ||
> +		    (regulators == axp809_regulators && i ==
> AXP809_DCDC1))
> +			of_property_read_string(rdev->dev.of_node,
> +						"regulator-name",
> +						&dcdc1_name);
> +
> +		if ((regulators == axp22x_regulators && i ==
> AXP22X_DCDC5) ||
> +		    (regulators == axp809_regulators && i ==
> AXP809_DCDC5))
> +			of_property_read_string(rdev->dev.of_node,
> +						"regulator-name",
> +						&dcdc5_name);
>  	}
>  
>  	return 0;
> -- 
> 2.7.0
> 

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [PATCH resend v2 4/9] regulator: axp20x: support AXP809 variant
@ 2016-03-29  9:51     ` Priit Laes
  0 siblings, 0 replies; 54+ messages in thread
From: Priit Laes @ 2016-03-29  9:51 UTC (permalink / raw)
  To: wens-jdAy2FN1RRM, Lee Jones, Liam Girdwood, Mark Brown, Maxime Ripard
  Cc: linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw

On Tue, 2016-03-29 at 17:22 +0800, Chen-Yu Tsai wrote:
> The X-Powers AXP809 PMIC has a similar set of regulators as the
> AXP221,
> though a few LDOs were removed, and a new switch output added. Like
> the
> AXP221, AXP809 also has DC1SW and DC5LDO, which are internally
> chained
> to DCDC1 and DCDC5, respectively.
> 
> Add support for this new variant. Also remove the "axp22x_" prefix
> from
> DC1SW/DC5LDO supply handling code, as the AXP809 uses it as well.
> 
> Signed-off-by: Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>
> ---
>  drivers/regulator/axp20x-regulator.c | 119
> ++++++++++++++++++++++++++---------
>  1 file changed, 90 insertions(+), 29 deletions(-)
> 

[...]

> @@ -420,17 +481,17 @@ static int axp20x_regulator_probe(struct
> platform_device *pdev)
>  		/*
>  		 * Save AXP22X DCDC1 / DCDC5 regulator names for
> later.
>  		 */

You should probably update this comment too, due to changes below.

> -		if (regulators == axp22x_regulators) {
> -			/* Can we use rdev->constraints->name
> instead? */
> -			if (i == AXP22X_DCDC1)
> -				of_property_read_string(rdev
> ->dev.of_node,
> -							"regulator
> -name",
> -							&axp22x_dc1_
> name);
> -			else if (i == AXP22X_DCDC5)
> -				of_property_read_string(rdev
> ->dev.of_node,
> -							"regulator
> -name",
> -							&axp22x_dc5_
> name);
> -		}
> +		if ((regulators == axp22x_regulators && i ==
> AXP22X_DCDC1) ||
> +		    (regulators == axp809_regulators && i ==
> AXP809_DCDC1))
> +			of_property_read_string(rdev->dev.of_node,
> +						"regulator-name",
> +						&dcdc1_name);
> +
> +		if ((regulators == axp22x_regulators && i ==
> AXP22X_DCDC5) ||
> +		    (regulators == axp809_regulators && i ==
> AXP809_DCDC5))
> +			of_property_read_string(rdev->dev.of_node,
> +						"regulator-name",
> +						&dcdc5_name);
>  	}
>  
>  	return 0;
> -- 
> 2.7.0
> 

^ permalink raw reply	[flat|nested] 54+ messages in thread

* [linux-sunxi] [PATCH resend v2 4/9] regulator: axp20x: support AXP809 variant
@ 2016-03-29  9:51     ` Priit Laes
  0 siblings, 0 replies; 54+ messages in thread
From: Priit Laes @ 2016-03-29  9:51 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, 2016-03-29 at 17:22 +0800, Chen-Yu Tsai wrote:
> The X-Powers AXP809 PMIC has a similar set of regulators as the
> AXP221,
> though a few LDOs were removed, and a new switch output added. Like
> the
> AXP221, AXP809 also has DC1SW and DC5LDO, which are internally
> chained
> to DCDC1 and DCDC5, respectively.
> 
> Add support for this new variant. Also remove the "axp22x_" prefix
> from
> DC1SW/DC5LDO supply handling code, as the AXP809 uses it as well.
> 
> Signed-off-by: Chen-Yu Tsai <wens@csie.org>
> ---
>  drivers/regulator/axp20x-regulator.c | 119
> ++++++++++++++++++++++++++---------
>  1 file changed, 90 insertions(+), 29 deletions(-)
> 

[...]

> @@ -420,17 +481,17 @@ static int axp20x_regulator_probe(struct
> platform_device *pdev)
>  		/*
>  		 * Save AXP22X DCDC1 / DCDC5 regulator names for
> later.
>  		 */

You should probably update this comment too, due to changes below.

> -		if (regulators == axp22x_regulators) {
> -			/* Can we use rdev->constraints->name
> instead? */
> -			if (i == AXP22X_DCDC1)
> -				of_property_read_string(rdev
> ->dev.of_node,
> -							"regulator
> -name",
> -							&axp22x_dc1_
> name);
> -			else if (i == AXP22X_DCDC5)
> -				of_property_read_string(rdev
> ->dev.of_node,
> -							"regulator
> -name",
> -							&axp22x_dc5_
> name);
> -		}
> +		if ((regulators == axp22x_regulators && i ==
> AXP22X_DCDC1) ||
> +		    (regulators == axp809_regulators && i ==
> AXP809_DCDC1))
> +			of_property_read_string(rdev->dev.of_node,
> +						"regulator-name",
> +						&dcdc1_name);
> +
> +		if ((regulators == axp22x_regulators && i ==
> AXP22X_DCDC5) ||
> +		    (regulators == axp809_regulators && i ==
> AXP809_DCDC5))
> +			of_property_read_string(rdev->dev.of_node,
> +						"regulator-name",
> +						&dcdc5_name);
>  	}
>  
>  	return 0;
> -- 
> 2.7.0
> 

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [PATCH resend v2 4/9] regulator: axp20x: support AXP809 variant
@ 2016-03-29 16:09     ` Mark Brown
  0 siblings, 0 replies; 54+ messages in thread
From: Mark Brown @ 2016-03-29 16:09 UTC (permalink / raw)
  To: Chen-Yu Tsai
  Cc: Lee Jones, Liam Girdwood, Maxime Ripard, linux-kernel,
	devicetree, linux-arm-kernel, linux-sunxi

[-- Attachment #1: Type: text/plain, Size: 365 bytes --]

On Tue, Mar 29, 2016 at 05:22:27PM +0800, Chen-Yu Tsai wrote:
> The X-Powers AXP809 PMIC has a similar set of regulators as the AXP221,
> though a few LDOs were removed, and a new switch output added. Like the
> AXP221, AXP809 also has DC1SW and DC5LDO, which are internally chained
> to DCDC1 and DCDC5, respectively.

Reviewed-by: Mark Brown <broonie@kernel.org>

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 473 bytes --]

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [PATCH resend v2 4/9] regulator: axp20x: support AXP809 variant
@ 2016-03-29 16:09     ` Mark Brown
  0 siblings, 0 replies; 54+ messages in thread
From: Mark Brown @ 2016-03-29 16:09 UTC (permalink / raw)
  To: Chen-Yu Tsai
  Cc: Lee Jones, Liam Girdwood, Maxime Ripard,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw

[-- Attachment #1: Type: text/plain, Size: 393 bytes --]

On Tue, Mar 29, 2016 at 05:22:27PM +0800, Chen-Yu Tsai wrote:
> The X-Powers AXP809 PMIC has a similar set of regulators as the AXP221,
> though a few LDOs were removed, and a new switch output added. Like the
> AXP221, AXP809 also has DC1SW and DC5LDO, which are internally chained
> to DCDC1 and DCDC5, respectively.

Reviewed-by: Mark Brown <broonie-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>

^ permalink raw reply	[flat|nested] 54+ messages in thread

* [PATCH resend v2 4/9] regulator: axp20x: support AXP809 variant
@ 2016-03-29 16:09     ` Mark Brown
  0 siblings, 0 replies; 54+ messages in thread
From: Mark Brown @ 2016-03-29 16:09 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, Mar 29, 2016 at 05:22:27PM +0800, Chen-Yu Tsai wrote:
> The X-Powers AXP809 PMIC has a similar set of regulators as the AXP221,
> though a few LDOs were removed, and a new switch output added. Like the
> AXP221, AXP809 also has DC1SW and DC5LDO, which are internally chained
> to DCDC1 and DCDC5, respectively.

Reviewed-by: Mark Brown <broonie@kernel.org>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20160329/5971c247/attachment.sig>

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [PATCH resend v2 0/9] mfd: axp20x: Add support for AXP809 PMIC
@ 2016-04-11  0:27   ` Chen-Yu Tsai
  0 siblings, 0 replies; 54+ messages in thread
From: Chen-Yu Tsai @ 2016-04-11  0:27 UTC (permalink / raw)
  To: Lee Jones
  Cc: Liam Girdwood, Mark Brown, Maxime Ripard, linux-kernel,
	devicetree, linux-arm-kernel, linux-sunxi, Chen-Yu Tsai

Hi Lee,

On Tue, Mar 29, 2016 at 5:22 PM, Chen-Yu Tsai <wens@csie.org> wrote:
> Hi everyone,
>
> This is a resend of v2 of the AXP809 PMIC support series. This adds
> support for X-Powers' AXP809 PMIC. This is the primary PMIC accompanying
> Allwinner's A80 SoC. For now, only the power button (PEK) and regulators
> are supported. These are supported using existing axp20x drivers.
>
> Driver patches are based on v4.6-rc1, while DT patches are based on
> Maxime's sunxi/dt-for-4.7 branch.

Any news on this series? It's been almost 2 weeks since I reposted
them for 4.7, and longer since I first posted v2.


Regards
ChenYu


> Some regulator patches were merged into v4.6-rc1. Those have been
> dropped from this series. Other than that there are no changes.
>
> Patch 1 adds a MAINTAINERS entry for the X-Powers AXP PMICs.
> I list myself as the maintainer.
>
> Patch 2 adds AXP809 to the axp20x bindings.
>
> Patch 3 adds AXP809 support to the axp20x mfd driver.
>
> Patch 4 adds AXP809 support to the axp20x regulator driver.
> This patch depends on patch 3.
>
> Patch 5 adds a dtsi file for AXP809.
>
> Patch 6 enables AXP809 support on the A80 Optimus board.
>
> Patch 7 enables AXP809 support on the Cubieboard 4.
>
> Patch 8 disables the dummy regulators from sunxi-common-regulators.dtsi
> on the A80 Optimus board. These aren't used in the board DTS anymore.
>
> Patch 9 disables the dummy regulators from sunxi-common-regulators.dtsi,
> on the Cubieboard4. These aren't used in the board DTS anymore.
>
>
> Regards
> ChenYu
>
> Chen-Yu Tsai (9):
>   MAINTAINERS: Add entry for X-Powers AXP family PMIC drivers
>   mfd: axp20x: Add bindings for AXP809 PMIC
>   mfd: axp20x: Add support for AXP809 PMIC
>   regulator: axp20x: support AXP809 variant
>   ARM: dts: sunxi: Add dtsi file for AXP809 PMIC
>   ARM: dts: sun9i: a80-optimus: Add AXP809 PMIC device node and
>     regulators
>   ARM: dts: sun9i: cubieboard4: Add AXP809 PMIC device node and
>     regulators
>   ARM: dts: sun9i: a80-optimus: Disable dummy regulators vcc3v0, vcc3v3,
>     vcc5v0
>   ARM: dts: sun9i: cubieboard4: Disable dummy regulators vcc3v0, vcc3v3,
>     vcc5v0
>
>  Documentation/devicetree/bindings/mfd/axp20x.txt   |  31 ++++-
>  MAINTAINERS                                        |   6 +
>  .../dts/{sun9i-a80-cubieboard4.dts => axp809.dtsi} |  98 ++------------
>  arch/arm/boot/dts/sun9i-a80-cubieboard4.dts        | 143 ++++++++++++++++++++-
>  arch/arm/boot/dts/sun9i-a80-optimus.dts            | 143 ++++++++++++++++++++-
>  drivers/mfd/axp20x-rsb.c                           |   1 +
>  drivers/mfd/axp20x.c                               |  79 ++++++++++++
>  drivers/regulator/axp20x-regulator.c               | 119 ++++++++++++-----
>  include/linux/mfd/axp20x.h                         |  59 +++++++++
>  9 files changed, 554 insertions(+), 125 deletions(-)
>  copy arch/arm/boot/dts/{sun9i-a80-cubieboard4.dts => axp809.dtsi} (52%)
>
> --
> 2.7.0
>

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [PATCH resend v2 0/9] mfd: axp20x: Add support for AXP809 PMIC
@ 2016-04-11  0:27   ` Chen-Yu Tsai
  0 siblings, 0 replies; 54+ messages in thread
From: Chen-Yu Tsai @ 2016-04-11  0:27 UTC (permalink / raw)
  To: Lee Jones
  Cc: Liam Girdwood, Mark Brown, Maxime Ripard, linux-kernel,
	devicetree, linux-arm-kernel, linux-sunxi, Chen-Yu Tsai

Hi Lee,

On Tue, Mar 29, 2016 at 5:22 PM, Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org> wrote:
> Hi everyone,
>
> This is a resend of v2 of the AXP809 PMIC support series. This adds
> support for X-Powers' AXP809 PMIC. This is the primary PMIC accompanying
> Allwinner's A80 SoC. For now, only the power button (PEK) and regulators
> are supported. These are supported using existing axp20x drivers.
>
> Driver patches are based on v4.6-rc1, while DT patches are based on
> Maxime's sunxi/dt-for-4.7 branch.

Any news on this series? It's been almost 2 weeks since I reposted
them for 4.7, and longer since I first posted v2.


Regards
ChenYu


> Some regulator patches were merged into v4.6-rc1. Those have been
> dropped from this series. Other than that there are no changes.
>
> Patch 1 adds a MAINTAINERS entry for the X-Powers AXP PMICs.
> I list myself as the maintainer.
>
> Patch 2 adds AXP809 to the axp20x bindings.
>
> Patch 3 adds AXP809 support to the axp20x mfd driver.
>
> Patch 4 adds AXP809 support to the axp20x regulator driver.
> This patch depends on patch 3.
>
> Patch 5 adds a dtsi file for AXP809.
>
> Patch 6 enables AXP809 support on the A80 Optimus board.
>
> Patch 7 enables AXP809 support on the Cubieboard 4.
>
> Patch 8 disables the dummy regulators from sunxi-common-regulators.dtsi
> on the A80 Optimus board. These aren't used in the board DTS anymore.
>
> Patch 9 disables the dummy regulators from sunxi-common-regulators.dtsi,
> on the Cubieboard4. These aren't used in the board DTS anymore.
>
>
> Regards
> ChenYu
>
> Chen-Yu Tsai (9):
>   MAINTAINERS: Add entry for X-Powers AXP family PMIC drivers
>   mfd: axp20x: Add bindings for AXP809 PMIC
>   mfd: axp20x: Add support for AXP809 PMIC
>   regulator: axp20x: support AXP809 variant
>   ARM: dts: sunxi: Add dtsi file for AXP809 PMIC
>   ARM: dts: sun9i: a80-optimus: Add AXP809 PMIC device node and
>     regulators
>   ARM: dts: sun9i: cubieboard4: Add AXP809 PMIC device node and
>     regulators
>   ARM: dts: sun9i: a80-optimus: Disable dummy regulators vcc3v0, vcc3v3,
>     vcc5v0
>   ARM: dts: sun9i: cubieboard4: Disable dummy regulators vcc3v0, vcc3v3,
>     vcc5v0
>
>  Documentation/devicetree/bindings/mfd/axp20x.txt   |  31 ++++-
>  MAINTAINERS                                        |   6 +
>  .../dts/{sun9i-a80-cubieboard4.dts => axp809.dtsi} |  98 ++------------
>  arch/arm/boot/dts/sun9i-a80-cubieboard4.dts        | 143 ++++++++++++++++++++-
>  arch/arm/boot/dts/sun9i-a80-optimus.dts            | 143 ++++++++++++++++++++-
>  drivers/mfd/axp20x-rsb.c                           |   1 +
>  drivers/mfd/axp20x.c                               |  79 ++++++++++++
>  drivers/regulator/axp20x-regulator.c               | 119 ++++++++++++-----
>  include/linux/mfd/axp20x.h                         |  59 +++++++++
>  9 files changed, 554 insertions(+), 125 deletions(-)
>  copy arch/arm/boot/dts/{sun9i-a80-cubieboard4.dts => axp809.dtsi} (52%)
>
> --
> 2.7.0
>

^ permalink raw reply	[flat|nested] 54+ messages in thread

* [PATCH resend v2 0/9] mfd: axp20x: Add support for AXP809 PMIC
@ 2016-04-11  0:27   ` Chen-Yu Tsai
  0 siblings, 0 replies; 54+ messages in thread
From: Chen-Yu Tsai @ 2016-04-11  0:27 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Lee,

On Tue, Mar 29, 2016 at 5:22 PM, Chen-Yu Tsai <wens@csie.org> wrote:
> Hi everyone,
>
> This is a resend of v2 of the AXP809 PMIC support series. This adds
> support for X-Powers' AXP809 PMIC. This is the primary PMIC accompanying
> Allwinner's A80 SoC. For now, only the power button (PEK) and regulators
> are supported. These are supported using existing axp20x drivers.
>
> Driver patches are based on v4.6-rc1, while DT patches are based on
> Maxime's sunxi/dt-for-4.7 branch.

Any news on this series? It's been almost 2 weeks since I reposted
them for 4.7, and longer since I first posted v2.


Regards
ChenYu


> Some regulator patches were merged into v4.6-rc1. Those have been
> dropped from this series. Other than that there are no changes.
>
> Patch 1 adds a MAINTAINERS entry for the X-Powers AXP PMICs.
> I list myself as the maintainer.
>
> Patch 2 adds AXP809 to the axp20x bindings.
>
> Patch 3 adds AXP809 support to the axp20x mfd driver.
>
> Patch 4 adds AXP809 support to the axp20x regulator driver.
> This patch depends on patch 3.
>
> Patch 5 adds a dtsi file for AXP809.
>
> Patch 6 enables AXP809 support on the A80 Optimus board.
>
> Patch 7 enables AXP809 support on the Cubieboard 4.
>
> Patch 8 disables the dummy regulators from sunxi-common-regulators.dtsi
> on the A80 Optimus board. These aren't used in the board DTS anymore.
>
> Patch 9 disables the dummy regulators from sunxi-common-regulators.dtsi,
> on the Cubieboard4. These aren't used in the board DTS anymore.
>
>
> Regards
> ChenYu
>
> Chen-Yu Tsai (9):
>   MAINTAINERS: Add entry for X-Powers AXP family PMIC drivers
>   mfd: axp20x: Add bindings for AXP809 PMIC
>   mfd: axp20x: Add support for AXP809 PMIC
>   regulator: axp20x: support AXP809 variant
>   ARM: dts: sunxi: Add dtsi file for AXP809 PMIC
>   ARM: dts: sun9i: a80-optimus: Add AXP809 PMIC device node and
>     regulators
>   ARM: dts: sun9i: cubieboard4: Add AXP809 PMIC device node and
>     regulators
>   ARM: dts: sun9i: a80-optimus: Disable dummy regulators vcc3v0, vcc3v3,
>     vcc5v0
>   ARM: dts: sun9i: cubieboard4: Disable dummy regulators vcc3v0, vcc3v3,
>     vcc5v0
>
>  Documentation/devicetree/bindings/mfd/axp20x.txt   |  31 ++++-
>  MAINTAINERS                                        |   6 +
>  .../dts/{sun9i-a80-cubieboard4.dts => axp809.dtsi} |  98 ++------------
>  arch/arm/boot/dts/sun9i-a80-cubieboard4.dts        | 143 ++++++++++++++++++++-
>  arch/arm/boot/dts/sun9i-a80-optimus.dts            | 143 ++++++++++++++++++++-
>  drivers/mfd/axp20x-rsb.c                           |   1 +
>  drivers/mfd/axp20x.c                               |  79 ++++++++++++
>  drivers/regulator/axp20x-regulator.c               | 119 ++++++++++++-----
>  include/linux/mfd/axp20x.h                         |  59 +++++++++
>  9 files changed, 554 insertions(+), 125 deletions(-)
>  copy arch/arm/boot/dts/{sun9i-a80-cubieboard4.dts => axp809.dtsi} (52%)
>
> --
> 2.7.0
>

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [PATCH resend v2 0/9] mfd: axp20x: Add support for AXP809 PMIC
@ 2016-04-11  7:59     ` Lee Jones
  0 siblings, 0 replies; 54+ messages in thread
From: Lee Jones @ 2016-04-11  7:59 UTC (permalink / raw)
  To: Chen-Yu Tsai
  Cc: Liam Girdwood, Mark Brown, Maxime Ripard, linux-kernel,
	devicetree, linux-arm-kernel, linux-sunxi

On Mon, 11 Apr 2016, Chen-Yu Tsai wrote:
> On Tue, Mar 29, 2016 at 5:22 PM, Chen-Yu Tsai <wens@csie.org> wrote:
> > Hi everyone,
> >
> > This is a resend of v2 of the AXP809 PMIC support series. This adds
> > support for X-Powers' AXP809 PMIC. This is the primary PMIC accompanying
> > Allwinner's A80 SoC. For now, only the power button (PEK) and regulators
> > are supported. These are supported using existing axp20x drivers.
> >
> > Driver patches are based on v4.6-rc1, while DT patches are based on
> > Maxime's sunxi/dt-for-4.7 branch.
> 
> Any news on this series? It's been almost 2 weeks since I reposted
> them for 4.7, and longer since I first posted v2.

Nope, no news yet.

I'm swamped and will get round to them in good time.

> > Some regulator patches were merged into v4.6-rc1. Those have been
> > dropped from this series. Other than that there are no changes.
> >
> > Patch 1 adds a MAINTAINERS entry for the X-Powers AXP PMICs.
> > I list myself as the maintainer.
> >
> > Patch 2 adds AXP809 to the axp20x bindings.
> >
> > Patch 3 adds AXP809 support to the axp20x mfd driver.
> >
> > Patch 4 adds AXP809 support to the axp20x regulator driver.
> > This patch depends on patch 3.
> >
> > Patch 5 adds a dtsi file for AXP809.
> >
> > Patch 6 enables AXP809 support on the A80 Optimus board.
> >
> > Patch 7 enables AXP809 support on the Cubieboard 4.
> >
> > Patch 8 disables the dummy regulators from sunxi-common-regulators.dtsi
> > on the A80 Optimus board. These aren't used in the board DTS anymore.
> >
> > Patch 9 disables the dummy regulators from sunxi-common-regulators.dtsi,
> > on the Cubieboard4. These aren't used in the board DTS anymore.
> >
> >
> > Regards
> > ChenYu
> >
> > Chen-Yu Tsai (9):
> >   MAINTAINERS: Add entry for X-Powers AXP family PMIC drivers
> >   mfd: axp20x: Add bindings for AXP809 PMIC
> >   mfd: axp20x: Add support for AXP809 PMIC
> >   regulator: axp20x: support AXP809 variant
> >   ARM: dts: sunxi: Add dtsi file for AXP809 PMIC
> >   ARM: dts: sun9i: a80-optimus: Add AXP809 PMIC device node and
> >     regulators
> >   ARM: dts: sun9i: cubieboard4: Add AXP809 PMIC device node and
> >     regulators
> >   ARM: dts: sun9i: a80-optimus: Disable dummy regulators vcc3v0, vcc3v3,
> >     vcc5v0
> >   ARM: dts: sun9i: cubieboard4: Disable dummy regulators vcc3v0, vcc3v3,
> >     vcc5v0
> >
> >  Documentation/devicetree/bindings/mfd/axp20x.txt   |  31 ++++-
> >  MAINTAINERS                                        |   6 +
> >  .../dts/{sun9i-a80-cubieboard4.dts => axp809.dtsi} |  98 ++------------
> >  arch/arm/boot/dts/sun9i-a80-cubieboard4.dts        | 143 ++++++++++++++++++++-
> >  arch/arm/boot/dts/sun9i-a80-optimus.dts            | 143 ++++++++++++++++++++-
> >  drivers/mfd/axp20x-rsb.c                           |   1 +
> >  drivers/mfd/axp20x.c                               |  79 ++++++++++++
> >  drivers/regulator/axp20x-regulator.c               | 119 ++++++++++++-----
> >  include/linux/mfd/axp20x.h                         |  59 +++++++++
> >  9 files changed, 554 insertions(+), 125 deletions(-)
> >  copy arch/arm/boot/dts/{sun9i-a80-cubieboard4.dts => axp809.dtsi} (52%)
> >
> >

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

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [PATCH resend v2 0/9] mfd: axp20x: Add support for AXP809 PMIC
@ 2016-04-11  7:59     ` Lee Jones
  0 siblings, 0 replies; 54+ messages in thread
From: Lee Jones @ 2016-04-11  7:59 UTC (permalink / raw)
  To: Chen-Yu Tsai
  Cc: Liam Girdwood, Mark Brown, Maxime Ripard, linux-kernel,
	devicetree, linux-arm-kernel, linux-sunxi

On Mon, 11 Apr 2016, Chen-Yu Tsai wrote:
> On Tue, Mar 29, 2016 at 5:22 PM, Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org> wrote:
> > Hi everyone,
> >
> > This is a resend of v2 of the AXP809 PMIC support series. This adds
> > support for X-Powers' AXP809 PMIC. This is the primary PMIC accompanying
> > Allwinner's A80 SoC. For now, only the power button (PEK) and regulators
> > are supported. These are supported using existing axp20x drivers.
> >
> > Driver patches are based on v4.6-rc1, while DT patches are based on
> > Maxime's sunxi/dt-for-4.7 branch.
> 
> Any news on this series? It's been almost 2 weeks since I reposted
> them for 4.7, and longer since I first posted v2.

Nope, no news yet.

I'm swamped and will get round to them in good time.

> > Some regulator patches were merged into v4.6-rc1. Those have been
> > dropped from this series. Other than that there are no changes.
> >
> > Patch 1 adds a MAINTAINERS entry for the X-Powers AXP PMICs.
> > I list myself as the maintainer.
> >
> > Patch 2 adds AXP809 to the axp20x bindings.
> >
> > Patch 3 adds AXP809 support to the axp20x mfd driver.
> >
> > Patch 4 adds AXP809 support to the axp20x regulator driver.
> > This patch depends on patch 3.
> >
> > Patch 5 adds a dtsi file for AXP809.
> >
> > Patch 6 enables AXP809 support on the A80 Optimus board.
> >
> > Patch 7 enables AXP809 support on the Cubieboard 4.
> >
> > Patch 8 disables the dummy regulators from sunxi-common-regulators.dtsi
> > on the A80 Optimus board. These aren't used in the board DTS anymore.
> >
> > Patch 9 disables the dummy regulators from sunxi-common-regulators.dtsi,
> > on the Cubieboard4. These aren't used in the board DTS anymore.
> >
> >
> > Regards
> > ChenYu
> >
> > Chen-Yu Tsai (9):
> >   MAINTAINERS: Add entry for X-Powers AXP family PMIC drivers
> >   mfd: axp20x: Add bindings for AXP809 PMIC
> >   mfd: axp20x: Add support for AXP809 PMIC
> >   regulator: axp20x: support AXP809 variant
> >   ARM: dts: sunxi: Add dtsi file for AXP809 PMIC
> >   ARM: dts: sun9i: a80-optimus: Add AXP809 PMIC device node and
> >     regulators
> >   ARM: dts: sun9i: cubieboard4: Add AXP809 PMIC device node and
> >     regulators
> >   ARM: dts: sun9i: a80-optimus: Disable dummy regulators vcc3v0, vcc3v3,
> >     vcc5v0
> >   ARM: dts: sun9i: cubieboard4: Disable dummy regulators vcc3v0, vcc3v3,
> >     vcc5v0
> >
> >  Documentation/devicetree/bindings/mfd/axp20x.txt   |  31 ++++-
> >  MAINTAINERS                                        |   6 +
> >  .../dts/{sun9i-a80-cubieboard4.dts => axp809.dtsi} |  98 ++------------
> >  arch/arm/boot/dts/sun9i-a80-cubieboard4.dts        | 143 ++++++++++++++++++++-
> >  arch/arm/boot/dts/sun9i-a80-optimus.dts            | 143 ++++++++++++++++++++-
> >  drivers/mfd/axp20x-rsb.c                           |   1 +
> >  drivers/mfd/axp20x.c                               |  79 ++++++++++++
> >  drivers/regulator/axp20x-regulator.c               | 119 ++++++++++++-----
> >  include/linux/mfd/axp20x.h                         |  59 +++++++++
> >  9 files changed, 554 insertions(+), 125 deletions(-)
> >  copy arch/arm/boot/dts/{sun9i-a80-cubieboard4.dts => axp809.dtsi} (52%)
> >
> >

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

-- 
You received this message because you are subscribed to the Google Groups "linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email to linux-sunxi+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit https://groups.google.com/d/optout.

^ permalink raw reply	[flat|nested] 54+ messages in thread

* [PATCH resend v2 0/9] mfd: axp20x: Add support for AXP809 PMIC
@ 2016-04-11  7:59     ` Lee Jones
  0 siblings, 0 replies; 54+ messages in thread
From: Lee Jones @ 2016-04-11  7:59 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, 11 Apr 2016, Chen-Yu Tsai wrote:
> On Tue, Mar 29, 2016 at 5:22 PM, Chen-Yu Tsai <wens@csie.org> wrote:
> > Hi everyone,
> >
> > This is a resend of v2 of the AXP809 PMIC support series. This adds
> > support for X-Powers' AXP809 PMIC. This is the primary PMIC accompanying
> > Allwinner's A80 SoC. For now, only the power button (PEK) and regulators
> > are supported. These are supported using existing axp20x drivers.
> >
> > Driver patches are based on v4.6-rc1, while DT patches are based on
> > Maxime's sunxi/dt-for-4.7 branch.
> 
> Any news on this series? It's been almost 2 weeks since I reposted
> them for 4.7, and longer since I first posted v2.

Nope, no news yet.

I'm swamped and will get round to them in good time.

> > Some regulator patches were merged into v4.6-rc1. Those have been
> > dropped from this series. Other than that there are no changes.
> >
> > Patch 1 adds a MAINTAINERS entry for the X-Powers AXP PMICs.
> > I list myself as the maintainer.
> >
> > Patch 2 adds AXP809 to the axp20x bindings.
> >
> > Patch 3 adds AXP809 support to the axp20x mfd driver.
> >
> > Patch 4 adds AXP809 support to the axp20x regulator driver.
> > This patch depends on patch 3.
> >
> > Patch 5 adds a dtsi file for AXP809.
> >
> > Patch 6 enables AXP809 support on the A80 Optimus board.
> >
> > Patch 7 enables AXP809 support on the Cubieboard 4.
> >
> > Patch 8 disables the dummy regulators from sunxi-common-regulators.dtsi
> > on the A80 Optimus board. These aren't used in the board DTS anymore.
> >
> > Patch 9 disables the dummy regulators from sunxi-common-regulators.dtsi,
> > on the Cubieboard4. These aren't used in the board DTS anymore.
> >
> >
> > Regards
> > ChenYu
> >
> > Chen-Yu Tsai (9):
> >   MAINTAINERS: Add entry for X-Powers AXP family PMIC drivers
> >   mfd: axp20x: Add bindings for AXP809 PMIC
> >   mfd: axp20x: Add support for AXP809 PMIC
> >   regulator: axp20x: support AXP809 variant
> >   ARM: dts: sunxi: Add dtsi file for AXP809 PMIC
> >   ARM: dts: sun9i: a80-optimus: Add AXP809 PMIC device node and
> >     regulators
> >   ARM: dts: sun9i: cubieboard4: Add AXP809 PMIC device node and
> >     regulators
> >   ARM: dts: sun9i: a80-optimus: Disable dummy regulators vcc3v0, vcc3v3,
> >     vcc5v0
> >   ARM: dts: sun9i: cubieboard4: Disable dummy regulators vcc3v0, vcc3v3,
> >     vcc5v0
> >
> >  Documentation/devicetree/bindings/mfd/axp20x.txt   |  31 ++++-
> >  MAINTAINERS                                        |   6 +
> >  .../dts/{sun9i-a80-cubieboard4.dts => axp809.dtsi} |  98 ++------------
> >  arch/arm/boot/dts/sun9i-a80-cubieboard4.dts        | 143 ++++++++++++++++++++-
> >  arch/arm/boot/dts/sun9i-a80-optimus.dts            | 143 ++++++++++++++++++++-
> >  drivers/mfd/axp20x-rsb.c                           |   1 +
> >  drivers/mfd/axp20x.c                               |  79 ++++++++++++
> >  drivers/regulator/axp20x-regulator.c               | 119 ++++++++++++-----
> >  include/linux/mfd/axp20x.h                         |  59 +++++++++
> >  9 files changed, 554 insertions(+), 125 deletions(-)
> >  copy arch/arm/boot/dts/{sun9i-a80-cubieboard4.dts => axp809.dtsi} (52%)
> >
> >

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

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [PATCH resend v2 3/9] mfd: axp20x: Add support for AXP809 PMIC
@ 2016-04-11  8:24     ` Lee Jones
  0 siblings, 0 replies; 54+ messages in thread
From: Lee Jones @ 2016-04-11  8:24 UTC (permalink / raw)
  To: Chen-Yu Tsai
  Cc: Liam Girdwood, Mark Brown, Maxime Ripard, linux-kernel,
	devicetree, linux-arm-kernel, linux-sunxi

On Tue, 29 Mar 2016, Chen-Yu Tsai wrote:

> The X-Powers AXP809 is a new PMIC that is paired with Allwinner's A80
> SoC, along with a slave AXP806 PMIC.
> 
> This PMIC is quite similar to the earlier AXP223, though the interrupts
> and regulator have changed a bit.
> 
> This patch adds support for the interrupts and power button of the PMIC.
> 
> Signed-off-by: Chen-Yu Tsai <wens@csie.org>
> ---
>  drivers/mfd/axp20x-rsb.c   |  1 +
>  drivers/mfd/axp20x.c       | 79 ++++++++++++++++++++++++++++++++++++++++++++++
>  include/linux/mfd/axp20x.h | 59 ++++++++++++++++++++++++++++++++++
>  3 files changed, 139 insertions(+)

Applied, thanks.

> diff --git a/drivers/mfd/axp20x-rsb.c b/drivers/mfd/axp20x-rsb.c
> index 28c20247c112..a407527bcd09 100644
> --- a/drivers/mfd/axp20x-rsb.c
> +++ b/drivers/mfd/axp20x-rsb.c
> @@ -61,6 +61,7 @@ static int axp20x_rsb_remove(struct sunxi_rsb_device *rdev)
>  
>  static const struct of_device_id axp20x_rsb_of_match[] = {
>  	{ .compatible = "x-powers,axp223", .data = (void *)AXP223_ID },
> +	{ .compatible = "x-powers,axp809", .data = (void *)AXP809_ID },
>  	{ },
>  };
>  MODULE_DEVICE_TABLE(of, axp20x_rsb_of_match);
> diff --git a/drivers/mfd/axp20x.c b/drivers/mfd/axp20x.c
> index a57d6e940610..1ce923277cc8 100644
> --- a/drivers/mfd/axp20x.c
> +++ b/drivers/mfd/axp20x.c
> @@ -37,6 +37,7 @@ static const char * const axp20x_model_names[] = {
>  	"AXP221",
>  	"AXP223",
>  	"AXP288",
> +	"AXP809",
>  };
>  
>  static const struct regmap_range axp152_writeable_ranges[] = {
> @@ -85,6 +86,7 @@ static const struct regmap_access_table axp20x_volatile_table = {
>  	.n_yes_ranges	= ARRAY_SIZE(axp20x_volatile_ranges),
>  };
>  
> +/* AXP22x ranges are shared with the AXP809, as they cover the same range */
>  static const struct regmap_range axp22x_writeable_ranges[] = {
>  	regmap_reg_range(AXP20X_DATACACHE(0), AXP20X_IRQ5_STATE),
>  	regmap_reg_range(AXP20X_DCDC_MODE, AXP22X_BATLOW_THRES1),
> @@ -211,6 +213,20 @@ static struct resource axp288_fuel_gauge_resources[] = {
>  	},
>  };
>  
> +static struct resource axp809_pek_resources[] = {
> +	{
> +		.name   = "PEK_DBR",
> +		.start  = AXP809_IRQ_PEK_RIS_EDGE,
> +		.end    = AXP809_IRQ_PEK_RIS_EDGE,
> +		.flags  = IORESOURCE_IRQ,
> +	}, {
> +		.name   = "PEK_DBF",
> +		.start  = AXP809_IRQ_PEK_FAL_EDGE,
> +		.end    = AXP809_IRQ_PEK_FAL_EDGE,
> +		.flags  = IORESOURCE_IRQ,
> +	},
> +};
> +
>  static const struct regmap_config axp152_regmap_config = {
>  	.reg_bits	= 8,
>  	.val_bits	= 8,
> @@ -378,6 +394,41 @@ static const struct regmap_irq axp288_regmap_irqs[] = {
>  	INIT_REGMAP_IRQ(AXP288, BC_USB_CHNG,            5, 1),
>  };
>  
> +static const struct regmap_irq axp809_regmap_irqs[] = {
> +	INIT_REGMAP_IRQ(AXP809, ACIN_OVER_V,		0, 7),
> +	INIT_REGMAP_IRQ(AXP809, ACIN_PLUGIN,		0, 6),
> +	INIT_REGMAP_IRQ(AXP809, ACIN_REMOVAL,	        0, 5),
> +	INIT_REGMAP_IRQ(AXP809, VBUS_OVER_V,		0, 4),
> +	INIT_REGMAP_IRQ(AXP809, VBUS_PLUGIN,		0, 3),
> +	INIT_REGMAP_IRQ(AXP809, VBUS_REMOVAL,	        0, 2),
> +	INIT_REGMAP_IRQ(AXP809, VBUS_V_LOW,		0, 1),
> +	INIT_REGMAP_IRQ(AXP809, BATT_PLUGIN,		1, 7),
> +	INIT_REGMAP_IRQ(AXP809, BATT_REMOVAL,	        1, 6),
> +	INIT_REGMAP_IRQ(AXP809, BATT_ENT_ACT_MODE,	1, 5),
> +	INIT_REGMAP_IRQ(AXP809, BATT_EXIT_ACT_MODE,	1, 4),
> +	INIT_REGMAP_IRQ(AXP809, CHARG,		        1, 3),
> +	INIT_REGMAP_IRQ(AXP809, CHARG_DONE,		1, 2),
> +	INIT_REGMAP_IRQ(AXP809, BATT_CHG_TEMP_HIGH,	2, 7),
> +	INIT_REGMAP_IRQ(AXP809, BATT_CHG_TEMP_HIGH_END,	2, 6),
> +	INIT_REGMAP_IRQ(AXP809, BATT_CHG_TEMP_LOW,	2, 5),
> +	INIT_REGMAP_IRQ(AXP809, BATT_CHG_TEMP_LOW_END,	2, 4),
> +	INIT_REGMAP_IRQ(AXP809, BATT_ACT_TEMP_HIGH,	2, 3),
> +	INIT_REGMAP_IRQ(AXP809, BATT_ACT_TEMP_HIGH_END,	2, 2),
> +	INIT_REGMAP_IRQ(AXP809, BATT_ACT_TEMP_LOW,	2, 1),
> +	INIT_REGMAP_IRQ(AXP809, BATT_ACT_TEMP_LOW_END,	2, 0),
> +	INIT_REGMAP_IRQ(AXP809, DIE_TEMP_HIGH,	        3, 7),
> +	INIT_REGMAP_IRQ(AXP809, LOW_PWR_LVL1,	        3, 1),
> +	INIT_REGMAP_IRQ(AXP809, LOW_PWR_LVL2,	        3, 0),
> +	INIT_REGMAP_IRQ(AXP809, TIMER,		        4, 7),
> +	INIT_REGMAP_IRQ(AXP809, PEK_RIS_EDGE,	        4, 6),
> +	INIT_REGMAP_IRQ(AXP809, PEK_FAL_EDGE,	        4, 5),
> +	INIT_REGMAP_IRQ(AXP809, PEK_SHORT,		4, 4),
> +	INIT_REGMAP_IRQ(AXP809, PEK_LONG,		4, 3),
> +	INIT_REGMAP_IRQ(AXP809, PEK_OVER_OFF,		4, 2),
> +	INIT_REGMAP_IRQ(AXP809, GPIO1_INPUT,		4, 1),
> +	INIT_REGMAP_IRQ(AXP809, GPIO0_INPUT,		4, 0),
> +};
> +
>  static const struct regmap_irq_chip axp152_regmap_irq_chip = {
>  	.name			= "axp152_irq_chip",
>  	.status_base		= AXP152_IRQ1_STATE,
> @@ -428,6 +479,18 @@ static const struct regmap_irq_chip axp288_regmap_irq_chip = {
>  
>  };
>  
> +static const struct regmap_irq_chip axp809_regmap_irq_chip = {
> +	.name			= "axp809",
> +	.status_base		= AXP20X_IRQ1_STATE,
> +	.ack_base		= AXP20X_IRQ1_STATE,
> +	.mask_base		= AXP20X_IRQ1_EN,
> +	.mask_invert		= true,
> +	.init_ack_masked	= true,
> +	.irqs			= axp809_regmap_irqs,
> +	.num_irqs		= ARRAY_SIZE(axp809_regmap_irqs),
> +	.num_regs		= 5,
> +};
> +
>  static struct mfd_cell axp20x_cells[] = {
>  	{
>  		.name		= "axp20x-pek",
> @@ -572,6 +635,16 @@ static struct mfd_cell axp288_cells[] = {
>  	},
>  };
>  
> +static struct mfd_cell axp809_cells[] = {
> +	{
> +		.name			= "axp20x-pek",
> +		.num_resources		= ARRAY_SIZE(axp809_pek_resources),
> +		.resources		= axp809_pek_resources,
> +	}, {
> +		.name			= "axp20x-regulator",
> +	},
> +};
> +
>  static struct axp20x_dev *axp20x_pm_power_off;
>  static void axp20x_power_off(void)
>  {
> @@ -631,6 +704,12 @@ int axp20x_match_device(struct axp20x_dev *axp20x)
>  		axp20x->regmap_cfg = &axp288_regmap_config;
>  		axp20x->regmap_irq_chip = &axp288_regmap_irq_chip;
>  		break;
> +	case AXP809_ID:
> +		axp20x->nr_cells = ARRAY_SIZE(axp809_cells);
> +		axp20x->cells = axp809_cells;
> +		axp20x->regmap_cfg = &axp22x_regmap_config;
> +		axp20x->regmap_irq_chip = &axp809_regmap_irq_chip;
> +		break;
>  	default:
>  		dev_err(dev, "unsupported AXP20X ID %lu\n", axp20x->variant);
>  		return -EINVAL;
> diff --git a/include/linux/mfd/axp20x.h b/include/linux/mfd/axp20x.h
> index d82e7d51372b..0be4982f08fe 100644
> --- a/include/linux/mfd/axp20x.h
> +++ b/include/linux/mfd/axp20x.h
> @@ -20,6 +20,7 @@ enum {
>  	AXP221_ID,
>  	AXP223_ID,
>  	AXP288_ID,
> +	AXP809_ID,
>  	NR_AXP20X_VARIANTS,
>  };
>  
> @@ -264,6 +265,29 @@ enum {
>  	AXP22X_REG_ID_MAX,
>  };
>  
> +enum {
> +	AXP809_DCDC1 = 0,
> +	AXP809_DCDC2,
> +	AXP809_DCDC3,
> +	AXP809_DCDC4,
> +	AXP809_DCDC5,
> +	AXP809_DC1SW,
> +	AXP809_DC5LDO,
> +	AXP809_ALDO1,
> +	AXP809_ALDO2,
> +	AXP809_ALDO3,
> +	AXP809_ELDO1,
> +	AXP809_ELDO2,
> +	AXP809_ELDO3,
> +	AXP809_DLDO1,
> +	AXP809_DLDO2,
> +	AXP809_RTC_LDO,
> +	AXP809_LDO_IO0,
> +	AXP809_LDO_IO1,
> +	AXP809_SW,
> +	AXP809_REG_ID_MAX,
> +};
> +
>  /* IRQs */
>  enum {
>  	AXP152_IRQ_LDO0IN_CONNECT = 1,
> @@ -390,6 +414,41 @@ enum axp288_irqs {
>  	AXP288_IRQ_BC_USB_CHNG,
>  };
>  
> +enum axp809_irqs {
> +	AXP809_IRQ_ACIN_OVER_V = 1,
> +	AXP809_IRQ_ACIN_PLUGIN,
> +	AXP809_IRQ_ACIN_REMOVAL,
> +	AXP809_IRQ_VBUS_OVER_V,
> +	AXP809_IRQ_VBUS_PLUGIN,
> +	AXP809_IRQ_VBUS_REMOVAL,
> +	AXP809_IRQ_VBUS_V_LOW,
> +	AXP809_IRQ_BATT_PLUGIN,
> +	AXP809_IRQ_BATT_REMOVAL,
> +	AXP809_IRQ_BATT_ENT_ACT_MODE,
> +	AXP809_IRQ_BATT_EXIT_ACT_MODE,
> +	AXP809_IRQ_CHARG,
> +	AXP809_IRQ_CHARG_DONE,
> +	AXP809_IRQ_BATT_CHG_TEMP_HIGH,
> +	AXP809_IRQ_BATT_CHG_TEMP_HIGH_END,
> +	AXP809_IRQ_BATT_CHG_TEMP_LOW,
> +	AXP809_IRQ_BATT_CHG_TEMP_LOW_END,
> +	AXP809_IRQ_BATT_ACT_TEMP_HIGH,
> +	AXP809_IRQ_BATT_ACT_TEMP_HIGH_END,
> +	AXP809_IRQ_BATT_ACT_TEMP_LOW,
> +	AXP809_IRQ_BATT_ACT_TEMP_LOW_END,
> +	AXP809_IRQ_DIE_TEMP_HIGH,
> +	AXP809_IRQ_LOW_PWR_LVL1,
> +	AXP809_IRQ_LOW_PWR_LVL2,
> +	AXP809_IRQ_TIMER,
> +	AXP809_IRQ_PEK_RIS_EDGE,
> +	AXP809_IRQ_PEK_FAL_EDGE,
> +	AXP809_IRQ_PEK_SHORT,
> +	AXP809_IRQ_PEK_LONG,
> +	AXP809_IRQ_PEK_OVER_OFF,
> +	AXP809_IRQ_GPIO1_INPUT,
> +	AXP809_IRQ_GPIO0_INPUT,
> +};
> +
>  #define AXP288_TS_ADC_H		0x58
>  #define AXP288_TS_ADC_L		0x59
>  #define AXP288_GP_ADC_H		0x5a

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

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [PATCH resend v2 3/9] mfd: axp20x: Add support for AXP809 PMIC
@ 2016-04-11  8:24     ` Lee Jones
  0 siblings, 0 replies; 54+ messages in thread
From: Lee Jones @ 2016-04-11  8:24 UTC (permalink / raw)
  To: Chen-Yu Tsai
  Cc: Liam Girdwood, Mark Brown, Maxime Ripard,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw

On Tue, 29 Mar 2016, Chen-Yu Tsai wrote:

> The X-Powers AXP809 is a new PMIC that is paired with Allwinner's A80
> SoC, along with a slave AXP806 PMIC.
> 
> This PMIC is quite similar to the earlier AXP223, though the interrupts
> and regulator have changed a bit.
> 
> This patch adds support for the interrupts and power button of the PMIC.
> 
> Signed-off-by: Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>
> ---
>  drivers/mfd/axp20x-rsb.c   |  1 +
>  drivers/mfd/axp20x.c       | 79 ++++++++++++++++++++++++++++++++++++++++++++++
>  include/linux/mfd/axp20x.h | 59 ++++++++++++++++++++++++++++++++++
>  3 files changed, 139 insertions(+)

Applied, thanks.

> diff --git a/drivers/mfd/axp20x-rsb.c b/drivers/mfd/axp20x-rsb.c
> index 28c20247c112..a407527bcd09 100644
> --- a/drivers/mfd/axp20x-rsb.c
> +++ b/drivers/mfd/axp20x-rsb.c
> @@ -61,6 +61,7 @@ static int axp20x_rsb_remove(struct sunxi_rsb_device *rdev)
>  
>  static const struct of_device_id axp20x_rsb_of_match[] = {
>  	{ .compatible = "x-powers,axp223", .data = (void *)AXP223_ID },
> +	{ .compatible = "x-powers,axp809", .data = (void *)AXP809_ID },
>  	{ },
>  };
>  MODULE_DEVICE_TABLE(of, axp20x_rsb_of_match);
> diff --git a/drivers/mfd/axp20x.c b/drivers/mfd/axp20x.c
> index a57d6e940610..1ce923277cc8 100644
> --- a/drivers/mfd/axp20x.c
> +++ b/drivers/mfd/axp20x.c
> @@ -37,6 +37,7 @@ static const char * const axp20x_model_names[] = {
>  	"AXP221",
>  	"AXP223",
>  	"AXP288",
> +	"AXP809",
>  };
>  
>  static const struct regmap_range axp152_writeable_ranges[] = {
> @@ -85,6 +86,7 @@ static const struct regmap_access_table axp20x_volatile_table = {
>  	.n_yes_ranges	= ARRAY_SIZE(axp20x_volatile_ranges),
>  };
>  
> +/* AXP22x ranges are shared with the AXP809, as they cover the same range */
>  static const struct regmap_range axp22x_writeable_ranges[] = {
>  	regmap_reg_range(AXP20X_DATACACHE(0), AXP20X_IRQ5_STATE),
>  	regmap_reg_range(AXP20X_DCDC_MODE, AXP22X_BATLOW_THRES1),
> @@ -211,6 +213,20 @@ static struct resource axp288_fuel_gauge_resources[] = {
>  	},
>  };
>  
> +static struct resource axp809_pek_resources[] = {
> +	{
> +		.name   = "PEK_DBR",
> +		.start  = AXP809_IRQ_PEK_RIS_EDGE,
> +		.end    = AXP809_IRQ_PEK_RIS_EDGE,
> +		.flags  = IORESOURCE_IRQ,
> +	}, {
> +		.name   = "PEK_DBF",
> +		.start  = AXP809_IRQ_PEK_FAL_EDGE,
> +		.end    = AXP809_IRQ_PEK_FAL_EDGE,
> +		.flags  = IORESOURCE_IRQ,
> +	},
> +};
> +
>  static const struct regmap_config axp152_regmap_config = {
>  	.reg_bits	= 8,
>  	.val_bits	= 8,
> @@ -378,6 +394,41 @@ static const struct regmap_irq axp288_regmap_irqs[] = {
>  	INIT_REGMAP_IRQ(AXP288, BC_USB_CHNG,            5, 1),
>  };
>  
> +static const struct regmap_irq axp809_regmap_irqs[] = {
> +	INIT_REGMAP_IRQ(AXP809, ACIN_OVER_V,		0, 7),
> +	INIT_REGMAP_IRQ(AXP809, ACIN_PLUGIN,		0, 6),
> +	INIT_REGMAP_IRQ(AXP809, ACIN_REMOVAL,	        0, 5),
> +	INIT_REGMAP_IRQ(AXP809, VBUS_OVER_V,		0, 4),
> +	INIT_REGMAP_IRQ(AXP809, VBUS_PLUGIN,		0, 3),
> +	INIT_REGMAP_IRQ(AXP809, VBUS_REMOVAL,	        0, 2),
> +	INIT_REGMAP_IRQ(AXP809, VBUS_V_LOW,		0, 1),
> +	INIT_REGMAP_IRQ(AXP809, BATT_PLUGIN,		1, 7),
> +	INIT_REGMAP_IRQ(AXP809, BATT_REMOVAL,	        1, 6),
> +	INIT_REGMAP_IRQ(AXP809, BATT_ENT_ACT_MODE,	1, 5),
> +	INIT_REGMAP_IRQ(AXP809, BATT_EXIT_ACT_MODE,	1, 4),
> +	INIT_REGMAP_IRQ(AXP809, CHARG,		        1, 3),
> +	INIT_REGMAP_IRQ(AXP809, CHARG_DONE,		1, 2),
> +	INIT_REGMAP_IRQ(AXP809, BATT_CHG_TEMP_HIGH,	2, 7),
> +	INIT_REGMAP_IRQ(AXP809, BATT_CHG_TEMP_HIGH_END,	2, 6),
> +	INIT_REGMAP_IRQ(AXP809, BATT_CHG_TEMP_LOW,	2, 5),
> +	INIT_REGMAP_IRQ(AXP809, BATT_CHG_TEMP_LOW_END,	2, 4),
> +	INIT_REGMAP_IRQ(AXP809, BATT_ACT_TEMP_HIGH,	2, 3),
> +	INIT_REGMAP_IRQ(AXP809, BATT_ACT_TEMP_HIGH_END,	2, 2),
> +	INIT_REGMAP_IRQ(AXP809, BATT_ACT_TEMP_LOW,	2, 1),
> +	INIT_REGMAP_IRQ(AXP809, BATT_ACT_TEMP_LOW_END,	2, 0),
> +	INIT_REGMAP_IRQ(AXP809, DIE_TEMP_HIGH,	        3, 7),
> +	INIT_REGMAP_IRQ(AXP809, LOW_PWR_LVL1,	        3, 1),
> +	INIT_REGMAP_IRQ(AXP809, LOW_PWR_LVL2,	        3, 0),
> +	INIT_REGMAP_IRQ(AXP809, TIMER,		        4, 7),
> +	INIT_REGMAP_IRQ(AXP809, PEK_RIS_EDGE,	        4, 6),
> +	INIT_REGMAP_IRQ(AXP809, PEK_FAL_EDGE,	        4, 5),
> +	INIT_REGMAP_IRQ(AXP809, PEK_SHORT,		4, 4),
> +	INIT_REGMAP_IRQ(AXP809, PEK_LONG,		4, 3),
> +	INIT_REGMAP_IRQ(AXP809, PEK_OVER_OFF,		4, 2),
> +	INIT_REGMAP_IRQ(AXP809, GPIO1_INPUT,		4, 1),
> +	INIT_REGMAP_IRQ(AXP809, GPIO0_INPUT,		4, 0),
> +};
> +
>  static const struct regmap_irq_chip axp152_regmap_irq_chip = {
>  	.name			= "axp152_irq_chip",
>  	.status_base		= AXP152_IRQ1_STATE,
> @@ -428,6 +479,18 @@ static const struct regmap_irq_chip axp288_regmap_irq_chip = {
>  
>  };
>  
> +static const struct regmap_irq_chip axp809_regmap_irq_chip = {
> +	.name			= "axp809",
> +	.status_base		= AXP20X_IRQ1_STATE,
> +	.ack_base		= AXP20X_IRQ1_STATE,
> +	.mask_base		= AXP20X_IRQ1_EN,
> +	.mask_invert		= true,
> +	.init_ack_masked	= true,
> +	.irqs			= axp809_regmap_irqs,
> +	.num_irqs		= ARRAY_SIZE(axp809_regmap_irqs),
> +	.num_regs		= 5,
> +};
> +
>  static struct mfd_cell axp20x_cells[] = {
>  	{
>  		.name		= "axp20x-pek",
> @@ -572,6 +635,16 @@ static struct mfd_cell axp288_cells[] = {
>  	},
>  };
>  
> +static struct mfd_cell axp809_cells[] = {
> +	{
> +		.name			= "axp20x-pek",
> +		.num_resources		= ARRAY_SIZE(axp809_pek_resources),
> +		.resources		= axp809_pek_resources,
> +	}, {
> +		.name			= "axp20x-regulator",
> +	},
> +};
> +
>  static struct axp20x_dev *axp20x_pm_power_off;
>  static void axp20x_power_off(void)
>  {
> @@ -631,6 +704,12 @@ int axp20x_match_device(struct axp20x_dev *axp20x)
>  		axp20x->regmap_cfg = &axp288_regmap_config;
>  		axp20x->regmap_irq_chip = &axp288_regmap_irq_chip;
>  		break;
> +	case AXP809_ID:
> +		axp20x->nr_cells = ARRAY_SIZE(axp809_cells);
> +		axp20x->cells = axp809_cells;
> +		axp20x->regmap_cfg = &axp22x_regmap_config;
> +		axp20x->regmap_irq_chip = &axp809_regmap_irq_chip;
> +		break;
>  	default:
>  		dev_err(dev, "unsupported AXP20X ID %lu\n", axp20x->variant);
>  		return -EINVAL;
> diff --git a/include/linux/mfd/axp20x.h b/include/linux/mfd/axp20x.h
> index d82e7d51372b..0be4982f08fe 100644
> --- a/include/linux/mfd/axp20x.h
> +++ b/include/linux/mfd/axp20x.h
> @@ -20,6 +20,7 @@ enum {
>  	AXP221_ID,
>  	AXP223_ID,
>  	AXP288_ID,
> +	AXP809_ID,
>  	NR_AXP20X_VARIANTS,
>  };
>  
> @@ -264,6 +265,29 @@ enum {
>  	AXP22X_REG_ID_MAX,
>  };
>  
> +enum {
> +	AXP809_DCDC1 = 0,
> +	AXP809_DCDC2,
> +	AXP809_DCDC3,
> +	AXP809_DCDC4,
> +	AXP809_DCDC5,
> +	AXP809_DC1SW,
> +	AXP809_DC5LDO,
> +	AXP809_ALDO1,
> +	AXP809_ALDO2,
> +	AXP809_ALDO3,
> +	AXP809_ELDO1,
> +	AXP809_ELDO2,
> +	AXP809_ELDO3,
> +	AXP809_DLDO1,
> +	AXP809_DLDO2,
> +	AXP809_RTC_LDO,
> +	AXP809_LDO_IO0,
> +	AXP809_LDO_IO1,
> +	AXP809_SW,
> +	AXP809_REG_ID_MAX,
> +};
> +
>  /* IRQs */
>  enum {
>  	AXP152_IRQ_LDO0IN_CONNECT = 1,
> @@ -390,6 +414,41 @@ enum axp288_irqs {
>  	AXP288_IRQ_BC_USB_CHNG,
>  };
>  
> +enum axp809_irqs {
> +	AXP809_IRQ_ACIN_OVER_V = 1,
> +	AXP809_IRQ_ACIN_PLUGIN,
> +	AXP809_IRQ_ACIN_REMOVAL,
> +	AXP809_IRQ_VBUS_OVER_V,
> +	AXP809_IRQ_VBUS_PLUGIN,
> +	AXP809_IRQ_VBUS_REMOVAL,
> +	AXP809_IRQ_VBUS_V_LOW,
> +	AXP809_IRQ_BATT_PLUGIN,
> +	AXP809_IRQ_BATT_REMOVAL,
> +	AXP809_IRQ_BATT_ENT_ACT_MODE,
> +	AXP809_IRQ_BATT_EXIT_ACT_MODE,
> +	AXP809_IRQ_CHARG,
> +	AXP809_IRQ_CHARG_DONE,
> +	AXP809_IRQ_BATT_CHG_TEMP_HIGH,
> +	AXP809_IRQ_BATT_CHG_TEMP_HIGH_END,
> +	AXP809_IRQ_BATT_CHG_TEMP_LOW,
> +	AXP809_IRQ_BATT_CHG_TEMP_LOW_END,
> +	AXP809_IRQ_BATT_ACT_TEMP_HIGH,
> +	AXP809_IRQ_BATT_ACT_TEMP_HIGH_END,
> +	AXP809_IRQ_BATT_ACT_TEMP_LOW,
> +	AXP809_IRQ_BATT_ACT_TEMP_LOW_END,
> +	AXP809_IRQ_DIE_TEMP_HIGH,
> +	AXP809_IRQ_LOW_PWR_LVL1,
> +	AXP809_IRQ_LOW_PWR_LVL2,
> +	AXP809_IRQ_TIMER,
> +	AXP809_IRQ_PEK_RIS_EDGE,
> +	AXP809_IRQ_PEK_FAL_EDGE,
> +	AXP809_IRQ_PEK_SHORT,
> +	AXP809_IRQ_PEK_LONG,
> +	AXP809_IRQ_PEK_OVER_OFF,
> +	AXP809_IRQ_GPIO1_INPUT,
> +	AXP809_IRQ_GPIO0_INPUT,
> +};
> +
>  #define AXP288_TS_ADC_H		0x58
>  #define AXP288_TS_ADC_L		0x59
>  #define AXP288_GP_ADC_H		0x5a

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

-- 
You received this message because you are subscribed to the Google Groups "linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email to linux-sunxi+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit https://groups.google.com/d/optout.

^ permalink raw reply	[flat|nested] 54+ messages in thread

* [PATCH resend v2 3/9] mfd: axp20x: Add support for AXP809 PMIC
@ 2016-04-11  8:24     ` Lee Jones
  0 siblings, 0 replies; 54+ messages in thread
From: Lee Jones @ 2016-04-11  8:24 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, 29 Mar 2016, Chen-Yu Tsai wrote:

> The X-Powers AXP809 is a new PMIC that is paired with Allwinner's A80
> SoC, along with a slave AXP806 PMIC.
> 
> This PMIC is quite similar to the earlier AXP223, though the interrupts
> and regulator have changed a bit.
> 
> This patch adds support for the interrupts and power button of the PMIC.
> 
> Signed-off-by: Chen-Yu Tsai <wens@csie.org>
> ---
>  drivers/mfd/axp20x-rsb.c   |  1 +
>  drivers/mfd/axp20x.c       | 79 ++++++++++++++++++++++++++++++++++++++++++++++
>  include/linux/mfd/axp20x.h | 59 ++++++++++++++++++++++++++++++++++
>  3 files changed, 139 insertions(+)

Applied, thanks.

> diff --git a/drivers/mfd/axp20x-rsb.c b/drivers/mfd/axp20x-rsb.c
> index 28c20247c112..a407527bcd09 100644
> --- a/drivers/mfd/axp20x-rsb.c
> +++ b/drivers/mfd/axp20x-rsb.c
> @@ -61,6 +61,7 @@ static int axp20x_rsb_remove(struct sunxi_rsb_device *rdev)
>  
>  static const struct of_device_id axp20x_rsb_of_match[] = {
>  	{ .compatible = "x-powers,axp223", .data = (void *)AXP223_ID },
> +	{ .compatible = "x-powers,axp809", .data = (void *)AXP809_ID },
>  	{ },
>  };
>  MODULE_DEVICE_TABLE(of, axp20x_rsb_of_match);
> diff --git a/drivers/mfd/axp20x.c b/drivers/mfd/axp20x.c
> index a57d6e940610..1ce923277cc8 100644
> --- a/drivers/mfd/axp20x.c
> +++ b/drivers/mfd/axp20x.c
> @@ -37,6 +37,7 @@ static const char * const axp20x_model_names[] = {
>  	"AXP221",
>  	"AXP223",
>  	"AXP288",
> +	"AXP809",
>  };
>  
>  static const struct regmap_range axp152_writeable_ranges[] = {
> @@ -85,6 +86,7 @@ static const struct regmap_access_table axp20x_volatile_table = {
>  	.n_yes_ranges	= ARRAY_SIZE(axp20x_volatile_ranges),
>  };
>  
> +/* AXP22x ranges are shared with the AXP809, as they cover the same range */
>  static const struct regmap_range axp22x_writeable_ranges[] = {
>  	regmap_reg_range(AXP20X_DATACACHE(0), AXP20X_IRQ5_STATE),
>  	regmap_reg_range(AXP20X_DCDC_MODE, AXP22X_BATLOW_THRES1),
> @@ -211,6 +213,20 @@ static struct resource axp288_fuel_gauge_resources[] = {
>  	},
>  };
>  
> +static struct resource axp809_pek_resources[] = {
> +	{
> +		.name   = "PEK_DBR",
> +		.start  = AXP809_IRQ_PEK_RIS_EDGE,
> +		.end    = AXP809_IRQ_PEK_RIS_EDGE,
> +		.flags  = IORESOURCE_IRQ,
> +	}, {
> +		.name   = "PEK_DBF",
> +		.start  = AXP809_IRQ_PEK_FAL_EDGE,
> +		.end    = AXP809_IRQ_PEK_FAL_EDGE,
> +		.flags  = IORESOURCE_IRQ,
> +	},
> +};
> +
>  static const struct regmap_config axp152_regmap_config = {
>  	.reg_bits	= 8,
>  	.val_bits	= 8,
> @@ -378,6 +394,41 @@ static const struct regmap_irq axp288_regmap_irqs[] = {
>  	INIT_REGMAP_IRQ(AXP288, BC_USB_CHNG,            5, 1),
>  };
>  
> +static const struct regmap_irq axp809_regmap_irqs[] = {
> +	INIT_REGMAP_IRQ(AXP809, ACIN_OVER_V,		0, 7),
> +	INIT_REGMAP_IRQ(AXP809, ACIN_PLUGIN,		0, 6),
> +	INIT_REGMAP_IRQ(AXP809, ACIN_REMOVAL,	        0, 5),
> +	INIT_REGMAP_IRQ(AXP809, VBUS_OVER_V,		0, 4),
> +	INIT_REGMAP_IRQ(AXP809, VBUS_PLUGIN,		0, 3),
> +	INIT_REGMAP_IRQ(AXP809, VBUS_REMOVAL,	        0, 2),
> +	INIT_REGMAP_IRQ(AXP809, VBUS_V_LOW,		0, 1),
> +	INIT_REGMAP_IRQ(AXP809, BATT_PLUGIN,		1, 7),
> +	INIT_REGMAP_IRQ(AXP809, BATT_REMOVAL,	        1, 6),
> +	INIT_REGMAP_IRQ(AXP809, BATT_ENT_ACT_MODE,	1, 5),
> +	INIT_REGMAP_IRQ(AXP809, BATT_EXIT_ACT_MODE,	1, 4),
> +	INIT_REGMAP_IRQ(AXP809, CHARG,		        1, 3),
> +	INIT_REGMAP_IRQ(AXP809, CHARG_DONE,		1, 2),
> +	INIT_REGMAP_IRQ(AXP809, BATT_CHG_TEMP_HIGH,	2, 7),
> +	INIT_REGMAP_IRQ(AXP809, BATT_CHG_TEMP_HIGH_END,	2, 6),
> +	INIT_REGMAP_IRQ(AXP809, BATT_CHG_TEMP_LOW,	2, 5),
> +	INIT_REGMAP_IRQ(AXP809, BATT_CHG_TEMP_LOW_END,	2, 4),
> +	INIT_REGMAP_IRQ(AXP809, BATT_ACT_TEMP_HIGH,	2, 3),
> +	INIT_REGMAP_IRQ(AXP809, BATT_ACT_TEMP_HIGH_END,	2, 2),
> +	INIT_REGMAP_IRQ(AXP809, BATT_ACT_TEMP_LOW,	2, 1),
> +	INIT_REGMAP_IRQ(AXP809, BATT_ACT_TEMP_LOW_END,	2, 0),
> +	INIT_REGMAP_IRQ(AXP809, DIE_TEMP_HIGH,	        3, 7),
> +	INIT_REGMAP_IRQ(AXP809, LOW_PWR_LVL1,	        3, 1),
> +	INIT_REGMAP_IRQ(AXP809, LOW_PWR_LVL2,	        3, 0),
> +	INIT_REGMAP_IRQ(AXP809, TIMER,		        4, 7),
> +	INIT_REGMAP_IRQ(AXP809, PEK_RIS_EDGE,	        4, 6),
> +	INIT_REGMAP_IRQ(AXP809, PEK_FAL_EDGE,	        4, 5),
> +	INIT_REGMAP_IRQ(AXP809, PEK_SHORT,		4, 4),
> +	INIT_REGMAP_IRQ(AXP809, PEK_LONG,		4, 3),
> +	INIT_REGMAP_IRQ(AXP809, PEK_OVER_OFF,		4, 2),
> +	INIT_REGMAP_IRQ(AXP809, GPIO1_INPUT,		4, 1),
> +	INIT_REGMAP_IRQ(AXP809, GPIO0_INPUT,		4, 0),
> +};
> +
>  static const struct regmap_irq_chip axp152_regmap_irq_chip = {
>  	.name			= "axp152_irq_chip",
>  	.status_base		= AXP152_IRQ1_STATE,
> @@ -428,6 +479,18 @@ static const struct regmap_irq_chip axp288_regmap_irq_chip = {
>  
>  };
>  
> +static const struct regmap_irq_chip axp809_regmap_irq_chip = {
> +	.name			= "axp809",
> +	.status_base		= AXP20X_IRQ1_STATE,
> +	.ack_base		= AXP20X_IRQ1_STATE,
> +	.mask_base		= AXP20X_IRQ1_EN,
> +	.mask_invert		= true,
> +	.init_ack_masked	= true,
> +	.irqs			= axp809_regmap_irqs,
> +	.num_irqs		= ARRAY_SIZE(axp809_regmap_irqs),
> +	.num_regs		= 5,
> +};
> +
>  static struct mfd_cell axp20x_cells[] = {
>  	{
>  		.name		= "axp20x-pek",
> @@ -572,6 +635,16 @@ static struct mfd_cell axp288_cells[] = {
>  	},
>  };
>  
> +static struct mfd_cell axp809_cells[] = {
> +	{
> +		.name			= "axp20x-pek",
> +		.num_resources		= ARRAY_SIZE(axp809_pek_resources),
> +		.resources		= axp809_pek_resources,
> +	}, {
> +		.name			= "axp20x-regulator",
> +	},
> +};
> +
>  static struct axp20x_dev *axp20x_pm_power_off;
>  static void axp20x_power_off(void)
>  {
> @@ -631,6 +704,12 @@ int axp20x_match_device(struct axp20x_dev *axp20x)
>  		axp20x->regmap_cfg = &axp288_regmap_config;
>  		axp20x->regmap_irq_chip = &axp288_regmap_irq_chip;
>  		break;
> +	case AXP809_ID:
> +		axp20x->nr_cells = ARRAY_SIZE(axp809_cells);
> +		axp20x->cells = axp809_cells;
> +		axp20x->regmap_cfg = &axp22x_regmap_config;
> +		axp20x->regmap_irq_chip = &axp809_regmap_irq_chip;
> +		break;
>  	default:
>  		dev_err(dev, "unsupported AXP20X ID %lu\n", axp20x->variant);
>  		return -EINVAL;
> diff --git a/include/linux/mfd/axp20x.h b/include/linux/mfd/axp20x.h
> index d82e7d51372b..0be4982f08fe 100644
> --- a/include/linux/mfd/axp20x.h
> +++ b/include/linux/mfd/axp20x.h
> @@ -20,6 +20,7 @@ enum {
>  	AXP221_ID,
>  	AXP223_ID,
>  	AXP288_ID,
> +	AXP809_ID,
>  	NR_AXP20X_VARIANTS,
>  };
>  
> @@ -264,6 +265,29 @@ enum {
>  	AXP22X_REG_ID_MAX,
>  };
>  
> +enum {
> +	AXP809_DCDC1 = 0,
> +	AXP809_DCDC2,
> +	AXP809_DCDC3,
> +	AXP809_DCDC4,
> +	AXP809_DCDC5,
> +	AXP809_DC1SW,
> +	AXP809_DC5LDO,
> +	AXP809_ALDO1,
> +	AXP809_ALDO2,
> +	AXP809_ALDO3,
> +	AXP809_ELDO1,
> +	AXP809_ELDO2,
> +	AXP809_ELDO3,
> +	AXP809_DLDO1,
> +	AXP809_DLDO2,
> +	AXP809_RTC_LDO,
> +	AXP809_LDO_IO0,
> +	AXP809_LDO_IO1,
> +	AXP809_SW,
> +	AXP809_REG_ID_MAX,
> +};
> +
>  /* IRQs */
>  enum {
>  	AXP152_IRQ_LDO0IN_CONNECT = 1,
> @@ -390,6 +414,41 @@ enum axp288_irqs {
>  	AXP288_IRQ_BC_USB_CHNG,
>  };
>  
> +enum axp809_irqs {
> +	AXP809_IRQ_ACIN_OVER_V = 1,
> +	AXP809_IRQ_ACIN_PLUGIN,
> +	AXP809_IRQ_ACIN_REMOVAL,
> +	AXP809_IRQ_VBUS_OVER_V,
> +	AXP809_IRQ_VBUS_PLUGIN,
> +	AXP809_IRQ_VBUS_REMOVAL,
> +	AXP809_IRQ_VBUS_V_LOW,
> +	AXP809_IRQ_BATT_PLUGIN,
> +	AXP809_IRQ_BATT_REMOVAL,
> +	AXP809_IRQ_BATT_ENT_ACT_MODE,
> +	AXP809_IRQ_BATT_EXIT_ACT_MODE,
> +	AXP809_IRQ_CHARG,
> +	AXP809_IRQ_CHARG_DONE,
> +	AXP809_IRQ_BATT_CHG_TEMP_HIGH,
> +	AXP809_IRQ_BATT_CHG_TEMP_HIGH_END,
> +	AXP809_IRQ_BATT_CHG_TEMP_LOW,
> +	AXP809_IRQ_BATT_CHG_TEMP_LOW_END,
> +	AXP809_IRQ_BATT_ACT_TEMP_HIGH,
> +	AXP809_IRQ_BATT_ACT_TEMP_HIGH_END,
> +	AXP809_IRQ_BATT_ACT_TEMP_LOW,
> +	AXP809_IRQ_BATT_ACT_TEMP_LOW_END,
> +	AXP809_IRQ_DIE_TEMP_HIGH,
> +	AXP809_IRQ_LOW_PWR_LVL1,
> +	AXP809_IRQ_LOW_PWR_LVL2,
> +	AXP809_IRQ_TIMER,
> +	AXP809_IRQ_PEK_RIS_EDGE,
> +	AXP809_IRQ_PEK_FAL_EDGE,
> +	AXP809_IRQ_PEK_SHORT,
> +	AXP809_IRQ_PEK_LONG,
> +	AXP809_IRQ_PEK_OVER_OFF,
> +	AXP809_IRQ_GPIO1_INPUT,
> +	AXP809_IRQ_GPIO0_INPUT,
> +};
> +
>  #define AXP288_TS_ADC_H		0x58
>  #define AXP288_TS_ADC_L		0x59
>  #define AXP288_GP_ADC_H		0x5a

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

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [PATCH resend v2 2/9] mfd: axp20x: Add bindings for AXP809 PMIC
@ 2016-04-11  8:24     ` Lee Jones
  0 siblings, 0 replies; 54+ messages in thread
From: Lee Jones @ 2016-04-11  8:24 UTC (permalink / raw)
  To: Chen-Yu Tsai
  Cc: Liam Girdwood, Mark Brown, Maxime Ripard, linux-kernel,
	devicetree, linux-arm-kernel, linux-sunxi

On Tue, 29 Mar 2016, Chen-Yu Tsai wrote:

> This patch adds the basic and regulator bindings for the X-Powers AXP809
> PMIC.
> 
> Also update the DC-DC converter operating frequency for AXP22X/AXP80X.
> 
> Signed-off-by: Chen-Yu Tsai <wens@csie.org>
> Acked-by: Rob Herring <robh@kernel.org>
> ---
>  Documentation/devicetree/bindings/mfd/axp20x.txt | 31 ++++++++++++++++++++++--
>  1 file changed, 29 insertions(+), 2 deletions(-)

Applied, thanks.

> diff --git a/Documentation/devicetree/bindings/mfd/axp20x.txt b/Documentation/devicetree/bindings/mfd/axp20x.txt
> index fd39fa54571b..d20b1034e967 100644
> --- a/Documentation/devicetree/bindings/mfd/axp20x.txt
> +++ b/Documentation/devicetree/bindings/mfd/axp20x.txt
> @@ -6,10 +6,11 @@ axp202 (X-Powers)
>  axp209 (X-Powers)
>  axp221 (X-Powers)
>  axp223 (X-Powers)
> +axp809 (X-Powers)
>  
>  Required properties:
>  - compatible: "x-powers,axp152", "x-powers,axp202", "x-powers,axp209",
> -	      "x-powers,axp221", "x-powers,axp223"
> +	      "x-powers,axp221", "x-powers,axp223", "x-powers,axp809"
>  - reg: The I2C slave address or RSB hardware address for the AXP chip
>  - interrupt-parent: The parent interrupt controller
>  - interrupts: SoC NMI / GPIO interrupt connected to the PMIC's IRQ pin
> @@ -18,7 +19,9 @@ Required properties:
>  
>  Optional properties:
>  - x-powers,dcdc-freq: defines the work frequency of DC-DC in KHz
> -		      (range: 750-1875). Default: 1.5MHz
> +		      AXP152/20X: range:  750-1875, Default: 1.5 MHz
> +		      AXP22X/80X: range: 1800-4050, Default: 3   MHz
> +
>  - <input>-supply: a phandle to the regulator supply node. May be omitted if
>  		  inputs are unregulated, such as using the IPSOUT output
>  		  from the PMIC.
> @@ -77,6 +80,30 @@ LDO_IO0		: LDO		: ips-supply		: GPIO 0
>  LDO_IO1		: LDO		: ips-supply		: GPIO 1
>  RTC_LDO		: LDO		: ips-supply		: always on
>  
> +AXP809 regulators, type, and corresponding input supply names:
> +
> +Regulator	  Type		  Supply Name		  Notes
> +---------	  ----		  -----------		  -----
> +DCDC1		: DC-DC buck	: vin1-supply
> +DCDC2		: DC-DC buck	: vin2-supply
> +DCDC3		: DC-DC	buck	: vin3-supply
> +DCDC4		: DC-DC	buck	: vin4-supply
> +DCDC5		: DC-DC	buck	: vin5-supply
> +DC1SW		: On/Off Switch	:			: DCDC1 secondary output
> +DC5LDO		: LDO		:			: input from DCDC5
> +ALDO1		: LDO		: aldoin-supply		: shared supply
> +ALDO2		: LDO		: aldoin-supply		: shared supply
> +ALDO3		: LDO		: aldoin-supply		: shared supply
> +DLDO1		: LDO		: dldoin-supply		: shared supply
> +DLDO2		: LDO		: dldoin-supply		: shared supply
> +ELDO1		: LDO		: eldoin-supply		: shared supply
> +ELDO2		: LDO		: eldoin-supply		: shared supply
> +ELDO3		: LDO		: eldoin-supply		: shared supply
> +LDO_IO0		: LDO		: ips-supply		: GPIO 0
> +LDO_IO1		: LDO		: ips-supply		: GPIO 1
> +RTC_LDO		: LDO		: ips-supply		: always on
> +SW		: On/Off Switch : swin-supply
> +
>  Example:
>  
>  axp209: pmic@34 {

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

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [PATCH resend v2 2/9] mfd: axp20x: Add bindings for AXP809 PMIC
@ 2016-04-11  8:24     ` Lee Jones
  0 siblings, 0 replies; 54+ messages in thread
From: Lee Jones @ 2016-04-11  8:24 UTC (permalink / raw)
  To: Chen-Yu Tsai
  Cc: Liam Girdwood, Mark Brown, Maxime Ripard,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw

On Tue, 29 Mar 2016, Chen-Yu Tsai wrote:

> This patch adds the basic and regulator bindings for the X-Powers AXP809
> PMIC.
> 
> Also update the DC-DC converter operating frequency for AXP22X/AXP80X.
> 
> Signed-off-by: Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>
> Acked-by: Rob Herring <robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
> ---
>  Documentation/devicetree/bindings/mfd/axp20x.txt | 31 ++++++++++++++++++++++--
>  1 file changed, 29 insertions(+), 2 deletions(-)

Applied, thanks.

> diff --git a/Documentation/devicetree/bindings/mfd/axp20x.txt b/Documentation/devicetree/bindings/mfd/axp20x.txt
> index fd39fa54571b..d20b1034e967 100644
> --- a/Documentation/devicetree/bindings/mfd/axp20x.txt
> +++ b/Documentation/devicetree/bindings/mfd/axp20x.txt
> @@ -6,10 +6,11 @@ axp202 (X-Powers)
>  axp209 (X-Powers)
>  axp221 (X-Powers)
>  axp223 (X-Powers)
> +axp809 (X-Powers)
>  
>  Required properties:
>  - compatible: "x-powers,axp152", "x-powers,axp202", "x-powers,axp209",
> -	      "x-powers,axp221", "x-powers,axp223"
> +	      "x-powers,axp221", "x-powers,axp223", "x-powers,axp809"
>  - reg: The I2C slave address or RSB hardware address for the AXP chip
>  - interrupt-parent: The parent interrupt controller
>  - interrupts: SoC NMI / GPIO interrupt connected to the PMIC's IRQ pin
> @@ -18,7 +19,9 @@ Required properties:
>  
>  Optional properties:
>  - x-powers,dcdc-freq: defines the work frequency of DC-DC in KHz
> -		      (range: 750-1875). Default: 1.5MHz
> +		      AXP152/20X: range:  750-1875, Default: 1.5 MHz
> +		      AXP22X/80X: range: 1800-4050, Default: 3   MHz
> +
>  - <input>-supply: a phandle to the regulator supply node. May be omitted if
>  		  inputs are unregulated, such as using the IPSOUT output
>  		  from the PMIC.
> @@ -77,6 +80,30 @@ LDO_IO0		: LDO		: ips-supply		: GPIO 0
>  LDO_IO1		: LDO		: ips-supply		: GPIO 1
>  RTC_LDO		: LDO		: ips-supply		: always on
>  
> +AXP809 regulators, type, and corresponding input supply names:
> +
> +Regulator	  Type		  Supply Name		  Notes
> +---------	  ----		  -----------		  -----
> +DCDC1		: DC-DC buck	: vin1-supply
> +DCDC2		: DC-DC buck	: vin2-supply
> +DCDC3		: DC-DC	buck	: vin3-supply
> +DCDC4		: DC-DC	buck	: vin4-supply
> +DCDC5		: DC-DC	buck	: vin5-supply
> +DC1SW		: On/Off Switch	:			: DCDC1 secondary output
> +DC5LDO		: LDO		:			: input from DCDC5
> +ALDO1		: LDO		: aldoin-supply		: shared supply
> +ALDO2		: LDO		: aldoin-supply		: shared supply
> +ALDO3		: LDO		: aldoin-supply		: shared supply
> +DLDO1		: LDO		: dldoin-supply		: shared supply
> +DLDO2		: LDO		: dldoin-supply		: shared supply
> +ELDO1		: LDO		: eldoin-supply		: shared supply
> +ELDO2		: LDO		: eldoin-supply		: shared supply
> +ELDO3		: LDO		: eldoin-supply		: shared supply
> +LDO_IO0		: LDO		: ips-supply		: GPIO 0
> +LDO_IO1		: LDO		: ips-supply		: GPIO 1
> +RTC_LDO		: LDO		: ips-supply		: always on
> +SW		: On/Off Switch : swin-supply
> +
>  Example:
>  
>  axp209: pmic@34 {

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

-- 
You received this message because you are subscribed to the Google Groups "linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email to linux-sunxi+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit https://groups.google.com/d/optout.

^ permalink raw reply	[flat|nested] 54+ messages in thread

* [PATCH resend v2 2/9] mfd: axp20x: Add bindings for AXP809 PMIC
@ 2016-04-11  8:24     ` Lee Jones
  0 siblings, 0 replies; 54+ messages in thread
From: Lee Jones @ 2016-04-11  8:24 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, 29 Mar 2016, Chen-Yu Tsai wrote:

> This patch adds the basic and regulator bindings for the X-Powers AXP809
> PMIC.
> 
> Also update the DC-DC converter operating frequency for AXP22X/AXP80X.
> 
> Signed-off-by: Chen-Yu Tsai <wens@csie.org>
> Acked-by: Rob Herring <robh@kernel.org>
> ---
>  Documentation/devicetree/bindings/mfd/axp20x.txt | 31 ++++++++++++++++++++++--
>  1 file changed, 29 insertions(+), 2 deletions(-)

Applied, thanks.

> diff --git a/Documentation/devicetree/bindings/mfd/axp20x.txt b/Documentation/devicetree/bindings/mfd/axp20x.txt
> index fd39fa54571b..d20b1034e967 100644
> --- a/Documentation/devicetree/bindings/mfd/axp20x.txt
> +++ b/Documentation/devicetree/bindings/mfd/axp20x.txt
> @@ -6,10 +6,11 @@ axp202 (X-Powers)
>  axp209 (X-Powers)
>  axp221 (X-Powers)
>  axp223 (X-Powers)
> +axp809 (X-Powers)
>  
>  Required properties:
>  - compatible: "x-powers,axp152", "x-powers,axp202", "x-powers,axp209",
> -	      "x-powers,axp221", "x-powers,axp223"
> +	      "x-powers,axp221", "x-powers,axp223", "x-powers,axp809"
>  - reg: The I2C slave address or RSB hardware address for the AXP chip
>  - interrupt-parent: The parent interrupt controller
>  - interrupts: SoC NMI / GPIO interrupt connected to the PMIC's IRQ pin
> @@ -18,7 +19,9 @@ Required properties:
>  
>  Optional properties:
>  - x-powers,dcdc-freq: defines the work frequency of DC-DC in KHz
> -		      (range: 750-1875). Default: 1.5MHz
> +		      AXP152/20X: range:  750-1875, Default: 1.5 MHz
> +		      AXP22X/80X: range: 1800-4050, Default: 3   MHz
> +
>  - <input>-supply: a phandle to the regulator supply node. May be omitted if
>  		  inputs are unregulated, such as using the IPSOUT output
>  		  from the PMIC.
> @@ -77,6 +80,30 @@ LDO_IO0		: LDO		: ips-supply		: GPIO 0
>  LDO_IO1		: LDO		: ips-supply		: GPIO 1
>  RTC_LDO		: LDO		: ips-supply		: always on
>  
> +AXP809 regulators, type, and corresponding input supply names:
> +
> +Regulator	  Type		  Supply Name		  Notes
> +---------	  ----		  -----------		  -----
> +DCDC1		: DC-DC buck	: vin1-supply
> +DCDC2		: DC-DC buck	: vin2-supply
> +DCDC3		: DC-DC	buck	: vin3-supply
> +DCDC4		: DC-DC	buck	: vin4-supply
> +DCDC5		: DC-DC	buck	: vin5-supply
> +DC1SW		: On/Off Switch	:			: DCDC1 secondary output
> +DC5LDO		: LDO		:			: input from DCDC5
> +ALDO1		: LDO		: aldoin-supply		: shared supply
> +ALDO2		: LDO		: aldoin-supply		: shared supply
> +ALDO3		: LDO		: aldoin-supply		: shared supply
> +DLDO1		: LDO		: dldoin-supply		: shared supply
> +DLDO2		: LDO		: dldoin-supply		: shared supply
> +ELDO1		: LDO		: eldoin-supply		: shared supply
> +ELDO2		: LDO		: eldoin-supply		: shared supply
> +ELDO3		: LDO		: eldoin-supply		: shared supply
> +LDO_IO0		: LDO		: ips-supply		: GPIO 0
> +LDO_IO1		: LDO		: ips-supply		: GPIO 1
> +RTC_LDO		: LDO		: ips-supply		: always on
> +SW		: On/Off Switch : swin-supply
> +
>  Example:
>  
>  axp209: pmic at 34 {

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

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [PATCH resend v2 3/9] mfd: axp20x: Add support for AXP809 PMIC
  2016-04-11  8:24     ` Lee Jones
  (?)
@ 2016-04-22  6:58       ` Chen-Yu Tsai
  -1 siblings, 0 replies; 54+ messages in thread
From: Chen-Yu Tsai @ 2016-04-22  6:58 UTC (permalink / raw)
  To: Lee Jones
  Cc: Chen-Yu Tsai, Liam Girdwood, Mark Brown, Maxime Ripard,
	linux-kernel, devicetree, linux-arm-kernel, linux-sunxi

Hi Lee,

On Mon, Apr 11, 2016 at 4:24 PM, Lee Jones <lee.jones@linaro.org> wrote:
> On Tue, 29 Mar 2016, Chen-Yu Tsai wrote:
>
>> The X-Powers AXP809 is a new PMIC that is paired with Allwinner's A80
>> SoC, along with a slave AXP806 PMIC.
>>
>> This PMIC is quite similar to the earlier AXP223, though the interrupts
>> and regulator have changed a bit.
>>
>> This patch adds support for the interrupts and power button of the PMIC.
>>
>> Signed-off-by: Chen-Yu Tsai <wens@csie.org>
>> ---
>>  drivers/mfd/axp20x-rsb.c   |  1 +
>>  drivers/mfd/axp20x.c       | 79 ++++++++++++++++++++++++++++++++++++++++++++++
>>  include/linux/mfd/axp20x.h | 59 ++++++++++++++++++++++++++++++++++
>>  3 files changed, 139 insertions(+)
>
> Applied, thanks.

Could you also merge the MAINTAINERS patch ("MAINTAINERS: Add entry for
X-Powers AXP family PMIC drivers") and push an immutable tree for Mark
to merge the regulator patch?

Thanks again.

ChenYu

>
>> diff --git a/drivers/mfd/axp20x-rsb.c b/drivers/mfd/axp20x-rsb.c
>> index 28c20247c112..a407527bcd09 100644
>> --- a/drivers/mfd/axp20x-rsb.c
>> +++ b/drivers/mfd/axp20x-rsb.c
>> @@ -61,6 +61,7 @@ static int axp20x_rsb_remove(struct sunxi_rsb_device *rdev)
>>
>>  static const struct of_device_id axp20x_rsb_of_match[] = {
>>       { .compatible = "x-powers,axp223", .data = (void *)AXP223_ID },
>> +     { .compatible = "x-powers,axp809", .data = (void *)AXP809_ID },
>>       { },
>>  };
>>  MODULE_DEVICE_TABLE(of, axp20x_rsb_of_match);
>> diff --git a/drivers/mfd/axp20x.c b/drivers/mfd/axp20x.c
>> index a57d6e940610..1ce923277cc8 100644
>> --- a/drivers/mfd/axp20x.c
>> +++ b/drivers/mfd/axp20x.c
>> @@ -37,6 +37,7 @@ static const char * const axp20x_model_names[] = {
>>       "AXP221",
>>       "AXP223",
>>       "AXP288",
>> +     "AXP809",
>>  };
>>
>>  static const struct regmap_range axp152_writeable_ranges[] = {
>> @@ -85,6 +86,7 @@ static const struct regmap_access_table axp20x_volatile_table = {
>>       .n_yes_ranges   = ARRAY_SIZE(axp20x_volatile_ranges),
>>  };
>>
>> +/* AXP22x ranges are shared with the AXP809, as they cover the same range */
>>  static const struct regmap_range axp22x_writeable_ranges[] = {
>>       regmap_reg_range(AXP20X_DATACACHE(0), AXP20X_IRQ5_STATE),
>>       regmap_reg_range(AXP20X_DCDC_MODE, AXP22X_BATLOW_THRES1),
>> @@ -211,6 +213,20 @@ static struct resource axp288_fuel_gauge_resources[] = {
>>       },
>>  };
>>
>> +static struct resource axp809_pek_resources[] = {
>> +     {
>> +             .name   = "PEK_DBR",
>> +             .start  = AXP809_IRQ_PEK_RIS_EDGE,
>> +             .end    = AXP809_IRQ_PEK_RIS_EDGE,
>> +             .flags  = IORESOURCE_IRQ,
>> +     }, {
>> +             .name   = "PEK_DBF",
>> +             .start  = AXP809_IRQ_PEK_FAL_EDGE,
>> +             .end    = AXP809_IRQ_PEK_FAL_EDGE,
>> +             .flags  = IORESOURCE_IRQ,
>> +     },
>> +};
>> +
>>  static const struct regmap_config axp152_regmap_config = {
>>       .reg_bits       = 8,
>>       .val_bits       = 8,
>> @@ -378,6 +394,41 @@ static const struct regmap_irq axp288_regmap_irqs[] = {
>>       INIT_REGMAP_IRQ(AXP288, BC_USB_CHNG,            5, 1),
>>  };
>>
>> +static const struct regmap_irq axp809_regmap_irqs[] = {
>> +     INIT_REGMAP_IRQ(AXP809, ACIN_OVER_V,            0, 7),
>> +     INIT_REGMAP_IRQ(AXP809, ACIN_PLUGIN,            0, 6),
>> +     INIT_REGMAP_IRQ(AXP809, ACIN_REMOVAL,           0, 5),
>> +     INIT_REGMAP_IRQ(AXP809, VBUS_OVER_V,            0, 4),
>> +     INIT_REGMAP_IRQ(AXP809, VBUS_PLUGIN,            0, 3),
>> +     INIT_REGMAP_IRQ(AXP809, VBUS_REMOVAL,           0, 2),
>> +     INIT_REGMAP_IRQ(AXP809, VBUS_V_LOW,             0, 1),
>> +     INIT_REGMAP_IRQ(AXP809, BATT_PLUGIN,            1, 7),
>> +     INIT_REGMAP_IRQ(AXP809, BATT_REMOVAL,           1, 6),
>> +     INIT_REGMAP_IRQ(AXP809, BATT_ENT_ACT_MODE,      1, 5),
>> +     INIT_REGMAP_IRQ(AXP809, BATT_EXIT_ACT_MODE,     1, 4),
>> +     INIT_REGMAP_IRQ(AXP809, CHARG,                  1, 3),
>> +     INIT_REGMAP_IRQ(AXP809, CHARG_DONE,             1, 2),
>> +     INIT_REGMAP_IRQ(AXP809, BATT_CHG_TEMP_HIGH,     2, 7),
>> +     INIT_REGMAP_IRQ(AXP809, BATT_CHG_TEMP_HIGH_END, 2, 6),
>> +     INIT_REGMAP_IRQ(AXP809, BATT_CHG_TEMP_LOW,      2, 5),
>> +     INIT_REGMAP_IRQ(AXP809, BATT_CHG_TEMP_LOW_END,  2, 4),
>> +     INIT_REGMAP_IRQ(AXP809, BATT_ACT_TEMP_HIGH,     2, 3),
>> +     INIT_REGMAP_IRQ(AXP809, BATT_ACT_TEMP_HIGH_END, 2, 2),
>> +     INIT_REGMAP_IRQ(AXP809, BATT_ACT_TEMP_LOW,      2, 1),
>> +     INIT_REGMAP_IRQ(AXP809, BATT_ACT_TEMP_LOW_END,  2, 0),
>> +     INIT_REGMAP_IRQ(AXP809, DIE_TEMP_HIGH,          3, 7),
>> +     INIT_REGMAP_IRQ(AXP809, LOW_PWR_LVL1,           3, 1),
>> +     INIT_REGMAP_IRQ(AXP809, LOW_PWR_LVL2,           3, 0),
>> +     INIT_REGMAP_IRQ(AXP809, TIMER,                  4, 7),
>> +     INIT_REGMAP_IRQ(AXP809, PEK_RIS_EDGE,           4, 6),
>> +     INIT_REGMAP_IRQ(AXP809, PEK_FAL_EDGE,           4, 5),
>> +     INIT_REGMAP_IRQ(AXP809, PEK_SHORT,              4, 4),
>> +     INIT_REGMAP_IRQ(AXP809, PEK_LONG,               4, 3),
>> +     INIT_REGMAP_IRQ(AXP809, PEK_OVER_OFF,           4, 2),
>> +     INIT_REGMAP_IRQ(AXP809, GPIO1_INPUT,            4, 1),
>> +     INIT_REGMAP_IRQ(AXP809, GPIO0_INPUT,            4, 0),
>> +};
>> +
>>  static const struct regmap_irq_chip axp152_regmap_irq_chip = {
>>       .name                   = "axp152_irq_chip",
>>       .status_base            = AXP152_IRQ1_STATE,
>> @@ -428,6 +479,18 @@ static const struct regmap_irq_chip axp288_regmap_irq_chip = {
>>
>>  };
>>
>> +static const struct regmap_irq_chip axp809_regmap_irq_chip = {
>> +     .name                   = "axp809",
>> +     .status_base            = AXP20X_IRQ1_STATE,
>> +     .ack_base               = AXP20X_IRQ1_STATE,
>> +     .mask_base              = AXP20X_IRQ1_EN,
>> +     .mask_invert            = true,
>> +     .init_ack_masked        = true,
>> +     .irqs                   = axp809_regmap_irqs,
>> +     .num_irqs               = ARRAY_SIZE(axp809_regmap_irqs),
>> +     .num_regs               = 5,
>> +};
>> +
>>  static struct mfd_cell axp20x_cells[] = {
>>       {
>>               .name           = "axp20x-pek",
>> @@ -572,6 +635,16 @@ static struct mfd_cell axp288_cells[] = {
>>       },
>>  };
>>
>> +static struct mfd_cell axp809_cells[] = {
>> +     {
>> +             .name                   = "axp20x-pek",
>> +             .num_resources          = ARRAY_SIZE(axp809_pek_resources),
>> +             .resources              = axp809_pek_resources,
>> +     }, {
>> +             .name                   = "axp20x-regulator",
>> +     },
>> +};
>> +
>>  static struct axp20x_dev *axp20x_pm_power_off;
>>  static void axp20x_power_off(void)
>>  {
>> @@ -631,6 +704,12 @@ int axp20x_match_device(struct axp20x_dev *axp20x)
>>               axp20x->regmap_cfg = &axp288_regmap_config;
>>               axp20x->regmap_irq_chip = &axp288_regmap_irq_chip;
>>               break;
>> +     case AXP809_ID:
>> +             axp20x->nr_cells = ARRAY_SIZE(axp809_cells);
>> +             axp20x->cells = axp809_cells;
>> +             axp20x->regmap_cfg = &axp22x_regmap_config;
>> +             axp20x->regmap_irq_chip = &axp809_regmap_irq_chip;
>> +             break;
>>       default:
>>               dev_err(dev, "unsupported AXP20X ID %lu\n", axp20x->variant);
>>               return -EINVAL;
>> diff --git a/include/linux/mfd/axp20x.h b/include/linux/mfd/axp20x.h
>> index d82e7d51372b..0be4982f08fe 100644
>> --- a/include/linux/mfd/axp20x.h
>> +++ b/include/linux/mfd/axp20x.h
>> @@ -20,6 +20,7 @@ enum {
>>       AXP221_ID,
>>       AXP223_ID,
>>       AXP288_ID,
>> +     AXP809_ID,
>>       NR_AXP20X_VARIANTS,
>>  };
>>
>> @@ -264,6 +265,29 @@ enum {
>>       AXP22X_REG_ID_MAX,
>>  };
>>
>> +enum {
>> +     AXP809_DCDC1 = 0,
>> +     AXP809_DCDC2,
>> +     AXP809_DCDC3,
>> +     AXP809_DCDC4,
>> +     AXP809_DCDC5,
>> +     AXP809_DC1SW,
>> +     AXP809_DC5LDO,
>> +     AXP809_ALDO1,
>> +     AXP809_ALDO2,
>> +     AXP809_ALDO3,
>> +     AXP809_ELDO1,
>> +     AXP809_ELDO2,
>> +     AXP809_ELDO3,
>> +     AXP809_DLDO1,
>> +     AXP809_DLDO2,
>> +     AXP809_RTC_LDO,
>> +     AXP809_LDO_IO0,
>> +     AXP809_LDO_IO1,
>> +     AXP809_SW,
>> +     AXP809_REG_ID_MAX,
>> +};
>> +
>>  /* IRQs */
>>  enum {
>>       AXP152_IRQ_LDO0IN_CONNECT = 1,
>> @@ -390,6 +414,41 @@ enum axp288_irqs {
>>       AXP288_IRQ_BC_USB_CHNG,
>>  };
>>
>> +enum axp809_irqs {
>> +     AXP809_IRQ_ACIN_OVER_V = 1,
>> +     AXP809_IRQ_ACIN_PLUGIN,
>> +     AXP809_IRQ_ACIN_REMOVAL,
>> +     AXP809_IRQ_VBUS_OVER_V,
>> +     AXP809_IRQ_VBUS_PLUGIN,
>> +     AXP809_IRQ_VBUS_REMOVAL,
>> +     AXP809_IRQ_VBUS_V_LOW,
>> +     AXP809_IRQ_BATT_PLUGIN,
>> +     AXP809_IRQ_BATT_REMOVAL,
>> +     AXP809_IRQ_BATT_ENT_ACT_MODE,
>> +     AXP809_IRQ_BATT_EXIT_ACT_MODE,
>> +     AXP809_IRQ_CHARG,
>> +     AXP809_IRQ_CHARG_DONE,
>> +     AXP809_IRQ_BATT_CHG_TEMP_HIGH,
>> +     AXP809_IRQ_BATT_CHG_TEMP_HIGH_END,
>> +     AXP809_IRQ_BATT_CHG_TEMP_LOW,
>> +     AXP809_IRQ_BATT_CHG_TEMP_LOW_END,
>> +     AXP809_IRQ_BATT_ACT_TEMP_HIGH,
>> +     AXP809_IRQ_BATT_ACT_TEMP_HIGH_END,
>> +     AXP809_IRQ_BATT_ACT_TEMP_LOW,
>> +     AXP809_IRQ_BATT_ACT_TEMP_LOW_END,
>> +     AXP809_IRQ_DIE_TEMP_HIGH,
>> +     AXP809_IRQ_LOW_PWR_LVL1,
>> +     AXP809_IRQ_LOW_PWR_LVL2,
>> +     AXP809_IRQ_TIMER,
>> +     AXP809_IRQ_PEK_RIS_EDGE,
>> +     AXP809_IRQ_PEK_FAL_EDGE,
>> +     AXP809_IRQ_PEK_SHORT,
>> +     AXP809_IRQ_PEK_LONG,
>> +     AXP809_IRQ_PEK_OVER_OFF,
>> +     AXP809_IRQ_GPIO1_INPUT,
>> +     AXP809_IRQ_GPIO0_INPUT,
>> +};
>> +
>>  #define AXP288_TS_ADC_H              0x58
>>  #define AXP288_TS_ADC_L              0x59
>>  #define AXP288_GP_ADC_H              0x5a
>
> --
> Lee Jones
> Linaro STMicroelectronics Landing Team Lead
> Linaro.org │ Open source software for ARM SoCs
> Follow Linaro: Facebook | Twitter | Blog

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [PATCH resend v2 3/9] mfd: axp20x: Add support for AXP809 PMIC
@ 2016-04-22  6:58       ` Chen-Yu Tsai
  0 siblings, 0 replies; 54+ messages in thread
From: Chen-Yu Tsai @ 2016-04-22  6:58 UTC (permalink / raw)
  To: Lee Jones
  Cc: Chen-Yu Tsai, Liam Girdwood, Mark Brown, Maxime Ripard,
	linux-kernel, devicetree, linux-arm-kernel, linux-sunxi

Hi Lee,

On Mon, Apr 11, 2016 at 4:24 PM, Lee Jones <lee.jones-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> wrote:
> On Tue, 29 Mar 2016, Chen-Yu Tsai wrote:
>
>> The X-Powers AXP809 is a new PMIC that is paired with Allwinner's A80
>> SoC, along with a slave AXP806 PMIC.
>>
>> This PMIC is quite similar to the earlier AXP223, though the interrupts
>> and regulator have changed a bit.
>>
>> This patch adds support for the interrupts and power button of the PMIC.
>>
>> Signed-off-by: Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>
>> ---
>>  drivers/mfd/axp20x-rsb.c   |  1 +
>>  drivers/mfd/axp20x.c       | 79 ++++++++++++++++++++++++++++++++++++++++++++++
>>  include/linux/mfd/axp20x.h | 59 ++++++++++++++++++++++++++++++++++
>>  3 files changed, 139 insertions(+)
>
> Applied, thanks.

Could you also merge the MAINTAINERS patch ("MAINTAINERS: Add entry for
X-Powers AXP family PMIC drivers") and push an immutable tree for Mark
to merge the regulator patch?

Thanks again.

ChenYu

>
>> diff --git a/drivers/mfd/axp20x-rsb.c b/drivers/mfd/axp20x-rsb.c
>> index 28c20247c112..a407527bcd09 100644
>> --- a/drivers/mfd/axp20x-rsb.c
>> +++ b/drivers/mfd/axp20x-rsb.c
>> @@ -61,6 +61,7 @@ static int axp20x_rsb_remove(struct sunxi_rsb_device *rdev)
>>
>>  static const struct of_device_id axp20x_rsb_of_match[] = {
>>       { .compatible = "x-powers,axp223", .data = (void *)AXP223_ID },
>> +     { .compatible = "x-powers,axp809", .data = (void *)AXP809_ID },
>>       { },
>>  };
>>  MODULE_DEVICE_TABLE(of, axp20x_rsb_of_match);
>> diff --git a/drivers/mfd/axp20x.c b/drivers/mfd/axp20x.c
>> index a57d6e940610..1ce923277cc8 100644
>> --- a/drivers/mfd/axp20x.c
>> +++ b/drivers/mfd/axp20x.c
>> @@ -37,6 +37,7 @@ static const char * const axp20x_model_names[] = {
>>       "AXP221",
>>       "AXP223",
>>       "AXP288",
>> +     "AXP809",
>>  };
>>
>>  static const struct regmap_range axp152_writeable_ranges[] = {
>> @@ -85,6 +86,7 @@ static const struct regmap_access_table axp20x_volatile_table = {
>>       .n_yes_ranges   = ARRAY_SIZE(axp20x_volatile_ranges),
>>  };
>>
>> +/* AXP22x ranges are shared with the AXP809, as they cover the same range */
>>  static const struct regmap_range axp22x_writeable_ranges[] = {
>>       regmap_reg_range(AXP20X_DATACACHE(0), AXP20X_IRQ5_STATE),
>>       regmap_reg_range(AXP20X_DCDC_MODE, AXP22X_BATLOW_THRES1),
>> @@ -211,6 +213,20 @@ static struct resource axp288_fuel_gauge_resources[] = {
>>       },
>>  };
>>
>> +static struct resource axp809_pek_resources[] = {
>> +     {
>> +             .name   = "PEK_DBR",
>> +             .start  = AXP809_IRQ_PEK_RIS_EDGE,
>> +             .end    = AXP809_IRQ_PEK_RIS_EDGE,
>> +             .flags  = IORESOURCE_IRQ,
>> +     }, {
>> +             .name   = "PEK_DBF",
>> +             .start  = AXP809_IRQ_PEK_FAL_EDGE,
>> +             .end    = AXP809_IRQ_PEK_FAL_EDGE,
>> +             .flags  = IORESOURCE_IRQ,
>> +     },
>> +};
>> +
>>  static const struct regmap_config axp152_regmap_config = {
>>       .reg_bits       = 8,
>>       .val_bits       = 8,
>> @@ -378,6 +394,41 @@ static const struct regmap_irq axp288_regmap_irqs[] = {
>>       INIT_REGMAP_IRQ(AXP288, BC_USB_CHNG,            5, 1),
>>  };
>>
>> +static const struct regmap_irq axp809_regmap_irqs[] = {
>> +     INIT_REGMAP_IRQ(AXP809, ACIN_OVER_V,            0, 7),
>> +     INIT_REGMAP_IRQ(AXP809, ACIN_PLUGIN,            0, 6),
>> +     INIT_REGMAP_IRQ(AXP809, ACIN_REMOVAL,           0, 5),
>> +     INIT_REGMAP_IRQ(AXP809, VBUS_OVER_V,            0, 4),
>> +     INIT_REGMAP_IRQ(AXP809, VBUS_PLUGIN,            0, 3),
>> +     INIT_REGMAP_IRQ(AXP809, VBUS_REMOVAL,           0, 2),
>> +     INIT_REGMAP_IRQ(AXP809, VBUS_V_LOW,             0, 1),
>> +     INIT_REGMAP_IRQ(AXP809, BATT_PLUGIN,            1, 7),
>> +     INIT_REGMAP_IRQ(AXP809, BATT_REMOVAL,           1, 6),
>> +     INIT_REGMAP_IRQ(AXP809, BATT_ENT_ACT_MODE,      1, 5),
>> +     INIT_REGMAP_IRQ(AXP809, BATT_EXIT_ACT_MODE,     1, 4),
>> +     INIT_REGMAP_IRQ(AXP809, CHARG,                  1, 3),
>> +     INIT_REGMAP_IRQ(AXP809, CHARG_DONE,             1, 2),
>> +     INIT_REGMAP_IRQ(AXP809, BATT_CHG_TEMP_HIGH,     2, 7),
>> +     INIT_REGMAP_IRQ(AXP809, BATT_CHG_TEMP_HIGH_END, 2, 6),
>> +     INIT_REGMAP_IRQ(AXP809, BATT_CHG_TEMP_LOW,      2, 5),
>> +     INIT_REGMAP_IRQ(AXP809, BATT_CHG_TEMP_LOW_END,  2, 4),
>> +     INIT_REGMAP_IRQ(AXP809, BATT_ACT_TEMP_HIGH,     2, 3),
>> +     INIT_REGMAP_IRQ(AXP809, BATT_ACT_TEMP_HIGH_END, 2, 2),
>> +     INIT_REGMAP_IRQ(AXP809, BATT_ACT_TEMP_LOW,      2, 1),
>> +     INIT_REGMAP_IRQ(AXP809, BATT_ACT_TEMP_LOW_END,  2, 0),
>> +     INIT_REGMAP_IRQ(AXP809, DIE_TEMP_HIGH,          3, 7),
>> +     INIT_REGMAP_IRQ(AXP809, LOW_PWR_LVL1,           3, 1),
>> +     INIT_REGMAP_IRQ(AXP809, LOW_PWR_LVL2,           3, 0),
>> +     INIT_REGMAP_IRQ(AXP809, TIMER,                  4, 7),
>> +     INIT_REGMAP_IRQ(AXP809, PEK_RIS_EDGE,           4, 6),
>> +     INIT_REGMAP_IRQ(AXP809, PEK_FAL_EDGE,           4, 5),
>> +     INIT_REGMAP_IRQ(AXP809, PEK_SHORT,              4, 4),
>> +     INIT_REGMAP_IRQ(AXP809, PEK_LONG,               4, 3),
>> +     INIT_REGMAP_IRQ(AXP809, PEK_OVER_OFF,           4, 2),
>> +     INIT_REGMAP_IRQ(AXP809, GPIO1_INPUT,            4, 1),
>> +     INIT_REGMAP_IRQ(AXP809, GPIO0_INPUT,            4, 0),
>> +};
>> +
>>  static const struct regmap_irq_chip axp152_regmap_irq_chip = {
>>       .name                   = "axp152_irq_chip",
>>       .status_base            = AXP152_IRQ1_STATE,
>> @@ -428,6 +479,18 @@ static const struct regmap_irq_chip axp288_regmap_irq_chip = {
>>
>>  };
>>
>> +static const struct regmap_irq_chip axp809_regmap_irq_chip = {
>> +     .name                   = "axp809",
>> +     .status_base            = AXP20X_IRQ1_STATE,
>> +     .ack_base               = AXP20X_IRQ1_STATE,
>> +     .mask_base              = AXP20X_IRQ1_EN,
>> +     .mask_invert            = true,
>> +     .init_ack_masked        = true,
>> +     .irqs                   = axp809_regmap_irqs,
>> +     .num_irqs               = ARRAY_SIZE(axp809_regmap_irqs),
>> +     .num_regs               = 5,
>> +};
>> +
>>  static struct mfd_cell axp20x_cells[] = {
>>       {
>>               .name           = "axp20x-pek",
>> @@ -572,6 +635,16 @@ static struct mfd_cell axp288_cells[] = {
>>       },
>>  };
>>
>> +static struct mfd_cell axp809_cells[] = {
>> +     {
>> +             .name                   = "axp20x-pek",
>> +             .num_resources          = ARRAY_SIZE(axp809_pek_resources),
>> +             .resources              = axp809_pek_resources,
>> +     }, {
>> +             .name                   = "axp20x-regulator",
>> +     },
>> +};
>> +
>>  static struct axp20x_dev *axp20x_pm_power_off;
>>  static void axp20x_power_off(void)
>>  {
>> @@ -631,6 +704,12 @@ int axp20x_match_device(struct axp20x_dev *axp20x)
>>               axp20x->regmap_cfg = &axp288_regmap_config;
>>               axp20x->regmap_irq_chip = &axp288_regmap_irq_chip;
>>               break;
>> +     case AXP809_ID:
>> +             axp20x->nr_cells = ARRAY_SIZE(axp809_cells);
>> +             axp20x->cells = axp809_cells;
>> +             axp20x->regmap_cfg = &axp22x_regmap_config;
>> +             axp20x->regmap_irq_chip = &axp809_regmap_irq_chip;
>> +             break;
>>       default:
>>               dev_err(dev, "unsupported AXP20X ID %lu\n", axp20x->variant);
>>               return -EINVAL;
>> diff --git a/include/linux/mfd/axp20x.h b/include/linux/mfd/axp20x.h
>> index d82e7d51372b..0be4982f08fe 100644
>> --- a/include/linux/mfd/axp20x.h
>> +++ b/include/linux/mfd/axp20x.h
>> @@ -20,6 +20,7 @@ enum {
>>       AXP221_ID,
>>       AXP223_ID,
>>       AXP288_ID,
>> +     AXP809_ID,
>>       NR_AXP20X_VARIANTS,
>>  };
>>
>> @@ -264,6 +265,29 @@ enum {
>>       AXP22X_REG_ID_MAX,
>>  };
>>
>> +enum {
>> +     AXP809_DCDC1 = 0,
>> +     AXP809_DCDC2,
>> +     AXP809_DCDC3,
>> +     AXP809_DCDC4,
>> +     AXP809_DCDC5,
>> +     AXP809_DC1SW,
>> +     AXP809_DC5LDO,
>> +     AXP809_ALDO1,
>> +     AXP809_ALDO2,
>> +     AXP809_ALDO3,
>> +     AXP809_ELDO1,
>> +     AXP809_ELDO2,
>> +     AXP809_ELDO3,
>> +     AXP809_DLDO1,
>> +     AXP809_DLDO2,
>> +     AXP809_RTC_LDO,
>> +     AXP809_LDO_IO0,
>> +     AXP809_LDO_IO1,
>> +     AXP809_SW,
>> +     AXP809_REG_ID_MAX,
>> +};
>> +
>>  /* IRQs */
>>  enum {
>>       AXP152_IRQ_LDO0IN_CONNECT = 1,
>> @@ -390,6 +414,41 @@ enum axp288_irqs {
>>       AXP288_IRQ_BC_USB_CHNG,
>>  };
>>
>> +enum axp809_irqs {
>> +     AXP809_IRQ_ACIN_OVER_V = 1,
>> +     AXP809_IRQ_ACIN_PLUGIN,
>> +     AXP809_IRQ_ACIN_REMOVAL,
>> +     AXP809_IRQ_VBUS_OVER_V,
>> +     AXP809_IRQ_VBUS_PLUGIN,
>> +     AXP809_IRQ_VBUS_REMOVAL,
>> +     AXP809_IRQ_VBUS_V_LOW,
>> +     AXP809_IRQ_BATT_PLUGIN,
>> +     AXP809_IRQ_BATT_REMOVAL,
>> +     AXP809_IRQ_BATT_ENT_ACT_MODE,
>> +     AXP809_IRQ_BATT_EXIT_ACT_MODE,
>> +     AXP809_IRQ_CHARG,
>> +     AXP809_IRQ_CHARG_DONE,
>> +     AXP809_IRQ_BATT_CHG_TEMP_HIGH,
>> +     AXP809_IRQ_BATT_CHG_TEMP_HIGH_END,
>> +     AXP809_IRQ_BATT_CHG_TEMP_LOW,
>> +     AXP809_IRQ_BATT_CHG_TEMP_LOW_END,
>> +     AXP809_IRQ_BATT_ACT_TEMP_HIGH,
>> +     AXP809_IRQ_BATT_ACT_TEMP_HIGH_END,
>> +     AXP809_IRQ_BATT_ACT_TEMP_LOW,
>> +     AXP809_IRQ_BATT_ACT_TEMP_LOW_END,
>> +     AXP809_IRQ_DIE_TEMP_HIGH,
>> +     AXP809_IRQ_LOW_PWR_LVL1,
>> +     AXP809_IRQ_LOW_PWR_LVL2,
>> +     AXP809_IRQ_TIMER,
>> +     AXP809_IRQ_PEK_RIS_EDGE,
>> +     AXP809_IRQ_PEK_FAL_EDGE,
>> +     AXP809_IRQ_PEK_SHORT,
>> +     AXP809_IRQ_PEK_LONG,
>> +     AXP809_IRQ_PEK_OVER_OFF,
>> +     AXP809_IRQ_GPIO1_INPUT,
>> +     AXP809_IRQ_GPIO0_INPUT,
>> +};
>> +
>>  #define AXP288_TS_ADC_H              0x58
>>  #define AXP288_TS_ADC_L              0x59
>>  #define AXP288_GP_ADC_H              0x5a
>
> --
> Lee Jones
> Linaro STMicroelectronics Landing Team Lead
> Linaro.org │ Open source software for ARM SoCs
> Follow Linaro: Facebook | Twitter | Blog

-- 
You received this message because you are subscribed to the Google Groups "linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email to linux-sunxi+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit https://groups.google.com/d/optout.

^ permalink raw reply	[flat|nested] 54+ messages in thread

* [PATCH resend v2 3/9] mfd: axp20x: Add support for AXP809 PMIC
@ 2016-04-22  6:58       ` Chen-Yu Tsai
  0 siblings, 0 replies; 54+ messages in thread
From: Chen-Yu Tsai @ 2016-04-22  6:58 UTC (permalink / raw)
  To: linux-arm-kernel

Hi Lee,

On Mon, Apr 11, 2016 at 4:24 PM, Lee Jones <lee.jones@linaro.org> wrote:
> On Tue, 29 Mar 2016, Chen-Yu Tsai wrote:
>
>> The X-Powers AXP809 is a new PMIC that is paired with Allwinner's A80
>> SoC, along with a slave AXP806 PMIC.
>>
>> This PMIC is quite similar to the earlier AXP223, though the interrupts
>> and regulator have changed a bit.
>>
>> This patch adds support for the interrupts and power button of the PMIC.
>>
>> Signed-off-by: Chen-Yu Tsai <wens@csie.org>
>> ---
>>  drivers/mfd/axp20x-rsb.c   |  1 +
>>  drivers/mfd/axp20x.c       | 79 ++++++++++++++++++++++++++++++++++++++++++++++
>>  include/linux/mfd/axp20x.h | 59 ++++++++++++++++++++++++++++++++++
>>  3 files changed, 139 insertions(+)
>
> Applied, thanks.

Could you also merge the MAINTAINERS patch ("MAINTAINERS: Add entry for
X-Powers AXP family PMIC drivers") and push an immutable tree for Mark
to merge the regulator patch?

Thanks again.

ChenYu

>
>> diff --git a/drivers/mfd/axp20x-rsb.c b/drivers/mfd/axp20x-rsb.c
>> index 28c20247c112..a407527bcd09 100644
>> --- a/drivers/mfd/axp20x-rsb.c
>> +++ b/drivers/mfd/axp20x-rsb.c
>> @@ -61,6 +61,7 @@ static int axp20x_rsb_remove(struct sunxi_rsb_device *rdev)
>>
>>  static const struct of_device_id axp20x_rsb_of_match[] = {
>>       { .compatible = "x-powers,axp223", .data = (void *)AXP223_ID },
>> +     { .compatible = "x-powers,axp809", .data = (void *)AXP809_ID },
>>       { },
>>  };
>>  MODULE_DEVICE_TABLE(of, axp20x_rsb_of_match);
>> diff --git a/drivers/mfd/axp20x.c b/drivers/mfd/axp20x.c
>> index a57d6e940610..1ce923277cc8 100644
>> --- a/drivers/mfd/axp20x.c
>> +++ b/drivers/mfd/axp20x.c
>> @@ -37,6 +37,7 @@ static const char * const axp20x_model_names[] = {
>>       "AXP221",
>>       "AXP223",
>>       "AXP288",
>> +     "AXP809",
>>  };
>>
>>  static const struct regmap_range axp152_writeable_ranges[] = {
>> @@ -85,6 +86,7 @@ static const struct regmap_access_table axp20x_volatile_table = {
>>       .n_yes_ranges   = ARRAY_SIZE(axp20x_volatile_ranges),
>>  };
>>
>> +/* AXP22x ranges are shared with the AXP809, as they cover the same range */
>>  static const struct regmap_range axp22x_writeable_ranges[] = {
>>       regmap_reg_range(AXP20X_DATACACHE(0), AXP20X_IRQ5_STATE),
>>       regmap_reg_range(AXP20X_DCDC_MODE, AXP22X_BATLOW_THRES1),
>> @@ -211,6 +213,20 @@ static struct resource axp288_fuel_gauge_resources[] = {
>>       },
>>  };
>>
>> +static struct resource axp809_pek_resources[] = {
>> +     {
>> +             .name   = "PEK_DBR",
>> +             .start  = AXP809_IRQ_PEK_RIS_EDGE,
>> +             .end    = AXP809_IRQ_PEK_RIS_EDGE,
>> +             .flags  = IORESOURCE_IRQ,
>> +     }, {
>> +             .name   = "PEK_DBF",
>> +             .start  = AXP809_IRQ_PEK_FAL_EDGE,
>> +             .end    = AXP809_IRQ_PEK_FAL_EDGE,
>> +             .flags  = IORESOURCE_IRQ,
>> +     },
>> +};
>> +
>>  static const struct regmap_config axp152_regmap_config = {
>>       .reg_bits       = 8,
>>       .val_bits       = 8,
>> @@ -378,6 +394,41 @@ static const struct regmap_irq axp288_regmap_irqs[] = {
>>       INIT_REGMAP_IRQ(AXP288, BC_USB_CHNG,            5, 1),
>>  };
>>
>> +static const struct regmap_irq axp809_regmap_irqs[] = {
>> +     INIT_REGMAP_IRQ(AXP809, ACIN_OVER_V,            0, 7),
>> +     INIT_REGMAP_IRQ(AXP809, ACIN_PLUGIN,            0, 6),
>> +     INIT_REGMAP_IRQ(AXP809, ACIN_REMOVAL,           0, 5),
>> +     INIT_REGMAP_IRQ(AXP809, VBUS_OVER_V,            0, 4),
>> +     INIT_REGMAP_IRQ(AXP809, VBUS_PLUGIN,            0, 3),
>> +     INIT_REGMAP_IRQ(AXP809, VBUS_REMOVAL,           0, 2),
>> +     INIT_REGMAP_IRQ(AXP809, VBUS_V_LOW,             0, 1),
>> +     INIT_REGMAP_IRQ(AXP809, BATT_PLUGIN,            1, 7),
>> +     INIT_REGMAP_IRQ(AXP809, BATT_REMOVAL,           1, 6),
>> +     INIT_REGMAP_IRQ(AXP809, BATT_ENT_ACT_MODE,      1, 5),
>> +     INIT_REGMAP_IRQ(AXP809, BATT_EXIT_ACT_MODE,     1, 4),
>> +     INIT_REGMAP_IRQ(AXP809, CHARG,                  1, 3),
>> +     INIT_REGMAP_IRQ(AXP809, CHARG_DONE,             1, 2),
>> +     INIT_REGMAP_IRQ(AXP809, BATT_CHG_TEMP_HIGH,     2, 7),
>> +     INIT_REGMAP_IRQ(AXP809, BATT_CHG_TEMP_HIGH_END, 2, 6),
>> +     INIT_REGMAP_IRQ(AXP809, BATT_CHG_TEMP_LOW,      2, 5),
>> +     INIT_REGMAP_IRQ(AXP809, BATT_CHG_TEMP_LOW_END,  2, 4),
>> +     INIT_REGMAP_IRQ(AXP809, BATT_ACT_TEMP_HIGH,     2, 3),
>> +     INIT_REGMAP_IRQ(AXP809, BATT_ACT_TEMP_HIGH_END, 2, 2),
>> +     INIT_REGMAP_IRQ(AXP809, BATT_ACT_TEMP_LOW,      2, 1),
>> +     INIT_REGMAP_IRQ(AXP809, BATT_ACT_TEMP_LOW_END,  2, 0),
>> +     INIT_REGMAP_IRQ(AXP809, DIE_TEMP_HIGH,          3, 7),
>> +     INIT_REGMAP_IRQ(AXP809, LOW_PWR_LVL1,           3, 1),
>> +     INIT_REGMAP_IRQ(AXP809, LOW_PWR_LVL2,           3, 0),
>> +     INIT_REGMAP_IRQ(AXP809, TIMER,                  4, 7),
>> +     INIT_REGMAP_IRQ(AXP809, PEK_RIS_EDGE,           4, 6),
>> +     INIT_REGMAP_IRQ(AXP809, PEK_FAL_EDGE,           4, 5),
>> +     INIT_REGMAP_IRQ(AXP809, PEK_SHORT,              4, 4),
>> +     INIT_REGMAP_IRQ(AXP809, PEK_LONG,               4, 3),
>> +     INIT_REGMAP_IRQ(AXP809, PEK_OVER_OFF,           4, 2),
>> +     INIT_REGMAP_IRQ(AXP809, GPIO1_INPUT,            4, 1),
>> +     INIT_REGMAP_IRQ(AXP809, GPIO0_INPUT,            4, 0),
>> +};
>> +
>>  static const struct regmap_irq_chip axp152_regmap_irq_chip = {
>>       .name                   = "axp152_irq_chip",
>>       .status_base            = AXP152_IRQ1_STATE,
>> @@ -428,6 +479,18 @@ static const struct regmap_irq_chip axp288_regmap_irq_chip = {
>>
>>  };
>>
>> +static const struct regmap_irq_chip axp809_regmap_irq_chip = {
>> +     .name                   = "axp809",
>> +     .status_base            = AXP20X_IRQ1_STATE,
>> +     .ack_base               = AXP20X_IRQ1_STATE,
>> +     .mask_base              = AXP20X_IRQ1_EN,
>> +     .mask_invert            = true,
>> +     .init_ack_masked        = true,
>> +     .irqs                   = axp809_regmap_irqs,
>> +     .num_irqs               = ARRAY_SIZE(axp809_regmap_irqs),
>> +     .num_regs               = 5,
>> +};
>> +
>>  static struct mfd_cell axp20x_cells[] = {
>>       {
>>               .name           = "axp20x-pek",
>> @@ -572,6 +635,16 @@ static struct mfd_cell axp288_cells[] = {
>>       },
>>  };
>>
>> +static struct mfd_cell axp809_cells[] = {
>> +     {
>> +             .name                   = "axp20x-pek",
>> +             .num_resources          = ARRAY_SIZE(axp809_pek_resources),
>> +             .resources              = axp809_pek_resources,
>> +     }, {
>> +             .name                   = "axp20x-regulator",
>> +     },
>> +};
>> +
>>  static struct axp20x_dev *axp20x_pm_power_off;
>>  static void axp20x_power_off(void)
>>  {
>> @@ -631,6 +704,12 @@ int axp20x_match_device(struct axp20x_dev *axp20x)
>>               axp20x->regmap_cfg = &axp288_regmap_config;
>>               axp20x->regmap_irq_chip = &axp288_regmap_irq_chip;
>>               break;
>> +     case AXP809_ID:
>> +             axp20x->nr_cells = ARRAY_SIZE(axp809_cells);
>> +             axp20x->cells = axp809_cells;
>> +             axp20x->regmap_cfg = &axp22x_regmap_config;
>> +             axp20x->regmap_irq_chip = &axp809_regmap_irq_chip;
>> +             break;
>>       default:
>>               dev_err(dev, "unsupported AXP20X ID %lu\n", axp20x->variant);
>>               return -EINVAL;
>> diff --git a/include/linux/mfd/axp20x.h b/include/linux/mfd/axp20x.h
>> index d82e7d51372b..0be4982f08fe 100644
>> --- a/include/linux/mfd/axp20x.h
>> +++ b/include/linux/mfd/axp20x.h
>> @@ -20,6 +20,7 @@ enum {
>>       AXP221_ID,
>>       AXP223_ID,
>>       AXP288_ID,
>> +     AXP809_ID,
>>       NR_AXP20X_VARIANTS,
>>  };
>>
>> @@ -264,6 +265,29 @@ enum {
>>       AXP22X_REG_ID_MAX,
>>  };
>>
>> +enum {
>> +     AXP809_DCDC1 = 0,
>> +     AXP809_DCDC2,
>> +     AXP809_DCDC3,
>> +     AXP809_DCDC4,
>> +     AXP809_DCDC5,
>> +     AXP809_DC1SW,
>> +     AXP809_DC5LDO,
>> +     AXP809_ALDO1,
>> +     AXP809_ALDO2,
>> +     AXP809_ALDO3,
>> +     AXP809_ELDO1,
>> +     AXP809_ELDO2,
>> +     AXP809_ELDO3,
>> +     AXP809_DLDO1,
>> +     AXP809_DLDO2,
>> +     AXP809_RTC_LDO,
>> +     AXP809_LDO_IO0,
>> +     AXP809_LDO_IO1,
>> +     AXP809_SW,
>> +     AXP809_REG_ID_MAX,
>> +};
>> +
>>  /* IRQs */
>>  enum {
>>       AXP152_IRQ_LDO0IN_CONNECT = 1,
>> @@ -390,6 +414,41 @@ enum axp288_irqs {
>>       AXP288_IRQ_BC_USB_CHNG,
>>  };
>>
>> +enum axp809_irqs {
>> +     AXP809_IRQ_ACIN_OVER_V = 1,
>> +     AXP809_IRQ_ACIN_PLUGIN,
>> +     AXP809_IRQ_ACIN_REMOVAL,
>> +     AXP809_IRQ_VBUS_OVER_V,
>> +     AXP809_IRQ_VBUS_PLUGIN,
>> +     AXP809_IRQ_VBUS_REMOVAL,
>> +     AXP809_IRQ_VBUS_V_LOW,
>> +     AXP809_IRQ_BATT_PLUGIN,
>> +     AXP809_IRQ_BATT_REMOVAL,
>> +     AXP809_IRQ_BATT_ENT_ACT_MODE,
>> +     AXP809_IRQ_BATT_EXIT_ACT_MODE,
>> +     AXP809_IRQ_CHARG,
>> +     AXP809_IRQ_CHARG_DONE,
>> +     AXP809_IRQ_BATT_CHG_TEMP_HIGH,
>> +     AXP809_IRQ_BATT_CHG_TEMP_HIGH_END,
>> +     AXP809_IRQ_BATT_CHG_TEMP_LOW,
>> +     AXP809_IRQ_BATT_CHG_TEMP_LOW_END,
>> +     AXP809_IRQ_BATT_ACT_TEMP_HIGH,
>> +     AXP809_IRQ_BATT_ACT_TEMP_HIGH_END,
>> +     AXP809_IRQ_BATT_ACT_TEMP_LOW,
>> +     AXP809_IRQ_BATT_ACT_TEMP_LOW_END,
>> +     AXP809_IRQ_DIE_TEMP_HIGH,
>> +     AXP809_IRQ_LOW_PWR_LVL1,
>> +     AXP809_IRQ_LOW_PWR_LVL2,
>> +     AXP809_IRQ_TIMER,
>> +     AXP809_IRQ_PEK_RIS_EDGE,
>> +     AXP809_IRQ_PEK_FAL_EDGE,
>> +     AXP809_IRQ_PEK_SHORT,
>> +     AXP809_IRQ_PEK_LONG,
>> +     AXP809_IRQ_PEK_OVER_OFF,
>> +     AXP809_IRQ_GPIO1_INPUT,
>> +     AXP809_IRQ_GPIO0_INPUT,
>> +};
>> +
>>  #define AXP288_TS_ADC_H              0x58
>>  #define AXP288_TS_ADC_L              0x59
>>  #define AXP288_GP_ADC_H              0x5a
>
> --
> Lee Jones
> Linaro STMicroelectronics Landing Team Lead
> Linaro.org ? Open source software for ARM SoCs
> Follow Linaro: Facebook | Twitter | Blog

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [PATCH resend v2 1/9] MAINTAINERS: Add entry for X-Powers AXP family PMIC drivers
@ 2016-04-25 16:27     ` Lee Jones
  0 siblings, 0 replies; 54+ messages in thread
From: Lee Jones @ 2016-04-25 16:27 UTC (permalink / raw)
  To: Chen-Yu Tsai
  Cc: Liam Girdwood, Mark Brown, Maxime Ripard, linux-kernel,
	devicetree, linux-arm-kernel, linux-sunxi, Carlo Caione,
	Ramakrishna Pallala, Todd Brandt, Jacob Pan

On Tue, 29 Mar 2016, Chen-Yu Tsai wrote:

> Add an entry for X-Powers AXP family PMIC drivers and list myself
> as maintainer.
> 
> Cc: Carlo Caione <carlo@caione.org>
> Cc: Maxime Ripard <maxime.ripard@free-electrons.com>
> Cc: Ramakrishna Pallala <ramakrishna.pallala@intel.com>
> Cc: Todd Brandt <todd.e.brandt@linux.intel.com>
> Cc: Jacob Pan <jacob.jun.pan@linux.intel.com>
> Signed-off-by: Chen-Yu Tsai <wens@csie.org>
> Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> ---
>  MAINTAINERS | 6 ++++++
>  1 file changed, 6 insertions(+)

Applied, thanks.

> diff --git a/MAINTAINERS b/MAINTAINERS
> index 03e00c7c88eb..53f2bdfa20c4 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -12147,6 +12147,12 @@ F:	include/linux/workqueue.h
>  F:	kernel/workqueue.c
>  F:	Documentation/workqueue.txt
>  
> +X-POWERS MULTIFUNCTION PMIC DEVICE DRIVERS
> +M:	Chen-Yu Tsai <wens@csie.org>
> +L:	linux-kernel@vger.kernel.org
> +S:	Maintained
> +N:	axp[128]
> +
>  X.25 NETWORK LAYER
>  M:	Andrew Hendry <andrew.hendry@gmail.com>
>  L:	linux-x25@vger.kernel.org

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

^ permalink raw reply	[flat|nested] 54+ messages in thread

* Re: [PATCH resend v2 1/9] MAINTAINERS: Add entry for X-Powers AXP family PMIC drivers
@ 2016-04-25 16:27     ` Lee Jones
  0 siblings, 0 replies; 54+ messages in thread
From: Lee Jones @ 2016-04-25 16:27 UTC (permalink / raw)
  To: Chen-Yu Tsai
  Cc: Liam Girdwood, Mark Brown, Maxime Ripard,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	devicetree-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw, Carlo Caione,
	Ramakrishna Pallala, Todd Brandt, Jacob Pan

On Tue, 29 Mar 2016, Chen-Yu Tsai wrote:

> Add an entry for X-Powers AXP family PMIC drivers and list myself
> as maintainer.
> 
> Cc: Carlo Caione <carlo-KA+7E9HrN00dnm+yROfE0A@public.gmane.org>
> Cc: Maxime Ripard <maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
> Cc: Ramakrishna Pallala <ramakrishna.pallala-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
> Cc: Todd Brandt <todd.e.brandt-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
> Cc: Jacob Pan <jacob.jun.pan-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
> Signed-off-by: Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>
> Acked-by: Maxime Ripard <maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
> ---
>  MAINTAINERS | 6 ++++++
>  1 file changed, 6 insertions(+)

Applied, thanks.

> diff --git a/MAINTAINERS b/MAINTAINERS
> index 03e00c7c88eb..53f2bdfa20c4 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -12147,6 +12147,12 @@ F:	include/linux/workqueue.h
>  F:	kernel/workqueue.c
>  F:	Documentation/workqueue.txt
>  
> +X-POWERS MULTIFUNCTION PMIC DEVICE DRIVERS
> +M:	Chen-Yu Tsai <wens-jdAy2FN1RRM@public.gmane.org>
> +L:	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> +S:	Maintained
> +N:	axp[128]
> +
>  X.25 NETWORK LAYER
>  M:	Andrew Hendry <andrew.hendry-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
>  L:	linux-x25-u79uwXL29TY76Z2rM5mHXA@public.gmane.org

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

-- 
You received this message because you are subscribed to the Google Groups "linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email to linux-sunxi+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit https://groups.google.com/d/optout.

^ permalink raw reply	[flat|nested] 54+ messages in thread

* [PATCH resend v2 1/9] MAINTAINERS: Add entry for X-Powers AXP family PMIC drivers
@ 2016-04-25 16:27     ` Lee Jones
  0 siblings, 0 replies; 54+ messages in thread
From: Lee Jones @ 2016-04-25 16:27 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, 29 Mar 2016, Chen-Yu Tsai wrote:

> Add an entry for X-Powers AXP family PMIC drivers and list myself
> as maintainer.
> 
> Cc: Carlo Caione <carlo@caione.org>
> Cc: Maxime Ripard <maxime.ripard@free-electrons.com>
> Cc: Ramakrishna Pallala <ramakrishna.pallala@intel.com>
> Cc: Todd Brandt <todd.e.brandt@linux.intel.com>
> Cc: Jacob Pan <jacob.jun.pan@linux.intel.com>
> Signed-off-by: Chen-Yu Tsai <wens@csie.org>
> Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> ---
>  MAINTAINERS | 6 ++++++
>  1 file changed, 6 insertions(+)

Applied, thanks.

> diff --git a/MAINTAINERS b/MAINTAINERS
> index 03e00c7c88eb..53f2bdfa20c4 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -12147,6 +12147,12 @@ F:	include/linux/workqueue.h
>  F:	kernel/workqueue.c
>  F:	Documentation/workqueue.txt
>  
> +X-POWERS MULTIFUNCTION PMIC DEVICE DRIVERS
> +M:	Chen-Yu Tsai <wens@csie.org>
> +L:	linux-kernel at vger.kernel.org
> +S:	Maintained
> +N:	axp[128]
> +
>  X.25 NETWORK LAYER
>  M:	Andrew Hendry <andrew.hendry@gmail.com>
>  L:	linux-x25 at vger.kernel.org

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

^ permalink raw reply	[flat|nested] 54+ messages in thread

end of thread, other threads:[~2016-04-25 16:27 UTC | newest]

Thread overview: 54+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-03-29  9:22 [PATCH resend v2 0/9] mfd: axp20x: Add support for AXP809 PMIC Chen-Yu Tsai
2016-03-29  9:22 ` Chen-Yu Tsai
2016-03-29  9:22 ` Chen-Yu Tsai
2016-03-29  9:22 ` [PATCH resend v2 1/9] MAINTAINERS: Add entry for X-Powers AXP family PMIC drivers Chen-Yu Tsai
2016-03-29  9:22   ` Chen-Yu Tsai
2016-03-29  9:22   ` Chen-Yu Tsai
2016-04-25 16:27   ` Lee Jones
2016-04-25 16:27     ` Lee Jones
2016-04-25 16:27     ` Lee Jones
2016-03-29  9:22 ` [PATCH resend v2 2/9] mfd: axp20x: Add bindings for AXP809 PMIC Chen-Yu Tsai
2016-03-29  9:22   ` Chen-Yu Tsai
2016-03-29  9:22   ` Chen-Yu Tsai
2016-04-11  8:24   ` Lee Jones
2016-04-11  8:24     ` Lee Jones
2016-04-11  8:24     ` Lee Jones
2016-03-29  9:22 ` [PATCH resend v2 3/9] mfd: axp20x: Add support " Chen-Yu Tsai
2016-03-29  9:22   ` Chen-Yu Tsai
2016-03-29  9:22   ` Chen-Yu Tsai
2016-04-11  8:24   ` Lee Jones
2016-04-11  8:24     ` Lee Jones
2016-04-11  8:24     ` Lee Jones
2016-04-22  6:58     ` Chen-Yu Tsai
2016-04-22  6:58       ` Chen-Yu Tsai
2016-04-22  6:58       ` Chen-Yu Tsai
2016-03-29  9:22 ` [PATCH resend v2 4/9] regulator: axp20x: support AXP809 variant Chen-Yu Tsai
2016-03-29  9:22   ` Chen-Yu Tsai
2016-03-29  9:22   ` Chen-Yu Tsai
2016-03-29  9:51   ` [linux-sunxi] " Priit Laes
2016-03-29  9:51     ` Priit Laes
2016-03-29  9:51     ` Priit Laes
2016-03-29 16:09   ` Mark Brown
2016-03-29 16:09     ` Mark Brown
2016-03-29 16:09     ` Mark Brown
2016-03-29  9:22 ` [PATCH resend v2 5/9] ARM: dts: sunxi: Add dtsi file for AXP809 PMIC Chen-Yu Tsai
2016-03-29  9:22   ` Chen-Yu Tsai
2016-03-29  9:22   ` Chen-Yu Tsai
2016-03-29  9:22 ` [PATCH resend v2 6/9] ARM: dts: sun9i: a80-optimus: Add AXP809 PMIC device node and regulators Chen-Yu Tsai
2016-03-29  9:22   ` Chen-Yu Tsai
2016-03-29  9:22   ` Chen-Yu Tsai
2016-03-29  9:22 ` [PATCH resend v2 7/9] ARM: dts: sun9i: cubieboard4: " Chen-Yu Tsai
2016-03-29  9:22   ` Chen-Yu Tsai
2016-03-29  9:22   ` Chen-Yu Tsai
2016-03-29  9:22 ` [PATCH resend v2 8/9] ARM: dts: sun9i: a80-optimus: Disable dummy regulators vcc3v0, vcc3v3, vcc5v0 Chen-Yu Tsai
2016-03-29  9:22   ` Chen-Yu Tsai
2016-03-29  9:22   ` Chen-Yu Tsai
2016-03-29  9:22 ` [PATCH resend v2 9/9] ARM: dts: sun9i: cubieboard4: " Chen-Yu Tsai
2016-03-29  9:22   ` Chen-Yu Tsai
2016-03-29  9:22   ` Chen-Yu Tsai
2016-04-11  0:27 ` [PATCH resend v2 0/9] mfd: axp20x: Add support for AXP809 PMIC Chen-Yu Tsai
2016-04-11  0:27   ` Chen-Yu Tsai
2016-04-11  0:27   ` Chen-Yu Tsai
2016-04-11  7:59   ` Lee Jones
2016-04-11  7:59     ` Lee Jones
2016-04-11  7:59     ` Lee Jones

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.