linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] Hi6421 MFD driver
@ 2014-08-25 13:39 Guodong Xu
  2014-08-25 13:39 ` [PATCH 1/3] Documentation: mfd: add docs for hi6421 dt Guodong Xu
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Guodong Xu @ 2014-08-25 13:39 UTC (permalink / raw)
  To: linux-arm-kernel

This patchset add MFD driver for Hi6421 SoC.

It's based on my previous v6 patchset for Hi6421 MFD & regulator driver. But
since regulator part is applied, I rebased the MFD part to v3.17-rc1, merged
review feedback from Lee Jones, solved conflict in Makefile, and fixed a build
error.

Hi6421 is a PMIC SoC designed and manufactured by HiSilicon Ltd. It includes
multi-functions, such as regulators, codec, ADCs, Coulomb counter, etc.
Hi6421 can be used in various Hi3620 SoC based boards. Registers in Hi6421 are
memory bus mapped, so in this design they are accessed by regmap-mmio APIs.

---
changes in this version:
 * merge conflict in drivers/mfd/Makefile
 * use devm_ioremap_resource, as devm_request_and_ioremap is deprecated and
    now removed.
 * incorporate feedback from maintainer
    - Documentation as a separate patch
    - dts node rename from 'pmic' to 'hi6421'
based on v6 patchset for Hi6421 MFD & regulator

Guodong Xu (3):
  Documentation: mfd: add docs for hi6421 dt
  mfd: Add hi6421 PMIC core driver
  ARM: dts: hi3620-hi4511: Add HI6421 MFD and regulator nodes

 Documentation/devicetree/bindings/mfd/hi6421.txt |  38 ++++
 arch/arm/boot/dts/hi3620-hi4511.dts              | 233 +++++++++++++++++++++++
 drivers/mfd/Kconfig                              |  13 ++
 drivers/mfd/Makefile                             |   1 +
 drivers/mfd/hi6421-pmic-core.c                   | 112 +++++++++++
 include/linux/mfd/hi6421-pmic.h                  |  42 ++++
 6 files changed, 439 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/mfd/hi6421.txt
 create mode 100644 drivers/mfd/hi6421-pmic-core.c
 create mode 100644 include/linux/mfd/hi6421-pmic.h

-- 
1.9.1

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

* [PATCH 1/3] Documentation: mfd: add docs for hi6421 dt
  2014-08-25 13:39 [PATCH 0/2] Hi6421 MFD driver Guodong Xu
@ 2014-08-25 13:39 ` Guodong Xu
  2014-08-25 13:39 ` [PATCH 2/3] mfd: Add hi6421 PMIC core driver Guodong Xu
  2014-08-25 13:39 ` [PATCH 3/3] ARM: dts: hi3620-hi4511: Add HI6421 MFD and regulator nodes Guodong Xu
  2 siblings, 0 replies; 6+ messages in thread
From: Guodong Xu @ 2014-08-25 13:39 UTC (permalink / raw)
  To: linux-arm-kernel

Add documentation for HiSilicon Hi6421 PMIC dt binding.

Signed-off-by: Guodong Xu <guodong.xu@linaro.org>
---
 Documentation/devicetree/bindings/mfd/hi6421.txt | 38 ++++++++++++++++++++++++
 1 file changed, 38 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/mfd/hi6421.txt

diff --git a/Documentation/devicetree/bindings/mfd/hi6421.txt b/Documentation/devicetree/bindings/mfd/hi6421.txt
new file mode 100644
index 0000000..0d5a446
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/hi6421.txt
@@ -0,0 +1,38 @@
+* HI6421 Multi-Functional Device (MFD), by HiSilicon Ltd.
+
+Required parent device properties:
+- compatible	: contains "hisilicon,hi6421-pmic";
+- reg		: register range space of hi6421;
+
+Supported Hi6421 sub-devices include:
+
+Device                     IRQ Names              Supply Names   Description
+------                     ---------              ------------   -----------
+regulators               :  None                 : None         : Regulators
+
+Required child device properties:
+None.
+
+Example:
+	hi6421 {
+		compatible = "hisilicon,hi6421-pmic";
+		reg = <0xfcc00000 0x0180>; /* 0x60 << 2 */
+
+		regulators {
+			// supply for MLC NAND/ eMMC
+			hi6421_vout0_reg: hi6421_vout0 {
+				regulator-name = "VOUT0";
+				regulator-min-microvolt = <2850000>;
+				regulator-max-microvolt = <2850000>;
+			};
+
+			// supply for 26M Oscillator
+			hi6421_vout1_reg: hi6421_vout1 {
+				regulator-name = "VOUT1";
+				regulator-min-microvolt = <1700000>;
+				regulator-max-microvolt = <2000000>;
+				regulator-boot-on;
+				regulator-always-on;
+			};
+		};
+	};
-- 
1.9.1

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

* [PATCH 2/3] mfd: Add hi6421 PMIC core driver
  2014-08-25 13:39 [PATCH 0/2] Hi6421 MFD driver Guodong Xu
  2014-08-25 13:39 ` [PATCH 1/3] Documentation: mfd: add docs for hi6421 dt Guodong Xu
@ 2014-08-25 13:39 ` Guodong Xu
  2014-08-27 14:11   ` Lee Jones
  2014-08-25 13:39 ` [PATCH 3/3] ARM: dts: hi3620-hi4511: Add HI6421 MFD and regulator nodes Guodong Xu
  2 siblings, 1 reply; 6+ messages in thread
From: Guodong Xu @ 2014-08-25 13:39 UTC (permalink / raw)
  To: linux-arm-kernel

This adds driver to support HiSilicon Hi6421 PMIC. Hi6421 includes multi-
functions, such as regulators, codec, ADCs, Coulomb counter, etc.
This driver includes core APIs _only_.

Drivers for individul components, like voltage regulators, are
implemented in corresponding driver directories and files.

Registers in Hi6421 are memory mapped, so using regmap-mmio API.

Signed-off-by: Guodong Xu <guodong.xu@linaro.org>
---
 drivers/mfd/Kconfig             |  13 +++++
 drivers/mfd/Makefile            |   1 +
 drivers/mfd/hi6421-pmic-core.c  | 112 ++++++++++++++++++++++++++++++++++++++++
 include/linux/mfd/hi6421-pmic.h |  42 +++++++++++++++
 4 files changed, 168 insertions(+)
 create mode 100644 drivers/mfd/hi6421-pmic-core.c
 create mode 100644 include/linux/mfd/hi6421-pmic.h

diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
index de5abf2..2de4919 100644
--- a/drivers/mfd/Kconfig
+++ b/drivers/mfd/Kconfig
@@ -210,6 +210,19 @@ config MFD_MC13XXX_I2C
 	help
 	  Select this if your MC13xxx is connected via an I2C bus.
 
+config MFD_HI6421_PMIC
+	tristate "HiSilicon Hi6421 PMU/Codec IC"
+	depends on OF
+	select MFD_CORE
+	select REGMAP_MMIO
+	help
+	  Add support for HiSilicon Hi6421 PMIC. Hi6421 includes multi-
+	  functions, such as regulators, RTC, codec, Coulomb counter, etc.
+	  This driver includes core APIs _only_. You have to select
+	  individul components like voltage regulators under corresponding
+	  menus in order to enable them.
+	  We communicate with the Hi6421 via memory-mapped I/O.
+
 config HTC_EGPIO
 	bool "HTC EGPIO support"
 	depends on GPIOLIB && ARM
diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
index f001487..dc59efd 100644
--- a/drivers/mfd/Makefile
+++ b/drivers/mfd/Makefile
@@ -169,6 +169,7 @@ obj-$(CONFIG_MFD_AS3711)	+= as3711.o
 obj-$(CONFIG_MFD_AS3722)	+= as3722.o
 obj-$(CONFIG_MFD_STW481X)	+= stw481x.o
 obj-$(CONFIG_MFD_IPAQ_MICRO)	+= ipaq-micro.o
+obj-$(CONFIG_MFD_HI6421_PMIC)	+= hi6421-pmic-core.o
 
 intel-soc-pmic-objs		:= intel_soc_pmic_core.o intel_soc_pmic_crc.o
 obj-$(CONFIG_INTEL_SOC_PMIC)	+= intel-soc-pmic.o
diff --git a/drivers/mfd/hi6421-pmic-core.c b/drivers/mfd/hi6421-pmic-core.c
new file mode 100644
index 0000000..c6cba8f
--- /dev/null
+++ b/drivers/mfd/hi6421-pmic-core.c
@@ -0,0 +1,112 @@
+/*
+ * Device driver for Hi6421 IC
+ *
+ * Copyright (c) <2011-2014> HiSilicon Technologies Co., Ltd.
+ *              http://www.hisilicon.com
+ * Copyright (c) <2013-2014> Linaro Ltd.
+ *              http://www.linaro.org
+ *
+ * Author: Guodong Xu <guodong.xu@linaro.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <linux/device.h>
+#include <linux/err.h>
+#include <linux/mfd/core.h>
+#include <linux/module.h>
+#include <linux/of.h>
+#include <linux/platform_device.h>
+#include <linux/regmap.h>
+#include <linux/mfd/hi6421-pmic.h>
+
+static struct of_device_id of_hi6421_pmic_match_tbl[] = {
+	{ .compatible = "hisilicon,hi6421-pmic", },
+	{ },
+};
+
+static const struct mfd_cell hi6421_devs[] = {
+	{ .name = "hi6421-regulator", },
+};
+
+static struct regmap_config hi6421_regmap_config = {
+	.reg_bits = 32,
+	.reg_stride = 4,
+	.val_bits = 8,
+	.max_register = HI6421_REG_TO_BUS_ADDR(HI6421_REG_MAX),
+};
+
+static int hi6421_pmic_probe(struct platform_device *pdev)
+{
+	struct hi6421_pmic *pmic;
+	struct resource *res;
+	void __iomem *base;
+	int ret;
+
+	pmic = devm_kzalloc(&pdev->dev, sizeof(*pmic), GFP_KERNEL);
+	if (!pmic)
+		return -ENOMEM;
+
+	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+	base = devm_ioremap_resource(&pdev->dev, res);
+	if (IS_ERR(base))
+		return PTR_ERR(base);
+
+	pmic->regmap = devm_regmap_init_mmio_clk(&pdev->dev, NULL, base,
+						 &hi6421_regmap_config);
+	if (IS_ERR(pmic->regmap)) {
+		dev_err(&pdev->dev,
+			"regmap init failed: %ld\n", PTR_ERR(pmic->regmap));
+		return PTR_ERR(pmic->regmap);
+	}
+
+	/* set over-current protection debounce 8ms */
+	regmap_update_bits(pmic->regmap, HI6421_OCP_DEB_CTRL_REG,
+		(HI6421_OCP_DEB_SEL_MASK | HI6421_OCP_EN_DEBOUNCE_MASK |
+		 HI6421_OCP_AUTO_STOP_MASK),
+		(HI6421_OCP_DEB_SEL_8MS | HI6421_OCP_EN_DEBOUNCE_ENABLE));
+
+	pmic->dev = &pdev->dev;
+	platform_set_drvdata(pdev, pmic);
+
+	ret = mfd_add_devices(&pdev->dev, 0, hi6421_devs,
+			ARRAY_SIZE(hi6421_devs), NULL, 0, NULL);
+	if (ret) {
+		dev_err(&pdev->dev, "add mfd devices failed: %d\n", ret);
+		return ret;
+	}
+
+	return 0;
+}
+
+static int hi6421_pmic_remove(struct platform_device *pdev)
+{
+	mfd_remove_devices(&pdev->dev);
+
+	return 0;
+}
+
+static struct platform_driver hi6421_pmic_driver = {
+	.driver = {
+		.name	= "hi6421_pmic",
+		.of_match_table = of_hi6421_pmic_match_tbl,
+	},
+	.probe	= hi6421_pmic_probe,
+	.remove	= hi6421_pmic_remove,
+};
+module_platform_driver(hi6421_pmic_driver);
+
+MODULE_AUTHOR("Guodong Xu <guodong.xu@linaro.org>");
+MODULE_DESCRIPTION("Hi6421 PMIC driver");
+MODULE_LICENSE("GPL v2");
diff --git a/include/linux/mfd/hi6421-pmic.h b/include/linux/mfd/hi6421-pmic.h
new file mode 100644
index 0000000..2f9fe01
--- /dev/null
+++ b/include/linux/mfd/hi6421-pmic.h
@@ -0,0 +1,42 @@
+/*
+ * Header file for device driver Hi6421 PMIC
+ *
+ * Copyright (c) <2011-2014> HiSilicon Technologies Co., Ltd.
+ *              http://www.hisilicon.com
+ * Copyright (c) <2013-2014> Linaro Ltd.
+ *              http://www.linaro.org
+ *
+ * Author: Guodong Xu <guodong.xu@linaro.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#ifndef	__HI6421_PMIC_H
+#define	__HI6421_PMIC_H
+
+/* Hi6421 registers are mapped to memory bus in 4 bytes stride */
+#define HI6421_REG_TO_BUS_ADDR(x)	(x << 2)
+
+/* Hi6421 maximum register number */
+#define HI6421_REG_MAX			0xFF
+
+/* Hi6421 OCP (over current protection) and DEB (debounce) control register */
+#define	HI6421_OCP_DEB_CTRL_REG		HI6421_REG_TO_BUS_ADDR(0x51)
+#define	HI6421_OCP_DEB_SEL_MASK		0x0C
+#define HI6421_OCP_DEB_SEL_8MS		0x00
+#define HI6421_OCP_DEB_SEL_16MS		0x04
+#define HI6421_OCP_DEB_SEL_32MS		0x08
+#define HI6421_OCP_DEB_SEL_64MS		0x0C
+#define HI6421_OCP_EN_DEBOUNCE_MASK	0x02
+#define HI6421_OCP_EN_DEBOUNCE_ENABLE	0x02
+#define HI6421_OCP_AUTO_STOP_MASK	0x01
+#define HI6421_OCP_AUTO_STOP_ENABLE	0x01
+
+struct hi6421_pmic {
+	struct device		*dev;
+	struct regmap		*regmap;
+};
+
+#endif		/* __HI6421_PMIC_H */
-- 
1.9.1

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

* [PATCH 3/3] ARM: dts: hi3620-hi4511: Add HI6421 MFD and regulator nodes
  2014-08-25 13:39 [PATCH 0/2] Hi6421 MFD driver Guodong Xu
  2014-08-25 13:39 ` [PATCH 1/3] Documentation: mfd: add docs for hi6421 dt Guodong Xu
  2014-08-25 13:39 ` [PATCH 2/3] mfd: Add hi6421 PMIC core driver Guodong Xu
@ 2014-08-25 13:39 ` Guodong Xu
  2 siblings, 0 replies; 6+ messages in thread
From: Guodong Xu @ 2014-08-25 13:39 UTC (permalink / raw)
  To: linux-arm-kernel

Add Hi6421 MFD dts node and regulator nodes into hi3620-hi4511
board config dts file.

Signed-off-by: Guodong Xu <guodong.xu@linaro.org>
---
 arch/arm/boot/dts/hi3620-hi4511.dts | 233 ++++++++++++++++++++++++++++++++++++
 1 file changed, 233 insertions(+)

diff --git a/arch/arm/boot/dts/hi3620-hi4511.dts b/arch/arm/boot/dts/hi3620-hi4511.dts
index fe62392..a1aadbb 100644
--- a/arch/arm/boot/dts/hi3620-hi4511.dts
+++ b/arch/arm/boot/dts/hi3620-hi4511.dts
@@ -635,6 +635,239 @@
 				pinctrl-single,bias-pullup = <0 1 0 1>;
 			};
 		};
+
+		hi6421 {
+			compatible = "hisilicon,hi6421-pmic";
+			reg = <0xc00000 0x0180>; /* 0x60 << 2 */
+
+			regulators {
+				// supply for MLC NAND/ eMMC
+				hi6421_vout0_reg: hi6421_vout0 {
+					regulator-name = "VOUT0";
+					regulator-min-microvolt = <2850000>;
+					regulator-max-microvolt = <2850000>;
+				};
+
+				// supply for 26M Oscillator
+				hi6421_vout1_reg: hi6421_vout1 {
+					regulator-name = "VOUT1";
+					regulator-min-microvolt = <1700000>;
+					regulator-max-microvolt = <2000000>;
+					regulator-boot-on;
+					regulator-always-on;
+				};
+
+				// supply for AP system
+				hi6421_vout2_reg: hi6421_vout2 {
+					regulator-name = "VOUT2";
+					regulator-min-microvolt = <1050000>;
+					regulator-max-microvolt = <1400000>;
+					regulator-boot-on;
+					regulator-always-on;
+				};
+
+				// supply for DDR PHY I/O
+				hi6421_vout3_reg: hi6421_vout3 {
+					regulator-name = "VOUT3";
+					regulator-min-microvolt = <1050000>;
+					regulator-max-microvolt = <1400000>;
+					regulator-boot-on;
+					regulator-always-on;
+				};
+
+				// supply for MIPI, USB2.0, PCIe, PLL Analog
+				hi6421_vout4_reg: hi6421_vout4 {
+					regulator-name = "VOUT4";
+					regulator-min-microvolt = <1500000>;
+					regulator-max-microvolt = <3000000>;
+					regulator-boot-on;
+					regulator-always-on;
+				};
+
+				// supply for I/O 1.8V
+				hi6421_vout5_reg: hi6421_vout5 {
+					regulator-name = "VOUT5";
+					regulator-min-microvolt = <1500000>;
+					regulator-max-microvolt = <3000000>;
+					regulator-boot-on;
+					regulator-always-on;
+				};
+
+				// supply for I/O 2.6V
+				hi6421_vout6_reg: hi6421_vout6 {
+					regulator-name = "VOUT6";
+					regulator-min-microvolt = <1500000>;
+					regulator-max-microvolt = <3000000>;
+					regulator-boot-on;
+					regulator-always-on;
+				};
+
+				// supply for SD I/O
+				hi6421_vout7_reg: hi6421_vout7 {
+					regulator-name = "VOUT7";
+					regulator-min-microvolt = <1500000>;
+					regulator-max-microvolt = <3000000>;
+					regulator-boot-on;
+					regulator-always-on;
+				};
+
+				// supply for USB PHY
+				hi6421_vout8_reg: hi6421_vout8 {
+					regulator-name = "VOUT8";
+					regulator-min-microvolt = <1500000>;
+					regulator-max-microvolt = <3300000>;
+					regulator-boot-on;
+					regulator-always-on;
+				};
+
+				// supply for Efuse power
+				hi6421_vout9_reg: hi6421_vout9 {
+					regulator-name = "VOUT9";
+					regulator-min-microvolt = <1500000>;
+					regulator-max-microvolt = <3000000>;
+				};
+
+				// supply for BT RF&PA
+				hi6421_vout10_reg: hi6421_vout10 {
+					regulator-name = "VOUT10";
+					regulator-min-microvolt = <1500000>;
+					regulator-max-microvolt = <3000000>;
+				};
+
+				// supply for GPS RF&PA
+				hi6421_vout11_reg: hi6421_vout11 {
+					regulator-name = "VOUT11";
+					regulator-min-microvolt = <1500000>;
+					regulator-max-microvolt = <3000000>;
+				};
+
+				// supply for SD card
+				hi6421_vout12_reg: hi6421_vout12 {
+					regulator-name = "VOUT12";
+					regulator-min-microvolt = <2850000>;
+					regulator-max-microvolt = <2850000>;
+				};
+
+				// supply for CMMB
+				hi6421_vout13_reg: hi6421_vout13 {
+					regulator-name = "VOUT13";
+					regulator-min-microvolt = <1500000>;
+					regulator-max-microvolt = <3000000>;
+				};
+
+				// supply for WIFI I/O
+				hi6421_vout14_reg: hi6421_vout14 {
+					regulator-name = "VOUT14";
+					regulator-min-microvolt = <1500000>;
+					regulator-max-microvolt = <3000000>;
+				};
+
+				// supply for WIFI core & PA
+				hi6421_vout15_reg: hi6421_vout15 {
+					regulator-name = "VOUT15";
+					regulator-min-microvolt = <1500000>;
+					regulator-max-microvolt = <3300000>;
+				};
+
+				// supply for LCD I/O
+				hi6421_vout16_reg: hi6421_vout16 {
+					regulator-name = "VOUT16";
+					regulator-min-microvolt = <1500000>;
+					regulator-max-microvolt = <3000000>;
+					regulator-always-on;
+				};
+
+				// supply for LCD Ananlog
+				hi6421_vout17_reg: hi6421_vout17 {
+					regulator-name = "VOUT17";
+					regulator-min-microvolt = <1500000>;
+					regulator-max-microvolt = <3000000>;
+					regulator-always-on;
+				};
+
+				// supply for Camera I/O
+				hi6421_vout18_reg: hi6421_vout18 {
+					regulator-name = "VOUT18";
+					regulator-min-microvolt = <1500000>;
+					regulator-max-microvolt = <3000000>;
+				};
+
+				// supply for Camera Analog
+				hi6421_vout19_reg: hi6421_vout19 {
+					regulator-name = "VOUT19";
+					regulator-min-microvolt = <1500000>;
+					regulator-max-microvolt = <3000000>;
+				};
+
+				// supply for Camera VCM
+				hi6421_vout20_reg: hi6421_vout20 {
+					regulator-name = "VOUT20";
+					regulator-min-microvolt = <1500000>;
+					regulator-max-microvolt = <3000000>;
+				};
+
+				// supply for Audio, incl. HKADC
+				hi6421_vout_audio_reg: hi6421_vout_audio {
+					regulator-name = "AVDD2";
+					regulator-min-microvolt = <2800000>;
+					regulator-max-microvolt = <3300000>;
+				};
+
+				// supply for Cortex-A9 CPU core
+				hi6421_buck0_reg: hi6421_buck0 {
+					regulator-name = "VBUCK0";
+					regulator-min-microvolt = <700000>;
+					regulator-max-microvolt = <1600000>;
+					regulator-boot-on;
+					regulator-always-on;
+				};
+
+				// supply for Cortex-A9 CPU core
+				hi6421_buck1_reg: hi6421_buck1 {
+					regulator-name = "VBUCK1";
+					regulator-min-microvolt = <700000>;
+					regulator-max-microvolt = <1600000>;
+					regulator-boot-on;
+					regulator-always-on;
+				};
+
+				// supply for GPU
+				hi6421_buck2_reg: hi6421_buck2 {
+					regulator-name = "VBUCK2";
+					regulator-min-microvolt = <700000>;
+					regulator-max-microvolt = <1600000>;
+					regulator-boot-on;
+				};
+
+				// supply for Peripheral
+				hi6421_buck3_reg: hi6421_buck3 {
+					regulator-name = "VBUCK3";
+					regulator-min-microvolt = <950000>;
+					regulator-max-microvolt = <1200000>;
+					regulator-boot-on;
+					regulator-always-on;
+				};
+
+				// supply for LPDDR2 and AP I/O
+				hi6421_buck4_reg: hi6421_buck4 {
+					regulator-name = "VBUCK4";
+					regulator-min-microvolt = <1150000>;
+					regulator-max-microvolt = <2000000>;
+					regulator-boot-on;
+					regulator-always-on;
+				};
+
+				// supply for Low voltage
+				hi6421_buck5_reg: hi6421_buck5 {
+					regulator-name = "VBUCK5";
+					regulator-min-microvolt = <1150000>;
+					regulator-max-microvolt = <1900000>;
+					regulator-boot-on;
+					regulator-always-on;
+				};
+			};
+		};
+
 	};
 
 	gpio-keys {
-- 
1.9.1

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

* [PATCH 2/3] mfd: Add hi6421 PMIC core driver
  2014-08-25 13:39 ` [PATCH 2/3] mfd: Add hi6421 PMIC core driver Guodong Xu
@ 2014-08-27 14:11   ` Lee Jones
  2014-09-01  8:17     ` Guodong Xu
  0 siblings, 1 reply; 6+ messages in thread
From: Lee Jones @ 2014-08-27 14:11 UTC (permalink / raw)
  To: linux-arm-kernel

> This adds driver to support HiSilicon Hi6421 PMIC. Hi6421 includes multi-
> functions, such as regulators, codec, ADCs, Coulomb counter, etc.
> This driver includes core APIs _only_.
> 
> Drivers for individul components, like voltage regulators, are
> implemented in corresponding driver directories and files.
> 
> Registers in Hi6421 are memory mapped, so using regmap-mmio API.
> 
> Signed-off-by: Guodong Xu <guodong.xu@linaro.org>
> ---

The patch is missing version information normally indicated to in the
?SUBJECT line with a full description added here.  This looks like a
first submission, but we both know that it's not. 

>  drivers/mfd/Kconfig             |  13 +++++
>  drivers/mfd/Makefile            |   1 +
>  drivers/mfd/hi6421-pmic-core.c  | 112 ++++++++++++++++++++++++++++++++++++++++
>  include/linux/mfd/hi6421-pmic.h |  42 +++++++++++++++
>  4 files changed, 168 insertions(+)
>  create mode 100644 drivers/mfd/hi6421-pmic-core.c
>  create mode 100644 include/linux/mfd/hi6421-pmic.h

[...]

> diff --git a/drivers/mfd/hi6421-pmic-core.c b/drivers/mfd/hi6421-pmic-core.c
> new file mode 100644
> index 0000000..c6cba8f
> --- /dev/null
> +++ b/drivers/mfd/hi6421-pmic-core.c
> @@ -0,0 +1,112 @@

[...]

> +#include <linux/device.h>
> +#include <linux/err.h>
> +#include <linux/mfd/core.h>
> +#include <linux/module.h>
> +#include <linux/of.h>
> +#include <linux/platform_device.h>
> +#include <linux/regmap.h>
> +#include <linux/mfd/hi6421-pmic.h>
> +
> +static struct of_device_id of_hi6421_pmic_match_tbl[] = {
> +	{ .compatible = "hisilicon,hi6421-pmic", },
> +	{ },
> +};

Unless you're going to use this to of_match() on in future, this
should be down by the definition of 'struct platform_driver'.

> +static int hi6421_pmic_probe(struct platform_device *pdev)
> +{

[...]

> +	/* set over-current protection debounce 8ms */
> +	regmap_update_bits(pmic->regmap, HI6421_OCP_DEB_CTRL_REG,
> +		(HI6421_OCP_DEB_SEL_MASK | HI6421_OCP_EN_DEBOUNCE_MASK |
> +		 HI6421_OCP_AUTO_STOP_MASK),
> +		(HI6421_OCP_DEB_SEL_8MS | HI6421_OCP_EN_DEBOUNCE_ENABLE));

These might read a little better stacked and aligned.

> +	pmic->dev = &pdev->dev;

Can't you retrieve this via dev->parent?

-- 
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] 6+ messages in thread

* [PATCH 2/3] mfd: Add hi6421 PMIC core driver
  2014-08-27 14:11   ` Lee Jones
@ 2014-09-01  8:17     ` Guodong Xu
  0 siblings, 0 replies; 6+ messages in thread
From: Guodong Xu @ 2014-09-01  8:17 UTC (permalink / raw)
  To: linux-arm-kernel



On 08/27/2014 10:11 PM, Lee Jones wrote:
>> This adds driver to support HiSilicon Hi6421 PMIC. Hi6421 includes multi-
>> functions, such as regulators, codec, ADCs, Coulomb counter, etc.
>> This driver includes core APIs _only_.
>>
>> Drivers for individul components, like voltage regulators, are
>> implemented in corresponding driver directories and files.
>>
>> Registers in Hi6421 are memory mapped, so using regmap-mmio API.
>>
>> Signed-off-by: Guodong Xu <guodong.xu@linaro.org>
>> ---
> 
> The patch is missing version information normally indicated to in the
> ?SUBJECT line with a full description added here.  This looks like a
> first submission, but we both know that it's not. 
> 

Ok. I will add it back, continuing the versions. Actually I purposely
restarted version number in this submission because the Hi6421 regulator
driver part has been accepted in v5, so this patchset is not inheriting
'exactly' to the previous ones. But seems I am thinking in a wrong way.

I will take this as my v7. And next patchset I send will be v8.

Thanks.

>>  drivers/mfd/Kconfig             |  13 +++++
>>  drivers/mfd/Makefile            |   1 +
>>  drivers/mfd/hi6421-pmic-core.c  | 112 ++++++++++++++++++++++++++++++++++++++++
>>  include/linux/mfd/hi6421-pmic.h |  42 +++++++++++++++
>>  4 files changed, 168 insertions(+)
>>  create mode 100644 drivers/mfd/hi6421-pmic-core.c
>>  create mode 100644 include/linux/mfd/hi6421-pmic.h
> 
> [...]
> 
>> diff --git a/drivers/mfd/hi6421-pmic-core.c b/drivers/mfd/hi6421-pmic-core.c
>> new file mode 100644
>> index 0000000..c6cba8f
>> --- /dev/null
>> +++ b/drivers/mfd/hi6421-pmic-core.c
>> @@ -0,0 +1,112 @@
> 
> [...]
> 
>> +#include <linux/device.h>
>> +#include <linux/err.h>
>> +#include <linux/mfd/core.h>
>> +#include <linux/module.h>
>> +#include <linux/of.h>
>> +#include <linux/platform_device.h>
>> +#include <linux/regmap.h>
>> +#include <linux/mfd/hi6421-pmic.h>
>> +
>> +static struct of_device_id of_hi6421_pmic_match_tbl[] = {
>> +	{ .compatible = "hisilicon,hi6421-pmic", },
>> +	{ },
>> +};
> 
> Unless you're going to use this to of_match() on in future, this
> should be down by the definition of 'struct platform_driver'.
> 

Ok, Will do.

>> +static int hi6421_pmic_probe(struct platform_device *pdev)
>> +{
> 
> [...]
> 
>> +	/* set over-current protection debounce 8ms */
>> +	regmap_update_bits(pmic->regmap, HI6421_OCP_DEB_CTRL_REG,
>> +		(HI6421_OCP_DEB_SEL_MASK | HI6421_OCP_EN_DEBOUNCE_MASK |
>> +		 HI6421_OCP_AUTO_STOP_MASK),
>> +		(HI6421_OCP_DEB_SEL_8MS | HI6421_OCP_EN_DEBOUNCE_ENABLE));
> 
> These might read a little better stacked and aligned.
>

Will do.

>
>> +	pmic->dev = &pdev->dev;
>
> Can't you retrieve this via dev->parent?
>

It is not used. I will remove dev from 'struct hi6421_pmic'.

Thanks.

Best regards,
Guodong Xu

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

end of thread, other threads:[~2014-09-01  8:17 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-08-25 13:39 [PATCH 0/2] Hi6421 MFD driver Guodong Xu
2014-08-25 13:39 ` [PATCH 1/3] Documentation: mfd: add docs for hi6421 dt Guodong Xu
2014-08-25 13:39 ` [PATCH 2/3] mfd: Add hi6421 PMIC core driver Guodong Xu
2014-08-27 14:11   ` Lee Jones
2014-09-01  8:17     ` Guodong Xu
2014-08-25 13:39 ` [PATCH 3/3] ARM: dts: hi3620-hi4511: Add HI6421 MFD and regulator nodes Guodong Xu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).