From: Artur Weber <aweber.kernel@gmail.com>
To: Krzysztof Kozlowski <krzk@kernel.org>,
Chanwoo Choi <cw00.choi@samsung.com>
Cc: Sebastian Reichel <sre@kernel.org>, Rob Herring <robh@kernel.org>,
Conor Dooley <conor+dt@kernel.org>, Lee Jones <lee@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Alim Akhtar <alim.akhtar@samsung.com>,
linux-pm@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-samsung-soc@vger.kernel.org,
~postmarketos/upstreaming@lists.sr.ht,
Henrik Grimler <henrik@grimler.se>,
Wolfgang Wiedmeyer <wolfgit@wiedmeyer.de>,
Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>,
Artur Weber <aweber.kernel@gmail.com>
Subject: [PATCH v3 07/10] power: supply: max77693: Set up charge/input current according to cable type
Date: Mon, 29 Jul 2024 19:47:41 +0200 [thread overview]
Message-ID: <20240729-max77693-charger-extcon-v3-7-02315a6869d4@gmail.com> (raw)
In-Reply-To: <20240729-max77693-charger-extcon-v3-0-02315a6869d4@gmail.com>
This behavior was observed on a downstream kernel - for chargers, the
current would be set to a fast charge current value, and it would be
bumped down for all other cable types.
If we leave only the fast charge current value applied, peripheral mode
stops working. If we stick to 500mA, charging becomes too slow. So, set
the charge input current limit accordingly to the cable type.
Signed-off-by: Artur Weber <aweber.kernel@gmail.com>
---
Changes in v3:
- Re-introduced this commit from v1. It seems to have been accidentally
rolled into the previous commit in v2.
---
drivers/power/supply/max77693_charger.c | 23 ++++++++++++++++++++---
1 file changed, 20 insertions(+), 3 deletions(-)
diff --git a/drivers/power/supply/max77693_charger.c b/drivers/power/supply/max77693_charger.c
index 4ff402941d72..a3aeaba77309 100644
--- a/drivers/power/supply/max77693_charger.c
+++ b/drivers/power/supply/max77693_charger.c
@@ -716,6 +716,7 @@ static void max77693_charger_extcon_work(struct work_struct *work)
cable.work);
struct extcon_dev *edev = chg->cable.edev;
bool set_charging, set_otg;
+ unsigned int input_current;
int connector, state;
int ret;
@@ -728,19 +729,28 @@ static void max77693_charger_extcon_work(struct work_struct *work)
switch (connector) {
case EXTCON_CHG_USB_SDP:
- case EXTCON_CHG_USB_DCP:
case EXTCON_CHG_USB_CDP:
+ case EXTCON_CHG_USB_SLOW:
+ input_current = 500000; /* 500 mA */
+ set_charging = true;
+ set_otg = false;
+
+ dev_info(chg->dev, "slow charging. connector type: %d\n",
+ connector);
+ break;
+ case EXTCON_CHG_USB_DCP:
case EXTCON_CHG_USB_ACA:
case EXTCON_CHG_USB_FAST:
- case EXTCON_CHG_USB_SLOW:
case EXTCON_CHG_USB_PD:
+ input_current = chg->fast_charge_current;
set_charging = true;
set_otg = false;
- dev_info(chg->dev, "charging. connector type: %d\n",
+ dev_info(chg->dev, "fast charging. connector type: %d\n",
connector);
break;
case EXTCON_USB_HOST:
+ input_current = 500000; /* 500 mA */
set_charging = false;
set_otg = true;
@@ -748,6 +758,7 @@ static void max77693_charger_extcon_work(struct work_struct *work)
connector);
break;
default:
+ input_current = 500000; /* 500 mA */
set_charging = false;
set_otg = false;
@@ -756,6 +767,12 @@ static void max77693_charger_extcon_work(struct work_struct *work)
break;
}
+ ret = max77693_set_input_current_limit(chg, input_current);
+ if (ret) {
+ dev_err(chg->dev, "failed to set input current (%d)\n", ret);
+ goto out;
+ }
+
ret = max77693_set_charging(chg, set_charging);
if (ret) {
dev_err(chg->dev, "failed to set charging (%d)\n", ret);
--
2.45.2
next prev parent reply other threads:[~2024-07-29 17:51 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-29 17:47 [PATCH v3 00/10] power: supply: max77693: Toggle charging/OTG based on extcon status Artur Weber
2024-07-29 17:47 ` [PATCH v3 01/10] dt-bindings: power: supply: max77693: Add monitored-battery property Artur Weber
2024-07-29 17:47 ` [PATCH v3 02/10] dt-bindings: power: supply: max77693: Add maxim,usb-connector property Artur Weber
2024-07-29 17:47 ` [PATCH v3 03/10] power: supply: max77693: Expose input current limit and CC current properties Artur Weber
2024-07-29 17:47 ` [PATCH v3 04/10] power: supply: max77693: Set charge current limits during init Artur Weber
2024-07-29 17:47 ` [PATCH v3 05/10] power: supply: max77693: Add USB extcon detection for enabling charging Artur Weber
2024-07-29 17:47 ` [PATCH v3 06/10] power: supply: max77693: Add support for detecting and enabling OTG Artur Weber
2024-07-29 17:47 ` Artur Weber [this message]
2024-07-29 17:47 ` [PATCH v3 08/10] ARM: dts: samsung: exynos4212-tab3: Add battery node with charge current value Artur Weber
2024-09-28 12:54 ` Krzysztof Kozlowski
2024-07-29 17:47 ` [PATCH v3 09/10] ARM: dts: samsung: exynos4212-tab3: Add USB connector node Artur Weber
2024-07-29 17:47 ` [PATCH v3 10/10] ARM: dts: exynos4212-tab3: Drop CHARGER regulator Artur Weber
2024-08-01 6:22 ` [PATCH v3 00/10] power: supply: max77693: Toggle charging/OTG based on extcon status Henrik Grimler
2024-08-04 10:59 ` Henrik Grimler
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240729-max77693-charger-extcon-v3-7-02315a6869d4@gmail.com \
--to=aweber.kernel@gmail.com \
--cc=GNUtoo@cyberdimension.org \
--cc=alim.akhtar@samsung.com \
--cc=conor+dt@kernel.org \
--cc=cw00.choi@samsung.com \
--cc=devicetree@vger.kernel.org \
--cc=henrik@grimler.se \
--cc=krzk+dt@kernel.org \
--cc=krzk@kernel.org \
--cc=lee@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux-samsung-soc@vger.kernel.org \
--cc=robh@kernel.org \
--cc=sre@kernel.org \
--cc=wolfgit@wiedmeyer.de \
--cc=~postmarketos/upstreaming@lists.sr.ht \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox