From nobody Thu Oct 2 22:53:37 2025 Received: from mail-ej1-f50.google.com (mail-ej1-f50.google.com [209.85.218.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 60C932FB606; Tue, 9 Sep 2025 18:29:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757442577; cv=none; b=rymlQbJWtGb0tuDJcRM1OgmYWHFJKzgxARTrN0P3B/yN3kmOHiowA6TPXozOdgZfOLE+clN1jRXu64E7z2sKFS4P+1dxRDF930dK1/cGc09T3KYHl+vRlWd4QDAxQw+iUKHEIaiIznk+/J5rymWKVy5jWHCUmK6Ym+E4nfdGO9U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757442577; c=relaxed/simple; bh=0oqeEqIjS3+OtMIvtyosNybEOk1gpo3FJfz9EF2M1t0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=q+AYRL7rjOJA2edpdzbmkMlM0SA9+RK6bxnCE7/EXyE/2gBu6CrlxUxKAPgHP9b8yaHvCRHmEPVrwmg8wdv6rer0TWvfXF0C0E802M7dY4bklyvD45X6o9RsEWntJKs5D5Y8JxCCPfq/c69BZftuERlDE8gUChRLU9bcDFXZIyE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=aNTCGVf+; arc=none smtp.client-ip=209.85.218.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="aNTCGVf+" Received: by mail-ej1-f50.google.com with SMTP id a640c23a62f3a-b04163fe08dso1013457566b.3; Tue, 09 Sep 2025 11:29:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1757442574; x=1758047374; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=+OT8QGzf3PZ88uIRwWvPBWTj8UBsZ2B/sy/goy6AP/4=; b=aNTCGVf+nQTo+8gdRS8fFsnygx1s9OI7p8jJAXioJoCwlypYq2MIXKmPI/3QUgR95V FuwMyZ3iiJnGssAfCWD7+zOSsWKNtMkjMgI6ZdahSRoZWiMf6AQWBJ83phKoc/bBIBiN N7+0Arsb7bELUoZ/4x8HoRlK65c1/Wq/qCvbD+r7W40/74eaKQYn8WsyM8EupvZQnXWF u/k3zj0LBvJuq+fPRxwNwtQEPL1bNCwefW7EDZJa7Xk6X6YtYUNoHJDe72JHM+KEVUkC NOf8gUWETpHMbnWXW9UgSwGIlo7+BMnAphZ66suNYusECP8Ij5ADyKCmywY4yKIbHsI7 uveg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757442574; x=1758047374; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+OT8QGzf3PZ88uIRwWvPBWTj8UBsZ2B/sy/goy6AP/4=; b=tJzBVwk/AXxFHsE1JL5m2Kkz5haDLVyk59lpyI9Uldpbm2JJuK+i2YWHw3ZPZ799fe +U7cijyBp7pre5MUQVMNfUsQ1YQjgrVW2KQgRPcNqQsDgfVYs17afWtIziDttjRUVxvq hbzqPmsJZkvmechCo8XVL7yFpeBK1i54DdLFUAd3yT8tXuROS5XZqfPm3IMGTrz5XjcN vXPp2vU+eOqMqql5fd8Td+xSkKNOjdygqDJA1KlrTkmlVZuFCG8rlgrwfoPH821dCvVd W8l9qB7kegKvzMnc9kHou6zLlEmDkqd9QE/QQCrPVnCdKxs2TbtehoO5D+0xRV+gr6rM MNdA== X-Forwarded-Encrypted: i=1; AJvYcCUXLthND9un/QvMKYNHxccJtALoasyEYQ2/mDmSH4rkakYiVTGfuU8gUkg8Ibk7I+a6jn3+mGVkxpeLYqQ=@vger.kernel.org, AJvYcCUmqnkLC/bWEpqz4gG3mbOn9K8h62Nb9ZvJyI/U9pKSVBQSDKDf+pMh4ih6D4Tgax5YeJMZqDtCsBM=@vger.kernel.org X-Gm-Message-State: AOJu0YzadWvtNE8jh7ciEH5rT1ysgbZOHfNFhV7qm9+2OIlbdthEwJdf 0PeWdhDA4yK1xzUgf0XQs/WvEwfEWWUltHCBMGLTEWg5IBJrWB7EJhHo X-Gm-Gg: ASbGncvQbQu8KZhK5cClHb4NYXLzWsFlLCalRSYrDPE/iJcjtP7BWiKmsUEqg1C4kXQ tspyPvp890aj9GApduZBVdmuGtgrOzVbb5wc4L/NoAg2YUZFfLog/r+rPfz071bh+h1YK/DwCGd vaJ9QG2hJatNpaEM7HTHy5iH/Foa+V4/Ee88AsQO6B1UorucNVROr3BR0tC0b1197zscVCdDCx4 dsQflGUU0kfY/qfQbxp6AQOK0u3yjY6CIZT1dxEr3uNW8S918yTcZh+GqCDHsP4K1k7zzWEdC3c ldi789kSBi5plIDso9/Ub6pdm3zvk1EoBXgca+5HiQvtecf4MVV/saKGIvBjnc5xIEVsBtaaUDF A29de5hEq0WaM04cOOHtO X-Google-Smtp-Source: AGHT+IFRAbRow4lOMs4Ehuu/UgINhiCSN+sh8cpsV2JCi+ta/AVq5sL3KfgFdHtUmVgPk0T3xQknfA== X-Received: by 2002:a17:907:7e82:b0:afe:8f0b:6c64 with SMTP id a640c23a62f3a-b04b13c891bmr1288367366b.4.1757442573607; Tue, 09 Sep 2025 11:29:33 -0700 (PDT) Received: from [127.0.1.1] ([46.53.240.27]) by smtp.googlemail.com with ESMTPSA id a640c23a62f3a-b07833ebe61sm30520666b.89.2025.09.09.11.29.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Sep 2025 11:29:33 -0700 (PDT) From: Dzmitry Sankouski Date: Tue, 09 Sep 2025 21:29:11 +0300 Subject: [PATCH v2 1/9] power: supply: max77705_charger: move active discharge setting to mfd parent Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250909-max77705_77976_charger_improvement-v2-1-a8d2fba47159@gmail.com> References: <20250909-max77705_77976_charger_improvement-v2-0-a8d2fba47159@gmail.com> In-Reply-To: <20250909-max77705_77976_charger_improvement-v2-0-a8d2fba47159@gmail.com> To: Chanwoo Choi , Krzysztof Kozlowski , Lee Jones , Sebastian Reichel , Luca Ceresoli Cc: Krzysztof Kozlowski , Sebastian Reichel , linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, Dzmitry Sankouski X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1757442571; l=1767; i=dsankouski@gmail.com; s=20240619; h=from:subject:message-id; bh=0oqeEqIjS3+OtMIvtyosNybEOk1gpo3FJfz9EF2M1t0=; b=EphA8uU9TdYUxH1+TdcxyfqWePF4k1Thh0P/lJbWlek+viArct4J+NKPRN5Ey8QbNWrfBPLaF qSpHG4vTrIQCdO8CvWJ1kJBWfwFsqtrex+qRo64uoISYKeUtLaL2Dn4 X-Developer-Key: i=dsankouski@gmail.com; a=ed25519; pk=YJcXFcN1EWrzBYuiE2yi5Mn6WLn6L1H71J+f7X8fMag= Active discharge setting is a part of MFD top level i2c device, hence cannot be controlled by charger. Writing to MAX77705_PMIC_REG_MAINCTRL1 register from charger driver is a mistake. Move active discharge setting to MFD parent driver. Fixes: a6a494c8e3ce ("power: supply: max77705: Add charger driver for Maxim= 77705") Signed-off-by: Dzmitry Sankouski --- drivers/mfd/max77705.c | 3 +++ drivers/power/supply/max77705_charger.c | 3 --- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/mfd/max77705.c b/drivers/mfd/max77705.c index 6b263bacb8c2..ff07d0e0d5f8 100644 --- a/drivers/mfd/max77705.c +++ b/drivers/mfd/max77705.c @@ -108,6 +108,9 @@ static int max77705_i2c_probe(struct i2c_client *i2c) if (pmic_rev !=3D MAX77705_PASS3) return dev_err_probe(dev, -ENODEV, "Rev.0x%x is not tested\n", pmic_rev); =20 + /* Active Discharge Enable */ + regmap_update_bits(max77705->regmap, MAX77705_PMIC_REG_MAINCTRL1, 1, 1); + ret =3D devm_regmap_add_irq_chip(dev, max77705->regmap, i2c->irq, IRQF_ONESHOT | IRQF_SHARED, 0, diff --git a/drivers/power/supply/max77705_charger.c b/drivers/power/supply= /max77705_charger.c index 329b430d0e50..3b75c82b9b9e 100644 --- a/drivers/power/supply/max77705_charger.c +++ b/drivers/power/supply/max77705_charger.c @@ -487,9 +487,6 @@ static void max77705_charger_initialize(struct max77705= _charger_data *chg) regmap_update_bits(regmap, MAX77705_CHG_REG_CNFG_00, MAX77705_WDTEN_MASK, 0); =20 - /* Active Discharge Enable */ - regmap_update_bits(regmap, MAX77705_PMIC_REG_MAINCTRL1, 1, 1); - /* VBYPSET=3D5.0V */ regmap_update_bits(regmap, MAX77705_CHG_REG_CNFG_11, MAX77705_VBYPSET_MAS= K, 0); =20 --=20 2.39.5 From nobody Thu Oct 2 22:53:37 2025 Received: from mail-ej1-f47.google.com (mail-ej1-f47.google.com [209.85.218.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5E3253570CB; Tue, 9 Sep 2025 18:29:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757442578; cv=none; b=WIFDuYJ3IjvOdJJVcgLMEhXsdHfPrnHYtagYtDJNy1pBLYCQn358bpG6gXlE6pjfORKZOJ9RwlfBQjLyLiPX5DAEGgIvEysccI4oLhjGBc4tj5hZmQPp7uj7mAU3wLIjGZAFS+3nzrh7Dhrigo6djhn0x9cGd19D1XYvHZLrAJM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757442578; c=relaxed/simple; bh=HOFral57BQL8UYkTuj9H3P5RIa5oSgklRaCCxDv4muA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=DGbyL4UYJaX/px2aYkTWWz4AT63IxvSoLooiVTgG3xORd6U7X8TmhadfIlWZhJ8GH2gyr82x2mW+hWNcw3LyxKB/hcTGeTOf6BN1u6dUzgQWMCyYKVguNqzi+meYBbr1yoGQqsEyiCeb9yh6Ju59lywl9GKoBb5zt/ml01UZQHQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=MfTme+7o; arc=none smtp.client-ip=209.85.218.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="MfTme+7o" Received: by mail-ej1-f47.google.com with SMTP id a640c23a62f3a-b0411b83aafso981757666b.1; Tue, 09 Sep 2025 11:29:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1757442575; x=1758047375; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=3ct1QxM5jLU79bjOOr6iNioQP9jRwP1CqDRkzzfxBLo=; b=MfTme+7o2woXcLNl0wUfTF7IaeFgzt8SfRNMDWhWOONPuqKCUjdjngh82NL1ezxFPL rfnhhaxlgKU7qQd0h6DChfMH/Sjp1kaDXId9ZN97R6NnH5vIGxrT6LRgxYzGpaynNvBD 0gsmpCnpC+gjBRqIpPQGmuHCjjdhs8btjoK/LppW1BbduxLZg5Y4kfcUMfknbKumu98C 313CuS+g/1ZyfAtiODQL4XVONV5OndpdbMc0V+rJeRlLZM1sK9hbDcHmrOr4Bj3nA6ln 1KpY3Amc5vBmg0iQI5THOPHSzyCXSw5uuWIFSulxjYPzffXbP5e6NyOAvIrl2y2NGvGE pEWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757442575; x=1758047375; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=3ct1QxM5jLU79bjOOr6iNioQP9jRwP1CqDRkzzfxBLo=; b=On3WgMAbnETj8x7bIr8+YCyC6vb1gYy5z21+1uop+Hd3R+Krc+M0DKk4Um2zPyuvHO hEZo1ED+bPl2yhkGxSvWA+YcfWnNA2aLTWUx1SRRTuWgu6NHzsSPavPQitVvI+rlHjtp OT8O1tHTNpz9ByFiur8aQmA+HDljf6GRA0svfvcsQlTnWAQhV1Bzofv6NcjN/djSCWEo xjHgfsNMR6a0xwLXwSehGMtlU+Cix9VRjsNiKuqCPGa8R7daT3iYkvkjVvZ66MmWkRTQ bVBz24UbH0yOoRkshek8StDfY+a1Dx0/9YQDHEldpxAyA8YE4NPl85EkO+UDU5dkCz5G ICUA== X-Forwarded-Encrypted: i=1; AJvYcCXQVttngjLhCzBjUhFZTBdlSKCPOPNQFoNLpMqr2aa5iPiuEDcciEIB3mvBoAN09afVs/HJ63S/Kaw=@vger.kernel.org, AJvYcCXfrTa/YrJ/oIw1EgpoBA1WTXoMgMRYmCKp5enGoIfbnUJCZQp4fFOg596L8lmc1wq2nlXNazDw/bn5XiQ=@vger.kernel.org X-Gm-Message-State: AOJu0YzZjCejWJNx5C/pZaEme2oIoy4cGFNNwQePCRZ5Shhs+shhWJs+ zxwd6I9LSZldn/ZCbaz57BRi3ie6bDV++fxkI4pj1itVsKmWZBYLUS6vCYKYPw== X-Gm-Gg: ASbGncsXC3GWNryurCAtuHS/KlOPxJGbr1pkGDVVtrOoO2F+WYe9UyBBXd6E6h0iJzf UjtwNxysLEQjqDGR3r/zdJpZwArzZk7Ol4VJYUcd0jW848myl/nJG94bNezGwddjNY5k1vZ4K9i SSFVHdWVR7T1MfrWlQgT71Wcz7DV/fJ2ihXipNsm6i6XslMhzJjiFc+jz/V6/oqxOhc8EdvAydF S1G5ZABbtESz9howSOn2PqgHAjHxmbz7D/lNaiwg+PHgJrYtpgx8rWujTOhrxz23SVv3P5oAoGz I19tP5YE+ldTIPtERKEUQFn8BscJ/AWmUyGf9LP7Ttgch66d0xzeEiLDj7bm9y7mKn9/v+BEDca 8eRjotiIJWbDEhHKdahgD X-Google-Smtp-Source: AGHT+IHMGNHvSbK+x/7x0YYCoQpMgoP6CimabLDSImCOZneHKgrbZZPeF0+KylEbZY1SMKVh1XIkxQ== X-Received: by 2002:a17:906:6a1e:b0:b04:616c:d746 with SMTP id a640c23a62f3a-b04b14aca68mr1451126466b.25.1757442574656; Tue, 09 Sep 2025 11:29:34 -0700 (PDT) Received: from [127.0.1.1] ([46.53.240.27]) by smtp.googlemail.com with ESMTPSA id a640c23a62f3a-b07833ebe61sm30520666b.89.2025.09.09.11.29.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Sep 2025 11:29:34 -0700 (PDT) From: Dzmitry Sankouski Date: Tue, 09 Sep 2025 21:29:12 +0300 Subject: [PATCH v2 2/9] power: supply: max77705_charger: refactoring: rename charger to chg Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250909-max77705_77976_charger_improvement-v2-2-a8d2fba47159@gmail.com> References: <20250909-max77705_77976_charger_improvement-v2-0-a8d2fba47159@gmail.com> In-Reply-To: <20250909-max77705_77976_charger_improvement-v2-0-a8d2fba47159@gmail.com> To: Chanwoo Choi , Krzysztof Kozlowski , Lee Jones , Sebastian Reichel , Luca Ceresoli Cc: Krzysztof Kozlowski , Sebastian Reichel , linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, Dzmitry Sankouski X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1757442571; l=9595; i=dsankouski@gmail.com; s=20240619; h=from:subject:message-id; bh=HOFral57BQL8UYkTuj9H3P5RIa5oSgklRaCCxDv4muA=; b=XecssOczPL5wU3AGGY21NHxSxMjC4mAWphl4ArXs4tmVrstti7qKXT9H228YNXWLvSJCmiilV iVkPXK7ezP0BTY05K/bu30Dt0ul4dQtLk2OUOn7pv51Ur3fq89ReJ+S X-Developer-Key: i=dsankouski@gmail.com; a=ed25519; pk=YJcXFcN1EWrzBYuiE2yi5Mn6WLn6L1H71J+f7X8fMag= Rename struct max77705_charger_data variable to chg for consistency. Signed-off-by: Dzmitry Sankouski --- drivers/power/supply/max77705_charger.c | 80 ++++++++++++++++-------------= ---- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/drivers/power/supply/max77705_charger.c b/drivers/power/supply= /max77705_charger.c index 3b75c82b9b9e..7855f890e0a9 100644 --- a/drivers/power/supply/max77705_charger.c +++ b/drivers/power/supply/max77705_charger.c @@ -42,9 +42,9 @@ static enum power_supply_property max77705_charger_props[= ] =3D { =20 static int max77705_chgin_irq(void *irq_drv_data) { - struct max77705_charger_data *charger =3D irq_drv_data; + struct max77705_charger_data *chg =3D irq_drv_data; =20 - queue_work(charger->wqueue, &charger->chgin_work); + queue_work(chg->wqueue, &chg->chgin_work); =20 return 0; } @@ -109,19 +109,19 @@ static int max77705_get_online(struct regmap *regmap,= int *val) return 0; } =20 -static int max77705_check_battery(struct max77705_charger_data *charger, i= nt *val) +static int max77705_check_battery(struct max77705_charger_data *chg, int *= val) { unsigned int reg_data; unsigned int reg_data2; - struct regmap *regmap =3D charger->regmap; + struct regmap *regmap =3D chg->regmap; =20 regmap_read(regmap, MAX77705_CHG_REG_INT_OK, ®_data); =20 - dev_dbg(charger->dev, "CHG_INT_OK(0x%x)\n", reg_data); + dev_dbg(chg->dev, "CHG_INT_OK(0x%x)\n", reg_data); =20 regmap_read(regmap, MAX77705_CHG_REG_DETAILS_00, ®_data2); =20 - dev_dbg(charger->dev, "CHG_DETAILS00(0x%x)\n", reg_data2); + dev_dbg(chg->dev, "CHG_DETAILS00(0x%x)\n", reg_data2); =20 if ((reg_data & MAX77705_BATP_OK) || !(reg_data2 & MAX77705_BATP_DTLS)) *val =3D true; @@ -131,9 +131,9 @@ static int max77705_check_battery(struct max77705_charg= er_data *charger, int *va return 0; } =20 -static int max77705_get_charge_type(struct max77705_charger_data *charger,= int *val) +static int max77705_get_charge_type(struct max77705_charger_data *chg, int= *val) { - struct regmap *regmap =3D charger->regmap; + struct regmap *regmap =3D chg->regmap; unsigned int reg_data; =20 regmap_read(regmap, MAX77705_CHG_REG_CNFG_09, ®_data); @@ -159,9 +159,9 @@ static int max77705_get_charge_type(struct max77705_cha= rger_data *charger, int * return 0; } =20 -static int max77705_get_status(struct max77705_charger_data *charger, int = *val) +static int max77705_get_status(struct max77705_charger_data *chg, int *val) { - struct regmap *regmap =3D charger->regmap; + struct regmap *regmap =3D chg->regmap; unsigned int reg_data; =20 regmap_read(regmap, MAX77705_CHG_REG_CNFG_09, ®_data); @@ -234,10 +234,10 @@ static int max77705_get_vbus_state(struct regmap *reg= map, int *value) return 0; } =20 -static int max77705_get_battery_health(struct max77705_charger_data *charg= er, +static int max77705_get_battery_health(struct max77705_charger_data *chg, int *value) { - struct regmap *regmap =3D charger->regmap; + struct regmap *regmap =3D chg->regmap; unsigned int bat_dtls; =20 regmap_read(regmap, MAX77705_CHG_REG_DETAILS_01, &bat_dtls); @@ -245,16 +245,16 @@ static int max77705_get_battery_health(struct max7770= 5_charger_data *charger, =20 switch (bat_dtls) { case MAX77705_BATTERY_NOBAT: - dev_dbg(charger->dev, "%s: No battery and the charger is suspended\n", + dev_dbg(chg->dev, "%s: No battery and the chg is suspended\n", __func__); *value =3D POWER_SUPPLY_HEALTH_NO_BATTERY; break; case MAX77705_BATTERY_PREQUALIFICATION: - dev_dbg(charger->dev, "%s: battery is okay but its voltage is low(~VPQLB= )\n", + dev_dbg(chg->dev, "%s: battery is okay but its voltage is low(~VPQLB)\n", __func__); break; case MAX77705_BATTERY_DEAD: - dev_dbg(charger->dev, "%s: battery dead\n", __func__); + dev_dbg(chg->dev, "%s: battery dead\n", __func__); *value =3D POWER_SUPPLY_HEALTH_DEAD; break; case MAX77705_BATTERY_GOOD: @@ -262,11 +262,11 @@ static int max77705_get_battery_health(struct max7770= 5_charger_data *charger, *value =3D POWER_SUPPLY_HEALTH_GOOD; break; case MAX77705_BATTERY_OVERVOLTAGE: - dev_dbg(charger->dev, "%s: battery ovp\n", __func__); + dev_dbg(chg->dev, "%s: battery ovp\n", __func__); *value =3D POWER_SUPPLY_HEALTH_OVERVOLTAGE; break; default: - dev_dbg(charger->dev, "%s: battery unknown\n", __func__); + dev_dbg(chg->dev, "%s: battery unknown\n", __func__); *value =3D POWER_SUPPLY_HEALTH_UNSPEC_FAILURE; break; } @@ -274,9 +274,9 @@ static int max77705_get_battery_health(struct max77705_= charger_data *charger, return 0; } =20 -static int max77705_get_health(struct max77705_charger_data *charger, int = *val) +static int max77705_get_health(struct max77705_charger_data *chg, int *val) { - struct regmap *regmap =3D charger->regmap; + struct regmap *regmap =3D chg->regmap; int ret, is_online =3D 0; =20 ret =3D max77705_get_online(regmap, &is_online); @@ -287,15 +287,15 @@ static int max77705_get_health(struct max77705_charge= r_data *charger, int *val) if (ret || (*val !=3D POWER_SUPPLY_HEALTH_GOOD)) return ret; } - return max77705_get_battery_health(charger, val); + return max77705_get_battery_health(chg, val); } =20 -static int max77705_get_input_current(struct max77705_charger_data *charge= r, +static int max77705_get_input_current(struct max77705_charger_data *chg, int *val) { unsigned int reg_data; int get_current =3D 0; - struct regmap *regmap =3D charger->regmap; + struct regmap *regmap =3D chg->regmap; =20 regmap_read(regmap, MAX77705_CHG_REG_CNFG_09, ®_data); =20 @@ -313,11 +313,11 @@ static int max77705_get_input_current(struct max77705= _charger_data *charger, return 0; } =20 -static int max77705_get_charge_current(struct max77705_charger_data *charg= er, +static int max77705_get_charge_current(struct max77705_charger_data *chg, int *val) { unsigned int reg_data; - struct regmap *regmap =3D charger->regmap; + struct regmap *regmap =3D chg->regmap; =20 regmap_read(regmap, MAX77705_CHG_REG_CNFG_02, ®_data); reg_data &=3D MAX77705_CHG_CC; @@ -327,12 +327,12 @@ static int max77705_get_charge_current(struct max7770= 5_charger_data *charger, return 0; } =20 -static int max77705_set_float_voltage(struct max77705_charger_data *charge= r, +static int max77705_set_float_voltage(struct max77705_charger_data *chg, int float_voltage) { int float_voltage_mv; unsigned int reg_data =3D 0; - struct regmap *regmap =3D charger->regmap; + struct regmap *regmap =3D chg->regmap; =20 float_voltage_mv =3D float_voltage / 1000; reg_data =3D float_voltage_mv <=3D 4000 ? 0x0 : @@ -345,12 +345,12 @@ static int max77705_set_float_voltage(struct max77705= _charger_data *charger, (reg_data << MAX77705_CHG_CV_PRM_SHIFT)); } =20 -static int max77705_get_float_voltage(struct max77705_charger_data *charge= r, +static int max77705_get_float_voltage(struct max77705_charger_data *chg, int *val) { unsigned int reg_data =3D 0; int voltage_mv; - struct regmap *regmap =3D charger->regmap; + struct regmap *regmap =3D chg->regmap; =20 regmap_read(regmap, MAX77705_CHG_REG_CNFG_04, ®_data); reg_data &=3D MAX77705_CHG_PRM_MASK; @@ -365,28 +365,28 @@ static int max77705_chg_get_property(struct power_sup= ply *psy, enum power_supply_property psp, union power_supply_propval *val) { - struct max77705_charger_data *charger =3D power_supply_get_drvdata(psy); - struct regmap *regmap =3D charger->regmap; + struct max77705_charger_data *chg =3D power_supply_get_drvdata(psy); + struct regmap *regmap =3D chg->regmap; =20 switch (psp) { case POWER_SUPPLY_PROP_ONLINE: return max77705_get_online(regmap, &val->intval); case POWER_SUPPLY_PROP_PRESENT: - return max77705_check_battery(charger, &val->intval); + return max77705_check_battery(chg, &val->intval); case POWER_SUPPLY_PROP_STATUS: - return max77705_get_status(charger, &val->intval); + return max77705_get_status(chg, &val->intval); case POWER_SUPPLY_PROP_CHARGE_TYPE: - return max77705_get_charge_type(charger, &val->intval); + return max77705_get_charge_type(chg, &val->intval); case POWER_SUPPLY_PROP_HEALTH: - return max77705_get_health(charger, &val->intval); + return max77705_get_health(chg, &val->intval); case POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT: - return max77705_get_input_current(charger, &val->intval); + return max77705_get_input_current(chg, &val->intval); case POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT: - return max77705_get_charge_current(charger, &val->intval); + return max77705_get_charge_current(chg, &val->intval); case POWER_SUPPLY_PROP_CONSTANT_CHARGE_VOLTAGE: - return max77705_get_float_voltage(charger, &val->intval); + return max77705_get_float_voltage(chg, &val->intval); case POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN: - val->intval =3D charger->bat_info->voltage_max_design_uv; + val->intval =3D chg->bat_info->voltage_max_design_uv; break; case POWER_SUPPLY_PROP_MODEL_NAME: val->strval =3D max77705_charger_model; @@ -410,10 +410,10 @@ static const struct power_supply_desc max77705_charge= r_psy_desc =3D { =20 static void max77705_chgin_isr_work(struct work_struct *work) { - struct max77705_charger_data *charger =3D + struct max77705_charger_data *chg =3D container_of(work, struct max77705_charger_data, chgin_work); =20 - power_supply_changed(charger->psy_chg); + power_supply_changed(chg->psy_chg); } =20 static void max77705_charger_initialize(struct max77705_charger_data *chg) --=20 2.39.5 From nobody Thu Oct 2 22:53:37 2025 Received: from mail-ej1-f45.google.com (mail-ej1-f45.google.com [209.85.218.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9AE7735CEDC; Tue, 9 Sep 2025 18:29:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757442579; cv=none; b=jqiWwNanGnZWaJ80H98WwHS6v/bD6La2z+Ph0Jo3wB9LLiiF9UW2BedkBfhsZjxR8eBYPgMzhKVErpb38Q+Jm/1g8Hsi/+RPQGUfArzQOFcv+UptYXDKljOhLzs6vxQkMRrH+xirfJQ6xkBl6/EpJr79unc55eoWWzLlW9dQVAQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757442579; c=relaxed/simple; bh=xePguBSHxh+UFZ2zTk2qZNnczttKf6Og9jirSWtU4ao=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nIY1FRp8BHKPlETirwUNXK0qVTpRU23cwjZ31vt6y3wzhv+8+SRUlTWkj3XtjIfTkVVxzwKodn/ednQEBCTVv1fMVYqTLCeIqowhfaHAesOsu3z5qgJqzn/kd8zfrodZfK4UenfL3EORRak8bQBSwbMFezqP+XGSvhtjhVnK3kE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=CYDZ/Ipy; arc=none smtp.client-ip=209.85.218.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="CYDZ/Ipy" Received: by mail-ej1-f45.google.com with SMTP id a640c23a62f3a-b04ba58a84fso497824366b.2; Tue, 09 Sep 2025 11:29:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1757442576; x=1758047376; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=Ua1+fF/75UzR8PkEev3BSJqkYEQqIfzh7nga0Yz7W58=; b=CYDZ/Ipy+u5jmR73UCARulkOyOINW/S7pBDKFoKpNnk5KbC9vToNbZIc/s3ROoVqyW hPtjU3C+cV9ANhNr1SgnSYPypJn4ni0HNdLJCu40qbbjU/4hJDYudgwv5/OlXOa2+oVZ wrG+8CmNiCrC0w/4hRicG6WozLnBX8pAVhjTSFMDCrIkuRROZauwWvkU2OEVqnsh7haf LLCAQnPzpx+00TitVWgaGjP/1DMBmS4FyP51z15TeYQs0eGhEZkz/sIjRr2SUTXj7c3w rq5NP/TFlyav5vZT3HxD3LAfKLA7q+ZBPk6r66PL+SL3+eYzH3eBZXiHIJTP/LQrjXmh x9sA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757442576; x=1758047376; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Ua1+fF/75UzR8PkEev3BSJqkYEQqIfzh7nga0Yz7W58=; b=tubR48eEkDJThriju2CQBSUT9zXsaybSNoBydkrzkCEuWs7YFFM31V/upvq19+i02g hx8tXCLx2vUZaoKAk3FavI97kncE/BlpNs27oYNJH9ruxHg72ecNNpGPU8AXQM1E72/z qqxo6THcg3sfzTUGxm7EG9y7FCVhs7apuOfNq5ImP2dGChqp017AAyl5gD1QdU2BHST4 ViGKv82NniRW4y8lsEXAclkNGopLM0IDtzIx2W9B0FJ2Nf4ipWP1JqTLKh6mbXHvBdFD 5lY6Bng793WPlp5qhsqj9YdMgWiJXxVW5NuNdnY8Zdis+E/GEnKxLXwiztZ0Lk2AJ9D9 +ARg== X-Forwarded-Encrypted: i=1; AJvYcCVKlfpiUEMinLd0d82dJ2vWRJJ4uD465qk9Ek0MzDP6ser2DdcmMAXBhdnwF3Q/jmWL4wzNrEyNkaU=@vger.kernel.org, AJvYcCVyPjb+0DNo/rp+V2SNE3xXgOFv61irBiD2nRo5y7XUz20/iyupS7y1HL4y1t6OH0kUsBVjU2SKMfN+vrU=@vger.kernel.org X-Gm-Message-State: AOJu0Yw1LpuaDseBESSNIaXvSIWPIun79tD04wQ/CPnXfLajeJNmnfqr Li0x7498mXzUtffj90z/jwUcgCnyL/F+/t3wNrA6Fbbjy0awAOGGpEgi X-Gm-Gg: ASbGncsGJP7zjrp9qJOB1zlW0jYh2g7ZRZ6YaU1PySEX4lqsqY/H1ySLA8Tkvvgvf2R C4tBWMX2Oxh4g4aUthOJvuY6pKmAu3bQPdt6qIFgDIk4tLO7QaODdVd/LIbtgTxAZDUJPp26Fn1 CnJy0v1DSrOuUPvnzS1a5xBVXqPEc1rdouVOirN8uYQqiIbvo+dlbdpZ0bkxLjGc9FhmUZH+/l/ DP2X/9kWa4nOF1kTqo4SeFjy54fC4EjdLQwCO30fZqNWuKTE704ltCa4t+cIAJhXdCd2u9EvwrE t08272qumoqO5EMlfw7YH3xnDxgYsvw1PdxkbyDYvXUUehX4TRTgspHYHBfc1wmuK2LWoZ1ZKhR 6GlrnmfXDDekHkfnzpWFIBizu2KdpGPJGCr0vDe6xPw== X-Google-Smtp-Source: AGHT+IFdZcwSECgg3goUH52a0hSiSTRbwnIjETBP/q6zVrMFlqxnZfMRJzm6QdxqdIjMPsFEnyYqQw== X-Received: by 2002:a17:907:3d06:b0:b04:3756:ad07 with SMTP id a640c23a62f3a-b04b16db227mr1092535166b.44.1757442575708; Tue, 09 Sep 2025 11:29:35 -0700 (PDT) Received: from [127.0.1.1] ([46.53.240.27]) by smtp.googlemail.com with ESMTPSA id a640c23a62f3a-b07833ebe61sm30520666b.89.2025.09.09.11.29.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Sep 2025 11:29:35 -0700 (PDT) From: Dzmitry Sankouski Date: Tue, 09 Sep 2025 21:29:13 +0300 Subject: [PATCH v2 3/9] power: supply: max77705_charger: use regfields for config registers Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250909-max77705_77976_charger_improvement-v2-3-a8d2fba47159@gmail.com> References: <20250909-max77705_77976_charger_improvement-v2-0-a8d2fba47159@gmail.com> In-Reply-To: <20250909-max77705_77976_charger_improvement-v2-0-a8d2fba47159@gmail.com> To: Chanwoo Choi , Krzysztof Kozlowski , Lee Jones , Sebastian Reichel , Luca Ceresoli Cc: Krzysztof Kozlowski , Sebastian Reichel , linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, Dzmitry Sankouski X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1757442571; l=16663; i=dsankouski@gmail.com; s=20240619; h=from:subject:message-id; bh=xePguBSHxh+UFZ2zTk2qZNnczttKf6Og9jirSWtU4ao=; b=wS29D9aiix7E7c6dAGCMn4IQyhHyVZY0TDqyd+L9D1zRLCSHQF/11MYsENrQbZqIn8+nMBv98 2CAnvF8L3JxC3SvW7ZDhXFM/xFxF1RzEzNxrfwpY0vjQ7Y3jZQNPruL X-Developer-Key: i=dsankouski@gmail.com; a=ed25519; pk=YJcXFcN1EWrzBYuiE2yi5Mn6WLn6L1H71J+f7X8fMag= Using regfields allows to cleanup masks and register offset definition, allowing to access register info by it's functional name. Signed-off-by: Dzmitry Sankouski --- Changes to v2: - fix MAX77705_CHGPROT_UNLOCKED value: GENMASK(3, 2) -> 3, because it's now used in regfield - remove MAX77705_CHGPROT_MASK because it's unused now --- drivers/power/supply/max77705_charger.c | 105 ++++++++++++----------------= ---- include/linux/power/max77705_charger.h | 102 ++++++++++++++++------------= --- 2 files changed, 93 insertions(+), 114 deletions(-) diff --git a/drivers/power/supply/max77705_charger.c b/drivers/power/supply= /max77705_charger.c index 7855f890e0a9..2d2201a6ba68 100644 --- a/drivers/power/supply/max77705_charger.c +++ b/drivers/power/supply/max77705_charger.c @@ -74,8 +74,7 @@ static int max77705_charger_enable(struct max77705_charge= r_data *chg) { int rv; =20 - rv =3D regmap_update_bits(chg->regmap, MAX77705_CHG_REG_CNFG_09, - MAX77705_CHG_EN_MASK, MAX77705_CHG_EN_MASK); + rv =3D regmap_field_write(chg->rfield[MAX77705_CHG_EN], 1); if (rv) dev_err(chg->dev, "unable to enable the charger: %d\n", rv); =20 @@ -87,10 +86,7 @@ static void max77705_charger_disable(void *data) struct max77705_charger_data *chg =3D data; int rv; =20 - rv =3D regmap_update_bits(chg->regmap, - MAX77705_CHG_REG_CNFG_09, - MAX77705_CHG_EN_MASK, - MAX77705_CHG_DISABLE); + rv =3D regmap_field_write(chg->rfield[MAX77705_CHG_EN], MAX77705_CHG_DISA= BLE); if (rv) dev_err(chg->dev, "unable to disable the charger: %d\n", rv); } @@ -134,10 +130,10 @@ static int max77705_check_battery(struct max77705_cha= rger_data *chg, int *val) static int max77705_get_charge_type(struct max77705_charger_data *chg, int= *val) { struct regmap *regmap =3D chg->regmap; - unsigned int reg_data; + unsigned int reg_data, chg_en; =20 - regmap_read(regmap, MAX77705_CHG_REG_CNFG_09, ®_data); - if (!MAX77705_CHARGER_CHG_CHARGING(reg_data)) { + regmap_field_read(chg->rfield[MAX77705_CHG_EN], &chg_en); + if (!chg_en) { *val =3D POWER_SUPPLY_CHARGE_TYPE_NONE; return 0; } @@ -162,10 +158,10 @@ static int max77705_get_charge_type(struct max77705_c= harger_data *chg, int *val) static int max77705_get_status(struct max77705_charger_data *chg, int *val) { struct regmap *regmap =3D chg->regmap; - unsigned int reg_data; + unsigned int reg_data, chg_en; =20 - regmap_read(regmap, MAX77705_CHG_REG_CNFG_09, ®_data); - if (!MAX77705_CHARGER_CHG_CHARGING(reg_data)) { + regmap_field_read(chg->rfield[MAX77705_CHG_EN], &chg_en); + if (!chg_en) { *val =3D POWER_SUPPLY_CHARGE_TYPE_NONE; return 0; } @@ -295,16 +291,11 @@ static int max77705_get_input_current(struct max77705= _charger_data *chg, { unsigned int reg_data; int get_current =3D 0; - struct regmap *regmap =3D chg->regmap; =20 - regmap_read(regmap, MAX77705_CHG_REG_CNFG_09, ®_data); - - reg_data &=3D MAX77705_CHG_CHGIN_LIM_MASK; + regmap_field_read(chg->rfield[MAX77705_CHG_CHGIN_LIM], ®_data); =20 if (reg_data <=3D 3) get_current =3D MAX77705_CURRENT_CHGIN_MIN; - else if (reg_data >=3D MAX77705_CHG_CHGIN_LIM_MASK) - get_current =3D MAX77705_CURRENT_CHGIN_MAX; else get_current =3D (reg_data + 1) * MAX77705_CURRENT_CHGIN_STEP; =20 @@ -317,10 +308,8 @@ static int max77705_get_charge_current(struct max77705= _charger_data *chg, int *val) { unsigned int reg_data; - struct regmap *regmap =3D chg->regmap; =20 - regmap_read(regmap, MAX77705_CHG_REG_CNFG_02, ®_data); - reg_data &=3D MAX77705_CHG_CC; + regmap_field_read(chg->rfield[MAX77705_CHG_CC_LIM], ®_data); =20 *val =3D reg_data <=3D 0x2 ? MAX77705_CURRENT_CHGIN_MIN : reg_data * MAX7= 7705_CURRENT_CHG_STEP; =20 @@ -332,7 +321,6 @@ static int max77705_set_float_voltage(struct max77705_c= harger_data *chg, { int float_voltage_mv; unsigned int reg_data =3D 0; - struct regmap *regmap =3D chg->regmap; =20 float_voltage_mv =3D float_voltage / 1000; reg_data =3D float_voltage_mv <=3D 4000 ? 0x0 : @@ -340,9 +328,7 @@ static int max77705_set_float_voltage(struct max77705_c= harger_data *chg, (float_voltage_mv <=3D 4200) ? (float_voltage_mv - 4000) / 50 : (((float_voltage_mv - 4200) / 10) + 0x04); =20 - return regmap_update_bits(regmap, MAX77705_CHG_REG_CNFG_04, - MAX77705_CHG_CV_PRM_MASK, - (reg_data << MAX77705_CHG_CV_PRM_SHIFT)); + return regmap_field_write(chg->rfield[MAX77705_CHG_CV_PRM], reg_data); } =20 static int max77705_get_float_voltage(struct max77705_charger_data *chg, @@ -350,10 +336,8 @@ static int max77705_get_float_voltage(struct max77705_= charger_data *chg, { unsigned int reg_data =3D 0; int voltage_mv; - struct regmap *regmap =3D chg->regmap; =20 - regmap_read(regmap, MAX77705_CHG_REG_CNFG_04, ®_data); - reg_data &=3D MAX77705_CHG_PRM_MASK; + regmap_field_read(chg->rfield[MAX77705_CHG_CV_PRM], ®_data); voltage_mv =3D reg_data <=3D 0x04 ? reg_data * 50 + 4000 : (reg_data - 4) * 10 + 4200; *val =3D voltage_mv * 1000; @@ -418,7 +402,6 @@ static void max77705_chgin_isr_work(struct work_struct = *work) =20 static void max77705_charger_initialize(struct max77705_charger_data *chg) { - u8 reg_data; struct power_supply_battery_info *info; struct regmap *regmap =3D chg->regmap; =20 @@ -429,45 +412,31 @@ static void max77705_charger_initialize(struct max777= 05_charger_data *chg) =20 /* unlock charger setting protect */ /* slowest LX slope */ - reg_data =3D MAX77705_CHGPROT_MASK | MAX77705_SLOWEST_LX_SLOPE; - regmap_update_bits(regmap, MAX77705_CHG_REG_CNFG_06, reg_data, - reg_data); + regmap_field_write(chg->rfield[MAX77705_CHGPROT], MAX77705_CHGPROT_UNLOCK= ED); + regmap_field_write(chg->rfield[MAX77705_LX_SLOPE], MAX77705_SLOWEST_LX_SL= OPE); =20 /* fast charge timer disable */ /* restart threshold disable */ /* pre-qual charge disable */ - reg_data =3D (MAX77705_FCHGTIME_DISABLE << MAX77705_FCHGTIME_SHIFT) | - (MAX77705_CHG_RSTRT_DISABLE << MAX77705_CHG_RSTRT_SHIFT) | - (MAX77705_CHG_PQEN_DISABLE << MAX77705_PQEN_SHIFT); - regmap_update_bits(regmap, MAX77705_CHG_REG_CNFG_01, - (MAX77705_FCHGTIME_MASK | - MAX77705_CHG_RSTRT_MASK | - MAX77705_PQEN_MASK), - reg_data); - - /* OTG off(UNO on), boost off */ - regmap_update_bits(regmap, MAX77705_CHG_REG_CNFG_00, - MAX77705_OTG_CTRL, 0); + regmap_field_write(chg->rfield[MAX77705_FCHGTIME], MAX77705_FCHGTIME_DISA= BLE); + regmap_field_write(chg->rfield[MAX77705_CHG_RSTRT], MAX77705_CHG_RSTRT_DI= SABLE); + regmap_field_write(chg->rfield[MAX77705_CHG_PQEN], MAX77705_CHG_PQEN_DISA= BLE); + + regmap_field_write(chg->rfield[MAX77705_MODE], + MAX77705_CHG_MASK | MAX77705_BUCK_MASK); =20 /* charge current 450mA(default) */ /* otg current limit 900mA */ - regmap_update_bits(regmap, MAX77705_CHG_REG_CNFG_02, - MAX77705_OTG_ILIM_MASK, - MAX77705_OTG_ILIM_900 << MAX77705_OTG_ILIM_SHIFT); + regmap_field_write(chg->rfield[MAX77705_OTG_ILIM], MAX77705_OTG_ILIM_900); =20 /* BAT to SYS OCP 4.80A */ - regmap_update_bits(regmap, MAX77705_CHG_REG_CNFG_05, - MAX77705_REG_B2SOVRC_MASK, - MAX77705_B2SOVRC_4_8A << MAX77705_REG_B2SOVRC_SHIFT); + regmap_field_write(chg->rfield[MAX77705_REG_B2SOVRC], MAX77705_B2SOVRC_4_= 8A); + /* top off current 150mA */ /* top off timer 30min */ - reg_data =3D (MAX77705_TO_ITH_150MA << MAX77705_TO_ITH_SHIFT) | - (MAX77705_TO_TIME_30M << MAX77705_TO_TIME_SHIFT) | - (MAX77705_SYS_TRACK_DISABLE << MAX77705_SYS_TRACK_DIS_SHIFT); - regmap_update_bits(regmap, MAX77705_CHG_REG_CNFG_03, - (MAX77705_TO_ITH_MASK | - MAX77705_TO_TIME_MASK | - MAX77705_SYS_TRACK_DIS_MASK), reg_data); + regmap_field_write(chg->rfield[MAX77705_TO], MAX77705_TO_ITH_150MA); + regmap_field_write(chg->rfield[MAX77705_TO_TIME], MAX77705_TO_TIME_30M); + regmap_field_write(chg->rfield[MAX77705_SYS_TRACK], MAX77705_SYS_TRACK_DI= SABLE); =20 /* cv voltage 4.2V or 4.35V */ /* MINVSYS 3.6V(default) */ @@ -478,25 +447,21 @@ static void max77705_charger_initialize(struct max777= 05_charger_data *chg) max77705_set_float_voltage(chg, info->voltage_max_design_uv); } =20 - regmap_update_bits(regmap, MAX77705_CHG_REG_CNFG_12, - MAX77705_VCHGIN_REG_MASK, MAX77705_VCHGIN_4_5); - regmap_update_bits(regmap, MAX77705_CHG_REG_CNFG_12, - MAX77705_WCIN_REG_MASK, MAX77705_WCIN_4_5); + regmap_field_write(chg->rfield[MAX77705_VCHGIN], MAX77705_VCHGIN_4_5); + regmap_field_write(chg->rfield[MAX77705_WCIN], MAX77705_WCIN_4_5); =20 /* Watchdog timer */ regmap_update_bits(regmap, MAX77705_CHG_REG_CNFG_00, MAX77705_WDTEN_MASK, 0); =20 /* VBYPSET=3D5.0V */ - regmap_update_bits(regmap, MAX77705_CHG_REG_CNFG_11, MAX77705_VBYPSET_MAS= K, 0); + regmap_field_write(chg->rfield[MAX77705_VBYPSET], 0); =20 /* Switching Frequency : 1.5MHz */ - regmap_update_bits(regmap, MAX77705_CHG_REG_CNFG_08, MAX77705_REG_FSW_MAS= K, - (MAX77705_CHG_FSW_1_5MHz << MAX77705_REG_FSW_SHIFT)); + regmap_field_write(chg->rfield[MAX77705_REG_FSW], MAX77705_CHG_FSW_1_5MHz= ); =20 /* Auto skip mode */ - regmap_update_bits(regmap, MAX77705_CHG_REG_CNFG_12, MAX77705_REG_DISKIP_= MASK, - (MAX77705_AUTO_SKIP << MAX77705_REG_DISKIP_SHIFT)); + regmap_field_write(chg->rfield[MAX77705_REG_DISKIP], MAX77705_AUTO_SKIP); } =20 static int max77705_charger_probe(struct i2c_client *i2c) @@ -520,6 +485,14 @@ static int max77705_charger_probe(struct i2c_client *i= 2c) if (IS_ERR(chg->regmap)) return PTR_ERR(chg->regmap); =20 + for (int i =3D 0; i < MAX77705_N_REGMAP_FIELDS; i++) { + chg->rfield[i] =3D devm_regmap_field_alloc(dev, chg->regmap, + max77705_reg_field[i]); + if (IS_ERR(chg->rfield[i])) + return dev_err_probe(dev, PTR_ERR(chg->rfield[i]), + "cannot allocate regmap field\n"); + } + ret =3D regmap_update_bits(chg->regmap, MAX77705_CHG_REG_INT_MASK, MAX77705_CHGIN_IM, 0); diff --git a/include/linux/power/max77705_charger.h b/include/linux/power/m= ax77705_charger.h index fdec9af9c541..a612795577b6 100644 --- a/include/linux/power/max77705_charger.h +++ b/include/linux/power/max77705_charger.h @@ -9,6 +9,8 @@ #ifndef __MAX77705_CHARGER_H #define __MAX77705_CHARGER_H __FILE__ =20 +#include + /* MAX77705_CHG_REG_CHG_INT */ #define MAX77705_BYP_I BIT(0) #define MAX77705_INP_LIMIT_I BIT(1) @@ -63,7 +65,6 @@ #define MAX77705_BUCK_SHIFT 2 #define MAX77705_BOOST_SHIFT 3 #define MAX77705_WDTEN_SHIFT 4 -#define MAX77705_MODE_MASK GENMASK(3, 0) #define MAX77705_CHG_MASK BIT(MAX77705_CHG_SHIFT) #define MAX77705_UNO_MASK BIT(MAX77705_UNO_SHIFT) #define MAX77705_OTG_MASK BIT(MAX77705_OTG_SHIFT) @@ -74,34 +75,19 @@ #define MAX77705_OTG_CTRL (MAX77705_OTG_MASK | MAX77705_BOOST_MASK) =20 /* MAX77705_CHG_REG_CNFG_01 */ -#define MAX77705_FCHGTIME_SHIFT 0 -#define MAX77705_FCHGTIME_MASK GENMASK(2, 0) -#define MAX77705_CHG_RSTRT_SHIFT 4 -#define MAX77705_CHG_RSTRT_MASK GENMASK(5, 4) #define MAX77705_FCHGTIME_DISABLE 0 #define MAX77705_CHG_RSTRT_DISABLE 0x3 =20 -#define MAX77705_PQEN_SHIFT 7 -#define MAX77705_PQEN_MASK BIT(7) #define MAX77705_CHG_PQEN_DISABLE 0 #define MAX77705_CHG_PQEN_ENABLE 1 =20 /* MAX77705_CHG_REG_CNFG_02 */ -#define MAX77705_OTG_ILIM_SHIFT 6 -#define MAX77705_OTG_ILIM_MASK GENMASK(7, 6) #define MAX77705_OTG_ILIM_500 0 #define MAX77705_OTG_ILIM_900 1 #define MAX77705_OTG_ILIM_1200 2 #define MAX77705_OTG_ILIM_1500 3 -#define MAX77705_CHG_CC GENMASK(5, 0) =20 /* MAX77705_CHG_REG_CNFG_03 */ -#define MAX77705_TO_ITH_SHIFT 0 -#define MAX77705_TO_ITH_MASK GENMASK(2, 0) -#define MAX77705_TO_TIME_SHIFT 3 -#define MAX77705_TO_TIME_MASK GENMASK(5, 3) -#define MAX77705_SYS_TRACK_DIS_SHIFT 7 -#define MAX77705_SYS_TRACK_DIS_MASK BIT(7) #define MAX77705_TO_ITH_150MA 0 #define MAX77705_TO_TIME_30M 3 #define MAX77705_SYS_TRACK_ENABLE 0 @@ -110,15 +96,8 @@ /* MAX77705_CHG_REG_CNFG_04 */ #define MAX77705_CHG_MINVSYS_SHIFT 6 #define MAX77705_CHG_MINVSYS_MASK GENMASK(7, 6) -#define MAX77705_CHG_PRM_SHIFT 0 -#define MAX77705_CHG_PRM_MASK GENMASK(5, 0) - -#define MAX77705_CHG_CV_PRM_SHIFT 0 -#define MAX77705_CHG_CV_PRM_MASK GENMASK(5, 0) =20 /* MAX77705_CHG_REG_CNFG_05 */ -#define MAX77705_REG_B2SOVRC_SHIFT 0 -#define MAX77705_REG_B2SOVRC_MASK GENMASK(3, 0) #define MAX77705_B2SOVRC_DISABLE 0 #define MAX77705_B2SOVRC_4_5A 6 #define MAX77705_B2SOVRC_4_8A 8 @@ -128,9 +107,8 @@ #define MAX77705_WDTCLR_SHIFT 0 #define MAX77705_WDTCLR_MASK GENMASK(1, 0) #define MAX77705_WDTCLR 1 -#define MAX77705_CHGPROT_MASK GENMASK(3, 2) -#define MAX77705_CHGPROT_UNLOCKED GENMASK(3, 2) -#define MAX77705_SLOWEST_LX_SLOPE GENMASK(6, 5) +#define MAX77705_CHGPROT_UNLOCKED 3 +#define MAX77705_SLOWEST_LX_SLOPE 3 =20 /* MAX77705_CHG_REG_CNFG_07 */ #define MAX77705_CHG_FMBST 4 @@ -140,36 +118,14 @@ #define MAX77705_REG_FGSRC_MASK BIT(MAX77705_REG_FGSRC_SHIFT) =20 /* MAX77705_CHG_REG_CNFG_08 */ -#define MAX77705_REG_FSW_SHIFT 0 -#define MAX77705_REG_FSW_MASK GENMASK(1, 0) #define MAX77705_CHG_FSW_3MHz 0 #define MAX77705_CHG_FSW_2MHz 1 #define MAX77705_CHG_FSW_1_5MHz 2 =20 /* MAX77705_CHG_REG_CNFG_09 */ -#define MAX77705_CHG_CHGIN_LIM_MASK GENMASK(6, 0) -#define MAX77705_CHG_EN_MASK BIT(7) #define MAX77705_CHG_DISABLE 0 -#define MAX77705_CHARGER_CHG_CHARGING(_reg) \ - (((_reg) & MAX77705_CHG_EN_MASK) > 1) - - -/* MAX77705_CHG_REG_CNFG_10 */ -#define MAX77705_CHG_WCIN_LIM GENMASK(5, 0) - -/* MAX77705_CHG_REG_CNFG_11 */ -#define MAX77705_VBYPSET_SHIFT 0 -#define MAX77705_VBYPSET_MASK GENMASK(6, 0) =20 /* MAX77705_CHG_REG_CNFG_12 */ -#define MAX77705_CHGINSEL_SHIFT 5 -#define MAX77705_CHGINSEL_MASK BIT(MAX77705_CHGINSEL_SHIFT) -#define MAX77705_WCINSEL_SHIFT 6 -#define MAX77705_WCINSEL_MASK BIT(MAX77705_WCINSEL_SHIFT) -#define MAX77705_VCHGIN_REG_MASK GENMASK(4, 3) -#define MAX77705_WCIN_REG_MASK GENMASK(2, 1) -#define MAX77705_REG_DISKIP_SHIFT 0 -#define MAX77705_REG_DISKIP_MASK BIT(MAX77705_REG_DISKIP_SHIFT) /* REG=3D4.5V, UVLO=3D4.7V */ #define MAX77705_VCHGIN_4_5 0 /* REG=3D4.5V, UVLO=3D4.7V */ @@ -183,9 +139,59 @@ #define MAX77705_CURRENT_CHGIN_MIN 100000 #define MAX77705_CURRENT_CHGIN_MAX 3200000 =20 +enum max77705_field_idx { + MAX77705_CHGPROT, + MAX77705_CHG_EN, + MAX77705_CHG_CC_LIM, + MAX77705_CHG_CHGIN_LIM, + MAX77705_CHG_CV_PRM, + MAX77705_CHG_PQEN, + MAX77705_CHG_RSTRT, + MAX77705_CHG_WCIN, + MAX77705_FCHGTIME, + MAX77705_LX_SLOPE, + MAX77705_MODE, + MAX77705_OTG_ILIM, + MAX77705_REG_B2SOVRC, + MAX77705_REG_DISKIP, + MAX77705_REG_FSW, + MAX77705_SYS_TRACK, + MAX77705_TO, + MAX77705_TO_TIME, + MAX77705_VBYPSET, + MAX77705_VCHGIN, + MAX77705_WCIN, + MAX77705_N_REGMAP_FIELDS, +}; + +static const struct reg_field max77705_reg_field[MAX77705_N_REGMAP_FIELDS]= =3D { + [MAX77705_MODE] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_00, 0, 3), + [MAX77705_FCHGTIME] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_01, 0, 2), + [MAX77705_CHG_RSTRT] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_01, 4, 5), + [MAX77705_CHG_PQEN] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_01, 7, 7), + [MAX77705_CHG_CC_LIM] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_02, 0, 5), + [MAX77705_OTG_ILIM] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_02, 6, 7), + [MAX77705_TO] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_03, 0, 2), + [MAX77705_TO_TIME] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_03, 3, 5), + [MAX77705_SYS_TRACK] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_03, 7, 7), + [MAX77705_CHG_CV_PRM] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_04, 0, 5), + [MAX77705_REG_B2SOVRC] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_05, 0, 3), + [MAX77705_CHGPROT] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_06, 2, 3), + [MAX77705_LX_SLOPE] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_06, 5, 6), + [MAX77705_REG_FSW] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_08, 0, 1), + [MAX77705_CHG_CHGIN_LIM] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_09, 0, 6), + [MAX77705_CHG_EN] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_09, 7, 7), + [MAX77705_CHG_WCIN] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_10, 0, 5), + [MAX77705_VBYPSET] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_11, 0, 6), + [MAX77705_REG_DISKIP] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_12, 0, 0), + [MAX77705_WCIN] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_12, 1, 2), + [MAX77705_VCHGIN] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_12, 3, 4), +}; + struct max77705_charger_data { struct device *dev; struct regmap *regmap; + struct regmap_field *rfield[MAX77705_N_REGMAP_FIELDS]; struct power_supply_battery_info *bat_info; struct workqueue_struct *wqueue; struct work_struct chgin_work; --=20 2.39.5 From nobody Thu Oct 2 22:53:37 2025 Received: from mail-ej1-f54.google.com (mail-ej1-f54.google.com [209.85.218.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9C68A35E4F4; Tue, 9 Sep 2025 18:29:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757442580; cv=none; b=oqZ/IfwvjTJrobotNO3W++gAuQQXfuDlJROjpDO8jZ4O4kHA3K1gt3w7jrUra+4h8zukhsm6ULrbrVyPiSZccxpL8bFAeTkKbyUFkr3Hb9ZzATsDKcoxzTUdODH6unpwjtj6+UHCqp0NRdAY3Ufij/6sJC2LAMf2+1HOagtHSMo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757442580; c=relaxed/simple; bh=bGDCk3kzbdsUZZQhl6KUQ8bvyiKh/w2K/fZ43Aq2I4Q=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=I4Mttck+O9qWKfCdd1YN1VorzIeuyo9+YGbQlxR7Au7vWrIjJeIxw+kN5h67t4EoTn1tMPuopGaMW7WbprnD4Ik/3e/WczqCXx7eTdKbXDbqM2zjVKYOowl5uQqtHGhxgM6BMs6zKk1Nfynu6bCHi8VeZjNpWRCrv8C6SqnyiaE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=OMNCqBUx; arc=none smtp.client-ip=209.85.218.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="OMNCqBUx" Received: by mail-ej1-f54.google.com with SMTP id a640c23a62f3a-b02c719a117so1058845266b.1; Tue, 09 Sep 2025 11:29:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1757442577; x=1758047377; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=75UGwiqWwN4s+IR/YJTkSJX8KNi4Qm/u3Bm/PVxwIIg=; b=OMNCqBUxa8Iz46Hzp1mIL6kMksExEBpY9C4rank2Hrb+Qhgfu7qfQVGZ68+ala4Q9v VHRE0grPR+BXxUZHk4lHDaALVoVgfQ7AeCqQKIQEa6HHHyQzjKiUuwf9oSsA1ltK/tNm pN0iQ53jkk3NgX92bw1M6hJKtervVpk983m8OyvBKL0osKHFefSFs9QZdwlHwvH0zbNc BcLPqaUL2y+3VbLuUvDPVYKALiEj3//Sk/0+S11zpvlBD32sNRe1ilJ4uYy1O1GjMsmL EUpHdPC0FvNI+/IvLUjDlSD50iy+ZxJY1wzNHuDS7OZ56IjYsog/DEiJjQoP3nQLkhlA jRVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757442577; x=1758047377; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=75UGwiqWwN4s+IR/YJTkSJX8KNi4Qm/u3Bm/PVxwIIg=; b=dzdIXYbRVb1VGVrsDF3ByBWnllH1JN5WlmrXBDhwLo5Jb5WIjNUr1upevIYjYfqUDy 2KySNZmd+jNDASicFfo81BEQzITMpZY1iI4CLVc+M0bVMm18oTx621XlsYDK3Ao7yXRz CkpBnlmR4whjhtPBY2zRzi2TNunSvhaAHuDpqKcIn6uErrqrjXqH8wzqRK73HCZIXc2V JxmhFjz5Qg0M6RYbWze4i5iV4ouSFBgvkgGJ27hjVqyI6ScM+jBRVqBk4f+NdejbEaAf RfZb/6OCBpOYFGJhDDB3kDi9n6IPrfdR42Hz7T+YDubmR9CfskCmgldm3JuWff1Zo0Rk /4Vg== X-Forwarded-Encrypted: i=1; AJvYcCUesBm6XtemUogEzkwAVMcBTKqgNZS9j2aQkR8cFdKZZqADbpgOE2Qu6P/ZBmcZrXnzM5EbB9pZJf4=@vger.kernel.org, AJvYcCXApLcJG3l+U1N5X6c6ijxpgVYDZj8VQt7peYnegQmta9RyxQW/YdbjejZ9DYGiB8i8OaSPpTBzEWVSZuQ=@vger.kernel.org X-Gm-Message-State: AOJu0YxI6Us7VBS2zOSOVgNrpKIWBrRGS0h/Ry2/3hkUDTPuYz0cLih+ zGoWU1T0BM33xNrKit22sifLM2O+DFwW35MUpGDrMwu9P7ZVRk4Js+gI X-Gm-Gg: ASbGncsk1EcuMuNpKOYmKOY9TXX538siDmkApTGuwsDBSx5d6ZYu1RZv8PFwNVPU7Ob dpLYK47TTfsZox2TlIkji+gET6mtPudhHgen+7xJRpAkgRkyQ9IZA9m3/yBPPOrLSIVWdz/byS9 kJL+BESzu59HUJAW9zZaW1hZ79ZrOYeIDFR2862JAqvLNbHPp0NPpoLIeGHWnMGl1sY8HWgtPHp hlOzn8QjjHjRgGcST/cC5rqHDajYdYLLpgMv3OZvXh1/53cQho2FZU4ChNSQc3K5hsqXpa3cdYo 7lJ3BIo1G2Xg0BiH9cEQ5tfrH16avnZuWKLa9cob1QgBBcTx7AU8dLr94z8EuOydnEOorzYAupC SKUfCJnMQ3pCPAzzGbdJM X-Google-Smtp-Source: AGHT+IEdHmeSp/6VMMApWO57l8FhzV+WxGnVL1/dpTYl9aD3cquzcIQmXOcll6firvjO4tpMXbtfLQ== X-Received: by 2002:a17:907:6eaa:b0:af9:24e7:1c85 with SMTP id a640c23a62f3a-b04b172fe37mr1262061566b.55.1757442576819; Tue, 09 Sep 2025 11:29:36 -0700 (PDT) Received: from [127.0.1.1] ([46.53.240.27]) by smtp.googlemail.com with ESMTPSA id a640c23a62f3a-b07833ebe61sm30520666b.89.2025.09.09.11.29.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Sep 2025 11:29:36 -0700 (PDT) From: Dzmitry Sankouski Date: Tue, 09 Sep 2025 21:29:14 +0300 Subject: [PATCH v2 4/9] power: supply: max77705_charger: return error when config fails Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250909-max77705_77976_charger_improvement-v2-4-a8d2fba47159@gmail.com> References: <20250909-max77705_77976_charger_improvement-v2-0-a8d2fba47159@gmail.com> In-Reply-To: <20250909-max77705_77976_charger_improvement-v2-0-a8d2fba47159@gmail.com> To: Chanwoo Choi , Krzysztof Kozlowski , Lee Jones , Sebastian Reichel , Luca Ceresoli Cc: Krzysztof Kozlowski , Sebastian Reichel , linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, Dzmitry Sankouski X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1757442571; l=5448; i=dsankouski@gmail.com; s=20240619; h=from:subject:message-id; bh=bGDCk3kzbdsUZZQhl6KUQ8bvyiKh/w2K/fZ43Aq2I4Q=; b=ZPrHCQP3nIttZzTw5ojt/2Gxu/vr/2L2kqqzl5W4Lo5EU7Tp2IsMzhjh1v2tia+X8AmjP3aw8 P6tU56600q2BEWsqNzSYSftKE3mhZrBWe7WCBPNtfjS8SHiR28UkOQH X-Developer-Key: i=dsankouski@gmail.com; a=ed25519; pk=YJcXFcN1EWrzBYuiE2yi5Mn6WLn6L1H71J+f7X8fMag= Handle error, returned from register writes in init function. Signed-off-by: Dzmitry Sankouski --- drivers/power/supply/max77705_charger.c | 90 +++++++++++++++++++++++++----= ---- 1 file changed, 70 insertions(+), 20 deletions(-) diff --git a/drivers/power/supply/max77705_charger.c b/drivers/power/supply= /max77705_charger.c index 2d2201a6ba68..93d055458849 100644 --- a/drivers/power/supply/max77705_charger.c +++ b/drivers/power/supply/max77705_charger.c @@ -400,43 +400,72 @@ static void max77705_chgin_isr_work(struct work_struc= t *work) power_supply_changed(chg->psy_chg); } =20 -static void max77705_charger_initialize(struct max77705_charger_data *chg) +static int max77705_charger_initialize(struct max77705_charger_data *chg) { struct power_supply_battery_info *info; struct regmap *regmap =3D chg->regmap; + int err; =20 - if (power_supply_get_battery_info(chg->psy_chg, &info) < 0) - return; + err =3D power_supply_get_battery_info(chg->psy_chg, &info); + if (err) + return dev_err_probe(chg->dev, err, "error on getting battery info"); =20 chg->bat_info =3D info; =20 /* unlock charger setting protect */ /* slowest LX slope */ - regmap_field_write(chg->rfield[MAX77705_CHGPROT], MAX77705_CHGPROT_UNLOCK= ED); - regmap_field_write(chg->rfield[MAX77705_LX_SLOPE], MAX77705_SLOWEST_LX_SL= OPE); + err =3D regmap_field_write(chg->rfield[MAX77705_CHGPROT], MAX77705_CHGPRO= T_UNLOCKED); + if (err) + goto err; + + err =3D regmap_field_write(chg->rfield[MAX77705_LX_SLOPE], MAX77705_SLOWE= ST_LX_SLOPE); + if (err) + goto err; =20 /* fast charge timer disable */ /* restart threshold disable */ /* pre-qual charge disable */ - regmap_field_write(chg->rfield[MAX77705_FCHGTIME], MAX77705_FCHGTIME_DISA= BLE); - regmap_field_write(chg->rfield[MAX77705_CHG_RSTRT], MAX77705_CHG_RSTRT_DI= SABLE); - regmap_field_write(chg->rfield[MAX77705_CHG_PQEN], MAX77705_CHG_PQEN_DISA= BLE); + err =3D regmap_field_write(chg->rfield[MAX77705_FCHGTIME], MAX77705_FCHGT= IME_DISABLE); + if (err) + goto err; + + err =3D regmap_field_write(chg->rfield[MAX77705_CHG_RSTRT], MAX77705_CHG_= RSTRT_DISABLE); + if (err) + goto err; =20 - regmap_field_write(chg->rfield[MAX77705_MODE], + err =3D regmap_field_write(chg->rfield[MAX77705_CHG_PQEN], MAX77705_CHG_P= QEN_DISABLE); + if (err) + goto err; + + err =3D regmap_field_write(chg->rfield[MAX77705_MODE], MAX77705_CHG_MASK | MAX77705_BUCK_MASK); + if (err) + goto err; =20 /* charge current 450mA(default) */ /* otg current limit 900mA */ - regmap_field_write(chg->rfield[MAX77705_OTG_ILIM], MAX77705_OTG_ILIM_900); + err =3D regmap_field_write(chg->rfield[MAX77705_OTG_ILIM], MAX77705_OTG_I= LIM_900); + if (err) + goto err; =20 /* BAT to SYS OCP 4.80A */ - regmap_field_write(chg->rfield[MAX77705_REG_B2SOVRC], MAX77705_B2SOVRC_4_= 8A); + err =3D regmap_field_write(chg->rfield[MAX77705_REG_B2SOVRC], MAX77705_B2= SOVRC_4_8A); + if (err) + goto err; =20 /* top off current 150mA */ /* top off timer 30min */ - regmap_field_write(chg->rfield[MAX77705_TO], MAX77705_TO_ITH_150MA); - regmap_field_write(chg->rfield[MAX77705_TO_TIME], MAX77705_TO_TIME_30M); - regmap_field_write(chg->rfield[MAX77705_SYS_TRACK], MAX77705_SYS_TRACK_DI= SABLE); + err =3D regmap_field_write(chg->rfield[MAX77705_TO], MAX77705_TO_ITH_150M= A); + if (err) + goto err; + + err =3D regmap_field_write(chg->rfield[MAX77705_TO_TIME], MAX77705_TO_TIM= E_30M); + if (err) + goto err; + + err =3D regmap_field_write(chg->rfield[MAX77705_SYS_TRACK], MAX77705_SYS_= TRACK_DISABLE); + if (err) + goto err; =20 /* cv voltage 4.2V or 4.35V */ /* MINVSYS 3.6V(default) */ @@ -447,21 +476,38 @@ static void max77705_charger_initialize(struct max777= 05_charger_data *chg) max77705_set_float_voltage(chg, info->voltage_max_design_uv); } =20 - regmap_field_write(chg->rfield[MAX77705_VCHGIN], MAX77705_VCHGIN_4_5); - regmap_field_write(chg->rfield[MAX77705_WCIN], MAX77705_WCIN_4_5); + err =3D regmap_field_write(chg->rfield[MAX77705_VCHGIN], MAX77705_VCHGIN_= 4_5); + if (err) + goto err; + + err =3D regmap_field_write(chg->rfield[MAX77705_WCIN], MAX77705_WCIN_4_5); + if (err) + goto err; =20 /* Watchdog timer */ regmap_update_bits(regmap, MAX77705_CHG_REG_CNFG_00, MAX77705_WDTEN_MASK, 0); =20 /* VBYPSET=3D5.0V */ - regmap_field_write(chg->rfield[MAX77705_VBYPSET], 0); + err =3D regmap_field_write(chg->rfield[MAX77705_VBYPSET], 0); + if (err) + goto err; =20 /* Switching Frequency : 1.5MHz */ - regmap_field_write(chg->rfield[MAX77705_REG_FSW], MAX77705_CHG_FSW_1_5MHz= ); + err =3D regmap_field_write(chg->rfield[MAX77705_REG_FSW], MAX77705_CHG_FS= W_1_5MHz); + if (err) + goto err; =20 /* Auto skip mode */ - regmap_field_write(chg->rfield[MAX77705_REG_DISKIP], MAX77705_AUTO_SKIP); + err =3D regmap_field_write(chg->rfield[MAX77705_REG_DISKIP], MAX77705_AUT= O_SKIP); + if (err) + goto err; + + return 0; + +err: + return dev_err_probe(chg->dev, err, "error while configuring"); + } =20 static int max77705_charger_probe(struct i2c_client *i2c) @@ -524,7 +570,11 @@ static int max77705_charger_probe(struct i2c_client *i= 2c) goto destroy_wq; } =20 - max77705_charger_initialize(chg); + ret =3D max77705_charger_initialize(chg); + if (ret) { + dev_err_probe(dev, ret, "failed to initialize charger IC\n"); + goto destroy_wq; + } =20 ret =3D max77705_charger_enable(chg); if (ret) { --=20 2.39.5 From nobody Thu Oct 2 22:53:37 2025 Received: from mail-ed1-f42.google.com (mail-ed1-f42.google.com [209.85.208.42]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C103C35FC1F; Tue, 9 Sep 2025 18:29:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757442581; cv=none; b=l0YoNzJwR3JfPraI1862Y8kIcPq0m/zbrNSursRrEtYtabcBMuL8ManEMy9/V6I6TnlSzpgzE8ozjnEtWoLQ/24hKHIAqMNPJsjzmIPul3+29RGRohUCqDUFgs0/d/aenz528eAh+N7MXnyAwf8d1ENo3dZVUMXyx4TDSGJcrAo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757442581; c=relaxed/simple; bh=voRlcLKfoLfnlVLyVO+ZDmBOdNNCSLvdkGqha5/sHqA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=VcveT4kRyTYlXMKLJ5Voj3MjF94bND3weoKKBzRYYglUuzo9ZmBVgM5CsxRZTq1+dfmWE7CJD8alMfQkfgx+Fg9vGMI0cTMgSbga92KOsVmz3UOfHtEst8rtS6qtFDTl4DHDpkVoJAFeg421qg4w5vrB7UBU09X2WNplnmJqdZg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=awNKGOSs; arc=none smtp.client-ip=209.85.208.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="awNKGOSs" Received: by mail-ed1-f42.google.com with SMTP id 4fb4d7f45d1cf-625e1ef08eeso6595826a12.1; Tue, 09 Sep 2025 11:29:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1757442578; x=1758047378; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=RUBWcTiGE2fz4jspmliN1on/EZodfLpmty6A15u2Kyw=; b=awNKGOSsRe1FoIG2dkGB2i32w4cf9ekOtO4LvHxkbnKFzDXorFoTyno0+VXo0ufd8q DkcaCrWLGDEOArMf9p9PdrsXSdV20uLymVS/nXsmwH8wudw/9hFHNLvzbx4H5n71CbNN Y0ZDatn3toBOL8zwakJUJJctYyypCY7J5zfwJHTJnsPJCf/nJfooobaaLT1YTRsPUHbL eaRnOr//6A6zxA/fVAje4rdS1CDRn7CeOFPp3BQj+G+gKERlC6Lb/EmbQsFzw0C5wqBX Df1aEXtQops5E4IRaxgcvbvvLhHRkiXrkwDrEGEy/wWiAWGwMgs58onPu8bfvqO/nPal 3Bjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757442578; x=1758047378; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=RUBWcTiGE2fz4jspmliN1on/EZodfLpmty6A15u2Kyw=; b=FMeUXfL/VigGyvfGChcDgBZH/gp3OqIUgY04I0DwymOpgCqgxxLTMTCS3M3HM/WeEL vq25ZM9Ytj//GrqxfAlCFYk7TowUUlTbdIsaqfqKUVxDhJSuDhtVKeK9LyQ/aROQYYJ2 77kkzHqx9v7ta+ee/yQyXpzEVcoMedFofEfxSPzfbbB/H7FzJqGGMFyv/DXPg39SPOnk KnwNDnGwffgJCfSRLxh4rr5t/T3eyWrvkfn55d5gSdE2BufNmRXWD8ZLfFWPLs0SZNMu bs68K8pVftgp6UbUiqpOuPMENjXQfpv33dXT85wV064AfKsmQ4/QfxmfohzVCrgjNrkF tQYg== X-Forwarded-Encrypted: i=1; AJvYcCUT8T8LzmaTqupu3sqNTDdILGgELGynvIrTkh8kXqBFmpdLPugz+KEP0mqvT9tlzxWkrCkd2y/aKnMYZns=@vger.kernel.org, AJvYcCW9Wv6alpgyDY4ewvKrJe3vvaTv9Khr8WUEk8ERr9rUPQOfrdjxjGAP2v4xLkttHtf9NgwwUB8pjCY=@vger.kernel.org X-Gm-Message-State: AOJu0YwnuOuJhrbsivJ/LjyNSwKuaGEd3/oteXRRikz1nSNLw9zr25PR c+tlf/Hd2ur270RUgG5wnN0cmqdLoez/39NkW2JCCt+oPPfkcp3RVrjA X-Gm-Gg: ASbGncvHQB/fcl/tn35dDdtDXOnScoBGX3U/de+yyVcjVQruWa5ncM3rZRK9QzksNrk P2k71aPO5fuiOD7Nr1AYB9ZpDSRCyUsGBqaSRQQ+Lql8TnAvbwqMzQFcxPg1bp6/qAI51WGJVzW s+tEdMdG1DNwGiFJhnu76ZVmHDNEaHxzDn7T8P9kYxvX4cLPW+6dts28OGpjmv3QPtqFndKzB/3 H+OTZS8VJ2CbV34TF7kBLH/wH9RUUC4zzL885MouWo+VvlAGn8lwT243cYAwrtSo0dvWA1BA1R+ MY6pa4kLZMX2Qy2UBMJyrokqPsQ8oTi9pNSJlE+3wO5dibqk1i/Rdf0XtSxImflHialGlVZCcid OjCkYmmyUHE+pbcpsplrXxjRSCT4S3mw= X-Google-Smtp-Source: AGHT+IGo/fVlDxx0iEjAiRxVdtiG0SnOp5LBdVELsWq+uS8dF6Zkyf3XgDEiU85/yBjMYrGxb4hsIw== X-Received: by 2002:a17:906:4788:b0:b04:286a:2fb8 with SMTP id a640c23a62f3a-b04b1764361mr1194415866b.56.1757442577887; Tue, 09 Sep 2025 11:29:37 -0700 (PDT) Received: from [127.0.1.1] ([46.53.240.27]) by smtp.googlemail.com with ESMTPSA id a640c23a62f3a-b07833ebe61sm30520666b.89.2025.09.09.11.29.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Sep 2025 11:29:37 -0700 (PDT) From: Dzmitry Sankouski Date: Tue, 09 Sep 2025 21:29:15 +0300 Subject: [PATCH v2 5/9] power: supply: max77705_charger: add writable properties Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250909-max77705_77976_charger_improvement-v2-5-a8d2fba47159@gmail.com> References: <20250909-max77705_77976_charger_improvement-v2-0-a8d2fba47159@gmail.com> In-Reply-To: <20250909-max77705_77976_charger_improvement-v2-0-a8d2fba47159@gmail.com> To: Chanwoo Choi , Krzysztof Kozlowski , Lee Jones , Sebastian Reichel , Luca Ceresoli Cc: Krzysztof Kozlowski , Sebastian Reichel , linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, Dzmitry Sankouski X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1757442571; l=2821; i=dsankouski@gmail.com; s=20240619; h=from:subject:message-id; bh=voRlcLKfoLfnlVLyVO+ZDmBOdNNCSLvdkGqha5/sHqA=; b=KRZ7lLKiPymYMTT0VDoUzLme/2qaBON8OoAY12WwYPYekG2N/Cxb6I11J4m/QzntErQqfrAj3 Wj0j8/WjaR5BsY6d3JKhsYC8SQurz22S/Gz/0RwW1uAdEZo53RQ1CYL X-Developer-Key: i=dsankouski@gmail.com; a=ed25519; pk=YJcXFcN1EWrzBYuiE2yi5Mn6WLn6L1H71J+f7X8fMag= Add INPUT_CURRENT_LIMIT, CONSTANT_CHARGE_CURRENT properties as writeable to be able to control input power consumption and charging speed. Signed-off-by: Dzmitry Sankouski --- drivers/power/supply/max77705_charger.c | 54 +++++++++++++++++++++++++++++= ++++ 1 file changed, 54 insertions(+) diff --git a/drivers/power/supply/max77705_charger.c b/drivers/power/supply= /max77705_charger.c index 93d055458849..d6a3cd98c898 100644 --- a/drivers/power/supply/max77705_charger.c +++ b/drivers/power/supply/max77705_charger.c @@ -105,6 +105,17 @@ static int max77705_get_online(struct regmap *regmap, = int *val) return 0; } =20 +static int max77705_set_integer(struct max77705_charger_data *chg, enum ma= x77705_field_idx fidx, + unsigned int clamp_min, unsigned int clamp_max, + unsigned int div, int val) +{ + unsigned int regval; + + regval =3D clamp_val(val, clamp_min, clamp_max) / div; + + return regmap_field_write(chg->rfield[fidx], regval); +} + static int max77705_check_battery(struct max77705_charger_data *chg, int *= val) { unsigned int reg_data; @@ -384,12 +395,55 @@ static int max77705_chg_get_property(struct power_sup= ply *psy, return 0; } =20 +static int max77705_set_property(struct power_supply *psy, + enum power_supply_property psp, + const union power_supply_propval *val) +{ + struct max77705_charger_data *charger =3D power_supply_get_drvdata(psy); + int err =3D 0; + + switch (psp) { + case POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT: + err =3D max77705_set_integer(charger, MAX77705_CHG_CC_LIM, + MAX77705_CURRENT_CHGIN_MIN, + MAX77705_CURRENT_CHGIN_MAX, + MAX77705_CURRENT_CHG_STEP, + val->intval); + break; + case POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT: + err =3D max77705_set_integer(charger, MAX77705_CHG_CHGIN_LIM, + MAX77705_CURRENT_CHGIN_MIN, + MAX77705_CURRENT_CHGIN_MAX, + MAX77705_CURRENT_CHGIN_STEP, + val->intval); + break; + default: + err =3D -EINVAL; + } + + return err; +}; + +static int max77705_property_is_writeable(struct power_supply *psy, + enum power_supply_property psp) +{ + switch (psp) { + case POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT: + case POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT: + return true; + default: + return false; + } +} + static const struct power_supply_desc max77705_charger_psy_desc =3D { .name =3D "max77705-charger", .type =3D POWER_SUPPLY_TYPE_USB, .properties =3D max77705_charger_props, + .property_is_writeable =3D max77705_property_is_writeable, .num_properties =3D ARRAY_SIZE(max77705_charger_props), .get_property =3D max77705_chg_get_property, + .set_property =3D max77705_set_property, }; =20 static void max77705_chgin_isr_work(struct work_struct *work) --=20 2.39.5 From nobody Thu Oct 2 22:53:37 2025 Received: from mail-ej1-f53.google.com (mail-ej1-f53.google.com [209.85.218.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AC50C2FB606; Tue, 9 Sep 2025 18:29:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757442582; cv=none; b=NN17xccVEODDHCw8UUNcMUyauEiZzywX8BCzB37T8vId1GQqFkW98JnkGdTI1tVu3B+gk3fPU42pZY+cfQCJjfNw40Vgtd6vjc2AvDVsli/PxaLhtj05mWo1ivSMPqA7lYgFwXw5qIP1M1LMwCe26t67fa6KFdd4keqeQpXQ84I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757442582; c=relaxed/simple; bh=AOZdHI28joffYImWPpnLzx5R7A6JCfptSZlkeOeIOYw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QmAqOCWWOU/NluKu7ikAzZs5fVKyJZO65fT+NTQ/tzrSTTtgvxu27Jl0/IJB2osoKLCUhQqEHnmDFGqcxBJNVEXkjC8YagcN8daQdUdHKXaif+TDNTw0zaVd3WsgfNnwgvZAjShDcnuvAFWadQYPGUMMTRJZ9fJeBYkg7kQZD9w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=HBoghBsw; arc=none smtp.client-ip=209.85.218.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="HBoghBsw" Received: by mail-ej1-f53.google.com with SMTP id a640c23a62f3a-b00a9989633so249548166b.0; Tue, 09 Sep 2025 11:29:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1757442579; x=1758047379; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=FzUQISPfSnlkW3kJz7YjgfNYemqJ20idPrIcwsmfNes=; b=HBoghBswzGd63tfRxmvQBEZKGcE35ysuDjmFadp0YistDkMFZ5XRgaGBDg6mRdx3gw xCGOP73Az2Ssslx2hS4aNh4qA9eTZI242gsHUALCZfgAywar1CVDKKMuzYBT3AklMUeq vmJKmlFOP2OKGwzkXS1OGH1R6LXR1sYd6fmvqjEW43WuKGI2+TN57qgpyLYWXyfZxtp2 qsd58o89LJcVUuXoXgUEkIefX0ggiAm+3tZGgRnuIbj0nM2OCGm6Yu8bxJ6ObwX/4Ogc zjHsJgcISIC7pbfDkZXRNM35NzchEahfENxeESsfQ7GKo4a6R7vn7PaYt4zcN7F7n3Zi 8cQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757442579; x=1758047379; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=FzUQISPfSnlkW3kJz7YjgfNYemqJ20idPrIcwsmfNes=; b=IizSVCen6pZ2qAt60P0rOm5bhmU91iZ/TCBpSajp/r6lJFxrueIVy00A7G4cJo6wLG 016m08J/F/0YcEkcnMJzLDJfU60dM1oTtLfV+5AIY40kdSeFdAdzybCzyjMzeX2PQvM9 qRTc1JjBFfBkbLWbeT1bENmpDaoCV/7yX+OnplFAsmbUwiOQsx2DlbC6FfSVdNaZb+ak gBOdb2Vylo5Ehi9SEaypKKjjHYDAlxPBkt0Xe2kvJwqLDydixHumq02HTTLeAKsXLIna rcyrIElR1jzoHfxaZyf+TdYaqdORvRBUouQLlmwCXViL3QhX1+fQxInOKoPCQ3qbIvxh M1sg== X-Forwarded-Encrypted: i=1; AJvYcCUnv+mmRKIbAItFcEZdAQKUHakztGHV0mum0c++dGNxuLr8odQv5h0doiIYDtAM5bdxs6NjYjzopvWEw3o=@vger.kernel.org, AJvYcCXtPqPK722yv8Zn3D5/ymckwAQzC2Db9k2sM5skFU1T61j21zahKQabdXfLPPW027lkzLP/i5KZIJs=@vger.kernel.org X-Gm-Message-State: AOJu0Yy6R7qRVy5SUHen+ZN1BkH3nlZul7NzJrTbAj1Uxe3L6BaBfyqg P0eMLoXsHo6kCep8AqKohA2eeCi+rAXpGyJ+twUi67OwQTWk1iicweae X-Gm-Gg: ASbGncv+QFoy2R95F0jz8uVxEcld2yjI/3Es9friiR5o3qUOMUgSySm7Ro9xdSvG376 7pvG6jk4Ohh3YYaYpJmQoZet9fzCaMmF5dUZwNSdlN3q2g38n+bCXBCcEJwkIDvzKBqq4G+mhiN egJbLcbvXdGUFqxraDnnIOcLLFFjQ1eARSgNU9najCH/Tg4tzjzv9xLN/sfF8IS8/EJ5LyWpNCK VXIfFHzd7KDBJxhEj/y0X8IC1zJklcHqORHwaOHnLkn4Nca5dvSW+Y658PyktiJZMCm/vj0pUOY C5PPYguM+sjScFCkYPfEvZZoey4lbMOqc23/bvxbG75jiiEC+zCcf0D0kfFyKH7iw6hkYFZTrjA pDGIJwnWaU+Q+CsacfPCO5sbcQiujYYk= X-Google-Smtp-Source: AGHT+IHQtkSFgpYIb6iSuxElFUCAOmSnPT66isQRP6YYymUqLVyiijDHJ/yH5TUXJNCdRGysLT9gkg== X-Received: by 2002:a17:907:1c26:b0:b04:23e0:5c2b with SMTP id a640c23a62f3a-b0492e105e9mr1812319466b.0.1757442578918; Tue, 09 Sep 2025 11:29:38 -0700 (PDT) Received: from [127.0.1.1] ([46.53.240.27]) by smtp.googlemail.com with ESMTPSA id a640c23a62f3a-b07833ebe61sm30520666b.89.2025.09.09.11.29.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Sep 2025 11:29:38 -0700 (PDT) From: Dzmitry Sankouski Date: Tue, 09 Sep 2025 21:29:16 +0300 Subject: [PATCH v2 6/9] power: supply: max77705_charger: rework interrupts Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250909-max77705_77976_charger_improvement-v2-6-a8d2fba47159@gmail.com> References: <20250909-max77705_77976_charger_improvement-v2-0-a8d2fba47159@gmail.com> In-Reply-To: <20250909-max77705_77976_charger_improvement-v2-0-a8d2fba47159@gmail.com> To: Chanwoo Choi , Krzysztof Kozlowski , Lee Jones , Sebastian Reichel , Luca Ceresoli Cc: Krzysztof Kozlowski , Sebastian Reichel , linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, Dzmitry Sankouski X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1757442571; l=2452; i=dsankouski@gmail.com; s=20240619; h=from:subject:message-id; bh=AOZdHI28joffYImWPpnLzx5R7A6JCfptSZlkeOeIOYw=; b=DWmY9B7YzsPwPPQ/M7aqpAbYkjkWy5uklAWkZ+VBulSv+3ZTrTYzn9Tg/8o8S2srYf/nQLxAt v5DQaeMng69AU/n9HBZqbOmoxGIuYz0ywXdUAuY73Nt/8tkTbkO7rTN X-Developer-Key: i=dsankouski@gmail.com; a=ed25519; pk=YJcXFcN1EWrzBYuiE2yi5Mn6WLn6L1H71J+f7X8fMag= Current implementation uses handle_post_irq to actually handle chgin irq. This is not how things are meant to work in regmap-irq. Remove handle_post_irq, and request a threaded interrupt for chgin. Fixes: a6a494c8e3ce ("power: supply: max77705: Add charger driver for Maxim= 77705") Signed-off-by: Dzmitry Sankouski --- drivers/power/supply/max77705_charger.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/drivers/power/supply/max77705_charger.c b/drivers/power/supply= /max77705_charger.c index d6a3cd98c898..4e5219ffa87c 100644 --- a/drivers/power/supply/max77705_charger.c +++ b/drivers/power/supply/max77705_charger.c @@ -40,13 +40,13 @@ static enum power_supply_property max77705_charger_prop= s[] =3D { POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT, }; =20 -static int max77705_chgin_irq(void *irq_drv_data) +static irqreturn_t max77705_chgin_irq(int irq, void *irq_drv_data) { struct max77705_charger_data *chg =3D irq_drv_data; =20 queue_work(chg->wqueue, &chg->chgin_work); =20 - return 0; + return IRQ_HANDLED; } =20 static const struct regmap_irq max77705_charger_irqs[] =3D { @@ -64,7 +64,6 @@ static struct regmap_irq_chip max77705_charger_irq_chip = =3D { .name =3D "max77705-charger", .status_base =3D MAX77705_CHG_REG_INT, .mask_base =3D MAX77705_CHG_REG_INT_MASK, - .handle_post_irq =3D max77705_chgin_irq, .num_regs =3D 1, .irqs =3D max77705_charger_irqs, .num_irqs =3D ARRAY_SIZE(max77705_charger_irqs), @@ -593,12 +592,6 @@ static int max77705_charger_probe(struct i2c_client *i= 2c) "cannot allocate regmap field\n"); } =20 - ret =3D regmap_update_bits(chg->regmap, - MAX77705_CHG_REG_INT_MASK, - MAX77705_CHGIN_IM, 0); - if (ret) - return ret; - pscfg.fwnode =3D dev_fwnode(dev); pscfg.drv_data =3D chg; =20 @@ -614,6 +607,15 @@ static int max77705_charger_probe(struct i2c_client *i= 2c) if (ret) return dev_err_probe(dev, ret, "failed to add irq chip\n"); =20 + ret =3D devm_request_threaded_irq(dev, regmap_irq_get_virq(irq_data, MAX7= 7705_CHGIN_I), + NULL, max77705_chgin_irq, + IRQF_TRIGGER_HIGH, + "chgin-irq", chg); + if (ret) { + pr_err("%s: Failed to Request IRQ (%d)\n", __func__, ret); + return ret; + } + chg->wqueue =3D create_singlethread_workqueue(dev_name(dev)); if (!chg->wqueue) return dev_err_probe(dev, -ENOMEM, "failed to create workqueue\n"); --=20 2.39.5 From nobody Thu Oct 2 22:53:37 2025 Received: from mail-ej1-f53.google.com (mail-ej1-f53.google.com [209.85.218.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B3EB1362092; Tue, 9 Sep 2025 18:29:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757442583; cv=none; b=GtAXDIfLR1FTKYyfwS835fTeMmaKPMO3e1SU9qk/hKtpd4xf3oDUAAeJoBoEVkhaQtYJAvxGKjL5BAh2dJPdqPh6LvTMGBTkmnsQr1cHtAQCndKcfq+OEEpuz7ufOQzzfRfbsCuXKopYlXN2Gx5reFsmAEG8sdXIttbpvy6hvos= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757442583; c=relaxed/simple; bh=uhZjx01PPl+bdqGcbmMs8H3FSpiWecI/idkaYe7I1qs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dxNdCqvdXMuWuITJXwxssydVk6f9Z4/2JoDKIB/PhozqSvkh6cHwfhm1wfpXRkhcclfRzUO8hOt3HGnrYgxQp/qiLJnS5aBXA9Iqfm/5xFxytMb/0ovls4xgNGDE4tDxuH4UhiE4lXf7K+X3RSUs254kShrI7hZyipLHzy3W6+8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Uuu2SGqx; arc=none smtp.client-ip=209.85.218.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Uuu2SGqx" Received: by mail-ej1-f53.google.com with SMTP id a640c23a62f3a-afcb7ace3baso1028211366b.3; Tue, 09 Sep 2025 11:29:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1757442580; x=1758047380; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=2IsTNlsBIxhidJqanKk05pz8jsYCjvOdpYNz8PoVsZM=; b=Uuu2SGqx1rLjDnTaWQjDM6AxaB+9cwdQG1GsUV5WS9adjdqe4/sxgOT0sv3L+ubDya BigfREgg08DPW1FO+7a8pJaxKlCBlaXCCrDKMg0/cW/lN00BxTrNwpm1t64I7iOdbe0G H332BbSgpRHL9WC8vhKb6mXF/qr8+mHbTIqdCCFhgR+6569JDV8TUgYw7dmFOKoaiPDp mGK6hEXgr/vj3L/EYE3dzrX70YByJcvssOTCC1gXd/kjnzfXpoBN91hbjna9mkHccaNJ EWHET1Q40Fu12HQBKIdORXVFw7EGppMyvmhRnBpFxG6OFOAC7OBCxSQLENoM+5ZRnEkA 5+Bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757442580; x=1758047380; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=2IsTNlsBIxhidJqanKk05pz8jsYCjvOdpYNz8PoVsZM=; b=GxjnS699au0NPbumIzPoC3s8Kk/dUI3ji0jpAbSAx33qrrwTP3xGTNeihPEklru85V dnhFR6taGGoMGD/iI+2814sFtTGGj1CQEbeur+wwLW3TxfeSDD1NaVbGUxALGczmdj4Y m7AD1pm70ybtFw8BC0Cql2T773taWriCDOkxmlOhawqxIXv/YzpIJ2SBetdJKM9sAdp8 IvvI/nIDvj4lOlzwDyBiIsS93phcQOogJ8AitNyJrMW/MkL7BbTAu0MoJIjU7qlX0gPv QkYrfbLKLsGZZHECvHo616fwNNLk0zmi5R3VdmXVoQbLmpSoK/9t8UhraS8iQvRwLAJi j7KA== X-Forwarded-Encrypted: i=1; AJvYcCU/kb6B7k75tYHHBLcITHSsNe3xBUFaC1+SKCq/EPGhgctwQtUM/vMg5J1ZnynzlUwfPEVWTHs3HXjK99k=@vger.kernel.org, AJvYcCVxbPvVpJ5+9vmtzR7kjfHLIDQEQvrp0cOOcXwNZ+49D8OiNUzVYEtpy/L2InGONv4u/ZWiX9HabNM=@vger.kernel.org X-Gm-Message-State: AOJu0Yzum44tiMrtgFv6MIHFvwGL36TpBery2XUYOKGfIKnkl1SdPe09 VTxjX58WgeDl/KDRRPnalp+AJ7O69EgZHIHS5LvH2iCSY3ZGMMvpyeJq X-Gm-Gg: ASbGnctVYryHGQGKRpsRvpFdxYQxfZyV5XZZQHrUih0I1mXYvwdLS1A1DsOfbiA21eI MddXRzubMWhEhPOoC8UrbhPp7h6dgdZZj0KMld+Mv7mydtkVtWFawqhNUfbxoNMU9KxKnQNfVjT FnRhhMzAoseS+AZFXorLKGZkBY85Z7AlQHMgQ+jNoZkercUYYaCD6QVglx69rJj/7f9G/oDSlLS 2de7jQ8LlcbPOZ+zMl0IIkhA02L8YTOxg6iQhLxuhFm+h2IrSBD4iWfDYEb3Q8/x1vS1IJJ4jJJ +fli/k/eIW5pp/h7e43IFu4N6opWX6QAAdAeabf+fgez3Da7IEnJM5z31cdSG/hnnsTfv6TMa4i 0iInVjLX+vWtt+QcrbU0A66v4KOpprBI= X-Google-Smtp-Source: AGHT+IFia/+L+AKZwrcIvhRq30VpvOWSDjlumDVs/H+Q0xYQT8wJDO27ftWn5N5g6hz7Ba0S7jG4GQ== X-Received: by 2002:a17:906:6a04:b0:b04:6264:cf7c with SMTP id a640c23a62f3a-b04b16dd3bfmr1264169766b.44.1757442579952; Tue, 09 Sep 2025 11:29:39 -0700 (PDT) Received: from [127.0.1.1] ([46.53.240.27]) by smtp.googlemail.com with ESMTPSA id a640c23a62f3a-b07833ebe61sm30520666b.89.2025.09.09.11.29.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Sep 2025 11:29:39 -0700 (PDT) From: Dzmitry Sankouski Date: Tue, 09 Sep 2025 21:29:17 +0300 Subject: [PATCH v2 7/9] power: supply: max77705_charger: use REGMAP_IRQ_REG_LINE macro Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250909-max77705_77976_charger_improvement-v2-7-a8d2fba47159@gmail.com> References: <20250909-max77705_77976_charger_improvement-v2-0-a8d2fba47159@gmail.com> In-Reply-To: <20250909-max77705_77976_charger_improvement-v2-0-a8d2fba47159@gmail.com> To: Chanwoo Choi , Krzysztof Kozlowski , Lee Jones , Sebastian Reichel , Luca Ceresoli Cc: Krzysztof Kozlowski , Sebastian Reichel , linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, Dzmitry Sankouski X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1757442571; l=3504; i=dsankouski@gmail.com; s=20240619; h=from:subject:message-id; bh=uhZjx01PPl+bdqGcbmMs8H3FSpiWecI/idkaYe7I1qs=; b=adV1fAd6FxfmwMfbXsdnvPG+K1Tin48Db9L+DseKUMzhVHdU60KOoZ40778JWvDA0jkYTXsPy 1+7OMN9WwGoBqtjFXk0quLk5T3AY7N0gPAWEZHeq1vwBs5UVu6/PNUD X-Developer-Key: i=dsankouski@gmail.com; a=ed25519; pk=YJcXFcN1EWrzBYuiE2yi5Mn6WLn6L1H71J+f7X8fMag= Refactor regmap_irq declarations with REGMAP_IRQ_REG_LINE saves a few lines on definitions. Signed-off-by: Dzmitry Sankouski --- drivers/power/supply/max77705_charger.c | 16 ++++++------- include/linux/power/max77705_charger.h | 42 +++++++++++++----------------= ---- 2 files changed, 24 insertions(+), 34 deletions(-) diff --git a/drivers/power/supply/max77705_charger.c b/drivers/power/supply= /max77705_charger.c index 4e5219ffa87c..f381ece5502b 100644 --- a/drivers/power/supply/max77705_charger.c +++ b/drivers/power/supply/max77705_charger.c @@ -50,14 +50,14 @@ static irqreturn_t max77705_chgin_irq(int irq, void *ir= q_drv_data) } =20 static const struct regmap_irq max77705_charger_irqs[] =3D { - { .mask =3D MAX77705_BYP_IM, }, - { .mask =3D MAX77705_INP_LIMIT_IM, }, - { .mask =3D MAX77705_BATP_IM, }, - { .mask =3D MAX77705_BAT_IM, }, - { .mask =3D MAX77705_CHG_IM, }, - { .mask =3D MAX77705_WCIN_IM, }, - { .mask =3D MAX77705_CHGIN_IM, }, - { .mask =3D MAX77705_AICL_IM, }, + REGMAP_IRQ_REG_LINE(MAX77705_BYP_I, BITS_PER_BYTE), + REGMAP_IRQ_REG_LINE(MAX77705_INP_LIMIT_I, BITS_PER_BYTE), + REGMAP_IRQ_REG_LINE(MAX77705_BATP_I, BITS_PER_BYTE), + REGMAP_IRQ_REG_LINE(MAX77705_BAT_I, BITS_PER_BYTE), + REGMAP_IRQ_REG_LINE(MAX77705_CHG_I, BITS_PER_BYTE), + REGMAP_IRQ_REG_LINE(MAX77705_WCIN_I, BITS_PER_BYTE), + REGMAP_IRQ_REG_LINE(MAX77705_CHGIN_I, BITS_PER_BYTE), + REGMAP_IRQ_REG_LINE(MAX77705_AICL_I, BITS_PER_BYTE), }; =20 static struct regmap_irq_chip max77705_charger_irq_chip =3D { diff --git a/include/linux/power/max77705_charger.h b/include/linux/power/m= ax77705_charger.h index a612795577b6..6653abfdf747 100644 --- a/include/linux/power/max77705_charger.h +++ b/include/linux/power/max77705_charger.h @@ -12,34 +12,24 @@ #include =20 /* MAX77705_CHG_REG_CHG_INT */ -#define MAX77705_BYP_I BIT(0) -#define MAX77705_INP_LIMIT_I BIT(1) -#define MAX77705_BATP_I BIT(2) -#define MAX77705_BAT_I BIT(3) -#define MAX77705_CHG_I BIT(4) -#define MAX77705_WCIN_I BIT(5) -#define MAX77705_CHGIN_I BIT(6) -#define MAX77705_AICL_I BIT(7) - -/* MAX77705_CHG_REG_CHG_INT_MASK */ -#define MAX77705_BYP_IM BIT(0) -#define MAX77705_INP_LIMIT_IM BIT(1) -#define MAX77705_BATP_IM BIT(2) -#define MAX77705_BAT_IM BIT(3) -#define MAX77705_CHG_IM BIT(4) -#define MAX77705_WCIN_IM BIT(5) -#define MAX77705_CHGIN_IM BIT(6) -#define MAX77705_AICL_IM BIT(7) +#define MAX77705_BYP_I (0) +#define MAX77705_INP_LIMIT_I (1) +#define MAX77705_BATP_I (2) +#define MAX77705_BAT_I (3) +#define MAX77705_CHG_I (4) +#define MAX77705_WCIN_I (5) +#define MAX77705_CHGIN_I (6) +#define MAX77705_AICL_I (7) =20 /* MAX77705_CHG_REG_CHG_INT_OK */ -#define MAX77705_BYP_OK BIT(0) -#define MAX77705_DISQBAT_OK BIT(1) -#define MAX77705_BATP_OK BIT(2) -#define MAX77705_BAT_OK BIT(3) -#define MAX77705_CHG_OK BIT(4) -#define MAX77705_WCIN_OK BIT(5) -#define MAX77705_CHGIN_OK BIT(6) -#define MAX77705_AICL_OK BIT(7) +#define MAX77705_BYP_OK BIT(MAX77705_BYP_I) +#define MAX77705_DISQBAT_OK BIT(MAX77705_INP_LIMIT_I) +#define MAX77705_BATP_OK BIT(MAX77705_BATP_I) +#define MAX77705_BAT_OK BIT(MAX77705_BAT_I) +#define MAX77705_CHG_OK BIT(MAX77705_CHG_I) +#define MAX77705_WCIN_OK BIT(MAX77705_WCIN_I) +#define MAX77705_CHGIN_OK BIT(MAX77705_CHGIN_I) +#define MAX77705_AICL_OK BIT(MAX77705_AICL_I) =20 /* MAX77705_CHG_REG_DETAILS_00 */ #define MAX77705_BATP_DTLS BIT(0) --=20 2.39.5 From nobody Thu Oct 2 22:53:37 2025 Received: from mail-ed1-f41.google.com (mail-ed1-f41.google.com [209.85.208.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EAE973629BB; Tue, 9 Sep 2025 18:29:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757442584; cv=none; b=WuoaTFnH9/eO7Loe3I1NwM/PmD3gF1TFi12aj0v2IiLNlLHMoqEGcCvLNva+SanVFqv2KekX9dEjnj6iSFrENkU/T/f17U/DvOAUXTHqRx7CqWiFsiGT2DgJ0xMtKEhBedL5NXotTwiUvGP1iJmVBE5Hg19IuBvFoU58/pqf4Jw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757442584; c=relaxed/simple; bh=DI89OEaeQO2Ax2mjgXQ6n2DEPtUU4EgqsXq7FYtg+Yo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EllUWKQqUZF+1ChtK/poP4pm1u1MYnLpL3Int0MPW8IE8E5oK/3F3XP5QL4NFfIMkWwC+w3PVAj5ICMf6q4+hxWOayvUE/7Yy91mmSpBVkahrCQcUZXP+rgPEvKmySYX0KniDT8fVen7eCjx8Z8mSqNKvlrr//azLxSvcZA2zsM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=c9oORpCN; arc=none smtp.client-ip=209.85.208.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="c9oORpCN" Received: by mail-ed1-f41.google.com with SMTP id 4fb4d7f45d1cf-625e1ef08eeso6595904a12.1; Tue, 09 Sep 2025 11:29:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1757442581; x=1758047381; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=hqusoFaR1+X46SqAnhbzqdvVKYcZDv7k26kqGeVPkoo=; b=c9oORpCNypaYROnzR9R7/XuonNQbfjPQoPJg/SrDARBFgcbOUMy9Y4O6CSCl/4USlk HOlJBpcvQU7BYFc1YFveiiJioEcWh6gTg2IRmng1Y8I3EoYeffGwj+TO3gxE2SF+bYJM hgENemvdQUIhxs68EPhoBudURoyLKp5kstq5lXK9HzzdscPf7wuL+SxLi2rkCebLVbwA 4g5dU+CQCipE5sxDOngU7iHNqvooOmxDUkhsz+BXdv+XdF2vXJFT7wE+P744i1GULzOa ToLw6kjH7fMVOLl8qE0TKNe5jA2AK3hiioY2BFxj/1rYWW5y43Zf0MAm5YEtRm/iRjUw eiUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757442581; x=1758047381; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hqusoFaR1+X46SqAnhbzqdvVKYcZDv7k26kqGeVPkoo=; b=Xz2gr3Vil0TAb6Wloaq9ya28mkf3ZTnVhEcil40Kjc5/Z1Z0aYWtJa67/5kmBoZeLz W5mX738vIjqtT3TXq7vsMSHYAh09OtM73a24tAIP/AsBqTeDv1YDMkLakT/G31qCIFDm BfcVrYbOhBSAJpH4prfOjWogo8P6fVKChcc6Jj3o2//kXICUCvNzDmEyz8yds7J7m2RE hSH+QphudljI+ADdpOaISydMia8+8BPR/lJ4c99WKtFGT3J//l9hgs7Jp+OXI9nCibtM kjUuKMnTZGf1VJUc9r+0X5yk4Yppb6Ym2uw7wka1BE6aMgit57a+YloDVUqzSwRWAGIy HJpA== X-Forwarded-Encrypted: i=1; AJvYcCWgouy8soO8fdCLYZ+TK0T8Posl8ZUANhvlJSC9ptVa8zFQiah+odkHqMYKlHCsp5djaBRNsVTgRxVYppI=@vger.kernel.org, AJvYcCXVPQbaF82RSUhW8l4sVhFY01hGThqFF/RIYkf9eSl0C5jYUTHqlklibdwFltaaTKsoErhWKVZKv88=@vger.kernel.org X-Gm-Message-State: AOJu0YzfzCVRdntdbeK77PU2FOb7GqzyeU2cn0ijXzhPGMLRcbBgPfFR vKxg6aj+N7QtfqXINb6jNMeeFd3+smvwDtm1qoOreg1UpvmP7wZLlyB3 X-Gm-Gg: ASbGnctqRoUz1brbKpwcHismN0VBJ2hN+eqvfZdAAR3CxS1lLN5KwORf6jLFlPMUMx/ 7++WKtl4bkYio7QevNTNTUV85O2WW08h3xoeOiHgLEGKxphSF4odEM09XaKcUW9gt6aztDobaHr R7pJeR+UeaZHxwalU2sOzzluakO3BnZfK9bOP+0lO6RgqJX6bKPrngKz9wK7eMB9L7gULfBSnY9 YuyH4WBt1247QVr1jkp7QTdcZ4oiUl0LIxN2VC98XKQs4pTOYDBQLCOoMcUENjh9jGfFLvd5kvI CPgI7moL5qf+tT9OiH7PhEuMlSx9WJckJL3Gsk7RWHk9NTU0igrUxt99u03u7weXc9KRJmwNFGb ptphhFo68PvhPoZoUt7CIOEANy3pTfPQ= X-Google-Smtp-Source: AGHT+IHqj87fhG0faYrydCcuDhxJ4Gtd4NAnDznIL7cpMQMhIlwdMQj3njNw+QGSvkseg7wOlQTYhQ== X-Received: by 2002:a17:907:72d2:b0:b04:3c93:21f9 with SMTP id a640c23a62f3a-b04b14acc20mr1286961866b.24.1757442580997; Tue, 09 Sep 2025 11:29:40 -0700 (PDT) Received: from [127.0.1.1] ([46.53.240.27]) by smtp.googlemail.com with ESMTPSA id a640c23a62f3a-b07833ebe61sm30520666b.89.2025.09.09.11.29.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Sep 2025 11:29:40 -0700 (PDT) From: Dzmitry Sankouski Date: Tue, 09 Sep 2025 21:29:18 +0300 Subject: [PATCH v2 8/9] power: supply: max77705_charger: implement aicl feature Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250909-max77705_77976_charger_improvement-v2-8-a8d2fba47159@gmail.com> References: <20250909-max77705_77976_charger_improvement-v2-0-a8d2fba47159@gmail.com> In-Reply-To: <20250909-max77705_77976_charger_improvement-v2-0-a8d2fba47159@gmail.com> To: Chanwoo Choi , Krzysztof Kozlowski , Lee Jones , Sebastian Reichel , Luca Ceresoli Cc: Krzysztof Kozlowski , Sebastian Reichel , linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, Dzmitry Sankouski X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1757442571; l=4101; i=dsankouski@gmail.com; s=20240619; h=from:subject:message-id; bh=DI89OEaeQO2Ax2mjgXQ6n2DEPtUU4EgqsXq7FYtg+Yo=; b=5Sh33ed53S9yhlY7mgPv5neQdmnO5CVz0RYK9lN33f8At3BIXC+/NBJ+UJIybCzjjwFBAsgE6 6VbCJq3cdT5CRDFahwNruZ9ATZmHphD5ss2ia7jU8lxF1X+BklAukHa X-Developer-Key: i=dsankouski@gmail.com; a=ed25519; pk=YJcXFcN1EWrzBYuiE2yi5Mn6WLn6L1H71J+f7X8fMag= Adaptive input current allows charger to reduce it's current consumption, when source is not able to provide enough power. Signed-off-by: Dzmitry Sankouski --- drivers/power/supply/max77705_charger.c | 60 +++++++++++++++++++++++++++++= ++++ include/linux/power/max77705_charger.h | 5 +++ 2 files changed, 65 insertions(+) diff --git a/drivers/power/supply/max77705_charger.c b/drivers/power/supply= /max77705_charger.c index f381ece5502b..c5d08524fa9d 100644 --- a/drivers/power/supply/max77705_charger.c +++ b/drivers/power/supply/max77705_charger.c @@ -40,6 +40,16 @@ static enum power_supply_property max77705_charger_props= [] =3D { POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT, }; =20 +static irqreturn_t max77705_aicl_irq(int irq, void *irq_drv_data) +{ + struct max77705_charger_data *chg =3D irq_drv_data; + + queue_delayed_work(chg->wqueue, &chg->aicl_work, + msecs_to_jiffies(AICL_WORK_DELAY)); + + return IRQ_HANDLED; +} + static irqreturn_t max77705_chgin_irq(int irq, void *irq_drv_data) { struct max77705_charger_data *chg =3D irq_drv_data; @@ -445,6 +455,40 @@ static const struct power_supply_desc max77705_charger= _psy_desc =3D { .set_property =3D max77705_set_property, }; =20 +static void max77705_aicl_isr_work(struct work_struct *work) +{ + unsigned int regval, irq_status; + int err; + struct max77705_charger_data *chg =3D + container_of(work, struct max77705_charger_data, aicl_work.work); + + regmap_read(chg->regmap, MAX77705_CHG_REG_INT_OK, &irq_status); + if (!chg->is_aicl_irq_disabled) { + disable_irq(chg->aicl_irq); + chg->is_aicl_irq_disabled =3D true; + } + + if (!(irq_status & BIT(MAX77705_AICL_I))) { + err =3D regmap_field_read(chg->rfield[MAX77705_CHG_CHGIN_LIM], ®val); + if (err < 0) + return; + + regval--; + + pr_info("aicl call. regval: %d\n", regval); + err =3D regmap_field_write(chg->rfield[MAX77705_CHG_CHGIN_LIM], regval); + if (err < 0) + return; + + queue_delayed_work(chg->wqueue, &chg->aicl_work, + msecs_to_jiffies(AICL_WORK_DELAY)); + } else { + pr_info("aicl finish\n"); + enable_irq(chg->aicl_irq); + chg->is_aicl_irq_disabled =3D false; + } +} + static void max77705_chgin_isr_work(struct work_struct *work) { struct max77705_charger_data *chg =3D @@ -616,6 +660,16 @@ static int max77705_charger_probe(struct i2c_client *i= 2c) return ret; } =20 + chg->aicl_irq =3D regmap_irq_get_virq(irq_data, MAX77705_AICL_I); + ret =3D devm_request_threaded_irq(dev, chg->aicl_irq, + NULL, max77705_aicl_irq, + IRQF_TRIGGER_HIGH, + "aicl-irq", chg); + if (ret) { + pr_err("%s: Failed to Request IRQ (%d)\n", __func__, ret); + return ret; + } + chg->wqueue =3D create_singlethread_workqueue(dev_name(dev)); if (!chg->wqueue) return dev_err_probe(dev, -ENOMEM, "failed to create workqueue\n"); @@ -626,6 +680,12 @@ static int max77705_charger_probe(struct i2c_client *i= 2c) goto destroy_wq; } =20 + ret =3D devm_delayed_work_autocancel(dev, &chg->aicl_work, max77705_aicl_= isr_work); + if (ret) { + dev_err_probe(dev, ret, "failed to initialize interrupt work\n"); + goto destroy_wq; + } + ret =3D max77705_charger_initialize(chg); if (ret) { dev_err_probe(dev, ret, "failed to initialize charger IC\n"); diff --git a/include/linux/power/max77705_charger.h b/include/linux/power/m= ax77705_charger.h index 6653abfdf747..92fef95e4ac4 100644 --- a/include/linux/power/max77705_charger.h +++ b/include/linux/power/max77705_charger.h @@ -123,6 +123,8 @@ #define MAX77705_DISABLE_SKIP 1 #define MAX77705_AUTO_SKIP 0 =20 +#define AICL_WORK_DELAY 100 + /* uA */ #define MAX77705_CURRENT_CHGIN_STEP 25000 #define MAX77705_CURRENT_CHG_STEP 50000 @@ -185,7 +187,10 @@ struct max77705_charger_data { struct power_supply_battery_info *bat_info; struct workqueue_struct *wqueue; struct work_struct chgin_work; + struct delayed_work aicl_work; struct power_supply *psy_chg; + int is_aicl_irq_disabled; + int aicl_irq; }; =20 #endif /* __MAX77705_CHARGER_H */ --=20 2.39.5 From nobody Thu Oct 2 22:53:37 2025 Received: from mail-ej1-f45.google.com (mail-ej1-f45.google.com [209.85.218.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F2FA8369320; Tue, 9 Sep 2025 18:29:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757442585; cv=none; b=i9/1ET1WorA7QN/2cQLLP2mmnjFHlzAdfaVQzxyvC/2ImF7YDhCSsPSmh5HBZSbdRfw2rVTKEcgiZgX5Hlhtw9nyAXdYAp45hFZLBb70+m9qt+2w55PIJ0q9BkxQID5XcfMF5m+AYTMsI67fqVtstYtR8mBAIuQdACUZ2HMeiFU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1757442585; c=relaxed/simple; bh=Art95FP4CDMp3B3wO95DSHb+3nyZc8ObS8pqSfOsfws=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=V7yzV/zPOTRkz8rJlxXc029++OnS5JDg81hipmApQik4MkeuRr5HXA+T1nRXOUe9zl/tDbwTgvIyciiwTJPTw00ZALqv9i6B3BFDTW4eF09b/ifh55DFJNlcGENIO1/9CFs/5rYZzw6JOmon9Nc81cUXVxQnG2z8LstyEoYLLaI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=i8lpjht4; arc=none smtp.client-ip=209.85.218.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="i8lpjht4" Received: by mail-ej1-f45.google.com with SMTP id a640c23a62f3a-b0418f6fc27so992669266b.3; Tue, 09 Sep 2025 11:29:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1757442582; x=1758047382; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=eeAm2av/mnmRbyLHfv410Kah1AmetvGnLw+tWu4KGQ0=; b=i8lpjht4WvGNnkqDCN4D3WBWjWzpoksXDPIs5ZqdW2mCgcJxCFNbdFofBWoa3H8Mrr 0B23V8nL8+43Mk6YuCVwpbX92KipLqyBAEqemp8WgfSBXMcIPD9s2273wXHI2H/HZym6 /PDE2GWVtXtYbM8pyJHk0pKL8uIHe6jdZSRriCQtVH2y54dR55hlYFMnXto6NukS3yJW 7PGc9X5mELrioYO4ey/DwVEM3ceRrpzKmRXOOnuy+jZDdxHnClr+6nyo8ZWnFyvCVUx1 FvRMagRCf5cDGDAebgSQqITTn9PZRBJrFM4a3DzMbbedJXeQIUnbYVOldm1ThIKOKwqf xVBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757442582; x=1758047382; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=eeAm2av/mnmRbyLHfv410Kah1AmetvGnLw+tWu4KGQ0=; b=kUbF9sFZES177+uM0QvCBLUlNxqD5dbeI9SnVWu4gxvW3DK5zy6/882voQsVv3lJ3J oRDRw38DrrYq3q/wgtCgwGw6f7M6VaLSelJuEBLpDqPzt63a1hiZ0tqie3xNz7njFXVY CLuepl2RL8T0fTcDwnuKdbhCjRtEU9wy+9qw+kpVc64SpN2hR4S0TtTmpyfqs0MKo/bd iW7rbikHK9ZDi/ca8fFX7dgJJqFJhnAj1prXi4mXLYSnM54oykIBkct4I4BZFLJZbRWZ s9E0W82SP/1JMWiCTz7Ce4laxxbi8Ylo9dTpR7ETWTm2fbHL0KQM3I0rPiRY50BohRFZ My8g== X-Forwarded-Encrypted: i=1; AJvYcCVyRxMC97W6lxecZNmq5NpAQHejM/fBgRpwQHlJbJ+qlUsa/CQLq6IEkb3VPCYFNq8QNcXALnRt6Rp+wvY=@vger.kernel.org, AJvYcCXS2M/psJgIbk160BQ59GdsPoQa5QjIydVi2RxSXaZZoZPIpLVxUZH29e+777GjcWH3uDUZZcOrhWw=@vger.kernel.org X-Gm-Message-State: AOJu0YzDlH4xF+YWBFRWOV+igWedj0FSp7vG9g2Ll5gt1BWzhSX/Q7UV KeKOa2W55F+5kI+j0Wws43bT/hROPHeRF17smYgvK4dKjHHWmYJE+BPSF5TSDQ== X-Gm-Gg: ASbGncutoVoBu+ptY0ioifkFsU7tdS34TXeg7uJQFulU/PR4oEY5O2qtBtusQDP+h31 lWQWRqpPdhCSjHvNLkEOv9J3WX8C0ZYeWDCxYdHcwr14aTscZSg3APVq0sDjKL0dpBNYiEug3l1 uaRQiQR1K/yVTer2qUcBYQGuYEKzsa+0NeXnn/bHy2AzqstoSizfTMZTpiqMaJrZLWUzKJwQ6AJ HtYyLciPXCP7dZ72poMEa0YyRKBZws7Q7MKilQIwqkeC7hrEEdyccAkGfUYRvMnHFa/IuiJ1zvV vc3P+Agt5xMxCQQKVY8ntmiPa9QbWKfO6syubsRTRtrmdDoZXgRTl2WDdGpWHlTHejUFVUv7D0F 4sLZK7SJx+YWKKybpqXke X-Google-Smtp-Source: AGHT+IHXX8PH2cH+81HpRkdTN3HkHUucvuvPnMpmdfKLlhJcbRuQWFRrO/cIx51qu2p6Jy/A+lh25A== X-Received: by 2002:a17:907:944d:b0:afe:7ba0:df58 with SMTP id a640c23a62f3a-b04b170d61fmr1304472966b.46.1757442582125; Tue, 09 Sep 2025 11:29:42 -0700 (PDT) Received: from [127.0.1.1] ([46.53.240.27]) by smtp.googlemail.com with ESMTPSA id a640c23a62f3a-b07833ebe61sm30520666b.89.2025.09.09.11.29.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Sep 2025 11:29:41 -0700 (PDT) From: Dzmitry Sankouski Date: Tue, 09 Sep 2025 21:29:19 +0300 Subject: [PATCH v2 9/9] power: supply: max77976_charger: fix constant current reporting Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250909-max77705_77976_charger_improvement-v2-9-a8d2fba47159@gmail.com> References: <20250909-max77705_77976_charger_improvement-v2-0-a8d2fba47159@gmail.com> In-Reply-To: <20250909-max77705_77976_charger_improvement-v2-0-a8d2fba47159@gmail.com> To: Chanwoo Choi , Krzysztof Kozlowski , Lee Jones , Sebastian Reichel , Luca Ceresoli Cc: Krzysztof Kozlowski , Sebastian Reichel , linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, Dzmitry Sankouski X-Mailer: b4 0.14.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1757442571; l=2453; i=dsankouski@gmail.com; s=20240619; h=from:subject:message-id; bh=Art95FP4CDMp3B3wO95DSHb+3nyZc8ObS8pqSfOsfws=; b=f4Q0SknzXp2mOAUVjz7fxc50lg6/oOucw4N/X2CKmOaV9DBnfOjzAW1/s7rCmoLNks8xMlhrr Pk6J/aYjGCbDVS/2O1WPafHaO9exk/1MssdUdRmwo+Mk3wI2sP3GVPK X-Developer-Key: i=dsankouski@gmail.com; a=ed25519; pk=YJcXFcN1EWrzBYuiE2yi5Mn6WLn6L1H71J+f7X8fMag= CHARGE_CONTROL_LIMIT is a wrong property to report charge current limit, because `CHARGE_*` attributes represents capacity, not current. The correct attribute to report and set charge current limit is CONSTANT_CHARGE_CURRENT. Rename CHARGE_CONTROL_LIMIT to CONSTANT_CHARGE_CURRENT. Fixes: 715ecbc10d6a ("power: supply: max77976: add Maxim MAX77976 charger d= river") Signed-off-by: Dzmitry Sankouski --- drivers/power/supply/max77976_charger.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/power/supply/max77976_charger.c b/drivers/power/supply= /max77976_charger.c index e6fe68cebc32..3d6ff4005533 100644 --- a/drivers/power/supply/max77976_charger.c +++ b/drivers/power/supply/max77976_charger.c @@ -292,10 +292,10 @@ static int max77976_get_property(struct power_supply = *psy, case POWER_SUPPLY_PROP_ONLINE: err =3D max77976_get_online(chg, &val->intval); break; - case POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT_MAX: + case POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT_MAX: val->intval =3D MAX77976_CHG_CC_MAX; break; - case POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT: + case POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT: err =3D max77976_get_integer(chg, CHG_CC, MAX77976_CHG_CC_MIN, MAX77976_CHG_CC_MAX, @@ -330,7 +330,7 @@ static int max77976_set_property(struct power_supply *p= sy, int err =3D 0; =20 switch (psp) { - case POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT: + case POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT: err =3D max77976_set_integer(chg, CHG_CC, MAX77976_CHG_CC_MIN, MAX77976_CHG_CC_MAX, @@ -355,7 +355,7 @@ static int max77976_property_is_writeable(struct power_= supply *psy, enum power_supply_property psp) { switch (psp) { - case POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT: + case POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT: case POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT: return true; default: @@ -368,8 +368,8 @@ static enum power_supply_property max77976_psy_props[] = =3D { POWER_SUPPLY_PROP_CHARGE_TYPE, POWER_SUPPLY_PROP_HEALTH, POWER_SUPPLY_PROP_ONLINE, - POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT, - POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT_MAX, + POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT, + POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT_MAX, POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT, POWER_SUPPLY_PROP_MODEL_NAME, POWER_SUPPLY_PROP_MANUFACTURER, --=20 2.39.5