From nobody Fri Oct 3 13:34:13 2025 Received: from mail-ed1-f45.google.com (mail-ed1-f45.google.com [209.85.208.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 5A47B2AE77; Sat, 30 Aug 2025 20:45:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756586728; cv=none; b=rR/zUMnLHBFM1g/SJFh00/jG5TG4A8mJ4OvwXOIo8Qzi2DJwr6IloVwjQyOfi1bI+dkKKbHp49nZSANWJFi+lXoNLIsY8U//17uRoKdFIA/vlWEtuqfnK1A3a/HFsQTivT4vUv62XdoBpVxbLWhQ1v8o/OlP6QbdURXNoQIs+yc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756586728; c=relaxed/simple; bh=0oqeEqIjS3+OtMIvtyosNybEOk1gpo3FJfz9EF2M1t0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=E46FSxe3yBbsZHk1bgLVeeF0Q4fkg/me/MOM+MdLT+XBEHhObUKn1b/nbe3RRAGo4Vu7mTvzdjUzYCxnmRYjFxNK6Is3V0kq9pMe12U+cEudWSDnnVeu9ZhRYXB+n5cgAlZuDClFsR+7F5t87wt6mxI3HJXPWA7W13eHTQ2hYco= 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=eIocmTUT; arc=none smtp.client-ip=209.85.208.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="eIocmTUT" Received: by mail-ed1-f45.google.com with SMTP id 4fb4d7f45d1cf-6188b6f7f15so3452992a12.2; Sat, 30 Aug 2025 13:45:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756586725; x=1757191525; 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=eIocmTUT8ZkbRQySKlBmMkwsrQ9NFJF4siEAHv4lwEUva323ojtwotMHDCGGSZ1EW7 Ra2wGBFNw7TXupcZF/CBvELH2LOIYzHGbMZYOf6YcngaktUJkeHZqKRAufGeyrt+bJdN nU3t6lv527X1z9NRC/KVN8nzStZjqYS4BmY35GtkZpw9Z8D8DaJ+weKbVuTZGIkhkie7 CSWlrN3fXSj//TNXFAUUuUI0OopdyRS+2C1e+pP4Rc8Y9BmiPfVMZI8p0jp07BVe1h9w QmzZnIslVwXlZJM6M9dIeM6b/eHTHFM0weMfiReO280TDnfcHKVE2oQTNC+HGDBdJZnD ziZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756586725; x=1757191525; 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=DaxQnxUkLBTYM6VwKE5EFWeYNjn6jPyiEoNs4lkszOUY7oc6VB18iNfKH/9Vf5f254 1sEMZTfpyhoWUS3l6M36B7XriBZ7M5u/S/KXISvLe99m9EiKF3RlFQNF2ou4hpvThlWX rP6P0Wz8zUxqHgPu1QVECVLHQZQxdKnwmenYqs9PZvvvPVMfC44bMjlYP9MZWxjW01uV eaOgPPNO1a27+QM5mawgBd+08o0cBBKylAETND2XQezVbjgsJt1ZZv+A2+YceJxfuMer 9QwBQC0cHprgodvvwMjx9mYjJrIZRxeI13Td1Xq80+8O5gXqknQrvQ7gTnVr0fCTfIRw En2A== X-Forwarded-Encrypted: i=1; AJvYcCWzSudB2Pnu5iYK6WjFNov/rYAq+AW7MU5YN/k4EvoVJpNd85NZNyhSNW8/0i2yaYaI+kgshWZZBZE=@vger.kernel.org, AJvYcCXg308B4KC+jhvSY+3MEj8i9Kge0sZNpCf/SQxHyWRhyscGRjWqN6NyAvwj/1+vg7I2JskIBba1k/AjwLw=@vger.kernel.org X-Gm-Message-State: AOJu0YyIS8ukr3N0WR19v57xucY0FlDBHuj7MvfmoEBw9sT1Xz24346i GAwEIMMD/BA2bwEPuMawyD+qP5ZfOxUx+OxIcFu42gSsM65IFIB6iBAa X-Gm-Gg: ASbGncsRXLT24cSPvNoEXww5Wy41dqqOcvyDm973IXcjnnrU/3XjsAF6BTsVnUtFcaP CqTKqQKOV06fnI/zlH6jWwB+/NkDthV899RYYh93JnB3sl2OEjXqgi0ydPYpVXBMpnHGimsLRed O3+nmOUrrSPHuYFOGiTeYE77o/WPzeEGyYFHq/DQ4bt4Q7uzJhB2maN8ryTmZ093kvc1+syjf3S 8b9DR7iGYCUDJBr1JlcXCFKzf/LqYM1Hhw+768mrLBWf6uLO5wIlqf67POP03FQBCYM9n+VLMbV gGH+5JFybUMPLJKM3havINJ0rtcDAtF9rR2V3wp7KAmOy1T2kcUFo8+g6qR/jXdat9Oz5nbaFwt C3cCX0fDj0wAt+tVAqMzPT2UssdmX+4c= X-Google-Smtp-Source: AGHT+IHAqv/GT7/pawlzbjWrE+HOablGq165Qzr6HPOo3iQMAThPKQPpNlXpi7UmzyKa4WqP6rVgaQ== X-Received: by 2002:a05:6402:5cb:b0:61a:1a57:31a with SMTP id 4fb4d7f45d1cf-61d2689316cmr2269651a12.14.1756586724504; Sat, 30 Aug 2025 13:45:24 -0700 (PDT) Received: from [127.0.1.1] ([46.53.240.27]) by smtp.googlemail.com with ESMTPSA id 4fb4d7f45d1cf-61cfc52ade4sm4066630a12.45.2025.08.30.13.45.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 Aug 2025 13:45:24 -0700 (PDT) From: Dzmitry Sankouski Date: Sat, 30 Aug 2025 23:45:14 +0300 Subject: [PATCH 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: <20250830-max77705_77976_charger_improvement-v1-1-e976db3fd432@gmail.com> References: <20250830-max77705_77976_charger_improvement-v1-0-e976db3fd432@gmail.com> In-Reply-To: <20250830-max77705_77976_charger_improvement-v1-0-e976db3fd432@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=1756586721; l=1767; i=dsankouski@gmail.com; s=20240619; h=from:subject:message-id; bh=0oqeEqIjS3+OtMIvtyosNybEOk1gpo3FJfz9EF2M1t0=; b=56US90twcnleZmymZxonRD5YfMUAoFqPRf2D5R9IUSCwqV/29oO2NNVViutmNK/bRgHdQNDlc adHUabLC/NdDjZsTOCYMxBLiTYdPdwODfjGdryg8Oc+cMitwlzMHodL 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 Fri Oct 3 13:34:13 2025 Received: from mail-ed1-f51.google.com (mail-ed1-f51.google.com [209.85.208.51]) (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 5430774BE1; Sat, 30 Aug 2025 20:45:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756586729; cv=none; b=IGcNgT8Cryxk2qomNsnRP2hRszwr/0/9tyNFhNDJg8zZ98qyAmuN5B15zGGb/3RNX/Qb0flGLr4ff6GdTxosLCZ0FCilPY/wDyN0/ZgtfCnmTwZ7IDfjmpf0pg09Ap3wj216fzjmasLQRXaj0DD0n7N2OcQPnNdpdIb495UU+ao= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756586729; c=relaxed/simple; bh=HOFral57BQL8UYkTuj9H3P5RIa5oSgklRaCCxDv4muA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Yp3dPFrpzlKhOyAzG4rV+ArbsyH++o1eiTl20Gd4n6R7eySGZIAI2kTrbQsOddqRgtxKsdJd9TacMlh+TLFKuo07lNtFc/rfWvsa+StHfHs8sovor28MQawTflnok4/qFTT60Wl1dFsKN1mKr6vvtQjej29TuQgZP68MsZJmxnE= 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=ZqJ+Lmeq; arc=none smtp.client-ip=209.85.208.51 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="ZqJ+Lmeq" Received: by mail-ed1-f51.google.com with SMTP id 4fb4d7f45d1cf-61cb4370e7bso4760520a12.3; Sat, 30 Aug 2025 13:45:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756586726; x=1757191526; 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=ZqJ+LmeqMBZZV+3x5nA6OY88TaoWBUlRnu40YOO3PHX8t+wr6tQQ7a8O7liX4vkO9H 3O9RvmtRm3tUjuezdAsdC5r9xHnAA6jOo39loTF2L2BYuEC2+vwqYGAljCZNjjQLwIUX SPbFs/E9d3iJREG2OeUOcC5BQOFT4oqd8FH2YXk9VTqFSI3MR2cxDy95fD3ReUeizuRd oPLwHYLTURRAV94UpyG0XOnBcldMJNVlF3wuGcRdsDGMng9RFCIpPfiJ9rpM06TFZbTA onuYLX4ILCjb+0PUhw1SIhzmrtZ2tYvRS7SlbAzXLwHXTxUpmxz7Gl5OvcmkcZ3wV06g N96w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756586726; x=1757191526; 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=sB19Uwr6UkPw/s5Fq/0hqhTZBc9usYCJpKpnZix0uS18V6rXwMFy4fpnPnZoFR9gwW D+9e0PL9D4b54SVP60yMcj/TKt+JeOCtQIGojUohLXPLH/yKpYbEKUQmbYUUGEffKhQt LczUWIfHpZ+b55trHujLBTAVyeu+bwI5VHx/s6VUmq7mmowiqqI+WHaHbfTP0nPQp6yr aRPS2neBORAxA6B3yNl45BsbKUdo7Nn0P0h0CVIHtXV52knlLfx+OEU06E6kECAxa39F fq5J7aMxZfL3yufQLlwrVp/EtsYo8FsWD9GMpnlQsu/Tp0VCyCAtf+u3h1ADcKfWeI8T +1IQ== X-Forwarded-Encrypted: i=1; AJvYcCVaMW1N7srR2v4yFOK4vJYSEjgmVw+Jm43RygK6z40D4Lg9ULFm+WUAvEYlBbwU1RlTFf1o+eLpFS93p8U=@vger.kernel.org, AJvYcCXhv3RfBYcpDRNx9x89xLrIX8c5d5vqs/Ebs0bXZRpd85+aT9Wv0AivckRYf57iwiiHTO1M6UoeivA=@vger.kernel.org X-Gm-Message-State: AOJu0YwtLXyrIQJaSSBaYrI+nL3vtM9OB2cAkpveUtiqRE4MVLddR6Ir bqdqerosl/deO4m+YnrYr+DyTdEDMYm4DgXSdK7Xs1DxSyIDiyPOlB8m X-Gm-Gg: ASbGncushcZ6jj2gpOmAkAZnhUCrNj/RSHioVaOGUY0o3UtQjHtzja0gbtSs3FoEOwp tDmdmd7FbOjGaTOpe1FcaRSxkXBCoylKr05QiwE5OZxJLduxZZzQcdp+vj735U4DzpMH1PWdYEE R6IOeLR34c9tvImaol3wcQPLdNajUTMEVDD+PRdjRY1UWT0vykh9HghIFuxNnjwiBxMG+9h1NDv C7aMYJzqqis6qY9Z3whQvVaLIrmL9YBcW1GQjtRxXV0E9gV+p3q8I/d1x7N5qjzBd16AKgRQAj/ blp0P7dWMVD63LeK9qHyCIDOFz7OJPH36Y2TD8vhBEbKuUbaL0WgcIWXTb4EDO8kCqT6i2AK0fR JPmNl8tLGCOE3ThbycWQb X-Google-Smtp-Source: AGHT+IEQRyppa0QSBTQh0CeerNcczwcEPlPK/lBjlkglQelkcWfT6C9l2x6in5SD/WajZ68Szzr99g== X-Received: by 2002:a05:6402:1d52:b0:61c:b8af:f7a with SMTP id 4fb4d7f45d1cf-61d26ec2b87mr2540179a12.34.1756586725573; Sat, 30 Aug 2025 13:45:25 -0700 (PDT) Received: from [127.0.1.1] ([46.53.240.27]) by smtp.googlemail.com with ESMTPSA id 4fb4d7f45d1cf-61cfc52ade4sm4066630a12.45.2025.08.30.13.45.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 Aug 2025 13:45:25 -0700 (PDT) From: Dzmitry Sankouski Date: Sat, 30 Aug 2025 23:45:15 +0300 Subject: [PATCH 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: <20250830-max77705_77976_charger_improvement-v1-2-e976db3fd432@gmail.com> References: <20250830-max77705_77976_charger_improvement-v1-0-e976db3fd432@gmail.com> In-Reply-To: <20250830-max77705_77976_charger_improvement-v1-0-e976db3fd432@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=1756586721; l=9595; i=dsankouski@gmail.com; s=20240619; h=from:subject:message-id; bh=HOFral57BQL8UYkTuj9H3P5RIa5oSgklRaCCxDv4muA=; b=XE3RU4/PIIfJARxmFZwN5DajvTyDB0oBjPYR5EAAPejjT4hD3fivgtXjO5I4Vd3zI21lO2iC0 hS+BZD3OQ+pC/wTxFgHU9vpzFskgMqxe/ovlMfK86UdWOQMEquEibwH 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 Fri Oct 3 13:34:13 2025 Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com [209.85.218.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 A8B1723D7EC; Sat, 30 Aug 2025 20:45:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756586730; cv=none; b=okPpfohwReSMmWcg98Hi9MWsUp0ZBA1mgYHxShPNfMspL4yEwyWFahsqrTvqN+jBCmmcycjUotOymNYex14WpaIzfIspvJ9seKcrGMf6i8LUJWWMqm1tXIcWN6d2eTQERzOJG8m5MbYEVIHxnsGfUFBVDFmIMh63x6J6XE0rorw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756586730; c=relaxed/simple; bh=0120lEeugAytlD1Sf6z5zpbQoaqanYsfApO8WtLj7II=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=i/Der8SjK1ZzTd6IoNFhdrQB+8R6iUpjrV+O2Xv555YVIDY3YBEaOYflsIPK1RSmCaLnfXXlq6JXfJiVl1oGFCzFYT5CvZMM1NAkEpqQkiHAHZzh33ZOPB3AX4eFZTsQ5SjTCsphKbOKIcjMc6xVrbA++RSLSMenK924bJHSv8s= 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=nV3aJNXT; arc=none smtp.client-ip=209.85.218.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="nV3aJNXT" Received: by mail-ej1-f41.google.com with SMTP id a640c23a62f3a-afcb7a3b3a9so497808666b.2; Sat, 30 Aug 2025 13:45:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756586727; x=1757191527; 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=DoeCpwn38HYrZiarHGw2LTjSD/tdbcQi5PEDAghtbCs=; b=nV3aJNXTxDBOO3IExmUZuMpmGWidRiiJl91wT/sm51iFhKAy0nmMEr9Z0FUocITFQI AzJXTZC/oKYhWXpAYjlu3QhR3vevaM+Cr8nbdY0+Suk9MvuVcPtV31Y07ftkhQeuk++l 4CHLAZDtLfp8rLUZhNL9I1wITuGX68sRDK/oekMRN9rfUa12ccBOVQHD3j8P8UiAzU/L nzGWugOq8khmogOFzTezvJWgcvUFsuNl9vX1Nqr8ZoOC6A99WEKuwujYwc7OhmsasxW7 XztnLpznOrAWrEcwaQG8TphReSpQg5U8IaG6PF9lfm9gJRSkrJf8zn0Im+KyEpdZWd7n jaXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756586727; x=1757191527; 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=DoeCpwn38HYrZiarHGw2LTjSD/tdbcQi5PEDAghtbCs=; b=kCuJYFq/vwDMPYcu5oMYn61qndmF81A44TCsazqqvNEEwyFEMiDgxILfDta+sqRPSK P3R04brd/N+XpXmVODwOe8faVcRwQkYOM3nqJr23F1udrijDJrI1b3Qd/Osa5PcabwTI G2STnovukeLDQ3YFUdpAFfNGVtVh4pBpIKUEEA454lj7ko7hiJo8hEHrDtz7O30OxlDA 7xaMYGzB5GLd5t3HQ+EjHQMDX0RzLi3UUm4t24HbDlWaEALTMma/zM7t6dhf120n954Z bmovMBRw1qJdBWAjFa9/0X4agAIDk2Ye2QvNP6Tn/m7d/y4cF88K+RrzCx5EyNXgH0YF PEkQ== X-Forwarded-Encrypted: i=1; AJvYcCV+shmRZAuR3sPL440GQrfeINWuKx3xYoinkNtoDIDdaFDo0DOQOQJK10bL6aAt3b0Rt5JsHzPS+nqz0Jc=@vger.kernel.org, AJvYcCXte1BqgVTaQBzxfi16ZXt3N+5ZYIz6+qbGsxs72GCOo+CukEGrm9V9Ixd1d5cFWNUIbszhhkSGDAo=@vger.kernel.org X-Gm-Message-State: AOJu0YzahecIKGAhlVBI1t2VC+/tY4FgnnzUFJUYBdGNduKcUnQtwAaL LgjH2vFRLJXpL23na6/3SoFJa9QLk46Fqct5VoHmq8Xi/UEeutYqYHc7 X-Gm-Gg: ASbGnctSZmEsQQEHckky2s1MujNhLh7k3CQlY4bwCMBtggUcOmrWMgwfkGGlvXToVDM QPlXkr1VDWEzxJEtEOMHyuw1BPlDYy2+u8Ak/x6u2PWb/rTPCMNHuau81Yg5HUzvspJuZ2qbZPQ QEYmyVrZ2Zq7K+EJMsuptDmeAvW3s67VYdNbVQH1p9Nu2wx4YYloUrxtavUtzO1HMgKKeK8nMpB xs60leqVsHfaNxXg3L8NUEtURQYkueaszZfGBW9iC7HNbAiu0L4Im8Xhlr6zqkBvlRm3dCh5FyB ckbUGpx74htrOly2zgmp70ndxE0OF2bWXP273BOBMYXP1fnZN+4t3PaqRz+wNq2gkzlIL5r2WIR tWmpJOveyrl6tUwK55ATE X-Google-Smtp-Source: AGHT+IFDdtq+pSRBhZAaCtPUsSHZo4r5PSPgVa/c3+f+wNq1/Y2oLGB6EVTEvsdyuxRDoKyIC/AGtQ== X-Received: by 2002:a17:907:3f12:b0:afe:7027:56f9 with SMTP id a640c23a62f3a-b01d8a708d7mr312101866b.17.1756586726724; Sat, 30 Aug 2025 13:45:26 -0700 (PDT) Received: from [127.0.1.1] ([46.53.240.27]) by smtp.googlemail.com with ESMTPSA id 4fb4d7f45d1cf-61cfc52ade4sm4066630a12.45.2025.08.30.13.45.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 Aug 2025 13:45:26 -0700 (PDT) From: Dzmitry Sankouski Date: Sat, 30 Aug 2025 23:45:16 +0300 Subject: [PATCH 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: <20250830-max77705_77976_charger_improvement-v1-3-e976db3fd432@gmail.com> References: <20250830-max77705_77976_charger_improvement-v1-0-e976db3fd432@gmail.com> In-Reply-To: <20250830-max77705_77976_charger_improvement-v1-0-e976db3fd432@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=1756586721; l=16365; i=dsankouski@gmail.com; s=20240619; h=from:subject:message-id; bh=0120lEeugAytlD1Sf6z5zpbQoaqanYsfApO8WtLj7II=; b=wYOw55GMviMDE6ZEU6jCCh8Ht2aKOf8pnhqkPtHeVTxkNZjcsfG9nUUb6EoZIdXJffEuGANs6 d5GD90ieSRPC2OkTKIgjEgnn4w1HeKTVMtiXi8pUSd6M+xXEt8n9vHF 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 --- drivers/power/supply/max77705_charger.c | 105 ++++++++++++----------------= ---- include/linux/power/max77705_charger.h | 99 ++++++++++++++++------------= -- 2 files changed, 92 insertions(+), 112 deletions(-) diff --git a/drivers/power/supply/max77705_charger.c b/drivers/power/supply= /max77705_charger.c index 7855f890e0a9..29bb763e56be 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_MASK); + 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..aec908ac5c01 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 @@ -130,7 +109,7 @@ #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_SLOWEST_LX_SLOPE 3 =20 /* MAX77705_CHG_REG_CNFG_07 */ #define MAX77705_CHG_FMBST 4 @@ -140,36 +119,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 +140,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 Fri Oct 3 13:34:13 2025 Received: from mail-ed1-f43.google.com (mail-ed1-f43.google.com [209.85.208.43]) (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 B458F2E718F; Sat, 30 Aug 2025 20:45:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756586732; cv=none; b=ATErXf5fMIx/MbAjMSOUNMxy03uF6agoJMQPjl8g1Em1QLerYts7AVWxkWakHOiXWsEfrBqxG7d+qMJP4rb4wMzePMM6PvRLY5WHMmJTZ9tYJb6DCEoRu+FAT0k6Obt2XrHKd2C8bZHGG7H1cvotHUU4U85cY4ZGsjpCKJRF5sg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756586732; c=relaxed/simple; bh=KKiS1ZgRCTnr87a7VYEVPso4g12AaC92xEizHhtRToU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=f5hbFXO4GqV05aSZjjaObLNHEHR/AyA7llT9StuCDeO9T+L57CI/BuLw6NGzD/+OwdVZTtwGUnzxAHWHnp0jc2gCywvPTh7nDwd4ioE29Ss99ehKqaSDy6vtVEm4Zt1qYSUJV/0iPLlvUN3qclTJyBljNaM9O9aOf/dzWQWtn3k= 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=ZU+bppD4; arc=none smtp.client-ip=209.85.208.43 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="ZU+bppD4" Received: by mail-ed1-f43.google.com with SMTP id 4fb4d7f45d1cf-61d7b2ec241so72154a12.0; Sat, 30 Aug 2025 13:45:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756586729; x=1757191529; 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=7G/WcmK/lPWjxGHmTKrTvdykDvjBtKudXySNTrnZA1s=; b=ZU+bppD4cQw1UQIQBtEfarPycWxoZj6AeOwDVjKd1IDe962WxcuiVxqOWoyHNSrhqz cuHo27Luf0rGHsMyn57d96UKY+2jbwN4smEmPPZ9iIP4hyBSmHnnwz7mrWBI7vxfLl8l UmCQE5JHyGHOCbtAwMeXQgSETDpGk60rUWd5Y8lNCClxEwIeytiO2BBJFsxbtjT7COtX gw9Kpdi023QKJ9PpWj73plh1JeaM8/DnenBC/j9NyzdTNYC+GispBj9WZKnKRIwo+d5L byZaqKOnNTYU8T0qr5OaS8Zh54R4s5bxG3rUw+2ut4usR1JwMkugkgU2+cDIiOvLQAkM tdJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756586729; x=1757191529; 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=7G/WcmK/lPWjxGHmTKrTvdykDvjBtKudXySNTrnZA1s=; b=oTWdL8binoz3ZLj1AP8qxPaX809Wi8gkPAAcSCw4yanqrFdrs7KQsE07enIk3pQ/v0 1KqRNH5bQG1Qnd2LbAzomWfb7hz830BPfPceXrMDfoGBXwL4CDcnBIqWI++DSRlDqxrM ZdnzhVXDpH1UfH5rur2Noy55XO1cgBshDeRtx3ZBkAtDRmA2c9gTVcUOO+8O6E3zzkab W0iiunlkrbxEQxojmFpxkx2ujHg86I0SOs0XajEJ7Rvsl9DcPj/5+gke8/W5Hs5K51pA qs8vpmXIqeqPwY6fZWBEYP1FvKvTqgiPHROYUjtscVEvUfYdR5HrZ/hYRkQF+ssG5Bzk gD6g== X-Forwarded-Encrypted: i=1; AJvYcCVgrq4w9hv3PghbrI4XTOoTND2KIGaR9untrMKQ5+Cl2IHZClxs0saQ9Db3A8HaSMNOOK5vyjgMerg9/7s=@vger.kernel.org, AJvYcCX3nQHmjPYMtYR3oNzOyt50UDxJe0OXdgMNWvf+sjtTJ014yyybmiow4yXls38hekxLSRLxSsLXTwQ=@vger.kernel.org X-Gm-Message-State: AOJu0Yy/Gyuz9ZNa63pp/qgr4NyX0qEZmb5+fJESQJYHHmVX+yo9+rSU qFovrphvszMPWcvRbaSMIuOECxrSKfso1R6Ds1U8AW3ScDKoNKWfbPyv X-Gm-Gg: ASbGncuOtPjcEzivBuH9E3sHQHwmuqT9pMMjcTk4PNUENdfS1Cr2sv+6mfBfhNAdOF4 PCyJRQVC5mPPaS54x/i9slUleoSa2CMqb9MoimXzCkd3cTDbxP5eSLBPq9sBYkc7e7nSvZd/DOo i+zxlyZDz2a/pqfT/fVKw8sW96ZvXVqbUmjcbvg4jy37h5gfTP7jbe/Q6myng/o5Jszp4pn2RcG Zq0H0PHqw0ReLFo71SASsXBj3j9Cj8SQZovFQ26bhV0ZI/Elxr7qX7QWPJx1JBdV5ig2gCUv/5E nl5B7W8Wc2DcdbcYebga3zXpMKQ8o/COU8/4/6M/co2U+KB71SMcgnDgxcfMeAJXAqx9S60RPm+ aZi2fpa+lepCHvNXpGno8jSR/pO9Il+o= X-Google-Smtp-Source: AGHT+IHvQSgj3QE0hEe6qopBEf3Qr68ADfYAsXr/jvOnpNvPTJhX9STz2rkI6mKad2/JjMwA9zQiEA== X-Received: by 2002:a05:6402:5189:b0:61c:35c0:87c6 with SMTP id 4fb4d7f45d1cf-61d26892f38mr2316307a12.12.1756586728533; Sat, 30 Aug 2025 13:45:28 -0700 (PDT) Received: from [127.0.1.1] ([46.53.240.27]) by smtp.googlemail.com with ESMTPSA id 4fb4d7f45d1cf-61cfc52ade4sm4066630a12.45.2025.08.30.13.45.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 Aug 2025 13:45:28 -0700 (PDT) From: Dzmitry Sankouski Date: Sat, 30 Aug 2025 23:45:17 +0300 Subject: [PATCH 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: <20250830-max77705_77976_charger_improvement-v1-4-e976db3fd432@gmail.com> References: <20250830-max77705_77976_charger_improvement-v1-0-e976db3fd432@gmail.com> In-Reply-To: <20250830-max77705_77976_charger_improvement-v1-0-e976db3fd432@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=1756586721; l=5440; i=dsankouski@gmail.com; s=20240619; h=from:subject:message-id; bh=KKiS1ZgRCTnr87a7VYEVPso4g12AaC92xEizHhtRToU=; b=pW4sgE0eqBX5p+mivQerCPqXLlFVjTyrnYY4vKwESBN/qEzeKpLjK+YgIaqnUpCxHXMf10cCN Yxo5lZeNyauBvBdHUi1FXC2H+YTwT8nP7Xlmk0e+Rqg8bJiRGuIYgXW 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 29bb763e56be..1cd122e96953 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_MASK); - 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_MASK); + 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 Fri Oct 3 13:34:13 2025 Received: from mail-ed1-f45.google.com (mail-ed1-f45.google.com [209.85.208.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 70BCF2AE77; Sat, 30 Aug 2025 20:45:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756586733; cv=none; b=MPA/xlxYZeW4iKSNrK28oiDW3Vpwslne1j1hi2Wwo485vtemb1rDE5EmBpNOd3H54gdeHfHiOFW46Y7UQWggtGf/SQHmDGjGKtcJyJBlO8q+9S2DcpPmLxZif0bt23+32IA7TSwHndLbba+qSISV/uu6jIP3VzxGo+d5ddxO//s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756586733; c=relaxed/simple; bh=4dm9H6pyN/TKQPdas0ArDRI6cymWMVAe+RQOCBAJh38=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=bdsgUyMWF9uyW7vX7HihgwulR4lSUDWWfOM68AgV5jXzz5XjAhoyVkZO0BAAbOdHPbQsv1n3sUlYfOJoSlNll1f8ncYpA8S05RrfJ8/cRFAWVvHaERvoCzK35gKDxqgwe0N/BULgWY0+I9ou7JYUItLzD0WCJN8tRxz8JKohcVE= 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=OOn55qsC; arc=none smtp.client-ip=209.85.208.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="OOn55qsC" Received: by mail-ed1-f45.google.com with SMTP id 4fb4d7f45d1cf-61cc281171cso5456378a12.0; Sat, 30 Aug 2025 13:45:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756586730; x=1757191530; 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=Db6AT8kHn31VXiGQka5XN8BI1pokFRZDewTGHxSayoo=; b=OOn55qsCDeOzqn5U2ZxklPfcHHFgIABtuaKNVUtQDOljXl5vs4aiLAvj4sCie8f/ui L6pPdjvd0gVB5UwQddg7ePZtYG8ayNiLfAc44uRKjh/mFvmkyIPcmOtmRqvkWOtdnSTW mpDnA8nlZ3bOGQxm/AWQRoe4klFDcwPV1X8nem6ySN7VV9pJ6XhV6vOwRLRl4Js888FS zmCaiqqMsdvSytNdmpdpiw3EOlVC0McJZjrYYfANqQK1cwAq9lJIOYoICdbaF6hdI0CG Ru7KN5d9rg9BSSBTCd/wqI4ZIfOZq5jrOqEGysM/xPnmHQH5fiuSgwEGJrDe2Zn9F55o zoPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756586730; x=1757191530; 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=Db6AT8kHn31VXiGQka5XN8BI1pokFRZDewTGHxSayoo=; b=WkD/dJ+CL9L1QrzkPnyHAnY/QYanKrhQNUK0nyzoF2fFcp9gW32PaXVcrAX4TGN69I 8d9Vs76sBZlTSg4Y0LZyZTGKZRrk67c8qjNdbUJxhiq1GQTePl3aiSz4nlVcAiTjOQfE IVO9TDycR7wRlrJ47yvImbzMcutLGcwKmrLbkzZcZgbQxzcap6ayfCzk6E9FQxR5lqPH /B0HzNH4YDk9Hyqqyqda0HdOzxauBY45RINAiMspqRfQwM7S8ZEcqP3NahKTfCTEzvxt FVjp9g8frTwMi3fRZD10Sy78jcjjxrnDHDdutJ+gaeTYXsQuDj0z5w2oyG4hm2rA/0ct CMrQ== X-Forwarded-Encrypted: i=1; AJvYcCUHRkQOtTf6/kG7ZPj1f9SDJooSUSinY0nfvqte4JvqS6U0lpUE+pqd2/Xu1XLaPd6OvX2952gipv0=@vger.kernel.org, AJvYcCUnvEvhnKz9sUEeecVg2+OTBs8nCfNH+pBHLxYGs4n7aDESIazeaLEc4X6pLriJut7nwOUv4QlTaaeyXhA=@vger.kernel.org X-Gm-Message-State: AOJu0YyOgVBQDnF/xuWjT+lPfvZglVR2BWiK6SjSkG4Ge6lTgzPFhT58 3KMa0+8MfoDR/EImSNHirOtGtGXtSoPQy3LHF5eYSHBFIJvLt/6sAl7o X-Gm-Gg: ASbGnct+uS+vPe2hcvQEvn3LEsOh1YRznH9/i4XkOhu7jRdsY+A0byvDQGRqyfw865f M4AjtKxYqHkEK/n345ernwgkZExE1Qo4L8a+dS5Oj9a2q61nM6RyA+b7aL9jpHKjQwNnz25wmx9 grSaoDVDnVsaW4VH7zjXHFFjmd5CzJQzSy9ol/ByDtvzohxU34W1srJRv1Y7Oznm8pXedHvFSIq Vci0f2RyTm58jJ0qjQwv1VPzUAqRbD9+h7yFXZtb39Lxzsiud+pndSxOpzh4QXw/HRXbTN+G3jb eW9JtvUA+GKDkqXK4lrNAAfhxDSeyGTvxpTa5C2uzpsev9UTndjjOIITSQfRT+Wo7wBnYYbllbZ W8VUCQBhsANg7RZ5gfPtE X-Google-Smtp-Source: AGHT+IE2v0gpK7tYc4MLx8KmlAoqHHLHkCA7poMV7nlhWn8iTJW89x2UyI8Y/kXXSZTK4P3VSO5YAA== X-Received: by 2002:a05:6402:e83:b0:61c:c02a:a018 with SMTP id 4fb4d7f45d1cf-61d26ec8f52mr2512057a12.32.1756586729611; Sat, 30 Aug 2025 13:45:29 -0700 (PDT) Received: from [127.0.1.1] ([46.53.240.27]) by smtp.googlemail.com with ESMTPSA id 4fb4d7f45d1cf-61cfc52ade4sm4066630a12.45.2025.08.30.13.45.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 Aug 2025 13:45:29 -0700 (PDT) From: Dzmitry Sankouski Date: Sat, 30 Aug 2025 23:45:18 +0300 Subject: [PATCH 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: <20250830-max77705_77976_charger_improvement-v1-5-e976db3fd432@gmail.com> References: <20250830-max77705_77976_charger_improvement-v1-0-e976db3fd432@gmail.com> In-Reply-To: <20250830-max77705_77976_charger_improvement-v1-0-e976db3fd432@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=1756586721; l=2821; i=dsankouski@gmail.com; s=20240619; h=from:subject:message-id; bh=4dm9H6pyN/TKQPdas0ArDRI6cymWMVAe+RQOCBAJh38=; b=1SaX/LfBcEA0vkaDhn5flydfeik1qno+rdwPugoIrmJ5kVBgMJfZKY8DH/6TmGoNrezXf9puk bVkez8yL2l8DiutO7ovdsbMB4oQETEohUQHQPZkfWlLLmZmVmYULryR 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 1cd122e96953..de2184327ff8 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 Fri Oct 3 13:34:13 2025 Received: from mail-ej1-f52.google.com (mail-ej1-f52.google.com [209.85.218.52]) (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 7DF8C2E88A1; Sat, 30 Aug 2025 20:45:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756586735; cv=none; b=jld0gTR0FoaD5Hyg0IrqiwR8QFKt5Vs69vz+QS1AhYQvUrOP80aL9lHuOnnRJylhm93tgMTZmBDkEJRks17wH9leplwmBgM5N/fZwFaGPZTA3Lyhl2Cm3ewi1R8MbbwPENt6Xg+q752gXxIa2TJ54+DZ/l92LU3kd/ZTMj5X7ug= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756586735; c=relaxed/simple; bh=qL3ZSipERey4NoCLgTbU79RMORcnpfoRjIAATnOpcf8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=HvT4KXFWspMmrOnvwca5nhGf9C1G93cfSjKQYgsjz9+/s4IQ5qTzYM7nN6+s3ByDCCNCz+RRWbvw76+x/lovNgw2o8e97tg2URS8DUIoP20nJ6daDnTc/u7R/C4Ki5r6UCx+SCJkKWF2p1Ixqsyczu6oaXMlvGHWonuRAzsbYHQ= 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=YmGMQi6a; arc=none smtp.client-ip=209.85.218.52 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="YmGMQi6a" Received: by mail-ej1-f52.google.com with SMTP id a640c23a62f3a-afcb7ae31caso593984466b.3; Sat, 30 Aug 2025 13:45:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756586731; x=1757191531; 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=J9oPXDxDztkt2wKDii5YBhYWKt30/7ueii2AEtKAIno=; b=YmGMQi6a/zdBoLtmSHetlpQ+Vpxvs7a1IoMVVNy7aB2QfvqHWDYVeaXzPOukK3TaiZ kD440BaUKPqjS3wM4DK0xoY/rAbxBQrhicvdJhr35Zf/9KsJi2PGCA4pg9hTdajms6eH GjjUqTl6jwfkh29sHDxg2G9hREb6Agm7Xp+hkHSf8uea/9jUv182B9Cu2dXln2G/z4Lh kfU5r9N3opcR55lAYeOjjhYPnGMBAot2hM6OtEI/LwWgAMp6Ru6y+c39/6kao9FnDk/0 xeRnhOFlJyEU4Uj8oplhZ2TG1+iZxR4DePk070rD+h/6M6ewfK/8iJYYTCpmhlBoV9Zp OICA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756586731; x=1757191531; 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=J9oPXDxDztkt2wKDii5YBhYWKt30/7ueii2AEtKAIno=; b=MJ6tPCvHcqS+YqfnldjNuRriqY+F8PG7xDDXKGyY906oaSRONCv8vWWjrjilaPCq+B GXRctMYzKrjLRHyrukJJ+LS8/sVvuo1Vy3AZO6xScrksMlnKBjMvgnYT19OhdT4eO4sz NMgrICnuEFGR7UhC1HKazGrSzuQLbxoDJJ5XAtWj6q+io/I2jkiUM/v4WmW1cEtoPsNn vG4nInA1HUGzBsloP75GA+ORLIM5yynHHxg/mmGxCGfX4rervcWAz3GyZ4eQ6aFS3lVp RDHKNDVsK4CsId3ud/QMb1EV8M5dV6YLqEfNAy9Xx5GrP5gcb7g0S42wR9EMa5/DJw40 2kBQ== X-Forwarded-Encrypted: i=1; AJvYcCV3c+Dntfzjh3N/VTCX4n3fHglQOBTwwh6Y0bZkwWNlyK6B27FueGf7Gy8L+DJK3KQjz72EU+PZEzdmwOg=@vger.kernel.org, AJvYcCV3eRVfxsjOw8+a1B01m37Hx+Tu78wOO5EVx4DhQVweZjcysdGjnr5YDLYBeWDbbQMS//0ZvGlD73Y=@vger.kernel.org X-Gm-Message-State: AOJu0YxAXjkkImQV7/temGfEjjc+oyhXHJT2rW85FvxNdQ9PuT5JbX8B ybM3t9/ze4kYouVy1fgRfbSlUzhCkVEAa9d4FGzIGJD6QxlK+eem4h9xcjr+0A== X-Gm-Gg: ASbGncttkRmbjlgnTwDTS/4oKIBjmIMPlldnRLNCtss8usEkUsosz8O/HnKUYi4P30h 0oxBsOs4rNAxCEdmKvaIWdPLdC1BLW8Htvsw+Ma8hsHmqGTOfPP6dEOfKf3+zc//Zb7NTV0Ds88 8CkQ+QP1ETFgiRx0lv3ZcSBD00rweZE6wtKNvANa7nR0MaY+AskrlXGSwflFYohfXBmRPvNvHlr pT+x1TxjvULf3a1Bx4fA6dh4GdSgFLtEEjTeqblPDQklJkAHeCKvsD3FyPN8KU0p45NvaQm5192 ipn4bmDuEXTGddRl/h6FTZ3/qU8ASYkXxaKWnuvKmdwrL1X7eBbp8dJqcv+wG5sPd9KFuR/QVSg Kq5opmGexR3f4X3VchXsUWNRBg7DxjbM= X-Google-Smtp-Source: AGHT+IFIDhNRhxBPDeEmI6G63VHRlPS9dVsLEwgzC+3qSuA/VbWECuOqDfBSFtXubhfcyNiCcnsauw== X-Received: by 2002:a17:907:94c8:b0:af9:706d:1e3e with SMTP id a640c23a62f3a-b01d8a267f0mr265483366b.2.1756586730664; Sat, 30 Aug 2025 13:45:30 -0700 (PDT) Received: from [127.0.1.1] ([46.53.240.27]) by smtp.googlemail.com with ESMTPSA id 4fb4d7f45d1cf-61cfc52ade4sm4066630a12.45.2025.08.30.13.45.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 Aug 2025 13:45:30 -0700 (PDT) From: Dzmitry Sankouski Date: Sat, 30 Aug 2025 23:45:19 +0300 Subject: [PATCH 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: <20250830-max77705_77976_charger_improvement-v1-6-e976db3fd432@gmail.com> References: <20250830-max77705_77976_charger_improvement-v1-0-e976db3fd432@gmail.com> In-Reply-To: <20250830-max77705_77976_charger_improvement-v1-0-e976db3fd432@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=1756586721; l=2452; i=dsankouski@gmail.com; s=20240619; h=from:subject:message-id; bh=qL3ZSipERey4NoCLgTbU79RMORcnpfoRjIAATnOpcf8=; b=aNWLnyVh3hKio/qBOYHpieGdSRDqqboqdLHVSsMxjUd4flh8kK5AcnRMuHP4jD1nQBA7cm0Kg ZgRhE+JnNsvAGc4jBf/l5J7238ftj1rDCg7xtkUvqoqxfE4FGfqbXbf 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 de2184327ff8..a1b04ec8921e 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 Fri Oct 3 13:34:13 2025 Received: from mail-ed1-f43.google.com (mail-ed1-f43.google.com [209.85.208.43]) (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 F20B02E8B7C; Sat, 30 Aug 2025 20:45:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756586736; cv=none; b=rZV0cHB8in/Gp/dIHrxhnxTtYryue5HiXoe+oUgS9zbX/4K64NoknxvLbOwDOx9q7V42k6myQvWTRebT8WiKcq19ypXzPyKpHWQ1N54bHiFbU1/5VrS5ap0pHxybv3q/8RNYv1A3oEJ2UhF2qH7aaQ7qV7Xzf5k8MZw+M3RKaVw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756586736; c=relaxed/simple; bh=pgFJbrzzXm2uXS0F6KuhyNyYP7mNCsrHTRwj+5OYY2c=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=hHbMRcXUTlmPVvz2GIo3ibeOhjO1sm3NeqiWQqyhiJKnalBDxtCxuiD4nL2ZT/LeEMTFwS8EX337onLL0rXmpq9Hfhr9aDgVbdzGjujUenlUQlUinbQCp12G7oPy7OrDQq64lve8QA4Hl136GoeeUShds8JBW5YSOSw1tBZVgLw= 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=eb9DquqY; arc=none smtp.client-ip=209.85.208.43 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="eb9DquqY" Received: by mail-ed1-f43.google.com with SMTP id 4fb4d7f45d1cf-6188b5b113eso4149332a12.0; Sat, 30 Aug 2025 13:45:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756586733; x=1757191533; 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=BuYZl4hDocKxNtexpNOJSI/v2c3MTZcBnj9w0cInRaE=; b=eb9DquqY9sow0Rc45rEMH+Yjg7p/bcZO2DqY8NkJYfttlJL0kjH6k7rVqK9jsVG+dV ZaOXQnnEhc3mcn9aldIMuzB6xnntO4GvtuZnxcC9EXxngO5vLGPGKxyHrLmRv55q5A8V X1APEyqkNmnudg3ImPrYVbA0o7rMcIilTX1oNqMBIiXyM6F5fZ8l7dpTGN7csGWxM7M0 gysicllHgr5J+V9/8pIK0KxDle5WJYewTTP6ZZ9NI/gDw4GZmtfHBmYumBnPJYoPhQxR kon3WAunOR4v9XfOity60yF3fWanmuzBZSWNDUcAkXeCY9u+AiGPvZUwz+mFU0jtN9Ap KjLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756586733; x=1757191533; 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=BuYZl4hDocKxNtexpNOJSI/v2c3MTZcBnj9w0cInRaE=; b=KUUOpWavMsvRIwYGFOTpNNwAG9NbYuDdo6Q4SKst8wUr1DhbBGQBiLAIdDtFO4evr8 jxfprOrFbUnbfpLsCVCsq+pga5BiEe3Aau6tD4aw2L713i+/3jca2m369z5BkhLjDje0 ssNXZXlnQ6JcKsMXTvmWxqlFYO0GWzILrHWFQwKcsnrd9jvaRyi0pGeJRH7UqQCPZPHB VeilAj/I4ihe/MdhoZv4S9EQdqxqtE7or0qusVxLtTaDbtif6RjkSwajA/IoTN6ck9da uwOsG//SMQlCeXSuMyTQ0Frc72BeNuHPGGR6YH1THe6wURxM7qCkYhW5cb6dQjihA6AP mP1A== X-Forwarded-Encrypted: i=1; AJvYcCV+Gtfu/R35k0dveHDDkqQ9LVqe+5HpfOQqMc8zwodW8tqNyqAsUNkjt58cEG3biwMODcfvnw5SJKQ=@vger.kernel.org, AJvYcCXq+NwS3vrDM5Dr3Vpj3Dad/PkHiQFBUlQeQ4a5TZTibHYiuyO5qZYx4Nt7FgOlBLxkgw+Fsk+Jbj+x7tg=@vger.kernel.org X-Gm-Message-State: AOJu0Ywm1/qmeexVSByxYvpJ11Y5EyhEUsfxss1KQvRloyItncCeFPQr B82t+g9Avc+rLOS9Bxm64tV5YNIUIlUkjwFUNB5reHXdqpiOzn29ZzDG X-Gm-Gg: ASbGncsfGQUygyPxjCm9HSAx+5r8QURH/Kuzg2qHboU+G2jhmAC9z2W0L7fIozYejR8 vSTzc+AKX44CGh+S0398XydeILKCOTRX4C9zYW+yxqgrfFqMBRKuCi9o6jN0PBGaiS+qBbsBP3r vfltDcWRCgfj+9fSr4YU2Ol3XrBvSdstoIKzBKwl79+zSMKk8wms0x5j/hLefye/oVLqJy712wo 5nVZ2nco4ytFcFJMBQ6N0QpWxi+d6pf23EZYzpBPmDDak4LxpKtWj7jMmOPOcK43BBcCtsYAuyB zgkEVKCmp/m2+ebVdsQMacdfnZaXkS4J7u2T9v2MXv9iW+isRsFHu4COui+bb63YICJppjXtXia NQuWL8hL0o11BUQMD6poB X-Google-Smtp-Source: AGHT+IGVSi0cR7Mklv8cW9/vAvsxyOId06xnQwIQTuSGyrpGDhl4MsZng5aqJAzG4okkGeVd5Pzm4w== X-Received: by 2002:a05:6402:4406:b0:61b:fabb:6d0d with SMTP id 4fb4d7f45d1cf-61d26ac3cc0mr2469435a12.5.1756586733148; Sat, 30 Aug 2025 13:45:33 -0700 (PDT) Received: from [127.0.1.1] ([46.53.240.27]) by smtp.googlemail.com with ESMTPSA id 4fb4d7f45d1cf-61cfc52ade4sm4066630a12.45.2025.08.30.13.45.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 Aug 2025 13:45:32 -0700 (PDT) From: Dzmitry Sankouski Date: Sat, 30 Aug 2025 23:45:20 +0300 Subject: [PATCH 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: <20250830-max77705_77976_charger_improvement-v1-7-e976db3fd432@gmail.com> References: <20250830-max77705_77976_charger_improvement-v1-0-e976db3fd432@gmail.com> In-Reply-To: <20250830-max77705_77976_charger_improvement-v1-0-e976db3fd432@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=1756586721; l=3504; i=dsankouski@gmail.com; s=20240619; h=from:subject:message-id; bh=pgFJbrzzXm2uXS0F6KuhyNyYP7mNCsrHTRwj+5OYY2c=; b=nkiVN5jxRf/7eCjeV4tcxwW7PFS4DD+9jYZVEJE7c4du0WtobjdWDvccyvaBgpPAUf0kwKoqi lHt0JqrAMB4BNvL5ILBgpntBCQ9W5sbSEcimbasdNf/HuJcmkuHBjQu 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 a1b04ec8921e..aa0ffa1fde39 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 aec908ac5c01..df1d46ff9527 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 Fri Oct 3 13:34:13 2025 Received: from mail-ed1-f50.google.com (mail-ed1-f50.google.com [209.85.208.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 3B5AB2E8E06; Sat, 30 Aug 2025 20:45:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756586739; cv=none; b=YnThbgYiGwlj6HgR5T7mDIUZ1AMIAaGrhTrWGuWKFo4nMEj3zwLdWM1IlK4H46WEg+hSnXl474iEe0evM0wwAkFIhpOK/v//jpLnOHoiZGUz61dDAtSqzJ6SqYgNfD6Fdt9ks/HR3yq2csP/cI0OyCdaz6vMx9rLnTLybF4uPog= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756586739; c=relaxed/simple; bh=S8wA9UdQ5E5v3yPjedQZo8H7UmCEzzF2uKf/ng4Pfpc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=QWQEZRWEJK9ZK0Ow7r1awFKelkwp/yx/ajM2pbN9dJyxK5lLdmoZytf7U39x7GEZ4zarp9zv5YnAiM2/JU7lOdibfJ1k7mrV0zlAcdBZk+ZnBMAnYHdzeEI+IgMROSohNz3F9WPNM8uBy41+ujmlx8TNnLqJrqy534YTQSqdAUY= 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=E6GNdgZR; arc=none smtp.client-ip=209.85.208.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="E6GNdgZR" Received: by mail-ed1-f50.google.com with SMTP id 4fb4d7f45d1cf-61cdab7eee8so4300654a12.0; Sat, 30 Aug 2025 13:45:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756586735; x=1757191535; 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=ojj4EX9E9+QuXRFR8+Z8Pz59iiFPjmpbXvltYgmJi6E=; b=E6GNdgZRV3KFVhXa6/XG33xGIrEc9vqw14sb3SLDAtXMcq1cq0aHhn/V7GRAIjgYSv idf++tlDlxUuG0Od4Q4KQj78GP3osoBk1waP+STMTo6Vn1m8ihxXVgDeuGEAbRANa+tN dau6sjcayuHIsBIucJmrEIcjEYBSZq7rJo0wTxk46RWxylATe8cmWr4leNLxJxhNAwJz unwhgAiEAfarj1X9jlenvb8DHOhvt3EyrzxlhwyOVhaxfyQC7kSY1UbbehzTNsfQdla+ 8V8WlRQdXpIQkeqPv6PHztafJBAUdxVVocnSnHiaLe+b8+w/AdAJtmeO2f7yPLF8BRK+ 6r6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756586735; x=1757191535; 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=ojj4EX9E9+QuXRFR8+Z8Pz59iiFPjmpbXvltYgmJi6E=; b=gV+6pfX7ezygEYhuIIvpp38igMigGYksV/ZlVLZ/J8bDrocrS4kPqOcTFOLud2hvOS CEVmdrvvbdXZOWFLVFtHfkDYS9AlU5qweMmkvHiTmfIez8pFsXo1YlNq47H4eQQlwO4q oZsBz6JuTEprbh3+89T6iVJOqVp251DoF8Sz+gwZ3CEWoAtW6lRnq7bYkcEXnplBoZHB 7RJ50IO6vWB5KEUWT9lGZNDdu06nXi5uMffR4A08FLB0cQIdoZfhCzH+/FqkyE+cdMhh v0c/YhRypLyonqGDJyeRQnpPMhIqJY9wRP8rCA2enA7iYBH6SlKVWGZyUanvElsfSgH8 rFNw== X-Forwarded-Encrypted: i=1; AJvYcCWKO2mhBFOcOCt0NRcLImMHVJ3Q3fV0vRIyQkhC7j0AhxqjgtUbf0TCMCxW/YdZ8zrYQd1huAo9VQ21xLQ=@vger.kernel.org, AJvYcCWgdnDpAr5RQS8jGOdMFIqoVfPK7TliTyIzKWeb2Jog0nLkkEYdsfCpnMbQJQt6MtnwhD0nBYA+hjo=@vger.kernel.org X-Gm-Message-State: AOJu0YxJHx3elp2YqFXDs9ORLWZ5+6M/2ve5CanxMEFYtuv7pW6Q2ZVQ lPmpJlnPJD83deOmOqyZ4ZE9KS2qvZj/lNTAk+p+mPdXa+bu+ZgZNVsV X-Gm-Gg: ASbGnctCYPAs0hrSS9fDp86+8fynyr3cc4/Ooh+GYc25bHiLkZr5G1kTmsNHnARV93J F8LIx6W9pNv2BBjkEOoZSCFZsB3fnAwbamNSci9VQCOlYuGs20JU7wseSb8px7wMkcAh/fIZy23 Hw+hiFIi/DCsaoDGphH2fQdUwqQY3xQRLsx8L+frWC6kSFX+ZT2lP3WZx2dmqRbFOeid8gr5dI0 Wb/z8PP4C+fdchMTwgZ1csw5ixX4mwiZleGAVS1RbWqds5/watMtbEBgF6Sk8otrkovVINzqq7L vBBFh5d/BbXhdmdlOprUGr0RLsMdDYPhbxIp5P4xinkTkSxh70ulwBqPTxHcjq1dUzUJjvB9rdY +DkVuumxXP3OInGQALzep X-Google-Smtp-Source: AGHT+IFMB0KRIEjsGUMyDSx26lgjw4lMYDOCC+pvuKOzZnu8AUX6MDzMQQE9vlbLK1xIck4VdoAEhQ== X-Received: by 2002:a05:6402:510d:b0:618:20c1:7e61 with SMTP id 4fb4d7f45d1cf-61d26da44c6mr2730232a12.27.1756586735373; Sat, 30 Aug 2025 13:45:35 -0700 (PDT) Received: from [127.0.1.1] ([46.53.240.27]) by smtp.googlemail.com with ESMTPSA id 4fb4d7f45d1cf-61cfc52ade4sm4066630a12.45.2025.08.30.13.45.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 Aug 2025 13:45:34 -0700 (PDT) From: Dzmitry Sankouski Date: Sat, 30 Aug 2025 23:45:21 +0300 Subject: [PATCH 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: <20250830-max77705_77976_charger_improvement-v1-8-e976db3fd432@gmail.com> References: <20250830-max77705_77976_charger_improvement-v1-0-e976db3fd432@gmail.com> In-Reply-To: <20250830-max77705_77976_charger_improvement-v1-0-e976db3fd432@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=1756586721; l=4101; i=dsankouski@gmail.com; s=20240619; h=from:subject:message-id; bh=S8wA9UdQ5E5v3yPjedQZo8H7UmCEzzF2uKf/ng4Pfpc=; b=useLmRmUe3mcbezYRXXnUOe4QSOVjdUlVaZq2WIJr1yF9lI/e1Q0omlEcwnbRLTkIey2382T4 wV5bHc+runmAm1Q73TUTf3FUlfGZdgGQqHHAdgIrNUtsP9N/0DtI455 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 aa0ffa1fde39..a82e32483ae5 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 df1d46ff9527..da048dda4e44 100644 --- a/include/linux/power/max77705_charger.h +++ b/include/linux/power/max77705_charger.h @@ -124,6 +124,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 @@ -186,7 +188,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 Fri Oct 3 13:34:13 2025 Received: from mail-ed1-f49.google.com (mail-ed1-f49.google.com [209.85.208.49]) (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 24D842E92BA; Sat, 30 Aug 2025 20:45:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756586739; cv=none; b=KObKbj2nFHGRk0SA/AXm+BebCaxb1jry1iz8iZxC73/skoPJlOkjwe7pULWGsKw+h+o1FeBsChbfpba264ceOrmz75v8chFQedrS0RqvFVuPxNgoctHWKofL+711lhtJtR5N5Y9v/TPKv+YS7z4sxRigYE97CDZEmor1LNDb69g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756586739; c=relaxed/simple; bh=Art95FP4CDMp3B3wO95DSHb+3nyZc8ObS8pqSfOsfws=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pjEAL/3IuXhr28WG7fJxtC4CuN1vSKtt2CEYDzj7LET7xtP0p3CYc2AIdDJc5ZQZEZXRTHgKHx1FPrEf6s3f6yJjFI0WXqo8uAPcAibNZUgpGfxRXrfWgw6dDe0l7GNxKxo80vqWi6K5sqyhGJ8H4NkfoxeJq6cIfJiyv09gO5Y= 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=QnKAvOXH; arc=none smtp.client-ip=209.85.208.49 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="QnKAvOXH" Received: by mail-ed1-f49.google.com with SMTP id 4fb4d7f45d1cf-61d143aa4acso1813837a12.2; Sat, 30 Aug 2025 13:45:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1756586736; x=1757191536; 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=QnKAvOXHCdybYdgxmB0Teh7+HJwkWKcFeye8zyazyX+Jb92/4bu0LOpzBJr+W30mbd 6TJe8W/SxhdAoGGfmtaugXUz1aFUlSjb70L/2Ig/W37jOap9a+n4E22stDTcfe3NfVqV tYQVb5U1Pvlv86rjSaUGWe5Eb28iP+6l8rAScB13dyZNAJ+TdLh0XS9AGcp23xWi9vwV iQyhsWR71EePRXq5GLz+FngPjsOsXToOWfJFTKK6/hOAC48VPbxQUSW9XXsigUOt7uTC pJptg7d+2EKFmZBzJqtnUB4OBWT3V8ja4uZUkn0ESUJwPttgyMNqVFLvbe0KGSp/q0jm yHoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1756586736; x=1757191536; 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=BNJWCoNULRXwaUrnM4jg2fmRuz8jTleOj/oyjtl+1QKQ3CraEJ7+sInSgfQOuden8S 6DwpbCNsBCQvwm0FvMOLdVqo2sPhwPuem3CSVHiQdw9XdZYozxW+pd8dH7EiBjiZE160 9YMn526Dizl8BjsVv2n8/YSdauDEo49oNfDquN4C6Ivyvpqgnhvjy10BvjwsT2LAZ/oB NHv3ybq+bu543E67x1pxAZ17wCbuhD2ASQKTXh9KLt20D+HGR9TY1TFzd6yIk/yBecKD WJb8SvWrMsLtrHZZog+gSedxN5rt+p4gl/vZn/ii71awtPEQ+2FDBspB6Ti/O91UmCEX zRaQ== X-Forwarded-Encrypted: i=1; AJvYcCVY1HbRM+fAUYQSE7DRBhi7T8bUXKb84ts1z3g/gxgLl9sAItq5DWgZN35aEjG86o8oKZcecz5D0wgYoVo=@vger.kernel.org, AJvYcCXRFbn4PG/W9Jz4Rqbr63iXt9wDIfGERNh26YKZHnjUp6B4DbVeAzB+WbIZB6K+aWSuwZpgSU4EdfU=@vger.kernel.org X-Gm-Message-State: AOJu0YyFzdOXz7q4lRg+vFYs+v1nLIBHWGDLDAAT679NvZw620wFhGG+ bh58uY2ifYq0PJ3zp30nVTQfPqkETlqvzOL7vk39sMTyM2EAqYhe1+q1 X-Gm-Gg: ASbGncuudHQqOWr0MrP6QJnn3fkL3fNYfsmfW0IU0YCH1CKIoBC5BwoaKi33yIL0P/u uKi/AGms2QeTDz8s3DyWcKaoU+F3iQIjVROuguITPlZyAAlhnGaTfvmdVKwFrY95WMS4DM7zZ2v qFkNwzcH94mbumTkAlknHdDEMcvPstEtE1BL/LiOQZzLNoNstlxNSW9MpLVWKjSHDUyiKqsClwn EK0k+/SR0OmEOTWZpTLroFYDsQ5cW8sXLHh8RPnPoLP5sa93F5w8sK1Ix9hoc6Yjy6G3zkDuSlr 0a2QUcVBSF6gjxmkX6AWmpliYwi/vd1F0JN242HWEwD7/CgJYbuVDCi1GJCZ/lKfyf4I/6Fm4TT uIw6k1fEhmH0KZ/4dfDTyMQs1hX07kfY= X-Google-Smtp-Source: AGHT+IE/wlt3X7TmzHIskQQpXtDBkPNymzOhbMnbsts4PLvb1yJxrkVR+VxXEF1qQCKREuRPDsHB8g== X-Received: by 2002:a05:6402:4491:b0:61b:fca1:b80f with SMTP id 4fb4d7f45d1cf-61d26c32daamr2242690a12.11.1756586736415; Sat, 30 Aug 2025 13:45:36 -0700 (PDT) Received: from [127.0.1.1] ([46.53.240.27]) by smtp.googlemail.com with ESMTPSA id 4fb4d7f45d1cf-61cfc52ade4sm4066630a12.45.2025.08.30.13.45.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 30 Aug 2025 13:45:36 -0700 (PDT) From: Dzmitry Sankouski Date: Sat, 30 Aug 2025 23:45:22 +0300 Subject: [PATCH 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: <20250830-max77705_77976_charger_improvement-v1-9-e976db3fd432@gmail.com> References: <20250830-max77705_77976_charger_improvement-v1-0-e976db3fd432@gmail.com> In-Reply-To: <20250830-max77705_77976_charger_improvement-v1-0-e976db3fd432@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=1756586721; l=2453; i=dsankouski@gmail.com; s=20240619; h=from:subject:message-id; bh=Art95FP4CDMp3B3wO95DSHb+3nyZc8ObS8pqSfOsfws=; b=I9Z5rYD5MnLmwXT+loEFJSGx+ZPaRiTgjvdcu5BXLWVxcR0k3IZCUwp5aGgVf5BBzdwUlrsq1 zlFofN322PTBDSeZVhcQQEZfgY8liUkl422sJy5VAQtn3oTA1gxF41P 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