* [PATCH v5 1/8] extcon: max8997: Add CHGINS and CHGRM interrupt handling
@ 2020-12-28 11:35 ` Timon Baetz
0 siblings, 0 replies; 20+ messages in thread
From: Timon Baetz @ 2020-12-28 11:35 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: devicetree, linux-samsung-soc, Timon Baetz, linux-pm,
linux-kernel, Mark Brown, Liam Girdwood, Rob Herring,
Sebastian Reichel, Chanwoo Choi, MyungJoo Ham,
~postmarketos/upstreaming, Lee Jones, linux-arm-kernel,
Marek Szyprowski
This allows the MAX8997 charger to set the current limit depending on
the detected extcon charger type.
Signed-off-by: Timon Baetz <timon.baetz@protonmail.com>
---
drivers/extcon/extcon-max8997.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/extcon/extcon-max8997.c b/drivers/extcon/extcon-max8997.c
index 337b0eea4e62..e1408075ef7d 100644
--- a/drivers/extcon/extcon-max8997.c
+++ b/drivers/extcon/extcon-max8997.c
@@ -44,6 +44,8 @@ static struct max8997_muic_irq muic_irqs[] = {
{ MAX8997_MUICIRQ_ChgDetRun, "muic-CHGDETRUN" },
{ MAX8997_MUICIRQ_ChgTyp, "muic-CHGTYP" },
{ MAX8997_MUICIRQ_OVP, "muic-OVP" },
+ { MAX8997_PMICIRQ_CHGINS, "pmic-CHGINS" },
+ { MAX8997_PMICIRQ_CHGRM, "pmic-CHGRM" },
};
/* Define supported cable type */
@@ -538,6 +540,8 @@ static void max8997_muic_irq_work(struct work_struct *work)
case MAX8997_MUICIRQ_DCDTmr:
case MAX8997_MUICIRQ_ChgDetRun:
case MAX8997_MUICIRQ_ChgTyp:
+ case MAX8997_PMICIRQ_CHGINS:
+ case MAX8997_PMICIRQ_CHGRM:
/* Handle charger cable */
ret = max8997_muic_chg_handler(info);
break;
--
2.25.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v5 2/8] regulator: dt-bindings: Document max8997-pmic nodes
2020-12-28 11:35 ` Timon Baetz
@ 2020-12-28 11:35 ` Timon Baetz
-1 siblings, 0 replies; 20+ messages in thread
From: Timon Baetz @ 2020-12-28 11:35 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Marek Szyprowski, Liam Girdwood, Mark Brown, Rob Herring,
MyungJoo Ham, Chanwoo Choi, Lee Jones, Sebastian Reichel,
linux-kernel, devicetree, linux-arm-kernel, linux-samsung-soc,
linux-pm, ~postmarketos/upstreaming, Timon Baetz
Add maxim,max8997-battery and maxim,max8997-muic optional nodes.
Signed-off-by: Timon Baetz <timon.baetz@protonmail.com>
Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
---
.../bindings/regulator/max8997-regulator.txt | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/Documentation/devicetree/bindings/regulator/max8997-regulator.txt b/Documentation/devicetree/bindings/regulator/max8997-regulator.txt
index 6fe825b8ac1b..faaf2bbf0272 100644
--- a/Documentation/devicetree/bindings/regulator/max8997-regulator.txt
+++ b/Documentation/devicetree/bindings/regulator/max8997-regulator.txt
@@ -53,6 +53,18 @@ Additional properties required if either of the optional properties are used:
- max8997,pmic-buck125-dvs-gpios: GPIO specifiers for three host gpio's used
for dvs. The format of the gpio specifier depends in the gpio controller.
+Optional nodes:
+- charger: Node for configuring the charger driver.
+ Required properties:
+ - compatible: "maxim,max8997-battery"
+ Optional properties:
+ - extcon: extcon specifier for charging events
+ - charger-supply: regulator node for charging current
+
+- muic: Node used only by extcon consumers.
+ Required properties:
+ - compatible: "maxim,max8997-muic"
+
Regulators: The regulators of max8997 that have to be instantiated should be
included in a sub-node named 'regulators'. Regulator nodes included in this
sub-node should be of the format as listed below.
--
2.25.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v5 2/8] regulator: dt-bindings: Document max8997-pmic nodes
@ 2020-12-28 11:35 ` Timon Baetz
0 siblings, 0 replies; 20+ messages in thread
From: Timon Baetz @ 2020-12-28 11:35 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: devicetree, linux-samsung-soc, Timon Baetz, linux-pm,
linux-kernel, Mark Brown, Liam Girdwood, Rob Herring,
Sebastian Reichel, Chanwoo Choi, MyungJoo Ham,
~postmarketos/upstreaming, Lee Jones, linux-arm-kernel,
Marek Szyprowski
Add maxim,max8997-battery and maxim,max8997-muic optional nodes.
Signed-off-by: Timon Baetz <timon.baetz@protonmail.com>
Acked-by: Krzysztof Kozlowski <krzk@kernel.org>
---
.../bindings/regulator/max8997-regulator.txt | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/Documentation/devicetree/bindings/regulator/max8997-regulator.txt b/Documentation/devicetree/bindings/regulator/max8997-regulator.txt
index 6fe825b8ac1b..faaf2bbf0272 100644
--- a/Documentation/devicetree/bindings/regulator/max8997-regulator.txt
+++ b/Documentation/devicetree/bindings/regulator/max8997-regulator.txt
@@ -53,6 +53,18 @@ Additional properties required if either of the optional properties are used:
- max8997,pmic-buck125-dvs-gpios: GPIO specifiers for three host gpio's used
for dvs. The format of the gpio specifier depends in the gpio controller.
+Optional nodes:
+- charger: Node for configuring the charger driver.
+ Required properties:
+ - compatible: "maxim,max8997-battery"
+ Optional properties:
+ - extcon: extcon specifier for charging events
+ - charger-supply: regulator node for charging current
+
+- muic: Node used only by extcon consumers.
+ Required properties:
+ - compatible: "maxim,max8997-muic"
+
Regulators: The regulators of max8997 that have to be instantiated should be
included in a sub-node named 'regulators'. Regulator nodes included in this
sub-node should be of the format as listed below.
--
2.25.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v5 3/8] power: supply: max8997_charger: Set CHARGER current limit
2020-12-28 11:35 ` Timon Baetz
@ 2020-12-28 11:36 ` Timon Baetz
-1 siblings, 0 replies; 20+ messages in thread
From: Timon Baetz @ 2020-12-28 11:36 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Marek Szyprowski, Liam Girdwood, Mark Brown, Rob Herring,
MyungJoo Ham, Chanwoo Choi, Lee Jones, Sebastian Reichel,
linux-kernel, devicetree, linux-arm-kernel, linux-samsung-soc,
linux-pm, ~postmarketos/upstreaming, Timon Baetz
Register for extcon notification and set charging current depending on
the detected cable type. Current values are taken from vendor kernel,
where most charger types end up setting 650mA [0].
Also enable and disable the CHARGER regulator based on extcon events.
[0] https://github.com/krzk/linux-vendor-backup/blob/samsung/galaxy-s2-epic-4g-touch-sph-d710-exynos4210-dump/drivers/misc/max8997-muic.c#L1675-L1678
Signed-off-by: Timon Baetz <timon.baetz@protonmail.com>
---
drivers/power/supply/max8997_charger.c | 96 ++++++++++++++++++++++++++
1 file changed, 96 insertions(+)
diff --git a/drivers/power/supply/max8997_charger.c b/drivers/power/supply/max8997_charger.c
index 1947af25879a..f0f725385dfc 100644
--- a/drivers/power/supply/max8997_charger.c
+++ b/drivers/power/supply/max8997_charger.c
@@ -6,12 +6,14 @@
// MyungJoo Ham <myungjoo.ham@samsung.com>
#include <linux/err.h>
+#include <linux/extcon.h>
#include <linux/module.h>
#include <linux/slab.h>
#include <linux/platform_device.h>
#include <linux/power_supply.h>
#include <linux/mfd/max8997.h>
#include <linux/mfd/max8997-private.h>
+#include <linux/regulator/consumer.h>
/* MAX8997_REG_STATUS4 */
#define DCINOK_SHIFT 1
@@ -31,6 +33,10 @@ struct charger_data {
struct device *dev;
struct max8997_dev *iodev;
struct power_supply *battery;
+ struct regulator *reg;
+ struct extcon_dev *edev;
+ struct notifier_block extcon_nb;
+ struct work_struct extcon_work;
};
static enum power_supply_property max8997_battery_props[] = {
@@ -88,6 +94,67 @@ static int max8997_battery_get_property(struct power_supply *psy,
return 0;
}
+static void max8997_battery_extcon_evt_stop_work(void *data)
+{
+ struct charger_data *charger = data;
+
+ cancel_work_sync(&charger->extcon_work);
+}
+
+static void max8997_battery_extcon_evt_worker(struct work_struct *work)
+{
+ struct charger_data *charger =
+ container_of(work, struct charger_data, extcon_work);
+ struct extcon_dev *edev = charger->edev;
+ int current_limit;
+
+ if (extcon_get_state(edev, EXTCON_CHG_USB_SDP) > 0) {
+ dev_dbg(charger->dev, "USB SDP charger is connected\n");
+ current_limit = 450000;
+ } else if (extcon_get_state(edev, EXTCON_CHG_USB_DCP) > 0) {
+ dev_dbg(charger->dev, "USB DCP charger is connected\n");
+ current_limit = 650000;
+ } else if (extcon_get_state(edev, EXTCON_CHG_USB_FAST) > 0) {
+ dev_dbg(charger->dev, "USB FAST charger is connected\n");
+ current_limit = 650000;
+ } else if (extcon_get_state(edev, EXTCON_CHG_USB_SLOW) > 0) {
+ dev_dbg(charger->dev, "USB SLOW charger is connected\n");
+ current_limit = 650000;
+ } else if (extcon_get_state(edev, EXTCON_CHG_USB_CDP) > 0) {
+ dev_dbg(charger->dev, "USB CDP charger is connected\n");
+ current_limit = 650000;
+ } else {
+ dev_dbg(charger->dev, "USB charger is diconnected\n");
+ current_limit = -1;
+ }
+
+ if (current_limit > 0) {
+ int ret = regulator_set_current_limit(charger->reg, current_limit, current_limit);
+
+ if (ret) {
+ dev_err(charger->dev, "failed to set current limit: %d\n", ret);
+ return;
+ }
+ ret = regulator_enable(charger->reg);
+ if (ret)
+ dev_err(charger->dev, "failed to enable regulator: %d\n", ret);
+ } else {
+ int ret = regulator_disable(charger->reg);
+
+ if (ret)
+ dev_err(charger->dev, "failed to disable regulator: %d\n", ret);
+ }
+}
+
+static int max8997_battery_extcon_evt(struct notifier_block *nb,
+ unsigned long event, void *param)
+{
+ struct charger_data *charger =
+ container_of(nb, struct charger_data, extcon_nb);
+ schedule_work(&charger->extcon_work);
+ return NOTIFY_OK;
+}
+
static const struct power_supply_desc max8997_battery_desc = {
.name = "max8997_pmic",
.type = POWER_SUPPLY_TYPE_BATTERY,
@@ -170,6 +237,35 @@ static int max8997_battery_probe(struct platform_device *pdev)
return PTR_ERR(charger->battery);
}
+ charger->reg = devm_regulator_get_optional(&pdev->dev, "charger");
+ if (IS_ERR(charger->reg)) {
+ if (PTR_ERR(charger->reg) == -EPROBE_DEFER)
+ return -EPROBE_DEFER;
+ dev_err(&pdev->dev, "couldn't get charger regulator\n");
+ }
+ charger->edev = extcon_get_edev_by_phandle(&pdev->dev, 0);
+ if (IS_ERR(charger->edev)) {
+ if (PTR_ERR(charger->edev) == -EPROBE_DEFER)
+ return -EPROBE_DEFER;
+ dev_err(charger->dev, "couldn't get extcon device\n");
+ }
+
+ if (!IS_ERR(charger->reg) && !IS_ERR(charger->edev)) {
+ INIT_WORK(&charger->extcon_work, max8997_battery_extcon_evt_worker);
+ ret = devm_add_action(&pdev->dev, max8997_battery_extcon_evt_stop_work, charger);
+ if (ret) {
+ dev_err(&pdev->dev, "failed to add extcon evt stop action: %d\n", ret);
+ return ret;
+ }
+ charger->extcon_nb.notifier_call = max8997_battery_extcon_evt;
+ ret = devm_extcon_register_notifier_all(&pdev->dev, charger->edev,
+ &charger->extcon_nb);
+ if (ret) {
+ dev_err(&pdev->dev, "failed to register extcon notifier\n");
+ return ret;
+ };
+ }
+
return 0;
}
--
2.25.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v5 3/8] power: supply: max8997_charger: Set CHARGER current limit
@ 2020-12-28 11:36 ` Timon Baetz
0 siblings, 0 replies; 20+ messages in thread
From: Timon Baetz @ 2020-12-28 11:36 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: devicetree, linux-samsung-soc, Timon Baetz, linux-pm,
linux-kernel, Mark Brown, Liam Girdwood, Rob Herring,
Sebastian Reichel, Chanwoo Choi, MyungJoo Ham,
~postmarketos/upstreaming, Lee Jones, linux-arm-kernel,
Marek Szyprowski
Register for extcon notification and set charging current depending on
the detected cable type. Current values are taken from vendor kernel,
where most charger types end up setting 650mA [0].
Also enable and disable the CHARGER regulator based on extcon events.
[0] https://github.com/krzk/linux-vendor-backup/blob/samsung/galaxy-s2-epic-4g-touch-sph-d710-exynos4210-dump/drivers/misc/max8997-muic.c#L1675-L1678
Signed-off-by: Timon Baetz <timon.baetz@protonmail.com>
---
drivers/power/supply/max8997_charger.c | 96 ++++++++++++++++++++++++++
1 file changed, 96 insertions(+)
diff --git a/drivers/power/supply/max8997_charger.c b/drivers/power/supply/max8997_charger.c
index 1947af25879a..f0f725385dfc 100644
--- a/drivers/power/supply/max8997_charger.c
+++ b/drivers/power/supply/max8997_charger.c
@@ -6,12 +6,14 @@
// MyungJoo Ham <myungjoo.ham@samsung.com>
#include <linux/err.h>
+#include <linux/extcon.h>
#include <linux/module.h>
#include <linux/slab.h>
#include <linux/platform_device.h>
#include <linux/power_supply.h>
#include <linux/mfd/max8997.h>
#include <linux/mfd/max8997-private.h>
+#include <linux/regulator/consumer.h>
/* MAX8997_REG_STATUS4 */
#define DCINOK_SHIFT 1
@@ -31,6 +33,10 @@ struct charger_data {
struct device *dev;
struct max8997_dev *iodev;
struct power_supply *battery;
+ struct regulator *reg;
+ struct extcon_dev *edev;
+ struct notifier_block extcon_nb;
+ struct work_struct extcon_work;
};
static enum power_supply_property max8997_battery_props[] = {
@@ -88,6 +94,67 @@ static int max8997_battery_get_property(struct power_supply *psy,
return 0;
}
+static void max8997_battery_extcon_evt_stop_work(void *data)
+{
+ struct charger_data *charger = data;
+
+ cancel_work_sync(&charger->extcon_work);
+}
+
+static void max8997_battery_extcon_evt_worker(struct work_struct *work)
+{
+ struct charger_data *charger =
+ container_of(work, struct charger_data, extcon_work);
+ struct extcon_dev *edev = charger->edev;
+ int current_limit;
+
+ if (extcon_get_state(edev, EXTCON_CHG_USB_SDP) > 0) {
+ dev_dbg(charger->dev, "USB SDP charger is connected\n");
+ current_limit = 450000;
+ } else if (extcon_get_state(edev, EXTCON_CHG_USB_DCP) > 0) {
+ dev_dbg(charger->dev, "USB DCP charger is connected\n");
+ current_limit = 650000;
+ } else if (extcon_get_state(edev, EXTCON_CHG_USB_FAST) > 0) {
+ dev_dbg(charger->dev, "USB FAST charger is connected\n");
+ current_limit = 650000;
+ } else if (extcon_get_state(edev, EXTCON_CHG_USB_SLOW) > 0) {
+ dev_dbg(charger->dev, "USB SLOW charger is connected\n");
+ current_limit = 650000;
+ } else if (extcon_get_state(edev, EXTCON_CHG_USB_CDP) > 0) {
+ dev_dbg(charger->dev, "USB CDP charger is connected\n");
+ current_limit = 650000;
+ } else {
+ dev_dbg(charger->dev, "USB charger is diconnected\n");
+ current_limit = -1;
+ }
+
+ if (current_limit > 0) {
+ int ret = regulator_set_current_limit(charger->reg, current_limit, current_limit);
+
+ if (ret) {
+ dev_err(charger->dev, "failed to set current limit: %d\n", ret);
+ return;
+ }
+ ret = regulator_enable(charger->reg);
+ if (ret)
+ dev_err(charger->dev, "failed to enable regulator: %d\n", ret);
+ } else {
+ int ret = regulator_disable(charger->reg);
+
+ if (ret)
+ dev_err(charger->dev, "failed to disable regulator: %d\n", ret);
+ }
+}
+
+static int max8997_battery_extcon_evt(struct notifier_block *nb,
+ unsigned long event, void *param)
+{
+ struct charger_data *charger =
+ container_of(nb, struct charger_data, extcon_nb);
+ schedule_work(&charger->extcon_work);
+ return NOTIFY_OK;
+}
+
static const struct power_supply_desc max8997_battery_desc = {
.name = "max8997_pmic",
.type = POWER_SUPPLY_TYPE_BATTERY,
@@ -170,6 +237,35 @@ static int max8997_battery_probe(struct platform_device *pdev)
return PTR_ERR(charger->battery);
}
+ charger->reg = devm_regulator_get_optional(&pdev->dev, "charger");
+ if (IS_ERR(charger->reg)) {
+ if (PTR_ERR(charger->reg) == -EPROBE_DEFER)
+ return -EPROBE_DEFER;
+ dev_err(&pdev->dev, "couldn't get charger regulator\n");
+ }
+ charger->edev = extcon_get_edev_by_phandle(&pdev->dev, 0);
+ if (IS_ERR(charger->edev)) {
+ if (PTR_ERR(charger->edev) == -EPROBE_DEFER)
+ return -EPROBE_DEFER;
+ dev_err(charger->dev, "couldn't get extcon device\n");
+ }
+
+ if (!IS_ERR(charger->reg) && !IS_ERR(charger->edev)) {
+ INIT_WORK(&charger->extcon_work, max8997_battery_extcon_evt_worker);
+ ret = devm_add_action(&pdev->dev, max8997_battery_extcon_evt_stop_work, charger);
+ if (ret) {
+ dev_err(&pdev->dev, "failed to add extcon evt stop action: %d\n", ret);
+ return ret;
+ }
+ charger->extcon_nb.notifier_call = max8997_battery_extcon_evt;
+ ret = devm_extcon_register_notifier_all(&pdev->dev, charger->edev,
+ &charger->extcon_nb);
+ if (ret) {
+ dev_err(&pdev->dev, "failed to register extcon notifier\n");
+ return ret;
+ };
+ }
+
return 0;
}
--
2.25.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH v5 3/8] power: supply: max8997_charger: Set CHARGER current limit
2020-12-28 11:36 ` Timon Baetz
@ 2020-12-30 8:53 ` Krzysztof Kozlowski
-1 siblings, 0 replies; 20+ messages in thread
From: Krzysztof Kozlowski @ 2020-12-30 8:53 UTC (permalink / raw)
To: Timon Baetz
Cc: Marek Szyprowski, Liam Girdwood, Mark Brown, Rob Herring,
MyungJoo Ham, Chanwoo Choi, Lee Jones, Sebastian Reichel,
linux-kernel, devicetree, linux-arm-kernel, linux-samsung-soc,
linux-pm, ~postmarketos/upstreaming
On Mon, Dec 28, 2020 at 11:36:02AM +0000, Timon Baetz wrote:
> Register for extcon notification and set charging current depending on
> the detected cable type. Current values are taken from vendor kernel,
> where most charger types end up setting 650mA [0].
>
> Also enable and disable the CHARGER regulator based on extcon events.
>
> [0] https://github.com/krzk/linux-vendor-backup/blob/samsung/galaxy-s2-epic-4g-touch-sph-d710-exynos4210-dump/drivers/misc/max8997-muic.c#L1675-L1678
>
> Signed-off-by: Timon Baetz <timon.baetz@protonmail.com>
> ---
> drivers/power/supply/max8997_charger.c | 96 ++++++++++++++++++++++++++
> 1 file changed, 96 insertions(+)
>
> diff --git a/drivers/power/supply/max8997_charger.c b/drivers/power/supply/max8997_charger.c
> index 1947af25879a..f0f725385dfc 100644
> --- a/drivers/power/supply/max8997_charger.c
> +++ b/drivers/power/supply/max8997_charger.c
> @@ -6,12 +6,14 @@
> // MyungJoo Ham <myungjoo.ham@samsung.com>
>
> #include <linux/err.h>
> +#include <linux/extcon.h>
> #include <linux/module.h>
> #include <linux/slab.h>
> #include <linux/platform_device.h>
> #include <linux/power_supply.h>
> #include <linux/mfd/max8997.h>
> #include <linux/mfd/max8997-private.h>
> +#include <linux/regulator/consumer.h>
>
> /* MAX8997_REG_STATUS4 */
> #define DCINOK_SHIFT 1
> @@ -31,6 +33,10 @@ struct charger_data {
> struct device *dev;
> struct max8997_dev *iodev;
> struct power_supply *battery;
> + struct regulator *reg;
> + struct extcon_dev *edev;
> + struct notifier_block extcon_nb;
> + struct work_struct extcon_work;
> };
>
> static enum power_supply_property max8997_battery_props[] = {
> @@ -88,6 +94,67 @@ static int max8997_battery_get_property(struct power_supply *psy,
> return 0;
> }
>
> +static void max8997_battery_extcon_evt_stop_work(void *data)
> +{
> + struct charger_data *charger = data;
> +
> + cancel_work_sync(&charger->extcon_work);
> +}
> +
> +static void max8997_battery_extcon_evt_worker(struct work_struct *work)
> +{
> + struct charger_data *charger =
> + container_of(work, struct charger_data, extcon_work);
> + struct extcon_dev *edev = charger->edev;
> + int current_limit;
> +
> + if (extcon_get_state(edev, EXTCON_CHG_USB_SDP) > 0) {
> + dev_dbg(charger->dev, "USB SDP charger is connected\n");
> + current_limit = 450000;
> + } else if (extcon_get_state(edev, EXTCON_CHG_USB_DCP) > 0) {
> + dev_dbg(charger->dev, "USB DCP charger is connected\n");
> + current_limit = 650000;
> + } else if (extcon_get_state(edev, EXTCON_CHG_USB_FAST) > 0) {
> + dev_dbg(charger->dev, "USB FAST charger is connected\n");
> + current_limit = 650000;
> + } else if (extcon_get_state(edev, EXTCON_CHG_USB_SLOW) > 0) {
> + dev_dbg(charger->dev, "USB SLOW charger is connected\n");
> + current_limit = 650000;
> + } else if (extcon_get_state(edev, EXTCON_CHG_USB_CDP) > 0) {
> + dev_dbg(charger->dev, "USB CDP charger is connected\n");
> + current_limit = 650000;
> + } else {
> + dev_dbg(charger->dev, "USB charger is diconnected\n");
> + current_limit = -1;
> + }
> +
> + if (current_limit > 0) {
> + int ret = regulator_set_current_limit(charger->reg, current_limit, current_limit);
> +
> + if (ret) {
> + dev_err(charger->dev, "failed to set current limit: %d\n", ret);
> + return;
> + }
> + ret = regulator_enable(charger->reg);
> + if (ret)
> + dev_err(charger->dev, "failed to enable regulator: %d\n", ret);
> + } else {
> + int ret = regulator_disable(charger->reg);
> +
> + if (ret)
> + dev_err(charger->dev, "failed to disable regulator: %d\n", ret);
> + }
> +}
> +
> +static int max8997_battery_extcon_evt(struct notifier_block *nb,
> + unsigned long event, void *param)
> +{
> + struct charger_data *charger =
> + container_of(nb, struct charger_data, extcon_nb);
> + schedule_work(&charger->extcon_work);
> + return NOTIFY_OK;
> +}
> +
> static const struct power_supply_desc max8997_battery_desc = {
> .name = "max8997_pmic",
> .type = POWER_SUPPLY_TYPE_BATTERY,
> @@ -170,6 +237,35 @@ static int max8997_battery_probe(struct platform_device *pdev)
> return PTR_ERR(charger->battery);
> }
>
> + charger->reg = devm_regulator_get_optional(&pdev->dev, "charger");
> + if (IS_ERR(charger->reg)) {
> + if (PTR_ERR(charger->reg) == -EPROBE_DEFER)
> + return -EPROBE_DEFER;
> + dev_err(&pdev->dev, "couldn't get charger regulator\n");
This should be dev_info, as we discussed. Otherwise it will scream on
every boot with a DTS which does not have charger node.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v5 3/8] power: supply: max8997_charger: Set CHARGER current limit
@ 2020-12-30 8:53 ` Krzysztof Kozlowski
0 siblings, 0 replies; 20+ messages in thread
From: Krzysztof Kozlowski @ 2020-12-30 8:53 UTC (permalink / raw)
To: Timon Baetz
Cc: devicetree, linux-samsung-soc, linux-pm, linux-kernel,
Mark Brown, Liam Girdwood, Rob Herring, Sebastian Reichel,
Chanwoo Choi, MyungJoo Ham, ~postmarketos/upstreaming, Lee Jones,
linux-arm-kernel, Marek Szyprowski
On Mon, Dec 28, 2020 at 11:36:02AM +0000, Timon Baetz wrote:
> Register for extcon notification and set charging current depending on
> the detected cable type. Current values are taken from vendor kernel,
> where most charger types end up setting 650mA [0].
>
> Also enable and disable the CHARGER regulator based on extcon events.
>
> [0] https://github.com/krzk/linux-vendor-backup/blob/samsung/galaxy-s2-epic-4g-touch-sph-d710-exynos4210-dump/drivers/misc/max8997-muic.c#L1675-L1678
>
> Signed-off-by: Timon Baetz <timon.baetz@protonmail.com>
> ---
> drivers/power/supply/max8997_charger.c | 96 ++++++++++++++++++++++++++
> 1 file changed, 96 insertions(+)
>
> diff --git a/drivers/power/supply/max8997_charger.c b/drivers/power/supply/max8997_charger.c
> index 1947af25879a..f0f725385dfc 100644
> --- a/drivers/power/supply/max8997_charger.c
> +++ b/drivers/power/supply/max8997_charger.c
> @@ -6,12 +6,14 @@
> // MyungJoo Ham <myungjoo.ham@samsung.com>
>
> #include <linux/err.h>
> +#include <linux/extcon.h>
> #include <linux/module.h>
> #include <linux/slab.h>
> #include <linux/platform_device.h>
> #include <linux/power_supply.h>
> #include <linux/mfd/max8997.h>
> #include <linux/mfd/max8997-private.h>
> +#include <linux/regulator/consumer.h>
>
> /* MAX8997_REG_STATUS4 */
> #define DCINOK_SHIFT 1
> @@ -31,6 +33,10 @@ struct charger_data {
> struct device *dev;
> struct max8997_dev *iodev;
> struct power_supply *battery;
> + struct regulator *reg;
> + struct extcon_dev *edev;
> + struct notifier_block extcon_nb;
> + struct work_struct extcon_work;
> };
>
> static enum power_supply_property max8997_battery_props[] = {
> @@ -88,6 +94,67 @@ static int max8997_battery_get_property(struct power_supply *psy,
> return 0;
> }
>
> +static void max8997_battery_extcon_evt_stop_work(void *data)
> +{
> + struct charger_data *charger = data;
> +
> + cancel_work_sync(&charger->extcon_work);
> +}
> +
> +static void max8997_battery_extcon_evt_worker(struct work_struct *work)
> +{
> + struct charger_data *charger =
> + container_of(work, struct charger_data, extcon_work);
> + struct extcon_dev *edev = charger->edev;
> + int current_limit;
> +
> + if (extcon_get_state(edev, EXTCON_CHG_USB_SDP) > 0) {
> + dev_dbg(charger->dev, "USB SDP charger is connected\n");
> + current_limit = 450000;
> + } else if (extcon_get_state(edev, EXTCON_CHG_USB_DCP) > 0) {
> + dev_dbg(charger->dev, "USB DCP charger is connected\n");
> + current_limit = 650000;
> + } else if (extcon_get_state(edev, EXTCON_CHG_USB_FAST) > 0) {
> + dev_dbg(charger->dev, "USB FAST charger is connected\n");
> + current_limit = 650000;
> + } else if (extcon_get_state(edev, EXTCON_CHG_USB_SLOW) > 0) {
> + dev_dbg(charger->dev, "USB SLOW charger is connected\n");
> + current_limit = 650000;
> + } else if (extcon_get_state(edev, EXTCON_CHG_USB_CDP) > 0) {
> + dev_dbg(charger->dev, "USB CDP charger is connected\n");
> + current_limit = 650000;
> + } else {
> + dev_dbg(charger->dev, "USB charger is diconnected\n");
> + current_limit = -1;
> + }
> +
> + if (current_limit > 0) {
> + int ret = regulator_set_current_limit(charger->reg, current_limit, current_limit);
> +
> + if (ret) {
> + dev_err(charger->dev, "failed to set current limit: %d\n", ret);
> + return;
> + }
> + ret = regulator_enable(charger->reg);
> + if (ret)
> + dev_err(charger->dev, "failed to enable regulator: %d\n", ret);
> + } else {
> + int ret = regulator_disable(charger->reg);
> +
> + if (ret)
> + dev_err(charger->dev, "failed to disable regulator: %d\n", ret);
> + }
> +}
> +
> +static int max8997_battery_extcon_evt(struct notifier_block *nb,
> + unsigned long event, void *param)
> +{
> + struct charger_data *charger =
> + container_of(nb, struct charger_data, extcon_nb);
> + schedule_work(&charger->extcon_work);
> + return NOTIFY_OK;
> +}
> +
> static const struct power_supply_desc max8997_battery_desc = {
> .name = "max8997_pmic",
> .type = POWER_SUPPLY_TYPE_BATTERY,
> @@ -170,6 +237,35 @@ static int max8997_battery_probe(struct platform_device *pdev)
> return PTR_ERR(charger->battery);
> }
>
> + charger->reg = devm_regulator_get_optional(&pdev->dev, "charger");
> + if (IS_ERR(charger->reg)) {
> + if (PTR_ERR(charger->reg) == -EPROBE_DEFER)
> + return -EPROBE_DEFER;
> + dev_err(&pdev->dev, "couldn't get charger regulator\n");
This should be dev_info, as we discussed. Otherwise it will scream on
every boot with a DTS which does not have charger node.
Best regards,
Krzysztof
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH v5 4/8] ARM: dts: exynos: Add muic and charger nodes for I9100
2020-12-28 11:35 ` Timon Baetz
@ 2020-12-28 11:36 ` Timon Baetz
-1 siblings, 0 replies; 20+ messages in thread
From: Timon Baetz @ 2020-12-28 11:36 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Marek Szyprowski, Liam Girdwood, Mark Brown, Rob Herring,
MyungJoo Ham, Chanwoo Choi, Lee Jones, Sebastian Reichel,
linux-kernel, devicetree, linux-arm-kernel, linux-samsung-soc,
linux-pm, ~postmarketos/upstreaming, Timon Baetz
muic node is only used for extcon consumers.
charger node is used to point to muic and regulator.
Signed-off-by: Timon Baetz <timon.baetz@protonmail.com>
---
arch/arm/boot/dts/exynos4210-i9100.dts | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/arch/arm/boot/dts/exynos4210-i9100.dts b/arch/arm/boot/dts/exynos4210-i9100.dts
index 5370ee477186..8fa704babd5e 100644
--- a/arch/arm/boot/dts/exynos4210-i9100.dts
+++ b/arch/arm/boot/dts/exynos4210-i9100.dts
@@ -584,6 +584,16 @@ EN32KHZ_CP {
regulator-always-on;
};
};
+
+ muic: max8997-muic {
+ compatible = "maxim,max8997-muic";
+ };
+
+ charger {
+ compatible = "maxim,max8997-battery";
+ charger-supply = <&charger_reg>;
+ extcon = <&muic>;
+ };
};
};
--
2.25.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v5 4/8] ARM: dts: exynos: Add muic and charger nodes for I9100
@ 2020-12-28 11:36 ` Timon Baetz
0 siblings, 0 replies; 20+ messages in thread
From: Timon Baetz @ 2020-12-28 11:36 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: devicetree, linux-samsung-soc, Timon Baetz, linux-pm,
linux-kernel, Mark Brown, Liam Girdwood, Rob Herring,
Sebastian Reichel, Chanwoo Choi, MyungJoo Ham,
~postmarketos/upstreaming, Lee Jones, linux-arm-kernel,
Marek Szyprowski
muic node is only used for extcon consumers.
charger node is used to point to muic and regulator.
Signed-off-by: Timon Baetz <timon.baetz@protonmail.com>
---
arch/arm/boot/dts/exynos4210-i9100.dts | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/arch/arm/boot/dts/exynos4210-i9100.dts b/arch/arm/boot/dts/exynos4210-i9100.dts
index 5370ee477186..8fa704babd5e 100644
--- a/arch/arm/boot/dts/exynos4210-i9100.dts
+++ b/arch/arm/boot/dts/exynos4210-i9100.dts
@@ -584,6 +584,16 @@ EN32KHZ_CP {
regulator-always-on;
};
};
+
+ muic: max8997-muic {
+ compatible = "maxim,max8997-muic";
+ };
+
+ charger {
+ compatible = "maxim,max8997-battery";
+ charger-supply = <&charger_reg>;
+ extcon = <&muic>;
+ };
};
};
--
2.25.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v5 5/8] ARM: dts: exynos: Add muic and charger nodes for Origen
2020-12-28 11:35 ` Timon Baetz
@ 2020-12-28 11:36 ` Timon Baetz
-1 siblings, 0 replies; 20+ messages in thread
From: Timon Baetz @ 2020-12-28 11:36 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Marek Szyprowski, Liam Girdwood, Mark Brown, Rob Herring,
MyungJoo Ham, Chanwoo Choi, Lee Jones, Sebastian Reichel,
linux-kernel, devicetree, linux-arm-kernel, linux-samsung-soc,
linux-pm, ~postmarketos/upstreaming, Timon Baetz
Both nodes are disabled as there is no battery and pins are not
connected.
Signed-off-by: Timon Baetz <timon.baetz@protonmail.com>
---
arch/arm/boot/dts/exynos4210-origen.dts | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/arch/arm/boot/dts/exynos4210-origen.dts b/arch/arm/boot/dts/exynos4210-origen.dts
index 7d2cfbafefb2..9792531ac3da 100644
--- a/arch/arm/boot/dts/exynos4210-origen.dts
+++ b/arch/arm/boot/dts/exynos4210-origen.dts
@@ -312,6 +312,16 @@ EN32KHZ_AP {
regulator-always-on;
};
};
+
+ muic {
+ compatible = "maxim,max8997-muic";
+ status = "disabled";
+ };
+
+ charger {
+ compatible = "maxim,max8997-battery";
+ status = "disabled";
+ };
};
};
--
2.25.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v5 5/8] ARM: dts: exynos: Add muic and charger nodes for Origen
@ 2020-12-28 11:36 ` Timon Baetz
0 siblings, 0 replies; 20+ messages in thread
From: Timon Baetz @ 2020-12-28 11:36 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: devicetree, linux-samsung-soc, Timon Baetz, linux-pm,
linux-kernel, Mark Brown, Liam Girdwood, Rob Herring,
Sebastian Reichel, Chanwoo Choi, MyungJoo Ham,
~postmarketos/upstreaming, Lee Jones, linux-arm-kernel,
Marek Szyprowski
Both nodes are disabled as there is no battery and pins are not
connected.
Signed-off-by: Timon Baetz <timon.baetz@protonmail.com>
---
arch/arm/boot/dts/exynos4210-origen.dts | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/arch/arm/boot/dts/exynos4210-origen.dts b/arch/arm/boot/dts/exynos4210-origen.dts
index 7d2cfbafefb2..9792531ac3da 100644
--- a/arch/arm/boot/dts/exynos4210-origen.dts
+++ b/arch/arm/boot/dts/exynos4210-origen.dts
@@ -312,6 +312,16 @@ EN32KHZ_AP {
regulator-always-on;
};
};
+
+ muic {
+ compatible = "maxim,max8997-muic";
+ status = "disabled";
+ };
+
+ charger {
+ compatible = "maxim,max8997-battery";
+ status = "disabled";
+ };
};
};
--
2.25.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v5 6/8] ARM: dts: exynos: Add muic and charger nodes for Trats
2020-12-28 11:35 ` Timon Baetz
@ 2020-12-28 11:36 ` Timon Baetz
-1 siblings, 0 replies; 20+ messages in thread
From: Timon Baetz @ 2020-12-28 11:36 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Marek Szyprowski, Liam Girdwood, Mark Brown, Rob Herring,
MyungJoo Ham, Chanwoo Choi, Lee Jones, Sebastian Reichel,
linux-kernel, devicetree, linux-arm-kernel, linux-samsung-soc,
linux-pm, ~postmarketos/upstreaming, Timon Baetz
muic node is only used for extcon consumers.
charger node is used to point to muic.
Note: charging control is not working as we don't have a charger-supply.
Signed-off-by: Timon Baetz <timon.baetz@protonmail.com>
---
arch/arm/boot/dts/exynos4210-trats.dts | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/arch/arm/boot/dts/exynos4210-trats.dts b/arch/arm/boot/dts/exynos4210-trats.dts
index a226bec56a45..686465f0044b 100644
--- a/arch/arm/boot/dts/exynos4210-trats.dts
+++ b/arch/arm/boot/dts/exynos4210-trats.dts
@@ -459,6 +459,15 @@ EN32KHZ_CP {
regulator-always-on;
};
};
+
+ muic: max8997-muic {
+ compatible = "maxim,max8997-muic";
+ };
+
+ charger {
+ compatible = "maxim,max8997-battery";
+ extcon = <&muic>;
+ };
};
};
--
2.25.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v5 6/8] ARM: dts: exynos: Add muic and charger nodes for Trats
@ 2020-12-28 11:36 ` Timon Baetz
0 siblings, 0 replies; 20+ messages in thread
From: Timon Baetz @ 2020-12-28 11:36 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: devicetree, linux-samsung-soc, Timon Baetz, linux-pm,
linux-kernel, Mark Brown, Liam Girdwood, Rob Herring,
Sebastian Reichel, Chanwoo Choi, MyungJoo Ham,
~postmarketos/upstreaming, Lee Jones, linux-arm-kernel,
Marek Szyprowski
muic node is only used for extcon consumers.
charger node is used to point to muic.
Note: charging control is not working as we don't have a charger-supply.
Signed-off-by: Timon Baetz <timon.baetz@protonmail.com>
---
arch/arm/boot/dts/exynos4210-trats.dts | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/arch/arm/boot/dts/exynos4210-trats.dts b/arch/arm/boot/dts/exynos4210-trats.dts
index a226bec56a45..686465f0044b 100644
--- a/arch/arm/boot/dts/exynos4210-trats.dts
+++ b/arch/arm/boot/dts/exynos4210-trats.dts
@@ -459,6 +459,15 @@ EN32KHZ_CP {
regulator-always-on;
};
};
+
+ muic: max8997-muic {
+ compatible = "maxim,max8997-muic";
+ };
+
+ charger {
+ compatible = "maxim,max8997-battery";
+ extcon = <&muic>;
+ };
};
};
--
2.25.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v5 7/8] ARM: dts: exynos: Fix charging regulator voltage and current for I9100
2020-12-28 11:35 ` Timon Baetz
@ 2020-12-28 11:36 ` Timon Baetz
-1 siblings, 0 replies; 20+ messages in thread
From: Timon Baetz @ 2020-12-28 11:36 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Marek Szyprowski, Liam Girdwood, Mark Brown, Rob Herring,
MyungJoo Ham, Chanwoo Choi, Lee Jones, Sebastian Reichel,
linux-kernel, devicetree, linux-arm-kernel, linux-samsung-soc,
linux-pm, ~postmarketos/upstreaming, Timon Baetz
Set CHARGER current and CHARGER_CV voltage according to Galaxy S2 Epic
4G Touch SPH-D710 Android vendor sources [0,1].
Remove regulator-always-on. The regulator can be enabled and disabled
based on extcon events.
[0] https://github.com/krzk/linux-vendor-backup/blob/samsung/galaxy-s2-epic-4g-touch-sph-d710-exynos4210-dump/drivers/power/max8997_charger_u1.c#L169-L170
[1] https://github.com/krzk/linux-vendor-backup/blob/samsung/galaxy-s2-epic-4g-touch-sph-d710-exynos4210-dump/drivers/power/max8997_charger_u1.c#L390-L391
Signed-off-by: Timon Baetz <timon.baetz@protonmail.com>
---
arch/arm/boot/dts/exynos4210-i9100.dts | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/arch/arm/boot/dts/exynos4210-i9100.dts b/arch/arm/boot/dts/exynos4210-i9100.dts
index 8fa704babd5e..586d801af0b5 100644
--- a/arch/arm/boot/dts/exynos4210-i9100.dts
+++ b/arch/arm/boot/dts/exynos4210-i9100.dts
@@ -562,15 +562,14 @@ safe2_sreg: ESAFEOUT2 {
charger_reg: CHARGER {
regulator-name = "CHARGER";
- regulator-min-microamp = <60000>;
- regulator-max-microamp = <2580000>;
- regulator-always-on;
+ regulator-min-microamp = <200000>;
+ regulator-max-microamp = <950000>;
};
chargercv_reg: CHARGER_CV {
regulator-name = "CHARGER_CV";
- regulator-min-microvolt = <3800000>;
- regulator-max-microvolt = <4100000>;
+ regulator-min-microvolt = <4200000>;
+ regulator-max-microvolt = <4200000>;
regulator-always-on;
};
--
2.25.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v5 7/8] ARM: dts: exynos: Fix charging regulator voltage and current for I9100
@ 2020-12-28 11:36 ` Timon Baetz
0 siblings, 0 replies; 20+ messages in thread
From: Timon Baetz @ 2020-12-28 11:36 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: devicetree, linux-samsung-soc, Timon Baetz, linux-pm,
linux-kernel, Mark Brown, Liam Girdwood, Rob Herring,
Sebastian Reichel, Chanwoo Choi, MyungJoo Ham,
~postmarketos/upstreaming, Lee Jones, linux-arm-kernel,
Marek Szyprowski
Set CHARGER current and CHARGER_CV voltage according to Galaxy S2 Epic
4G Touch SPH-D710 Android vendor sources [0,1].
Remove regulator-always-on. The regulator can be enabled and disabled
based on extcon events.
[0] https://github.com/krzk/linux-vendor-backup/blob/samsung/galaxy-s2-epic-4g-touch-sph-d710-exynos4210-dump/drivers/power/max8997_charger_u1.c#L169-L170
[1] https://github.com/krzk/linux-vendor-backup/blob/samsung/galaxy-s2-epic-4g-touch-sph-d710-exynos4210-dump/drivers/power/max8997_charger_u1.c#L390-L391
Signed-off-by: Timon Baetz <timon.baetz@protonmail.com>
---
arch/arm/boot/dts/exynos4210-i9100.dts | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/arch/arm/boot/dts/exynos4210-i9100.dts b/arch/arm/boot/dts/exynos4210-i9100.dts
index 8fa704babd5e..586d801af0b5 100644
--- a/arch/arm/boot/dts/exynos4210-i9100.dts
+++ b/arch/arm/boot/dts/exynos4210-i9100.dts
@@ -562,15 +562,14 @@ safe2_sreg: ESAFEOUT2 {
charger_reg: CHARGER {
regulator-name = "CHARGER";
- regulator-min-microamp = <60000>;
- regulator-max-microamp = <2580000>;
- regulator-always-on;
+ regulator-min-microamp = <200000>;
+ regulator-max-microamp = <950000>;
};
chargercv_reg: CHARGER_CV {
regulator-name = "CHARGER_CV";
- regulator-min-microvolt = <3800000>;
- regulator-max-microvolt = <4100000>;
+ regulator-min-microvolt = <4200000>;
+ regulator-max-microvolt = <4200000>;
regulator-always-on;
};
--
2.25.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v5 8/8] ARM: dts: exynos: Add top-off charging regulator node for I9100
2020-12-28 11:35 ` Timon Baetz
@ 2020-12-28 11:36 ` Timon Baetz
-1 siblings, 0 replies; 20+ messages in thread
From: Timon Baetz @ 2020-12-28 11:36 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: Marek Szyprowski, Liam Girdwood, Mark Brown, Rob Herring,
MyungJoo Ham, Chanwoo Choi, Lee Jones, Sebastian Reichel,
linux-kernel, devicetree, linux-arm-kernel, linux-samsung-soc,
linux-pm, ~postmarketos/upstreaming, Timon Baetz
Value taken from Galaxy S2 Epic 4G Touch SPH-D710 Android vendor
kernel [0] which always sets 200mA.
Also rearrange regulators based on definition in max8997.h.
[0] https://github.com/krzk/linux-vendor-backup/blob/samsung/galaxy-s2-epic-4g-touch-sph-d710-exynos4210-dump/drivers/power/sec_battery_u1.c#L1525
Signed-off-by: Timon Baetz <timon.baetz@protonmail.com>
---
arch/arm/boot/dts/exynos4210-i9100.dts | 21 ++++++++++++++-------
1 file changed, 14 insertions(+), 7 deletions(-)
diff --git a/arch/arm/boot/dts/exynos4210-i9100.dts b/arch/arm/boot/dts/exynos4210-i9100.dts
index 586d801af0b5..e702adb69670 100644
--- a/arch/arm/boot/dts/exynos4210-i9100.dts
+++ b/arch/arm/boot/dts/exynos4210-i9100.dts
@@ -560,6 +560,16 @@ safe2_sreg: ESAFEOUT2 {
regulator-boot-on;
};
+ EN32KHZ_AP {
+ regulator-name = "EN32KHZ_AP";
+ regulator-always-on;
+ };
+
+ EN32KHZ_CP {
+ regulator-name = "EN32KHZ_CP";
+ regulator-always-on;
+ };
+
charger_reg: CHARGER {
regulator-name = "CHARGER";
regulator-min-microamp = <200000>;
@@ -573,13 +583,10 @@ chargercv_reg: CHARGER_CV {
regulator-always-on;
};
- EN32KHZ_AP {
- regulator-name = "EN32KHZ_AP";
- regulator-always-on;
- };
-
- EN32KHZ_CP {
- regulator-name = "EN32KHZ_CP";
+ CHARGER_TOPOFF {
+ regulator-name = "CHARGER_TOPOFF";
+ regulator-min-microamp = <200000>;
+ regulator-max-microamp = <200000>;
regulator-always-on;
};
};
--
2.25.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v5 8/8] ARM: dts: exynos: Add top-off charging regulator node for I9100
@ 2020-12-28 11:36 ` Timon Baetz
0 siblings, 0 replies; 20+ messages in thread
From: Timon Baetz @ 2020-12-28 11:36 UTC (permalink / raw)
To: Krzysztof Kozlowski
Cc: devicetree, linux-samsung-soc, Timon Baetz, linux-pm,
linux-kernel, Mark Brown, Liam Girdwood, Rob Herring,
Sebastian Reichel, Chanwoo Choi, MyungJoo Ham,
~postmarketos/upstreaming, Lee Jones, linux-arm-kernel,
Marek Szyprowski
Value taken from Galaxy S2 Epic 4G Touch SPH-D710 Android vendor
kernel [0] which always sets 200mA.
Also rearrange regulators based on definition in max8997.h.
[0] https://github.com/krzk/linux-vendor-backup/blob/samsung/galaxy-s2-epic-4g-touch-sph-d710-exynos4210-dump/drivers/power/sec_battery_u1.c#L1525
Signed-off-by: Timon Baetz <timon.baetz@protonmail.com>
---
arch/arm/boot/dts/exynos4210-i9100.dts | 21 ++++++++++++++-------
1 file changed, 14 insertions(+), 7 deletions(-)
diff --git a/arch/arm/boot/dts/exynos4210-i9100.dts b/arch/arm/boot/dts/exynos4210-i9100.dts
index 586d801af0b5..e702adb69670 100644
--- a/arch/arm/boot/dts/exynos4210-i9100.dts
+++ b/arch/arm/boot/dts/exynos4210-i9100.dts
@@ -560,6 +560,16 @@ safe2_sreg: ESAFEOUT2 {
regulator-boot-on;
};
+ EN32KHZ_AP {
+ regulator-name = "EN32KHZ_AP";
+ regulator-always-on;
+ };
+
+ EN32KHZ_CP {
+ regulator-name = "EN32KHZ_CP";
+ regulator-always-on;
+ };
+
charger_reg: CHARGER {
regulator-name = "CHARGER";
regulator-min-microamp = <200000>;
@@ -573,13 +583,10 @@ chargercv_reg: CHARGER_CV {
regulator-always-on;
};
- EN32KHZ_AP {
- regulator-name = "EN32KHZ_AP";
- regulator-always-on;
- };
-
- EN32KHZ_CP {
- regulator-name = "EN32KHZ_CP";
+ CHARGER_TOPOFF {
+ regulator-name = "CHARGER_TOPOFF";
+ regulator-min-microamp = <200000>;
+ regulator-max-microamp = <200000>;
regulator-always-on;
};
};
--
2.25.1
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH v5 1/8] extcon: max8997: Add CHGINS and CHGRM interrupt handling
2020-12-28 11:35 ` Timon Baetz
@ 2020-12-30 8:56 ` Krzysztof Kozlowski
-1 siblings, 0 replies; 20+ messages in thread
From: Krzysztof Kozlowski @ 2020-12-30 8:56 UTC (permalink / raw)
To: Timon Baetz
Cc: Marek Szyprowski, Liam Girdwood, Mark Brown, Rob Herring,
MyungJoo Ham, Chanwoo Choi, Lee Jones, Sebastian Reichel,
linux-kernel, devicetree, linux-arm-kernel, linux-samsung-soc,
linux-pm, ~postmarketos/upstreaming
On Mon, Dec 28, 2020 at 11:35:38AM +0000, Timon Baetz wrote:
> This allows the MAX8997 charger to set the current limit depending on
> the detected extcon charger type.
>
> Signed-off-by: Timon Baetz <timon.baetz@protonmail.com>
> ---
> drivers/extcon/extcon-max8997.c | 4 ++++
> 1 file changed, 4 insertions(+)
It's already a v5 but what are the changes here? You must provide the
changelog for your patches - either in the cover letter or in each patch.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v5 1/8] extcon: max8997: Add CHGINS and CHGRM interrupt handling
@ 2020-12-30 8:56 ` Krzysztof Kozlowski
0 siblings, 0 replies; 20+ messages in thread
From: Krzysztof Kozlowski @ 2020-12-30 8:56 UTC (permalink / raw)
To: Timon Baetz
Cc: devicetree, linux-samsung-soc, linux-pm, linux-kernel,
Mark Brown, Liam Girdwood, Rob Herring, Sebastian Reichel,
Chanwoo Choi, MyungJoo Ham, ~postmarketos/upstreaming, Lee Jones,
linux-arm-kernel, Marek Szyprowski
On Mon, Dec 28, 2020 at 11:35:38AM +0000, Timon Baetz wrote:
> This allows the MAX8997 charger to set the current limit depending on
> the detected extcon charger type.
>
> Signed-off-by: Timon Baetz <timon.baetz@protonmail.com>
> ---
> drivers/extcon/extcon-max8997.c | 4 ++++
> 1 file changed, 4 insertions(+)
It's already a v5 but what are the changes here? You must provide the
changelog for your patches - either in the cover letter or in each patch.
Best regards,
Krzysztof
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 20+ messages in thread