2014-07-08 15:55:00

by Stanimir Varbanov

[permalink] [raw]
Subject: [PATCH 0/3] Support for Qualcomm QPNP PMIC's

Hello to all,

Here is patch set which adds Qualcomm QPNP PMIC's support.
I've removed RFC tag and sending as regular set hoping that
this time more comments will come out. The link to the RFCv2
at [1].

The first patch in the set implements an *of* based parsing of
PMIC peripheral resources and adding mfd cell for it.
The devicetree node should contain a compatible and reg
proparties. The intention was to keep things simple and similar
to the other mfd drivers.

The second patch adds binding document for qpnp-spmi.

The third patch describes the devicetree binding of the slave
devices attached to the SPMI interface.

Comments are welcome.

regards,
Stan

[1] https://lkml.org/lkml/2014/7/3/443

Ivan T. Ivanov (2):
mfd: qpnp-spmi: document DT bindings for Qualcomm QPNP PMICs
dt: qcom: msm8974: add qpnp-spmi device nodes

Josh Cartwright (1):
mfd: qpnp-spmi: add support for Qualcomm QPNP PMICs

.../devicetree/bindings/qpnp/qcom,qpnp-spmi.txt | 53 +++++++
arch/arm/boot/dts/qcom-msm8974.dtsi | 45 ++++++
drivers/mfd/Kconfig | 15 ++
drivers/mfd/Makefile | 1 +
drivers/mfd/qpnp-spmi.c | 145 ++++++++++++++++++++
5 files changed, 259 insertions(+), 0 deletions(-)
create mode 100644 Documentation/devicetree/bindings/qpnp/qcom,qpnp-spmi.txt
create mode 100644 drivers/mfd/qpnp-spmi.c


2014-07-08 15:55:45

by Stanimir Varbanov

[permalink] [raw]
Subject: [PATCH 1/3] mfd: qpnp-spmi: add support for Qualcomm QPNP PMICs

From: Josh Cartwright <[email protected]>

The Qualcomm QPNP PMIC chips are components used with the
Snapdragon 800 series SoC family. This driver exists
largely as a glue mfd component, it exists to be an owner
of an SPMI regmap for children devices described in
device tree.

Signed-off-by: Stanimir Varbanov <[email protected]>
---
drivers/mfd/Kconfig | 15 +++++
drivers/mfd/Makefile | 1 +
drivers/mfd/qpnp-spmi.c | 145 +++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 161 insertions(+), 0 deletions(-)
create mode 100644 drivers/mfd/qpnp-spmi.c

diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
index ee8204c..258b733 100644
--- a/drivers/mfd/Kconfig
+++ b/drivers/mfd/Kconfig
@@ -524,6 +524,21 @@ config MFD_PM8921_CORE
Say M here if you want to include support for PM8921 chip as a module.
This will build a module called "pm8921-core".

+config MFD_QPNP_SPMI
+ tristate "Qualcomm QPNP SPMI PMIC"
+ depends on ARCH_QCOM || COMPILE_TEST
+ depends on OF
+ select MFD_CORE
+ select REGMAP_SPMI
+ help
+ This enables support for the Qualcomm QPNP SPMI PMICs.
+ These PMICs are currently used with the Snapdragon 800 series of
+ SoCs. Note, that this will only be useful paired with descriptions
+ of the independent functions as children nodes in the device tree.
+
+ Say M here if you want to include support for the QPNP SPMI PMIC
+ series as a module. The module will be called "qpnp-spmi".
+
config MFD_RDC321X
tristate "RDC R-321x southbridge"
select MFD_CORE
diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
index 8afedba..31833d7 100644
--- a/drivers/mfd/Makefile
+++ b/drivers/mfd/Makefile
@@ -153,6 +153,7 @@ obj-$(CONFIG_MFD_SI476X_CORE) += si476x-core.o
obj-$(CONFIG_MFD_CS5535) += cs5535-mfd.o
obj-$(CONFIG_MFD_OMAP_USB_HOST) += omap-usb-host.o omap-usb-tll.o
obj-$(CONFIG_MFD_PM8921_CORE) += pm8921-core.o ssbi.o
+obj-$(CONFIG_MFD_QPNP_SPMI) += qpnp-spmi.o
obj-$(CONFIG_TPS65911_COMPARATOR) += tps65911-comparator.o
obj-$(CONFIG_MFD_TPS65090) += tps65090.o
obj-$(CONFIG_MFD_AAT2870_CORE) += aat2870-core.o
diff --git a/drivers/mfd/qpnp-spmi.c b/drivers/mfd/qpnp-spmi.c
new file mode 100644
index 0000000..01eac64
--- /dev/null
+++ b/drivers/mfd/qpnp-spmi.c
@@ -0,0 +1,145 @@
+/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 and
+ * only version 2 as published by the Free Software Foundation.
+ *
+ * This program 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.
+ */
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/spmi.h>
+#include <linux/regmap.h>
+#include <linux/of_address.h>
+#include <linux/slab.h>
+#include <linux/mfd/core.h>
+
+#define QPNP_RESOURCE_SIZE 256
+
+static const struct regmap_config qpnp_regmap_config = {
+ .reg_bits = 16,
+ .val_bits = 8,
+ .max_register = 0xffff,
+};
+
+static int qpnp_index_to_resource(struct device_node *np, int index,
+ struct resource *res)
+{
+ const char *name = NULL;
+ const __be32 *addrp;
+ u64 addr;
+
+ addrp = of_get_address(np, index, NULL, NULL);
+ if (!addrp)
+ return -EINVAL;
+
+ addr = of_read_number(addrp, 1);
+ if (addr == OF_BAD_ADDR)
+ return -EINVAL;
+
+ of_property_read_string_index(np, "reg-names", index, &name);
+
+ res->start = addr;
+ res->end = addr + QPNP_RESOURCE_SIZE - 1;
+ res->flags = IORESOURCE_REG;
+ res->name = name ? name : np->name;
+
+ return 0;
+}
+
+static int qpnp_add_device(struct spmi_device *root, struct device_node *child)
+{
+ struct mfd_cell cell = {};
+ struct resource *res, *r;
+ int num_resources = 0;
+ const char *compat;
+ int ret, i;
+
+ compat = of_get_property(child, "compatible", NULL);
+ if (!compat)
+ return -ENODEV;
+
+ while (of_get_address(child, num_resources, NULL, NULL))
+ num_resources++;
+
+ if (!num_resources)
+ return -ENODEV;
+
+ res = kcalloc(num_resources, sizeof(*res), GFP_KERNEL);
+ if (!res)
+ return -ENOMEM;
+
+ r = res;
+ for (i = 0; i < num_resources; i++, r++) {
+ ret = qpnp_index_to_resource(child, i, r);
+ if (ret)
+ goto out;
+ }
+
+ cell.of_compatible = compat;
+ cell.num_resources = num_resources;
+ cell.resources = res;
+ cell.name = kasprintf(GFP_KERNEL, "%x.%04x.%s", root->usid,
+ (u16)res[0].start, child->name);
+ if (!cell.name) {
+ ret = -ENOMEM;
+ goto out;
+ }
+
+ ret = mfd_add_devices(&root->dev, PLATFORM_DEVID_NONE, &cell, 1, NULL,
+ 0, NULL);
+
+ kfree(cell.name);
+out:
+ kfree(res);
+ return ret;
+}
+
+static int qpnp_probe(struct spmi_device *sdev)
+{
+ struct device_node *root = sdev->dev.of_node;
+ struct device_node *child;
+ struct regmap *regmap;
+ int ret;
+
+ regmap = devm_regmap_init_spmi_ext(sdev, &qpnp_regmap_config);
+ if (IS_ERR(regmap))
+ return PTR_ERR(regmap);
+
+ for_each_available_child_of_node(root, child) {
+ ret = qpnp_add_device(sdev, child);
+ if (ret)
+ return ret;
+ }
+
+ return 0;
+}
+
+static void qpnp_remove(struct spmi_device *sdev)
+{
+ mfd_remove_devices(&sdev->dev);
+}
+
+static const struct of_device_id qpnp_id_table[] = {
+ { .compatible = "qcom,qpnp-spmi", },
+ { },
+};
+MODULE_DEVICE_TABLE(of, qpnp_id_table);
+
+static struct spmi_driver qpnp_driver = {
+ .probe = qpnp_probe,
+ .remove = qpnp_remove,
+ .driver = {
+ .name = "qpnp-spmi",
+ .of_match_table = qpnp_id_table,
+ },
+};
+module_spmi_driver(qpnp_driver);
+
+MODULE_DESCRIPTION("QPNP PMIC SPMI driver");
+MODULE_ALIAS("platform:" KBUILD_MODNAME);
+MODULE_AUTHOR("The Linux Foundation");
+MODULE_LICENSE("GPL v2");
--
1.7.0.4

2014-07-08 15:56:03

by Stanimir Varbanov

[permalink] [raw]
Subject: [PATCH 2/3] mfd: qpnp-spmi: document DT bindings for Qualcomm QPNP PMICs

From: Ivan T. Ivanov <[email protected]>

Document DT bindings used to describe the Qualcomm QPNP PMICs.

Signed-off-by: Ivan T. Ivanov <[email protected]>
Signed-off-by: Stanimir Varbanov <[email protected]>
---
.../devicetree/bindings/qpnp/qcom,qpnp-spmi.txt | 53 ++++++++++++++++++++
1 files changed, 53 insertions(+), 0 deletions(-)
create mode 100644 Documentation/devicetree/bindings/qpnp/qcom,qpnp-spmi.txt

diff --git a/Documentation/devicetree/bindings/qpnp/qcom,qpnp-spmi.txt b/Documentation/devicetree/bindings/qpnp/qcom,qpnp-spmi.txt
new file mode 100644
index 0000000..24cde34
--- /dev/null
+++ b/Documentation/devicetree/bindings/qpnp/qcom,qpnp-spmi.txt
@@ -0,0 +1,53 @@
+Qualcomm QPNP partitioned PMIC multi-function device bindings
+
+QPNP is effectively a partitioning scheme for dividing the SPMI extended
+register space up into logical pieces, and set of fixed register
+locations/definitions within these regions, with some of these regions
+specifically used for interrupt handling.
+
+The QPNP PMICs are used with the Qualcomm Snapdragon series SoCs, and are
+interfaced to the chip via the SPMI (System Power Management Interface) bus.
+Support for multiple independent functions are implemented by splitting the
+16-bit SPMI slave address space into 256 smaller fixed-size regions, 256 bytes
+each. A function can consume one or more of these fixed-size register regions.
+
+Required properties:
+- compatible: Should contain "qcom,qpnp-spmi"
+- reg: Specifies the SPMI USID slave address for this device.
+ For more information see:
+ Documentation/devicetree/bindings/spmi/spmi.txt
+- #address-cells: Defines address cells for peripheral nodes - should be 1
+- #size-cells: Defines size cells for peripheral nodes - should be 0
+
+Required properties for peripheral child nodes:
+- compatible: Should constain "qcom,qpnp-xxx"
+- reg: One or more 16bits peripheral address(es)
+
+Optional properties for peripheral child nodes:
+- reg-names: Shall be a string describing the reg resource.
+- interrupts: Interrupts are specified as a 4-tuple. For more information
+ see:
+ Documentation/devicetree/bindings/spmi/qcom,spmi-pmic-arb.txt
+- interrupt-names: Corresponding interrupt name to the interrupts property
+
+Each child node represents a function of the QPNP. Each child 'reg' entry
+describes a QPNP peripheral address within the USID slave address space where
+the region starts.
+
+Example:
+
+ pm8941@0 {
+ compatible = "qcom,qpnp-spmi";
+ reg = <0x0 SPMI_USID>;
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ rtc@6000 {
+ compatible = "qcom,qpnp-rtc";
+ reg = <0x6000 0x6100>;
+ reg-names = "rtc", "alarm";
+ interrupts = <0x0 0x61 0x1 IRQ_TYPE_EDGE_RISING>;
+ };
+ };
+
--
1.7.0.4

2014-07-08 15:56:48

by Stanimir Varbanov

[permalink] [raw]
Subject: [PATCH 3/3] dt: qcom: msm8974: add qpnp-spmi device nodes

From: Ivan T. Ivanov <[email protected]>

The qpnp-spmi device nodes are childrens of spmi pmic arbiter.
msm8974 SoC using two pmic chips pm8941 and pm8841. Every chip
has two spmi-qpnp bus id's.

Signed-off-by: Stanimir Varbanov <[email protected]>
---
arch/arm/boot/dts/qcom-msm8974.dtsi | 45 +++++++++++++++++++++++++++++++++++
1 files changed, 45 insertions(+), 0 deletions(-)

diff --git a/arch/arm/boot/dts/qcom-msm8974.dtsi b/arch/arm/boot/dts/qcom-msm8974.dtsi
index 69dca2a..9166b8e 100644
--- a/arch/arm/boot/dts/qcom-msm8974.dtsi
+++ b/arch/arm/boot/dts/qcom-msm8974.dtsi
@@ -3,6 +3,7 @@
#include "skeleton.dtsi"

#include <dt-bindings/clock/qcom,gcc-msm8974.h>
+#include <dt-bindings/spmi/spmi.h>

/ {
model = "Qualcomm MSM8974";
@@ -236,5 +237,49 @@
#interrupt-cells = <2>;
interrupts = <0 208 0>;
};
+
+ spmi@fc4cf000 {
+ compatible = "qcom,spmi-pmic-arb";
+ reg-names = "core", "intr", "cnfg";
+ reg = <0xfc4cf000 0x1000>,
+ <0xfc4cb000 0x1000>,
+ <0xfc4ca000 0x1000>;
+ interrupt-names = "periph_irq";
+ interrupts = <0 190 0>;
+ qcom,ee = <0>;
+ qcom,channel = <0>;
+ #address-cells = <2>;
+ #size-cells = <0>;
+ interrupt-controller;
+ #interrupt-cells = <4>;
+
+ usid0: pm8941@0 {
+ compatible = "qcom,qpnp-spmi";
+ reg = <0x0 SPMI_USID>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ };
+
+ usid1: pm8941@1 {
+ compatible = "qcom,qpnp-spmi";
+ reg = <0x1 SPMI_USID>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ };
+
+ usid4: pm8841@4 {
+ compatible = "qcom,qpnp-spmi";
+ reg = <0x4 SPMI_USID>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ };
+
+ usid5: pm8841@5 {
+ compatible = "qcom,qpnp-spmi";
+ reg = <0x5 SPMI_USID>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ };
+ };
};
};
--
1.7.0.4

2014-07-14 09:51:16

by Pramod Gurav

[permalink] [raw]
Subject: Re: [PATCH 1/3] mfd: qpnp-spmi: add support for Qualcomm QPNP PMICs

On Tue, Jul 8, 2014 at 9:24 PM, Stanimir Varbanov <[email protected]> wrote:
> From: Josh Cartwright <[email protected]>
>
> The Qualcomm QPNP PMIC chips are components used with the
> Snapdragon 800 series SoC family. This driver exists
> largely as a glue mfd component, it exists to be an owner
> of an SPMI regmap for children devices described in
> device tree.
>
> Signed-off-by: Stanimir Varbanov <[email protected]>
> ---
> drivers/mfd/Kconfig | 15 +++++
> drivers/mfd/Makefile | 1 +
> drivers/mfd/qpnp-spmi.c | 145 +++++++++++++++++++++++++++++++++++++++++++++++
> 3 files changed, 161 insertions(+), 0 deletions(-)
> create mode 100644 drivers/mfd/qpnp-spmi.c
>
> diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
> index ee8204c..258b733 100644
> --- a/drivers/mfd/Kconfig
> +++ b/drivers/mfd/Kconfig
> @@ -524,6 +524,21 @@ config MFD_PM8921_CORE
> Say M here if you want to include support for PM8921 chip as a module.
> This will build a module called "pm8921-core".
>
> +config MFD_QPNP_SPMI
> + tristate "Qualcomm QPNP SPMI PMIC"
> + depends on ARCH_QCOM || COMPILE_TEST
> + depends on OF
> + select MFD_CORE
> + select REGMAP_SPMI
> + help
> + This enables support for the Qualcomm QPNP SPMI PMICs.
> + These PMICs are currently used with the Snapdragon 800 series of
> + SoCs. Note, that this will only be useful paired with descriptions
> + of the independent functions as children nodes in the device tree.
> +
> + Say M here if you want to include support for the QPNP SPMI PMIC
> + series as a module. The module will be called "qpnp-spmi".
> +
> config MFD_RDC321X
> tristate "RDC R-321x southbridge"
> select MFD_CORE
> diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile
> index 8afedba..31833d7 100644
> --- a/drivers/mfd/Makefile
> +++ b/drivers/mfd/Makefile
> @@ -153,6 +153,7 @@ obj-$(CONFIG_MFD_SI476X_CORE) += si476x-core.o
> obj-$(CONFIG_MFD_CS5535) += cs5535-mfd.o
> obj-$(CONFIG_MFD_OMAP_USB_HOST) += omap-usb-host.o omap-usb-tll.o
> obj-$(CONFIG_MFD_PM8921_CORE) += pm8921-core.o ssbi.o
> +obj-$(CONFIG_MFD_QPNP_SPMI) += qpnp-spmi.o
> obj-$(CONFIG_TPS65911_COMPARATOR) += tps65911-comparator.o
> obj-$(CONFIG_MFD_TPS65090) += tps65090.o
> obj-$(CONFIG_MFD_AAT2870_CORE) += aat2870-core.o
> diff --git a/drivers/mfd/qpnp-spmi.c b/drivers/mfd/qpnp-spmi.c
> new file mode 100644
> index 0000000..01eac64
> --- /dev/null
> +++ b/drivers/mfd/qpnp-spmi.c
> @@ -0,0 +1,145 @@
> +/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License version 2 and
> + * only version 2 as published by the Free Software Foundation.
> + *
> + * This program 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.
> + */
> +#include <linux/kernel.h>
> +#include <linux/module.h>
> +#include <linux/spmi.h>
> +#include <linux/regmap.h>
> +#include <linux/of_address.h>
> +#include <linux/slab.h>
> +#include <linux/mfd/core.h>
> +
> +#define QPNP_RESOURCE_SIZE 256
> +
> +static const struct regmap_config qpnp_regmap_config = {
> + .reg_bits = 16,
> + .val_bits = 8,
> + .max_register = 0xffff,
> +};
> +
> +static int qpnp_index_to_resource(struct device_node *np, int index,
> + struct resource *res)
> +{
> + const char *name = NULL;
> + const __be32 *addrp;
> + u64 addr;
> +
> + addrp = of_get_address(np, index, NULL, NULL);
> + if (!addrp)
> + return -EINVAL;
> +
> + addr = of_read_number(addrp, 1);
> + if (addr == OF_BAD_ADDR)
> + return -EINVAL;
> +
> + of_property_read_string_index(np, "reg-names", index, &name);
> +
> + res->start = addr;
> + res->end = addr + QPNP_RESOURCE_SIZE - 1;
> + res->flags = IORESOURCE_REG;
> + res->name = name ? name : np->name;
> +
> + return 0;
> +}
> +
> +static int qpnp_add_device(struct spmi_device *root, struct device_node *child)
> +{
> + struct mfd_cell cell = {};
> + struct resource *res, *r;
> + int num_resources = 0;
> + const char *compat;
> + int ret, i;
> +
> + compat = of_get_property(child, "compatible", NULL);
> + if (!compat)
> + return -ENODEV;
> +
> + while (of_get_address(child, num_resources, NULL, NULL))
> + num_resources++;
> +
> + if (!num_resources)
> + return -ENODEV;
> +
> + res = kcalloc(num_resources, sizeof(*res), GFP_KERNEL);
> + if (!res)
> + return -ENOMEM;
> +
> + r = res;
> + for (i = 0; i < num_resources; i++, r++) {
> + ret = qpnp_index_to_resource(child, i, r);
> + if (ret)
> + goto out;
> + }
> +
> + cell.of_compatible = compat;
> + cell.num_resources = num_resources;
> + cell.resources = res;
> + cell.name = kasprintf(GFP_KERNEL, "%x.%04x.%s", root->usid,
> + (u16)res[0].start, child->name);
> + if (!cell.name) {
> + ret = -ENOMEM;
> + goto out;
> + }
> +
> + ret = mfd_add_devices(&root->dev, PLATFORM_DEVID_NONE, &cell, 1, NULL,
> + 0, NULL);
> +
> + kfree(cell.name);
> +out:
> + kfree(res);
> + return ret;
> +}
> +
> +static int qpnp_probe(struct spmi_device *sdev)
> +{
> + struct device_node *root = sdev->dev.of_node;
> + struct device_node *child;
> + struct regmap *regmap;
> + int ret;
> +
> + regmap = devm_regmap_init_spmi_ext(sdev, &qpnp_regmap_config);
> + if (IS_ERR(regmap))
> + return PTR_ERR(regmap);
> +
> + for_each_available_child_of_node(root, child) {
> + ret = qpnp_add_device(sdev, child);
> + if (ret)
> + return ret;
> + }
> +
> + return 0;
> +}
> +
> +static void qpnp_remove(struct spmi_device *sdev)
> +{
> + mfd_remove_devices(&sdev->dev);
> +}
> +
> +static const struct of_device_id qpnp_id_table[] = {
> + { .compatible = "qcom,qpnp-spmi", },
Looks like a extra comma here before closing curly bracket.

> + { },
> +};
> +MODULE_DEVICE_TABLE(of, qpnp_id_table);
> +
> +static struct spmi_driver qpnp_driver = {
> + .probe = qpnp_probe,
> + .remove = qpnp_remove,
> + .driver = {
> + .name = "qpnp-spmi",
> + .of_match_table = qpnp_id_table,
> + },
> +};
> +module_spmi_driver(qpnp_driver);
> +
> +MODULE_DESCRIPTION("QPNP PMIC SPMI driver");
> +MODULE_ALIAS("platform:" KBUILD_MODNAME);
> +MODULE_AUTHOR("The Linux Foundation");
> +MODULE_LICENSE("GPL v2");
> --
> 1.7.0.4
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/



--
Thanks and Regards
Pramod

2014-07-17 10:48:08

by Pramod Gurav

[permalink] [raw]
Subject: Re: [PATCH 1/3] mfd: qpnp-spmi: add support for Qualcomm QPNP PMICs

+Mark Brown
Hi Josh/Stanimir,


On Tue, Jul 8, 2014 at 9:24 PM, Stanimir Varbanov <[email protected]> wrote:
> From: Josh Cartwright <[email protected]>
>
> The Qualcomm QPNP PMIC chips are components used with the
> Snapdragon 800 series SoC family. This driver exists
.
[SNIP]
.
> +config MFD_QPNP_SPMI
> + tristate "Qualcomm QPNP SPMI PMIC"
> + depends on ARCH_QCOM || COMPILE_TEST
> + depends on OF
> + select MFD_CORE
> + select REGMAP_SPMI
REGMAP_SPMI use SPMI functions.

https://patchwork.kernel.org/patch/4566591/

> + help
> + This enables support for the Qualcomm QPNP SPMI PMICs.
> + These PMICs are currently used with the Snapdragon 800 series of
> + SoCs. Note, that this will only be useful paired with descriptions
.
[snip]
.
> +
> +MODULE_DESCRIPTION("QPNP PMIC SPMI driver");
> +MODULE_ALIAS("platform:" KBUILD_MODNAME);
> +MODULE_AUTHOR("The Linux Foundation");
> +MODULE_LICENSE("GPL v2");
> --
> 1.7.0.4
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/



--
Thanks and Regards
Pramod

2014-07-17 10:51:39

by Pramod Gurav

[permalink] [raw]
Subject: Re: [PATCH 1/3] mfd: qpnp-spmi: add support for Qualcomm QPNP PMICs

On Thu, Jul 17, 2014 at 4:18 PM, pramod gurav
<[email protected]> wrote:
> +Mark Brown
> Hi Josh/Stanimir,
>
>
> On Tue, Jul 8, 2014 at 9:24 PM, Stanimir Varbanov <[email protected]> wrote:
>> From: Josh Cartwright <[email protected]>
>>
>> The Qualcomm QPNP PMIC chips are components used with the
>> Snapdragon 800 series SoC family. This driver exists
> .
> [SNIP]
> .
>> +config MFD_QPNP_SPMI
>> + tristate "Qualcomm QPNP SPMI PMIC"
>> + depends on ARCH_QCOM || COMPILE_TEST
>> + depends on OF
>> + select MFD_CORE
>> + select REGMAP_SPMI
> REGMAP_SPMI use SPMI functions.
>
> https://patchwork.kernel.org/patch/4566591/

Sorry for incomplete comment as I sent the mail by mistake.
In above patchwork discussion Mark Brown suggested "driver using
REGMAP_SPMI should depend on SPMI and select REGMAP_SPMI, assuming
SPMI is a user-selectable Kconfig symbol."

>> + help
>> + This enables support for the Qualcomm QPNP SPMI PMICs.
>> + These PMICs are currently used with the Snapdragon 800 series of
>> + SoCs. Note, that this will only be useful paired with descriptions
> .
>
> --
> Thanks and Regards
> Pramod



--
Thanks and Regards
Pramod