* [PATCH v2 1/3] power: supply: max8998-charger: Fix platform data retrieval
2018-07-14 12:26 [PATCH v2 0/3] power: supply: max8998-charger: Paweł Chmiel
@ 2018-07-14 12:26 ` Paweł Chmiel
2018-07-14 12:26 ` [PATCH v2 2/3] power: supply: max8998-charger: Parse device tree for required data Paweł Chmiel
2018-07-14 12:26 ` [PATCH v2 3/3] dt-bindings: mfd: max8998: Add charger subnode binding Paweł Chmiel
2 siblings, 0 replies; 6+ messages in thread
From: Paweł Chmiel @ 2018-07-14 12:26 UTC (permalink / raw)
To: lgirdwood, broonie, sre, lee.jones, robh+dt, mark.rutland
Cc: linux-kernel, linux-pm, devicetree, Tomasz Figa, Paweł Chmiel
From: Tomasz Figa <tomasz.figa@gmail.com>
Since the max8998 MFD driver supports instantiation by DT, platform data
retrieval is handled in MFD probe and cell drivers should get use
the pdata field of max8998_dev struct to obtain them.
Fixes: ee999fb3f17f ("mfd: max8998: Add support for Device Tree")
Signed-off-by: Tomasz Figa <tomasz.figa@gmail.com>
Signed-off-by: Paweł Chmiel <pawel.mikolaj.chmiel@gmail.com>
---
drivers/power/supply/max8998_charger.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/power/supply/max8998_charger.c b/drivers/power/supply/max8998_charger.c
index b64cf0f14142..66438029bdd0 100644
--- a/drivers/power/supply/max8998_charger.c
+++ b/drivers/power/supply/max8998_charger.c
@@ -85,7 +85,7 @@ static const struct power_supply_desc max8998_battery_desc = {
static int max8998_battery_probe(struct platform_device *pdev)
{
struct max8998_dev *iodev = dev_get_drvdata(pdev->dev.parent);
- struct max8998_platform_data *pdata = dev_get_platdata(iodev->dev);
+ struct max8998_platform_data *pdata = iodev->pdata;
struct power_supply_config psy_cfg = {};
struct max8998_battery_data *max8998;
struct i2c_client *i2c;
--
2.7.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 2/3] power: supply: max8998-charger: Parse device tree for required data.
2018-07-14 12:26 [PATCH v2 0/3] power: supply: max8998-charger: Paweł Chmiel
2018-07-14 12:26 ` [PATCH v2 1/3] power: supply: max8998-charger: Fix platform data retrieval Paweł Chmiel
@ 2018-07-14 12:26 ` Paweł Chmiel
2018-07-14 12:26 ` [PATCH v2 3/3] dt-bindings: mfd: max8998: Add charger subnode binding Paweł Chmiel
2 siblings, 0 replies; 6+ messages in thread
From: Paweł Chmiel @ 2018-07-14 12:26 UTC (permalink / raw)
To: lgirdwood, broonie, sre, lee.jones, robh+dt, mark.rutland
Cc: linux-kernel, linux-pm, devicetree, Paweł Chmiel
This patch adds missing code for reading charger configuration
from devicetree.
Signed-off-by: Paweł Chmiel <pawel.mikolaj.chmiel@gmail.com>
---
Changes from v1:
- Removed unneeded Fixes tag
- Use new property names
---
drivers/power/supply/max8998_charger.c | 50 ++++++++++++++++++++++++++++++++++
1 file changed, 50 insertions(+)
diff --git a/drivers/power/supply/max8998_charger.c b/drivers/power/supply/max8998_charger.c
index 66438029bdd0..0a03d3e05c3b 100644
--- a/drivers/power/supply/max8998_charger.c
+++ b/drivers/power/supply/max8998_charger.c
@@ -21,6 +21,7 @@
#include <linux/err.h>
#include <linux/module.h>
+#include <linux/of.h>
#include <linux/slab.h>
#include <linux/platform_device.h>
#include <linux/power_supply.h>
@@ -82,6 +83,49 @@ static const struct power_supply_desc max8998_battery_desc = {
.num_properties = ARRAY_SIZE(max8998_battery_props),
};
+static int max8998_pmic_dt_parse_pdata(struct max8998_dev *iodev,
+ struct max8998_platform_data *pdata)
+{
+ struct device_node *pmic_np = iodev->dev->of_node;
+ struct device_node *charger_np;
+ int ret;
+
+ charger_np = of_get_child_by_name(pmic_np, "charger");
+ if (!charger_np) {
+ dev_err(iodev->dev, "could not find charger sub-node\n");
+ return -EINVAL;
+ }
+
+ ret = of_property_read_u32(charger_np,
+ "max8998,charge-eoc-percent",
+ &pdata->eoc);
+ if (ret < 0) {
+ dev_err(iodev->dev,
+ "Could not find max8998,charge-eoc-percent in devicetree\n");
+ return ret;
+ }
+
+ ret = of_property_read_u32(charger_np,
+ "max8998,charge-restart-level-microvolt",
+ &pdata->restart);
+ if (ret < 0) {
+ dev_err(iodev->dev,
+ "Could not find max8998,charge-restart-level-microvolt in devicetree\n");
+ return ret;
+ }
+
+ ret = of_property_read_u32(charger_np,
+ "max8998,charge-timeout-hours",
+ &pdata->timeout);
+ if (ret < 0) {
+ dev_err(iodev->dev,
+ "Could not find max8998,charge-timeout-hours in devicetree\n");
+ return ret;
+ }
+
+ return 0;
+}
+
static int max8998_battery_probe(struct platform_device *pdev)
{
struct max8998_dev *iodev = dev_get_drvdata(pdev->dev.parent);
@@ -96,6 +140,12 @@ static int max8998_battery_probe(struct platform_device *pdev)
return -ENODEV;
}
+ if (IS_ENABLED(CONFIG_OF) && iodev->dev->of_node) {
+ ret = max8998_pmic_dt_parse_pdata(iodev, pdata);
+ if (ret)
+ return ret;
+ }
+
max8998 = devm_kzalloc(&pdev->dev, sizeof(struct max8998_battery_data),
GFP_KERNEL);
if (!max8998)
--
2.7.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 3/3] dt-bindings: mfd: max8998: Add charger subnode binding
2018-07-14 12:26 [PATCH v2 0/3] power: supply: max8998-charger: Paweł Chmiel
2018-07-14 12:26 ` [PATCH v2 1/3] power: supply: max8998-charger: Fix platform data retrieval Paweł Chmiel
2018-07-14 12:26 ` [PATCH v2 2/3] power: supply: max8998-charger: Parse device tree for required data Paweł Chmiel
@ 2018-07-14 12:26 ` Paweł Chmiel
2018-07-16 18:00 ` Rob Herring
2 siblings, 1 reply; 6+ messages in thread
From: Paweł Chmiel @ 2018-07-14 12:26 UTC (permalink / raw)
To: lgirdwood, broonie, sre, lee.jones, robh+dt, mark.rutland
Cc: linux-kernel, linux-pm, devicetree, Paweł Chmiel
This patch adds devicetree bindings documentation for
battery charging controller as the subnode of MAX8998 PMIC.
Signed-off-by: Paweł Chmiel <pawel.mikolaj.chmiel@gmail.com>
---
Changes from v1:
- Removed unneeded Fixes tag
- Correct description of all charger values
- Added missing property unit
---
Documentation/devicetree/bindings/mfd/max8998.txt | 24 +++++++++++++++++++++++
1 file changed, 24 insertions(+)
diff --git a/Documentation/devicetree/bindings/mfd/max8998.txt b/Documentation/devicetree/bindings/mfd/max8998.txt
index 23a3650ff2a2..196e50097a36 100644
--- a/Documentation/devicetree/bindings/mfd/max8998.txt
+++ b/Documentation/devicetree/bindings/mfd/max8998.txt
@@ -50,6 +50,23 @@ Additional properties required if max8998,pmic-buck2-dvs-gpio is defined:
- max8998,pmic-buck2-dvs-voltage: An array of 2 voltage values in microvolts
for buck2 regulator that can be selected using dvs gpio.
+Charger: Configuration for battery charging controller should be added
+inside a child node named 'charger'.
+ Required properties:
+ - max8998,charge-eoc-percent: Setup End of Charge Level.
+ If value equals 0, leave it unchanged.
+ Otherwise it should be value from 10 to 45 by 5 step.
+
+ - max8998,charge-restart-level-microvolt: Setup Charge Restart Level.
+ If value equals 0, leave it unchanged.
+ If value equals -1, it will be disabled.
+ Otherwise it should be one of following values: 100, 150, 200.
+
+ - max8998,charge-timeout-hours: Setup Charge Full Timeout.
+ If value equals 0, leave it unchanged.
+ If value equals -1, it will be disabled.
+ Otherwise it should be one of following values: 5, 6, 7.
+
Regulators: All the regulators of MAX8998 to be instantiated shall be
listed in a child node named 'regulators'. Each regulator is represented
by a child node of the 'regulators' node.
@@ -99,6 +116,13 @@ Example:
max8998,pmic-buck2-dvs-gpio = <&gpx0 0 3 0 0>; /* SET3 */
max8998,pmic-buck2-dvs-voltage = <1350000>, <1300000>;
+ /* Charger configuration */
+ charger {
+ max8998,charge-eoc-percent = <0>;
+ max8998,charge-restart-level-microvolt = <(-1)>;
+ max8998,charge-timeout-hours = <7>;
+ };
+
/* Regulators to instantiate */
regulators {
ldo2_reg: LDO2 {
--
2.7.4
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2 3/3] dt-bindings: mfd: max8998: Add charger subnode binding
2018-07-14 12:26 ` [PATCH v2 3/3] dt-bindings: mfd: max8998: Add charger subnode binding Paweł Chmiel
@ 2018-07-16 18:00 ` Rob Herring
2018-07-16 18:59 ` Paweł Chmiel
0 siblings, 1 reply; 6+ messages in thread
From: Rob Herring @ 2018-07-16 18:00 UTC (permalink / raw)
To: Paweł Chmiel
Cc: lgirdwood, broonie, sre, lee.jones, mark.rutland, linux-kernel,
linux-pm, devicetree
On Sat, Jul 14, 2018 at 02:26:53PM +0200, Paweł Chmiel wrote:
> This patch adds devicetree bindings documentation for
> battery charging controller as the subnode of MAX8998 PMIC.
>
> Signed-off-by: Paweł Chmiel <pawel.mikolaj.chmiel@gmail.com>
> ---
> Changes from v1:
> - Removed unneeded Fixes tag
> - Correct description of all charger values
> - Added missing property unit
> ---
> Documentation/devicetree/bindings/mfd/max8998.txt | 24 +++++++++++++++++++++++
> 1 file changed, 24 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/mfd/max8998.txt b/Documentation/devicetree/bindings/mfd/max8998.txt
> index 23a3650ff2a2..196e50097a36 100644
> --- a/Documentation/devicetree/bindings/mfd/max8998.txt
> +++ b/Documentation/devicetree/bindings/mfd/max8998.txt
> @@ -50,6 +50,23 @@ Additional properties required if max8998,pmic-buck2-dvs-gpio is defined:
> - max8998,pmic-buck2-dvs-voltage: An array of 2 voltage values in microvolts
> for buck2 regulator that can be selected using dvs gpio.
>
> +Charger: Configuration for battery charging controller should be added
> +inside a child node named 'charger'.
> + Required properties:
> + - max8998,charge-eoc-percent: Setup End of Charge Level.
> + If value equals 0, leave it unchanged.
> + Otherwise it should be value from 10 to 45 by 5 step.
> +
> + - max8998,charge-restart-level-microvolt: Setup Charge Restart Level.
> + If value equals 0, leave it unchanged.
> + If value equals -1, it will be disabled.
-1 is a bit strange. Why not 'not present' is disabled?
> + Otherwise it should be one of following values: 100, 150, 200.
> +
> + - max8998,charge-timeout-hours: Setup Charge Full Timeout.
> + If value equals 0, leave it unchanged.
> + If value equals -1, it will be disabled.
> + Otherwise it should be one of following values: 5, 6, 7.
> +
> Regulators: All the regulators of MAX8998 to be instantiated shall be
> listed in a child node named 'regulators'. Each regulator is represented
> by a child node of the 'regulators' node.
> @@ -99,6 +116,13 @@ Example:
> max8998,pmic-buck2-dvs-gpio = <&gpx0 0 3 0 0>; /* SET3 */
> max8998,pmic-buck2-dvs-voltage = <1350000>, <1300000>;
>
> + /* Charger configuration */
> + charger {
> + max8998,charge-eoc-percent = <0>;
> + max8998,charge-restart-level-microvolt = <(-1)>;
> + max8998,charge-timeout-hours = <7>;
> + };
> +
> /* Regulators to instantiate */
> regulators {
> ldo2_reg: LDO2 {
> --
> 2.7.4
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 3/3] dt-bindings: mfd: max8998: Add charger subnode binding
2018-07-16 18:00 ` Rob Herring
@ 2018-07-16 18:59 ` Paweł Chmiel
0 siblings, 0 replies; 6+ messages in thread
From: Paweł Chmiel @ 2018-07-16 18:59 UTC (permalink / raw)
To: Rob Herring
Cc: lgirdwood, broonie, sre, lee.jones, mark.rutland, linux-kernel,
linux-pm, devicetree
On Monday, July 16, 2018 12:00:03 PM CEST Rob Herring wrote:
> On Sat, Jul 14, 2018 at 02:26:53PM +0200, Paweł Chmiel wrote:
> > This patch adds devicetree bindings documentation for
> > battery charging controller as the subnode of MAX8998 PMIC.
> >
> > Signed-off-by: Paweł Chmiel <pawel.mikolaj.chmiel@gmail.com>
> > ---
> > Changes from v1:
> > - Removed unneeded Fixes tag
> > - Correct description of all charger values
> > - Added missing property unit
> > ---
> > Documentation/devicetree/bindings/mfd/max8998.txt | 24 +++++++++++++++++++++++
> > 1 file changed, 24 insertions(+)
> >
> > diff --git a/Documentation/devicetree/bindings/mfd/max8998.txt b/Documentation/devicetree/bindings/mfd/max8998.txt
> > index 23a3650ff2a2..196e50097a36 100644
> > --- a/Documentation/devicetree/bindings/mfd/max8998.txt
> > +++ b/Documentation/devicetree/bindings/mfd/max8998.txt
> > @@ -50,6 +50,23 @@ Additional properties required if max8998,pmic-buck2-dvs-gpio is defined:
> > - max8998,pmic-buck2-dvs-voltage: An array of 2 voltage values in microvolts
> > for buck2 regulator that can be selected using dvs gpio.
> >
> > +Charger: Configuration for battery charging controller should be added
> > +inside a child node named 'charger'.
> > + Required properties:
> > + - max8998,charge-eoc-percent: Setup End of Charge Level.
> > + If value equals 0, leave it unchanged.
> > + Otherwise it should be value from 10 to 45 by 5 step.
> > +
> > + - max8998,charge-restart-level-microvolt: Setup Charge Restart Level.
> > + If value equals 0, leave it unchanged.
> > + If value equals -1, it will be disabled.
>
> -1 is a bit strange. Why not 'not present' is disabled?
I wanted to make it work the same way, as it was in case of using it from platform_data.
But this is good idea, to change it a bit.
So we would have:
- 0 -> leave unchanged
- property not present in devicetree -> disabled (and set to -1 - driver is expecting it)
- value from 10-45 or (5,6,7 in case of second property)
I'll update both documentation and driver parsing code (for both properties - restart level and full timeout) and send v3 version.
Thanks for suggestion.
>
> > + Otherwise it should be one of following values: 100, 150, 200.
> > +
> > + - max8998,charge-timeout-hours: Setup Charge Full Timeout.
> > + If value equals 0, leave it unchanged.
> > + If value equals -1, it will be disabled.
> > + Otherwise it should be one of following values: 5, 6, 7.
> > +
> > Regulators: All the regulators of MAX8998 to be instantiated shall be
> > listed in a child node named 'regulators'. Each regulator is represented
> > by a child node of the 'regulators' node.
> > @@ -99,6 +116,13 @@ Example:
> > max8998,pmic-buck2-dvs-gpio = <&gpx0 0 3 0 0>; /* SET3 */
> > max8998,pmic-buck2-dvs-voltage = <1350000>, <1300000>;
> >
> > + /* Charger configuration */
> > + charger {
> > + max8998,charge-eoc-percent = <0>;
> > + max8998,charge-restart-level-microvolt = <(-1)>;
> > + max8998,charge-timeout-hours = <7>;
> > + };
> > +
> > /* Regulators to instantiate */
> > regulators {
> > ldo2_reg: LDO2 {
>
^ permalink raw reply [flat|nested] 6+ messages in thread