From nobody Thu Oct 2 09:21:19 2025 Received: from mail-ej1-f46.google.com (mail-ej1-f46.google.com [209.85.218.46]) (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 3396230C100 for ; Thu, 18 Sep 2025 17:06:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758215213; cv=none; b=ZgqlqZcI/bI5do0E23Bb80hxDLbx2KLcS7kpXNIXIGQkS5SYSGxZhEdLdQewlhdqxkLv+UbX/xy0JScwywNjjpnr3FQommur42KOSHIwUAeGP/1ya5g8f7/xLJU2YpIC4M1KKHGnSqpfPlj5ZiF2M4dgRa4Pl9VNZgmOpwknqnI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758215213; c=relaxed/simple; bh=Art95FP4CDMp3B3wO95DSHb+3nyZc8ObS8pqSfOsfws=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=IEodK0UScuMEEwbsI2k8YYWbE+RZgrWKy3ZgpqHyMWUYmmF0ge9JJEUdhWSK8gB87w9rv4qf2lPvT0igsXqqajM+tEB0HTTHLd/Zi3WAIAPP71C0wn7y8n89zyBKM/cZntT6PoIW8qruerJ2uNoERDyIA6JaOuPDTxNf42oYFb8= 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=mf7rDI/1; arc=none smtp.client-ip=209.85.218.46 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="mf7rDI/1" Received: by mail-ej1-f46.google.com with SMTP id a640c23a62f3a-b07c2908f3eso189132766b.1 for ; Thu, 18 Sep 2025 10:06:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1758215210; x=1758820010; 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=mf7rDI/1JtRj3AHaE61zu3VP/d4DBGd5WJQd9G3IUaHWw8B6h0+L3CjqAXHwt3h/Fo GX4JUviX7iDDpOVwsv1Yyfg2CzGP0+taXkncR2ksBGMLcEVqYiY9aRfXWJqn1JgMKJMh BXjJOhacCy9KDu0xXX66bphujjzh4WL7tD1s/r0Mga3tMi9hxEAdVY8HSPJLbjIfROBC yOz53dWm38F0/Lepb0nlcjtNOYeWIR5u/c8bl5MqT2gr16VtHaTTsvJ7X1zu/K5IxDDx pk78D8UwQLHYWuh+l5cveGYa7DfMq6jeIFMJypfsW9CfDcLsZrA2J332HuMLCm80Gvsd Qy3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758215210; x=1758820010; 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=B7yZjUCuuEHXRV60FNi7tcwOW22XLDihldxCHyb2REvfBn0jEZTqsNEfkkIESE9Eyw wxYnG0Vv/mF63s5lEWcTuU9JYNqfNApF34Kyr8c8SHikmkcBIULftMIq5YPvys7w2ZHQ OD09ltz3ZhPfX8hibztn55VtBDLVSPQxP7ui5W2pP9VrE3BDXzjPLeLc1834qzkiNhfF w5SbC623kt/8gXlKC6T3Dd+EnsyYhKF/EjVXhqZ0O2Z0CMXrRh93xlN26rsot6Tlw1/I PCox7zWQ1SGw5HMuedhLSwsXi0rjN87++3dO9ifGhsHtfgMWfHuFss36eOAbBO6uFq8e d+Jw== X-Forwarded-Encrypted: i=1; AJvYcCVtuq7OBSa7aSTzbnA7UgBtWSo5MRzaTu3adkvU78ordbn1L8+21LRM2tGrILC6EYWG1LSoWwo4Oc2z0j4=@vger.kernel.org X-Gm-Message-State: AOJu0YyBnz/w+0GYfaAcfIG/WrYP+coXaE6N1hhVUwasTPMPPd2o30dq 0IBp5EE5tkLanP0/5UKtQRxMwO9qPrYctm1mcxh4Ofw8OxvJJdgPC1mi X-Gm-Gg: ASbGncsfw5Xk7cD5fvEgRn4qpxY0DpKi2i/w26b+4R0t4UAARluG8GSg2osEgJO4YkV UyghCR3WJGZYPB2aAdRO+7CvUl29Bn8/C67Owz9C8sn8QnRov/aWo452anB/4IKt0K2HatmjMWL Uy333kYgg5VYLQeF+3X2H0VF8SAHv9od4apAlBB8pM9n7T3LjSDwKVpuI/SY+Hiudu6lPAYZzRu bzDqF+KfpvnRe/H1yRzsyQtV6QySQENYysjOKjW3o62Iqnf9wrd3RK7IphJq5YKgMKpwufpy9Vr UOMthUKJ3MsNP43lhHx5SHs1x4BkFXOg3H2qeg7OCLCesH5UERfnJ+hevZSQ/ePvD66ZVNNiAgl JJCH7mvMHtLapcO4MvpUkxfm0tpXJE3XTAXo4uLw= X-Google-Smtp-Source: AGHT+IGAuKIadp13aCfB47IRZfgI20SNnptoUvrYGmJWsUJGXaJAMNWHhnQ8QfEc5ReZ/ElIYKU62A== X-Received: by 2002:a17:907:7296:b0:b04:27a9:cfe1 with SMTP id a640c23a62f3a-b1bbd49d74amr671497566b.47.1758215210055; Thu, 18 Sep 2025 10:06:50 -0700 (PDT) Received: from [127.0.1.1] ([46.53.240.27]) by smtp.googlemail.com with ESMTPSA id a640c23a62f3a-b1fd271f895sm225845366b.97.2025.09.18.10.06.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Sep 2025 10:06:49 -0700 (PDT) From: Dzmitry Sankouski Date: Thu, 18 Sep 2025 20:06:45 +0300 Subject: [PATCH v4 1/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: <20250918-max77705_77976_charger_improvement-v4-1-11ec9188f489@gmail.com> References: <20250918-max77705_77976_charger_improvement-v4-0-11ec9188f489@gmail.com> In-Reply-To: <20250918-max77705_77976_charger_improvement-v4-0-11ec9188f489@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=1758215207; l=2453; i=dsankouski@gmail.com; s=20240619; h=from:subject:message-id; bh=Art95FP4CDMp3B3wO95DSHb+3nyZc8ObS8pqSfOsfws=; b=IJqzlXgKsHMAXEj3GQSQT8jwEsojD7g6pxkyxGxRxJWnETbMhiatOuO09zydhtuP0cHGtE2fn TzOfOlpwItHCS65iPOWBsDu0YqzUL4Vv82mnsWLX6ciLJfAWV5SiDnZ 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 From nobody Thu Oct 2 09:21:19 2025 Received: from mail-ej1-f46.google.com (mail-ej1-f46.google.com [209.85.218.46]) (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 1FD81308F39 for ; Thu, 18 Sep 2025 17:06:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758215214; cv=none; b=coX8j0JRt+A7tBSjn0jr3jjad5v3hhx+R9MDq/DC/2EmB+H2TFnpnoGR9AUMVsePPL12nLsk25eB6/luirHDDg/PlXLI6d5QAQLZt8BFgZHZXQ83em+ysI8t7OIh2NYr2KhGcbNKdjNnBYERktYHD9ioGrRlDo3FlyzP5hDjZH4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758215214; c=relaxed/simple; bh=ud3n6D1ohJwT1gs/SFf/aPQf961smhUDzNFZvPxvybE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=giq5O1whf0Eriwu0BW5DyM9eSHv9tZyVDOr7zRw+kt2uUdI/sAi0yNzY/y8HwDYNeBhuoPhckoFDFfhTsS63m0MAZOUYSL29W1kUYq5LWFOpwEJnqvNXD/P6RxlS5hYx+qyR0qUFkZzUjMuS52sVsAO++n3iBVZoZSVppL/8LQg= 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=SVUyHkgD; arc=none smtp.client-ip=209.85.218.46 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="SVUyHkgD" Received: by mail-ej1-f46.google.com with SMTP id a640c23a62f3a-b0418f6fc27so204853766b.3 for ; Thu, 18 Sep 2025 10:06:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1758215211; x=1758820011; 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=fWsr8e6vH5fTx87zU6KQFrQxbge8SZ8hqdc98Y5sKN8=; b=SVUyHkgDWrqeqGGKODHFjA3Mo4WTAT+aR0DQu2P9//8WWpMY1QBEQV1r/tEfdcskEs Ok12q8+mW7UQZ33R+jODIC1HlGbQ8+3ync8P7BjnLMHf0F0Eu8Zr20qxlETEEraDo/l+ RC3Z4JCovMxSYMerxGwdh0KfJJ5c6oPw+88tjaTJhZPN0yXneKCZMUYkIzi0CNBAwVK7 TTziVP9b8RHnPPiknkwtDLcf8cLoc1t/6fQjHvcFYUPCkZ89zX5qocND969n1K+Wjj53 T1H9Ucjrj8aZCPxKv9WPbZuyCUDWWvX0VmbBWMsl7Gkn0O8SPf4DnFTTn1S3RsPhhqCX Pq8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758215211; x=1758820011; 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=fWsr8e6vH5fTx87zU6KQFrQxbge8SZ8hqdc98Y5sKN8=; b=cwD26uxbGPjlN2cOssiIGSs1WCeiFxBA5FCgWs569jj6cES6AF/Zb8ctmZOn88f6SX jqxnYTHUPZcqP3IDUB1gS601DmFlKFp3aPM0vrXiNi0QJqi0HeqOaGelK4LLULHwWh3P HBHx9rmbvo27xNGBhMt3+mMYH6mi/FtAPQZWG3pdzLvtkLy5cMUrFRXHjxtJGiXR1N0S e4jBNdxt+R6FdCr8CXEDJjjDlJxqllwTqcRUeipC7ge8SqOBjwnPS/WyuCjDg2dnUm77 hYn06m70GLYT5tGLQ+CetUQFDyTYE6juI2UQPZc4KuZMfLZLIEDXPKkIrDbERX3hQANu OYfg== X-Forwarded-Encrypted: i=1; AJvYcCUK8aO/MCOP0NUgeUN1RMGPIQxxH3FW4a/ABFK+7GJNr5KScR80jMqACaqOUoVnQspqFPf6ro4nHtTFTEk=@vger.kernel.org X-Gm-Message-State: AOJu0YwyDJR4zLZj3ruO4MamcMUUAWRagw7rywNt1QAyQOzCCaI0pCKy jdCxxK4mn1JJIqm9PEFV73whCQwd84zq7IpcPdi0RSeNLzLPuxserNDe X-Gm-Gg: ASbGncsEjeFoNi5iHZN1Kqja12k+YBB5PHIHqm/wP7Ipn0qkivj0JKOamCGv1qWuqnI RapSX+GMM1DEPDJIwNtZUVVEnIqyLUe1cdToszqUDJUBItXEB/zw/iQFDdWFSx/b6DoZH0yYtFa avlBwwX36YA91wFSxAuzhsVt+c6NwDfX31UTlx9HcLdhGjNWMwxlr1ad8hwIHu1+0UNYolWTDOO co8PEDqfFsbKqu0G3vFjkjC/F1jWSmEFhXAvZIjjBJPOujvQatnOaoDZ/LrmwflgdlgNfC9miUh zb/IQCL3c5NM8SN80nXTG3D6Y90kDI6sLJnuSr1CCbgxotHR+ogR40ROQH1YRXiSa3cBaSeuIq3 vtGRcPsQcxt38TaZH7O5zUGfUyF771oN1/S1msB0= X-Google-Smtp-Source: AGHT+IFO7H/oRfjej8T/40hL+S0Y+BHvYcFJrb/QGkPp33/o3RN4Yit5ipR+4qxch1bmEHnpcoSsKw== X-Received: by 2002:a17:906:6a1e:b0:afe:ffb6:bfaf with SMTP id a640c23a62f3a-b1bb50c4058mr788419966b.3.1758215211237; Thu, 18 Sep 2025 10:06:51 -0700 (PDT) Received: from [127.0.1.1] ([46.53.240.27]) by smtp.googlemail.com with ESMTPSA id a640c23a62f3a-b1fd271f895sm225845366b.97.2025.09.18.10.06.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Sep 2025 10:06:50 -0700 (PDT) From: Dzmitry Sankouski Date: Thu, 18 Sep 2025 20:06:46 +0300 Subject: [PATCH v4 2/9] mfd: max77705: 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: <20250918-max77705_77976_charger_improvement-v4-2-11ec9188f489@gmail.com> References: <20250918-max77705_77976_charger_improvement-v4-0-11ec9188f489@gmail.com> In-Reply-To: <20250918-max77705_77976_charger_improvement-v4-0-11ec9188f489@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=1758215207; l=1975; i=dsankouski@gmail.com; s=20240619; h=from:subject:message-id; bh=ud3n6D1ohJwT1gs/SFf/aPQf961smhUDzNFZvPxvybE=; b=xypHKca0j5M1syTuCeKPcjcuJZoX++iQSgCUF6/BcZw/D1MOYGtqeSQwA84yTFR2PQXqNZ7Eo q96B/Xz4Zg2AvK3XUE+S1xsKrR7DOO/5fw4tZ8H5AOjjyKUjVv1+Piq 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 Acked-by: Lee Jones --- Changes in v4: - commit msg: remove blank line between tags - commit msg: change prefix in summary to mfd: max77705 - add Acked-by: Lee Jones tag --- 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 59090703cc7a..b8f648dd4d63 100644 --- a/drivers/power/supply/max77705_charger.c +++ b/drivers/power/supply/max77705_charger.c @@ -487,9 +487,6 @@ static void max77705_charger_initialize(struct max77705= _charger_data *chg) regmap_update_bits(regmap, MAX77705_CHG_REG_CNFG_00, MAX77705_WDTEN_MASK, 0); =20 - /* Active Discharge Enable */ - regmap_update_bits(regmap, MAX77705_PMIC_REG_MAINCTRL1, 1, 1); - /* VBYPSET=3D5.0V */ regmap_update_bits(regmap, MAX77705_CHG_REG_CNFG_11, MAX77705_VBYPSET_MAS= K, 0); =20 --=20 2.39.5 From nobody Thu Oct 2 09:21:19 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 3C726314B93 for ; Thu, 18 Sep 2025 17:06:54 +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=1758215216; cv=none; b=Z3AE80vRY+GBm22YItPM3ux49vM7t8xpsX6oPjRfNeNajbr+Warzhca7J/q2qZFfTd/5LKPYLjCZWCsfta8Qw9oVnMZdAWDM0CJgTlxgrtYwP5HCuWjrp1xNRtopZhmC5prTMAzfJkQ7D5oR1h4HARa0SMYHzXZUysmbuZnqrLg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758215216; c=relaxed/simple; bh=TwNup/iXllk/aE5uv69gK2pIQ5cN9oOrdUW6G6HU6cc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Z3Bxz5Y0egaDM93gHcC6L+kfAXrVRCjC373MFy4sVCJaStVepYp/R9c1KZTvGiQFZW01Lxvq3YAPXr8dKD7Xw547HBImu8Ee44BQnptyYOz8GaCEOon+Ibbdn0hShSwEIot17OONJa4anBNI+rN/2BE9HmVfO0xwOidUvYlpTlA= 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=LAUn69cg; 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="LAUn69cg" Received: by mail-ed1-f45.google.com with SMTP id 4fb4d7f45d1cf-62f261a128cso1900121a12.2 for ; Thu, 18 Sep 2025 10:06:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1758215212; x=1758820012; 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=KhSbgW1VzSDstLgmluAXRQW27SnUfK5wIY0vgvmVoX0=; b=LAUn69cg9m09qz6np1dmatJTANUnYpkTu77CrenhgygsV9yfR6HSN7M2SB1pmFoADL u0m75Mx+SFd3kgZj0HyLUc4GBtruniPvFkdRBLgQC7qIjlw0z70LZrHxy67pkz17vlZF YAAcquYqUywVXPNNVUM9L8nw1v1ed/5HUsPpImbljqqC6sEyhxgf/bEIYHOrDFipbAP2 bDlTl1fV0TzM3RzLg9cv9Kha0gkYTNjgJdk18eNQjo5TJM/ZTa5iK4jfHmI+9g4KcnAx agXLsKcU9sSpENG8GX2KRO5pGt+01K/a16OrsakRwcmikUbH595j+qenPO3/1SbY6eQc YWww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758215212; x=1758820012; 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=KhSbgW1VzSDstLgmluAXRQW27SnUfK5wIY0vgvmVoX0=; b=peE5/98DLV6LLwj9l37dbVtV0lxiYyfwkpiikEgelFqXJQhOSrB9wYWQsgKjjGU2NM 8UzoXjYfHDY0V5XzPpe2QevzkhfbzvMy7kejuJEqQt3Qdd1iQ09MlRq5Cq2Zx0gIEkU+ 7Zgki5Xdrs83jnWSwieY9wYKyeHkXA57oO3+kQ/zhmUvQVnmdQvvkN0iWtv6oOOfWK11 svF5Uuss5YVtznieBVgrIWOWDqtcLNFthCzhAS2aBJBjmG8Owbn5eNBLn6OZakBqGN/1 jAXAr0V4p6hMHnH6EG2n9KqUNfhjhv4L+oH6f3j2j2zVuTcP+5bO8pFHxvxgGI5f0qxD E44Q== X-Forwarded-Encrypted: i=1; AJvYcCWbYqAOLueSzUmy8xWXNhKKd1sUFnS0TmgBcSDc0MYsSN7URk7GPyVfeXdG2Tk4l5yGl/0mzk4+m8xRaGs=@vger.kernel.org X-Gm-Message-State: AOJu0Yz1ZWd1Trlu/tfcFHnqwB9v6d7YwM2i6p3gSLzpVrV8IvplLS5v aT5NxX4o9zqRLyaNWTzng9pNOc43ZRwcZxKwcFhkslSb3UHruaZr8HS7 X-Gm-Gg: ASbGnctNODOQMzQF//qd5e1e9H6wN2y6iooo28sV2F7EImYRun68GlqM2v/mgfZewSs m0wLUCrlDO3Uc9TBgxjzqnxYWsysXhwz550b/PIYtBvEoOigd/PGWW4uiq2So1hL8DtblkINR4Q mpEJhuuj3NedfxykZT5axzwWsIAcS7fjV0wQFHyw3J3r/h3xnZWK8djlM/+u5Ypi/LPmSPeDcyB AHFgibypnVlPARXTGYgsumNQ/BlT3btpZyEr2XsV/wGivld1rFbKEkbYVBI+AZAh9FssZtvbuSG YtQjV01rPt9H8viGwqmPg34ZSF5QZwuT9imELauMneX55bBuCQ6OxQqZKZt90zA1L+zWIemwLjx ed81i9fE6/5nUbnlKdlnv+Hk4AHuOzAMbF0K+Be4= X-Google-Smtp-Source: AGHT+IGMIqmmahDrSSurUiUpvPRQxMFKw2WX3n1Z0JuBY3k7nA6zZulYxnHcrBYN4aN7g4LL44Za+A== X-Received: by 2002:a17:906:6a1e:b0:afe:63ae:c337 with SMTP id a640c23a62f3a-b1bb935d71amr737301966b.57.1758215212299; Thu, 18 Sep 2025 10:06:52 -0700 (PDT) Received: from [127.0.1.1] ([46.53.240.27]) by smtp.googlemail.com with ESMTPSA id a640c23a62f3a-b1fd271f895sm225845366b.97.2025.09.18.10.06.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Sep 2025 10:06:51 -0700 (PDT) From: Dzmitry Sankouski Date: Thu, 18 Sep 2025 20:06:47 +0300 Subject: [PATCH v4 3/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: <20250918-max77705_77976_charger_improvement-v4-3-11ec9188f489@gmail.com> References: <20250918-max77705_77976_charger_improvement-v4-0-11ec9188f489@gmail.com> In-Reply-To: <20250918-max77705_77976_charger_improvement-v4-0-11ec9188f489@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=1758215207; l=9595; i=dsankouski@gmail.com; s=20240619; h=from:subject:message-id; bh=TwNup/iXllk/aE5uv69gK2pIQ5cN9oOrdUW6G6HU6cc=; b=79XePRo5PcCEdK+4YDYwzHy0/d3lVJ9QOsvtYJ7nyVti51jK//W2A1oQ31Pava7H0WQ25b5Do rXqbVwuZ6/BBkd0qWGhIBsd6QOx2qpOguLvjwmG+hBFGc1rmPC6v7mE 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 b8f648dd4d63..883affd18c8d 100644 --- a/drivers/power/supply/max77705_charger.c +++ b/drivers/power/supply/max77705_charger.c @@ -42,9 +42,9 @@ static enum power_supply_property max77705_charger_props[= ] =3D { =20 static int max77705_chgin_irq(void *irq_drv_data) { - struct max77705_charger_data *charger =3D irq_drv_data; + struct max77705_charger_data *chg =3D irq_drv_data; =20 - queue_work(charger->wqueue, &charger->chgin_work); + queue_work(chg->wqueue, &chg->chgin_work); =20 return 0; } @@ -109,19 +109,19 @@ static int max77705_get_online(struct regmap *regmap,= int *val) return 0; } =20 -static int max77705_check_battery(struct max77705_charger_data *charger, i= nt *val) +static int max77705_check_battery(struct max77705_charger_data *chg, int *= val) { unsigned int reg_data; unsigned int reg_data2; - struct regmap *regmap =3D charger->regmap; + struct regmap *regmap =3D chg->regmap; =20 regmap_read(regmap, MAX77705_CHG_REG_INT_OK, ®_data); =20 - dev_dbg(charger->dev, "CHG_INT_OK(0x%x)\n", reg_data); + dev_dbg(chg->dev, "CHG_INT_OK(0x%x)\n", reg_data); =20 regmap_read(regmap, MAX77705_CHG_REG_DETAILS_00, ®_data2); =20 - dev_dbg(charger->dev, "CHG_DETAILS00(0x%x)\n", reg_data2); + dev_dbg(chg->dev, "CHG_DETAILS00(0x%x)\n", reg_data2); =20 if ((reg_data & MAX77705_BATP_OK) || !(reg_data2 & MAX77705_BATP_DTLS)) *val =3D true; @@ -131,9 +131,9 @@ static int max77705_check_battery(struct max77705_charg= er_data *charger, int *va return 0; } =20 -static int max77705_get_charge_type(struct max77705_charger_data *charger,= int *val) +static int max77705_get_charge_type(struct max77705_charger_data *chg, int= *val) { - struct regmap *regmap =3D charger->regmap; + struct regmap *regmap =3D chg->regmap; unsigned int reg_data; =20 regmap_read(regmap, MAX77705_CHG_REG_CNFG_09, ®_data); @@ -159,9 +159,9 @@ static int max77705_get_charge_type(struct max77705_cha= rger_data *charger, int * return 0; } =20 -static int max77705_get_status(struct max77705_charger_data *charger, int = *val) +static int max77705_get_status(struct max77705_charger_data *chg, int *val) { - struct regmap *regmap =3D charger->regmap; + struct regmap *regmap =3D chg->regmap; unsigned int reg_data; =20 regmap_read(regmap, MAX77705_CHG_REG_CNFG_09, ®_data); @@ -234,10 +234,10 @@ static int max77705_get_vbus_state(struct regmap *reg= map, int *value) return 0; } =20 -static int max77705_get_battery_health(struct max77705_charger_data *charg= er, +static int max77705_get_battery_health(struct max77705_charger_data *chg, int *value) { - struct regmap *regmap =3D charger->regmap; + struct regmap *regmap =3D chg->regmap; unsigned int bat_dtls; =20 regmap_read(regmap, MAX77705_CHG_REG_DETAILS_01, &bat_dtls); @@ -245,16 +245,16 @@ static int max77705_get_battery_health(struct max7770= 5_charger_data *charger, =20 switch (bat_dtls) { case MAX77705_BATTERY_NOBAT: - dev_dbg(charger->dev, "%s: No battery and the charger is suspended\n", + dev_dbg(chg->dev, "%s: No battery and the chg is suspended\n", __func__); *value =3D POWER_SUPPLY_HEALTH_NO_BATTERY; break; case MAX77705_BATTERY_PREQUALIFICATION: - dev_dbg(charger->dev, "%s: battery is okay but its voltage is low(~VPQLB= )\n", + dev_dbg(chg->dev, "%s: battery is okay but its voltage is low(~VPQLB)\n", __func__); break; case MAX77705_BATTERY_DEAD: - dev_dbg(charger->dev, "%s: battery dead\n", __func__); + dev_dbg(chg->dev, "%s: battery dead\n", __func__); *value =3D POWER_SUPPLY_HEALTH_DEAD; break; case MAX77705_BATTERY_GOOD: @@ -262,11 +262,11 @@ static int max77705_get_battery_health(struct max7770= 5_charger_data *charger, *value =3D POWER_SUPPLY_HEALTH_GOOD; break; case MAX77705_BATTERY_OVERVOLTAGE: - dev_dbg(charger->dev, "%s: battery ovp\n", __func__); + dev_dbg(chg->dev, "%s: battery ovp\n", __func__); *value =3D POWER_SUPPLY_HEALTH_OVERVOLTAGE; break; default: - dev_dbg(charger->dev, "%s: battery unknown\n", __func__); + dev_dbg(chg->dev, "%s: battery unknown\n", __func__); *value =3D POWER_SUPPLY_HEALTH_UNSPEC_FAILURE; break; } @@ -274,9 +274,9 @@ static int max77705_get_battery_health(struct max77705_= charger_data *charger, return 0; } =20 -static int max77705_get_health(struct max77705_charger_data *charger, int = *val) +static int max77705_get_health(struct max77705_charger_data *chg, int *val) { - struct regmap *regmap =3D charger->regmap; + struct regmap *regmap =3D chg->regmap; int ret, is_online =3D 0; =20 ret =3D max77705_get_online(regmap, &is_online); @@ -287,15 +287,15 @@ static int max77705_get_health(struct max77705_charge= r_data *charger, int *val) if (ret || (*val !=3D POWER_SUPPLY_HEALTH_GOOD)) return ret; } - return max77705_get_battery_health(charger, val); + return max77705_get_battery_health(chg, val); } =20 -static int max77705_get_input_current(struct max77705_charger_data *charge= r, +static int max77705_get_input_current(struct max77705_charger_data *chg, int *val) { unsigned int reg_data; int get_current =3D 0; - struct regmap *regmap =3D charger->regmap; + struct regmap *regmap =3D chg->regmap; =20 regmap_read(regmap, MAX77705_CHG_REG_CNFG_09, ®_data); =20 @@ -313,11 +313,11 @@ static int max77705_get_input_current(struct max77705= _charger_data *charger, return 0; } =20 -static int max77705_get_charge_current(struct max77705_charger_data *charg= er, +static int max77705_get_charge_current(struct max77705_charger_data *chg, int *val) { unsigned int reg_data; - struct regmap *regmap =3D charger->regmap; + struct regmap *regmap =3D chg->regmap; =20 regmap_read(regmap, MAX77705_CHG_REG_CNFG_02, ®_data); reg_data &=3D MAX77705_CHG_CC; @@ -327,12 +327,12 @@ static int max77705_get_charge_current(struct max7770= 5_charger_data *charger, return 0; } =20 -static int max77705_set_float_voltage(struct max77705_charger_data *charge= r, +static int max77705_set_float_voltage(struct max77705_charger_data *chg, int float_voltage) { int float_voltage_mv; unsigned int reg_data =3D 0; - struct regmap *regmap =3D charger->regmap; + struct regmap *regmap =3D chg->regmap; =20 float_voltage_mv =3D float_voltage / 1000; reg_data =3D float_voltage_mv <=3D 4000 ? 0x0 : @@ -345,12 +345,12 @@ static int max77705_set_float_voltage(struct max77705= _charger_data *charger, (reg_data << MAX77705_CHG_CV_PRM_SHIFT)); } =20 -static int max77705_get_float_voltage(struct max77705_charger_data *charge= r, +static int max77705_get_float_voltage(struct max77705_charger_data *chg, int *val) { unsigned int reg_data =3D 0; int voltage_mv; - struct regmap *regmap =3D charger->regmap; + struct regmap *regmap =3D chg->regmap; =20 regmap_read(regmap, MAX77705_CHG_REG_CNFG_04, ®_data); reg_data &=3D MAX77705_CHG_PRM_MASK; @@ -365,28 +365,28 @@ static int max77705_chg_get_property(struct power_sup= ply *psy, enum power_supply_property psp, union power_supply_propval *val) { - struct max77705_charger_data *charger =3D power_supply_get_drvdata(psy); - struct regmap *regmap =3D charger->regmap; + struct max77705_charger_data *chg =3D power_supply_get_drvdata(psy); + struct regmap *regmap =3D chg->regmap; =20 switch (psp) { case POWER_SUPPLY_PROP_ONLINE: return max77705_get_online(regmap, &val->intval); case POWER_SUPPLY_PROP_PRESENT: - return max77705_check_battery(charger, &val->intval); + return max77705_check_battery(chg, &val->intval); case POWER_SUPPLY_PROP_STATUS: - return max77705_get_status(charger, &val->intval); + return max77705_get_status(chg, &val->intval); case POWER_SUPPLY_PROP_CHARGE_TYPE: - return max77705_get_charge_type(charger, &val->intval); + return max77705_get_charge_type(chg, &val->intval); case POWER_SUPPLY_PROP_HEALTH: - return max77705_get_health(charger, &val->intval); + return max77705_get_health(chg, &val->intval); case POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT: - return max77705_get_input_current(charger, &val->intval); + return max77705_get_input_current(chg, &val->intval); case POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT: - return max77705_get_charge_current(charger, &val->intval); + return max77705_get_charge_current(chg, &val->intval); case POWER_SUPPLY_PROP_CONSTANT_CHARGE_VOLTAGE: - return max77705_get_float_voltage(charger, &val->intval); + return max77705_get_float_voltage(chg, &val->intval); case POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN: - val->intval =3D charger->bat_info->voltage_max_design_uv; + val->intval =3D chg->bat_info->voltage_max_design_uv; break; case POWER_SUPPLY_PROP_MODEL_NAME: val->strval =3D max77705_charger_model; @@ -410,10 +410,10 @@ static const struct power_supply_desc max77705_charge= r_psy_desc =3D { =20 static void max77705_chgin_isr_work(struct work_struct *work) { - struct max77705_charger_data *charger =3D + struct max77705_charger_data *chg =3D container_of(work, struct max77705_charger_data, chgin_work); =20 - power_supply_changed(charger->psy_chg); + power_supply_changed(chg->psy_chg); } =20 static void max77705_charger_initialize(struct max77705_charger_data *chg) --=20 2.39.5 From nobody Thu Oct 2 09:21:19 2025 Received: from mail-ej1-f50.google.com (mail-ej1-f50.google.com [209.85.218.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6002A3161AC for ; Thu, 18 Sep 2025 17:06:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758215217; cv=none; b=kMOObgsiBUcUe543CjynHC5PkOgSljZeyJ20QZEbShokOpodcbiuTHQHEefWxpTFHAUtV8CoUrxhDp7/61tXyN8pXCCXgauLm/3ETwL+lqj5OcvSJFclIfynWwa+aEOKM5ZPxXoL8lg6hzKmNdN0EwVHnr2/n8tjuto5yFgPFB8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758215217; c=relaxed/simple; bh=MhMWYCiSaAWyIB6+TXocIBYNACnUcnuCGp0sKqfkFBc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=T6b6RRZLY0w+takOEaw5wEA8QHHhvE/9wZsyuz76J1turATsJo0x+tQws2DTPm4Rtfs29GgU2m2w2sfQEHgjHvj9BF86iXpr/vJ5808ZB6Qb9HHhVefd9tr6uskd0CTrPSSRAHlPDN9FK2V4nZk1eSzM90Zo50reZkuDo6qf2x0= 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=SQsMH6mq; arc=none smtp.client-ip=209.85.218.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="SQsMH6mq" Received: by mail-ej1-f50.google.com with SMTP id a640c23a62f3a-b07e3a77b72so331680166b.0 for ; Thu, 18 Sep 2025 10:06:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1758215214; x=1758820014; 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=5HqYjSemBOxXz5+EPZCbm8rU9DvfCrCp3HRGX+s5xnE=; b=SQsMH6mqGQx/FcQiO+B18UycnTM50vCZCsiT6SbjZoxv1HLOekyecJ9poaykw2X2YH fSoMQMVjfDAAUBPTwZ13lIJeYgew3ZhbHveVmE9kVWxqLigPJjFC8rT2wYthmq5uKWnT G0ZnhZSurvqewXCOvHvxsQOCDuf+yEvEDR9VHuOQEAZUtO9e6PRdWBbUoOvs7psJn+kt TPYhEx2nTS9DWoHipzA/y66AB6JVxkX+nrmHAdN9UjnMyDkKo8NuDgT5QGz4aZR9WbyO IlXzms3WRszGxtXqcZRkFttp5OBHVG7qGsfzExHUxs0wBt/3rLPT1IlEhGkK8wa05l25 kplw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758215214; x=1758820014; 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=5HqYjSemBOxXz5+EPZCbm8rU9DvfCrCp3HRGX+s5xnE=; b=NIzaufLa7x+SX37Xl+amtl2LXN91D4pKGgiMrQcSPPRQThnpZyOdvTHAoLy2S4AYht HABM2o/Hk2gwXO/WKFWXNgmOqCQKiBlCSlbSDOvRovFhRqDzuGV0Pw4HF2+qybW7r+mQ Fh6LoHKqN9gqOde59xqJFeenQ/ziyMKhOFEuJNN67vMnkRhrZO6dIdgWg7++OoKL5jlg 1aBd6WINFDlk7wI8eEAkIAcD8UzGF/eV1HA6pOH6e9oFBvb+MIBXBsN6d61utcf8S40E 2//SjWvItsqqSgS3uK0RkWHzxoFByNuBg/zhWKXl2P6/WcbJyzlQH4kZtVQB19CRR6dt 6drA== X-Forwarded-Encrypted: i=1; AJvYcCVyMS1KRDgknTZ4koabdAG8N5e3Mp6shMZeFg1nyrnnqXIDid6fArQTN0PIGzSlqT+dz/7vj3CGKh7PrAc=@vger.kernel.org X-Gm-Message-State: AOJu0YxdzUK7WL9gmHtwZ25UDCyPlMZLwk6pe4ailePMKd8ydu/SuRuI lDxh9R9roS73C+v7RyiF7Fn+Xmhjz9zUO7s8kkV5XdzYLfJniT//gX80ByqCHQ== X-Gm-Gg: ASbGncv5i1C5d+dQAb4QkMxNuFuFk71s8ovv+RGSkrO1fXJkr6cCDwwtJ+KBZ6i/DH7 MRpf2GAAU9RvnRooZmTugTFuzjTh8+0zQ9G69TsI+QXfiAnjJx3GfRpXPxnWtjBrYN8G4F8U2d4 44TnlM8qCpwKe86MnawPvrrdhUWTdQNtbxFiZlDo8B2VSZKG8HGCzFAWLMFGlCyqRLj84Rak0yk PM/nLRgHst+LSajPcgy+9EqOvFcJX4ShQIWIS1bDFKEWiMgx6jeEru+CNS7cNTmuNCbPY22KEL9 m9SdC7YHKwTTnvmuV2Drun4H3zekRiEoSSA35Bqvc5OEqpipxqmh6+wNF5/B2FYXjPlLRJHiHv6 sHq5vH7XSOyctYB7X/UuTDI+xstlHhr8eqtDwX16DboJMaje/8A== X-Google-Smtp-Source: AGHT+IH1hkvP0c2e1o589Zbbe8D5QlB7yjo/P2uz4e1meTDvQTq3LmQ6HPgZBNT9jByddi4/JY0ZUA== X-Received: by 2002:a17:907:e916:b0:b11:3760:95b4 with SMTP id a640c23a62f3a-b1fa844ee00mr421942366b.2.1758215213466; Thu, 18 Sep 2025 10:06:53 -0700 (PDT) Received: from [127.0.1.1] ([46.53.240.27]) by smtp.googlemail.com with ESMTPSA id a640c23a62f3a-b1fd271f895sm225845366b.97.2025.09.18.10.06.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Sep 2025 10:06:53 -0700 (PDT) From: Dzmitry Sankouski Date: Thu, 18 Sep 2025 20:06:48 +0300 Subject: [PATCH v4 4/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: <20250918-max77705_77976_charger_improvement-v4-4-11ec9188f489@gmail.com> References: <20250918-max77705_77976_charger_improvement-v4-0-11ec9188f489@gmail.com> In-Reply-To: <20250918-max77705_77976_charger_improvement-v4-0-11ec9188f489@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=1758215207; l=16663; i=dsankouski@gmail.com; s=20240619; h=from:subject:message-id; bh=MhMWYCiSaAWyIB6+TXocIBYNACnUcnuCGp0sKqfkFBc=; b=ANOMxVKWlZ3hhESRUZTOxw6/jrYFhVOf2ll0t/4lKDDfZYIF2PhjqPsZvhAs3VcfsKjy9hQoA bOJO7q2+4h3AwK12gqhmxPKxz97Qm4V6G4F+T7jJAZWwVbrQhjYS+ra X-Developer-Key: i=dsankouski@gmail.com; a=ed25519; pk=YJcXFcN1EWrzBYuiE2yi5Mn6WLn6L1H71J+f7X8fMag= Using regfields allows to cleanup masks and register offset definition, allowing to access register info by it's functional name. Signed-off-by: Dzmitry Sankouski --- Changes to v2: - fix MAX77705_CHGPROT_UNLOCKED value: GENMASK(3, 2) -> 3, because it's now used in regfield - remove MAX77705_CHGPROT_MASK because it's unused now --- drivers/power/supply/max77705_charger.c | 105 ++++++++++++----------------= ---- include/linux/power/max77705_charger.h | 102 ++++++++++++++++------------= --- 2 files changed, 93 insertions(+), 114 deletions(-) diff --git a/drivers/power/supply/max77705_charger.c b/drivers/power/supply= /max77705_charger.c index 883affd18c8d..837e03bafcc6 100644 --- a/drivers/power/supply/max77705_charger.c +++ b/drivers/power/supply/max77705_charger.c @@ -74,8 +74,7 @@ static int max77705_charger_enable(struct max77705_charge= r_data *chg) { int rv; =20 - rv =3D regmap_update_bits(chg->regmap, MAX77705_CHG_REG_CNFG_09, - MAX77705_CHG_EN_MASK, MAX77705_CHG_EN_MASK); + rv =3D regmap_field_write(chg->rfield[MAX77705_CHG_EN], 1); if (rv) dev_err(chg->dev, "unable to enable the charger: %d\n", rv); =20 @@ -87,10 +86,7 @@ static void max77705_charger_disable(void *data) struct max77705_charger_data *chg =3D data; int rv; =20 - rv =3D regmap_update_bits(chg->regmap, - MAX77705_CHG_REG_CNFG_09, - MAX77705_CHG_EN_MASK, - MAX77705_CHG_DISABLE); + rv =3D regmap_field_write(chg->rfield[MAX77705_CHG_EN], MAX77705_CHG_DISA= BLE); if (rv) dev_err(chg->dev, "unable to disable the charger: %d\n", rv); } @@ -134,10 +130,10 @@ static int max77705_check_battery(struct max77705_cha= rger_data *chg, int *val) static int max77705_get_charge_type(struct max77705_charger_data *chg, int= *val) { struct regmap *regmap =3D chg->regmap; - unsigned int reg_data; + unsigned int reg_data, chg_en; =20 - regmap_read(regmap, MAX77705_CHG_REG_CNFG_09, ®_data); - if (!MAX77705_CHARGER_CHG_CHARGING(reg_data)) { + regmap_field_read(chg->rfield[MAX77705_CHG_EN], &chg_en); + if (!chg_en) { *val =3D POWER_SUPPLY_CHARGE_TYPE_NONE; return 0; } @@ -162,10 +158,10 @@ static int max77705_get_charge_type(struct max77705_c= harger_data *chg, int *val) static int max77705_get_status(struct max77705_charger_data *chg, int *val) { struct regmap *regmap =3D chg->regmap; - unsigned int reg_data; + unsigned int reg_data, chg_en; =20 - regmap_read(regmap, MAX77705_CHG_REG_CNFG_09, ®_data); - if (!MAX77705_CHARGER_CHG_CHARGING(reg_data)) { + regmap_field_read(chg->rfield[MAX77705_CHG_EN], &chg_en); + if (!chg_en) { *val =3D POWER_SUPPLY_CHARGE_TYPE_NONE; return 0; } @@ -295,16 +291,11 @@ static int max77705_get_input_current(struct max77705= _charger_data *chg, { unsigned int reg_data; int get_current =3D 0; - struct regmap *regmap =3D chg->regmap; =20 - regmap_read(regmap, MAX77705_CHG_REG_CNFG_09, ®_data); - - reg_data &=3D MAX77705_CHG_CHGIN_LIM_MASK; + regmap_field_read(chg->rfield[MAX77705_CHG_CHGIN_LIM], ®_data); =20 if (reg_data <=3D 3) get_current =3D MAX77705_CURRENT_CHGIN_MIN; - else if (reg_data >=3D MAX77705_CHG_CHGIN_LIM_MASK) - get_current =3D MAX77705_CURRENT_CHGIN_MAX; else get_current =3D (reg_data + 1) * MAX77705_CURRENT_CHGIN_STEP; =20 @@ -317,10 +308,8 @@ static int max77705_get_charge_current(struct max77705= _charger_data *chg, int *val) { unsigned int reg_data; - struct regmap *regmap =3D chg->regmap; =20 - regmap_read(regmap, MAX77705_CHG_REG_CNFG_02, ®_data); - reg_data &=3D MAX77705_CHG_CC; + regmap_field_read(chg->rfield[MAX77705_CHG_CC_LIM], ®_data); =20 *val =3D reg_data <=3D 0x2 ? MAX77705_CURRENT_CHGIN_MIN : reg_data * MAX7= 7705_CURRENT_CHG_STEP; =20 @@ -332,7 +321,6 @@ static int max77705_set_float_voltage(struct max77705_c= harger_data *chg, { int float_voltage_mv; unsigned int reg_data =3D 0; - struct regmap *regmap =3D chg->regmap; =20 float_voltage_mv =3D float_voltage / 1000; reg_data =3D float_voltage_mv <=3D 4000 ? 0x0 : @@ -340,9 +328,7 @@ static int max77705_set_float_voltage(struct max77705_c= harger_data *chg, (float_voltage_mv <=3D 4200) ? (float_voltage_mv - 4000) / 50 : (((float_voltage_mv - 4200) / 10) + 0x04); =20 - return regmap_update_bits(regmap, MAX77705_CHG_REG_CNFG_04, - MAX77705_CHG_CV_PRM_MASK, - (reg_data << MAX77705_CHG_CV_PRM_SHIFT)); + return regmap_field_write(chg->rfield[MAX77705_CHG_CV_PRM], reg_data); } =20 static int max77705_get_float_voltage(struct max77705_charger_data *chg, @@ -350,10 +336,8 @@ static int max77705_get_float_voltage(struct max77705_= charger_data *chg, { unsigned int reg_data =3D 0; int voltage_mv; - struct regmap *regmap =3D chg->regmap; =20 - regmap_read(regmap, MAX77705_CHG_REG_CNFG_04, ®_data); - reg_data &=3D MAX77705_CHG_PRM_MASK; + regmap_field_read(chg->rfield[MAX77705_CHG_CV_PRM], ®_data); voltage_mv =3D reg_data <=3D 0x04 ? reg_data * 50 + 4000 : (reg_data - 4) * 10 + 4200; *val =3D voltage_mv * 1000; @@ -418,7 +402,6 @@ static void max77705_chgin_isr_work(struct work_struct = *work) =20 static void max77705_charger_initialize(struct max77705_charger_data *chg) { - u8 reg_data; struct power_supply_battery_info *info; struct regmap *regmap =3D chg->regmap; =20 @@ -429,45 +412,31 @@ static void max77705_charger_initialize(struct max777= 05_charger_data *chg) =20 /* unlock charger setting protect */ /* slowest LX slope */ - reg_data =3D MAX77705_CHGPROT_MASK | MAX77705_SLOWEST_LX_SLOPE; - regmap_update_bits(regmap, MAX77705_CHG_REG_CNFG_06, reg_data, - reg_data); + regmap_field_write(chg->rfield[MAX77705_CHGPROT], MAX77705_CHGPROT_UNLOCK= ED); + regmap_field_write(chg->rfield[MAX77705_LX_SLOPE], MAX77705_SLOWEST_LX_SL= OPE); =20 /* fast charge timer disable */ /* restart threshold disable */ /* pre-qual charge disable */ - reg_data =3D (MAX77705_FCHGTIME_DISABLE << MAX77705_FCHGTIME_SHIFT) | - (MAX77705_CHG_RSTRT_DISABLE << MAX77705_CHG_RSTRT_SHIFT) | - (MAX77705_CHG_PQEN_DISABLE << MAX77705_PQEN_SHIFT); - regmap_update_bits(regmap, MAX77705_CHG_REG_CNFG_01, - (MAX77705_FCHGTIME_MASK | - MAX77705_CHG_RSTRT_MASK | - MAX77705_PQEN_MASK), - reg_data); - - /* OTG off(UNO on), boost off */ - regmap_update_bits(regmap, MAX77705_CHG_REG_CNFG_00, - MAX77705_OTG_CTRL, 0); + regmap_field_write(chg->rfield[MAX77705_FCHGTIME], MAX77705_FCHGTIME_DISA= BLE); + regmap_field_write(chg->rfield[MAX77705_CHG_RSTRT], MAX77705_CHG_RSTRT_DI= SABLE); + regmap_field_write(chg->rfield[MAX77705_CHG_PQEN], MAX77705_CHG_PQEN_DISA= BLE); + + regmap_field_write(chg->rfield[MAX77705_MODE], + MAX77705_CHG_MASK | MAX77705_BUCK_MASK); =20 /* charge current 450mA(default) */ /* otg current limit 900mA */ - regmap_update_bits(regmap, MAX77705_CHG_REG_CNFG_02, - MAX77705_OTG_ILIM_MASK, - MAX77705_OTG_ILIM_900 << MAX77705_OTG_ILIM_SHIFT); + regmap_field_write(chg->rfield[MAX77705_OTG_ILIM], MAX77705_OTG_ILIM_900); =20 /* BAT to SYS OCP 4.80A */ - regmap_update_bits(regmap, MAX77705_CHG_REG_CNFG_05, - MAX77705_REG_B2SOVRC_MASK, - MAX77705_B2SOVRC_4_8A << MAX77705_REG_B2SOVRC_SHIFT); + regmap_field_write(chg->rfield[MAX77705_REG_B2SOVRC], MAX77705_B2SOVRC_4_= 8A); + /* top off current 150mA */ /* top off timer 30min */ - reg_data =3D (MAX77705_TO_ITH_150MA << MAX77705_TO_ITH_SHIFT) | - (MAX77705_TO_TIME_30M << MAX77705_TO_TIME_SHIFT) | - (MAX77705_SYS_TRACK_DISABLE << MAX77705_SYS_TRACK_DIS_SHIFT); - regmap_update_bits(regmap, MAX77705_CHG_REG_CNFG_03, - (MAX77705_TO_ITH_MASK | - MAX77705_TO_TIME_MASK | - MAX77705_SYS_TRACK_DIS_MASK), reg_data); + regmap_field_write(chg->rfield[MAX77705_TO], MAX77705_TO_ITH_150MA); + regmap_field_write(chg->rfield[MAX77705_TO_TIME], MAX77705_TO_TIME_30M); + regmap_field_write(chg->rfield[MAX77705_SYS_TRACK], MAX77705_SYS_TRACK_DI= SABLE); =20 /* cv voltage 4.2V or 4.35V */ /* MINVSYS 3.6V(default) */ @@ -478,25 +447,21 @@ static void max77705_charger_initialize(struct max777= 05_charger_data *chg) max77705_set_float_voltage(chg, info->voltage_max_design_uv); } =20 - regmap_update_bits(regmap, MAX77705_CHG_REG_CNFG_12, - MAX77705_VCHGIN_REG_MASK, MAX77705_VCHGIN_4_5); - regmap_update_bits(regmap, MAX77705_CHG_REG_CNFG_12, - MAX77705_WCIN_REG_MASK, MAX77705_WCIN_4_5); + regmap_field_write(chg->rfield[MAX77705_VCHGIN], MAX77705_VCHGIN_4_5); + regmap_field_write(chg->rfield[MAX77705_WCIN], MAX77705_WCIN_4_5); =20 /* Watchdog timer */ regmap_update_bits(regmap, MAX77705_CHG_REG_CNFG_00, MAX77705_WDTEN_MASK, 0); =20 /* VBYPSET=3D5.0V */ - regmap_update_bits(regmap, MAX77705_CHG_REG_CNFG_11, MAX77705_VBYPSET_MAS= K, 0); + regmap_field_write(chg->rfield[MAX77705_VBYPSET], 0); =20 /* Switching Frequency : 1.5MHz */ - regmap_update_bits(regmap, MAX77705_CHG_REG_CNFG_08, MAX77705_REG_FSW_MAS= K, - (MAX77705_CHG_FSW_1_5MHz << MAX77705_REG_FSW_SHIFT)); + regmap_field_write(chg->rfield[MAX77705_REG_FSW], MAX77705_CHG_FSW_1_5MHz= ); =20 /* Auto skip mode */ - regmap_update_bits(regmap, MAX77705_CHG_REG_CNFG_12, MAX77705_REG_DISKIP_= MASK, - (MAX77705_AUTO_SKIP << MAX77705_REG_DISKIP_SHIFT)); + regmap_field_write(chg->rfield[MAX77705_REG_DISKIP], MAX77705_AUTO_SKIP); } =20 static int max77705_charger_probe(struct i2c_client *i2c) @@ -520,6 +485,14 @@ static int max77705_charger_probe(struct i2c_client *i= 2c) if (IS_ERR(chg->regmap)) return PTR_ERR(chg->regmap); =20 + for (int i =3D 0; i < MAX77705_N_REGMAP_FIELDS; i++) { + chg->rfield[i] =3D devm_regmap_field_alloc(dev, chg->regmap, + max77705_reg_field[i]); + if (IS_ERR(chg->rfield[i])) + return dev_err_probe(dev, PTR_ERR(chg->rfield[i]), + "cannot allocate regmap field\n"); + } + ret =3D regmap_update_bits(chg->regmap, MAX77705_CHG_REG_INT_MASK, MAX77705_CHGIN_IM, 0); diff --git a/include/linux/power/max77705_charger.h b/include/linux/power/m= ax77705_charger.h index fdec9af9c541..a612795577b6 100644 --- a/include/linux/power/max77705_charger.h +++ b/include/linux/power/max77705_charger.h @@ -9,6 +9,8 @@ #ifndef __MAX77705_CHARGER_H #define __MAX77705_CHARGER_H __FILE__ =20 +#include + /* MAX77705_CHG_REG_CHG_INT */ #define MAX77705_BYP_I BIT(0) #define MAX77705_INP_LIMIT_I BIT(1) @@ -63,7 +65,6 @@ #define MAX77705_BUCK_SHIFT 2 #define MAX77705_BOOST_SHIFT 3 #define MAX77705_WDTEN_SHIFT 4 -#define MAX77705_MODE_MASK GENMASK(3, 0) #define MAX77705_CHG_MASK BIT(MAX77705_CHG_SHIFT) #define MAX77705_UNO_MASK BIT(MAX77705_UNO_SHIFT) #define MAX77705_OTG_MASK BIT(MAX77705_OTG_SHIFT) @@ -74,34 +75,19 @@ #define MAX77705_OTG_CTRL (MAX77705_OTG_MASK | MAX77705_BOOST_MASK) =20 /* MAX77705_CHG_REG_CNFG_01 */ -#define MAX77705_FCHGTIME_SHIFT 0 -#define MAX77705_FCHGTIME_MASK GENMASK(2, 0) -#define MAX77705_CHG_RSTRT_SHIFT 4 -#define MAX77705_CHG_RSTRT_MASK GENMASK(5, 4) #define MAX77705_FCHGTIME_DISABLE 0 #define MAX77705_CHG_RSTRT_DISABLE 0x3 =20 -#define MAX77705_PQEN_SHIFT 7 -#define MAX77705_PQEN_MASK BIT(7) #define MAX77705_CHG_PQEN_DISABLE 0 #define MAX77705_CHG_PQEN_ENABLE 1 =20 /* MAX77705_CHG_REG_CNFG_02 */ -#define MAX77705_OTG_ILIM_SHIFT 6 -#define MAX77705_OTG_ILIM_MASK GENMASK(7, 6) #define MAX77705_OTG_ILIM_500 0 #define MAX77705_OTG_ILIM_900 1 #define MAX77705_OTG_ILIM_1200 2 #define MAX77705_OTG_ILIM_1500 3 -#define MAX77705_CHG_CC GENMASK(5, 0) =20 /* MAX77705_CHG_REG_CNFG_03 */ -#define MAX77705_TO_ITH_SHIFT 0 -#define MAX77705_TO_ITH_MASK GENMASK(2, 0) -#define MAX77705_TO_TIME_SHIFT 3 -#define MAX77705_TO_TIME_MASK GENMASK(5, 3) -#define MAX77705_SYS_TRACK_DIS_SHIFT 7 -#define MAX77705_SYS_TRACK_DIS_MASK BIT(7) #define MAX77705_TO_ITH_150MA 0 #define MAX77705_TO_TIME_30M 3 #define MAX77705_SYS_TRACK_ENABLE 0 @@ -110,15 +96,8 @@ /* MAX77705_CHG_REG_CNFG_04 */ #define MAX77705_CHG_MINVSYS_SHIFT 6 #define MAX77705_CHG_MINVSYS_MASK GENMASK(7, 6) -#define MAX77705_CHG_PRM_SHIFT 0 -#define MAX77705_CHG_PRM_MASK GENMASK(5, 0) - -#define MAX77705_CHG_CV_PRM_SHIFT 0 -#define MAX77705_CHG_CV_PRM_MASK GENMASK(5, 0) =20 /* MAX77705_CHG_REG_CNFG_05 */ -#define MAX77705_REG_B2SOVRC_SHIFT 0 -#define MAX77705_REG_B2SOVRC_MASK GENMASK(3, 0) #define MAX77705_B2SOVRC_DISABLE 0 #define MAX77705_B2SOVRC_4_5A 6 #define MAX77705_B2SOVRC_4_8A 8 @@ -128,9 +107,8 @@ #define MAX77705_WDTCLR_SHIFT 0 #define MAX77705_WDTCLR_MASK GENMASK(1, 0) #define MAX77705_WDTCLR 1 -#define MAX77705_CHGPROT_MASK GENMASK(3, 2) -#define MAX77705_CHGPROT_UNLOCKED GENMASK(3, 2) -#define MAX77705_SLOWEST_LX_SLOPE GENMASK(6, 5) +#define MAX77705_CHGPROT_UNLOCKED 3 +#define MAX77705_SLOWEST_LX_SLOPE 3 =20 /* MAX77705_CHG_REG_CNFG_07 */ #define MAX77705_CHG_FMBST 4 @@ -140,36 +118,14 @@ #define MAX77705_REG_FGSRC_MASK BIT(MAX77705_REG_FGSRC_SHIFT) =20 /* MAX77705_CHG_REG_CNFG_08 */ -#define MAX77705_REG_FSW_SHIFT 0 -#define MAX77705_REG_FSW_MASK GENMASK(1, 0) #define MAX77705_CHG_FSW_3MHz 0 #define MAX77705_CHG_FSW_2MHz 1 #define MAX77705_CHG_FSW_1_5MHz 2 =20 /* MAX77705_CHG_REG_CNFG_09 */ -#define MAX77705_CHG_CHGIN_LIM_MASK GENMASK(6, 0) -#define MAX77705_CHG_EN_MASK BIT(7) #define MAX77705_CHG_DISABLE 0 -#define MAX77705_CHARGER_CHG_CHARGING(_reg) \ - (((_reg) & MAX77705_CHG_EN_MASK) > 1) - - -/* MAX77705_CHG_REG_CNFG_10 */ -#define MAX77705_CHG_WCIN_LIM GENMASK(5, 0) - -/* MAX77705_CHG_REG_CNFG_11 */ -#define MAX77705_VBYPSET_SHIFT 0 -#define MAX77705_VBYPSET_MASK GENMASK(6, 0) =20 /* MAX77705_CHG_REG_CNFG_12 */ -#define MAX77705_CHGINSEL_SHIFT 5 -#define MAX77705_CHGINSEL_MASK BIT(MAX77705_CHGINSEL_SHIFT) -#define MAX77705_WCINSEL_SHIFT 6 -#define MAX77705_WCINSEL_MASK BIT(MAX77705_WCINSEL_SHIFT) -#define MAX77705_VCHGIN_REG_MASK GENMASK(4, 3) -#define MAX77705_WCIN_REG_MASK GENMASK(2, 1) -#define MAX77705_REG_DISKIP_SHIFT 0 -#define MAX77705_REG_DISKIP_MASK BIT(MAX77705_REG_DISKIP_SHIFT) /* REG=3D4.5V, UVLO=3D4.7V */ #define MAX77705_VCHGIN_4_5 0 /* REG=3D4.5V, UVLO=3D4.7V */ @@ -183,9 +139,59 @@ #define MAX77705_CURRENT_CHGIN_MIN 100000 #define MAX77705_CURRENT_CHGIN_MAX 3200000 =20 +enum max77705_field_idx { + MAX77705_CHGPROT, + MAX77705_CHG_EN, + MAX77705_CHG_CC_LIM, + MAX77705_CHG_CHGIN_LIM, + MAX77705_CHG_CV_PRM, + MAX77705_CHG_PQEN, + MAX77705_CHG_RSTRT, + MAX77705_CHG_WCIN, + MAX77705_FCHGTIME, + MAX77705_LX_SLOPE, + MAX77705_MODE, + MAX77705_OTG_ILIM, + MAX77705_REG_B2SOVRC, + MAX77705_REG_DISKIP, + MAX77705_REG_FSW, + MAX77705_SYS_TRACK, + MAX77705_TO, + MAX77705_TO_TIME, + MAX77705_VBYPSET, + MAX77705_VCHGIN, + MAX77705_WCIN, + MAX77705_N_REGMAP_FIELDS, +}; + +static const struct reg_field max77705_reg_field[MAX77705_N_REGMAP_FIELDS]= =3D { + [MAX77705_MODE] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_00, 0, 3), + [MAX77705_FCHGTIME] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_01, 0, 2), + [MAX77705_CHG_RSTRT] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_01, 4, 5), + [MAX77705_CHG_PQEN] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_01, 7, 7), + [MAX77705_CHG_CC_LIM] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_02, 0, 5), + [MAX77705_OTG_ILIM] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_02, 6, 7), + [MAX77705_TO] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_03, 0, 2), + [MAX77705_TO_TIME] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_03, 3, 5), + [MAX77705_SYS_TRACK] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_03, 7, 7), + [MAX77705_CHG_CV_PRM] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_04, 0, 5), + [MAX77705_REG_B2SOVRC] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_05, 0, 3), + [MAX77705_CHGPROT] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_06, 2, 3), + [MAX77705_LX_SLOPE] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_06, 5, 6), + [MAX77705_REG_FSW] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_08, 0, 1), + [MAX77705_CHG_CHGIN_LIM] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_09, 0, 6), + [MAX77705_CHG_EN] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_09, 7, 7), + [MAX77705_CHG_WCIN] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_10, 0, 5), + [MAX77705_VBYPSET] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_11, 0, 6), + [MAX77705_REG_DISKIP] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_12, 0, 0), + [MAX77705_WCIN] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_12, 1, 2), + [MAX77705_VCHGIN] =3D REG_FIELD(MAX77705_CHG_REG_CNFG_12, 3, 4), +}; + struct max77705_charger_data { struct device *dev; struct regmap *regmap; + struct regmap_field *rfield[MAX77705_N_REGMAP_FIELDS]; struct power_supply_battery_info *bat_info; struct workqueue_struct *wqueue; struct work_struct chgin_work; --=20 2.39.5 From nobody Thu Oct 2 09:21:19 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 673DC3176E1 for ; Thu, 18 Sep 2025 17:06:56 +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=1758215218; cv=none; b=cwHgwR6oXhVL+zKc58yuBV898saN91c+0n4eSkneGpBvsVxEATdhygSQxx8yl+c190bslJI8XcOT6YyU5NImuTqRtORAPLwS32bBnw9K3ZFk9Wt4YG3zqAQEvtwa4AeDrI8k+Gdh9KnJ76qC8bTr629lT82/12c1GrUPUon2mLE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758215218; c=relaxed/simple; bh=9bF4jHQg+lKxivFJXmJBwxTSnTVvmDzKxFzLgdySb40=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=gjlNy8jjGrbkQKtea5uDwZSX9+VUuuq3lOx4O7q/SOOSW+LZJMvc13nngCGbU3cj/4EZan6HWbPYB9HFmebci9D5Fhr0UInGl272X+xvWRSSj3P/FEOfKmsZLLdjdZhQIPEQMKP5qlG7Y/pOtgiDSIzU4gLWJq2H3XmgeNCzubo= 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=EibF7KxY; 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="EibF7KxY" Received: by mail-ej1-f52.google.com with SMTP id a640c23a62f3a-b2400dcc55eso59157166b.0 for ; Thu, 18 Sep 2025 10:06:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1758215215; x=1758820015; 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=r2tEsyP+iygj2egzFvz4bKYsMR6EihtAp1HSImtRQx4=; b=EibF7KxYJE1KNBRmYccy+fewGJxlHhYJYpGZpVnH94V0CxlQ465BPzmAb5fBgut00T G1bnn31rNR1rgGxmvrd3XgYfhOiQdc8AMYZsNWUY1Y9NDrFl4hAYB25D7FPhIYM2gY5o bnS2GgdO1J8Mib60S36UWHu10lZcC0WKNecDZRPZ9jrvGgYO7qI2vkMIR1spmYHng9yL ijnR5bdUXtyNPbkEL3A/HH8IyMGOmMKNutS3LQV9nsXSNOy14nUehtL7/V0FalZ4lavO zuUXwjI6A3vvgINfD+C9Zk9ig8D5E3cpPXNbmQdKdMYZU1+zKfeqbqkE8zxVs8yB0ngT lGSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758215215; x=1758820015; 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=r2tEsyP+iygj2egzFvz4bKYsMR6EihtAp1HSImtRQx4=; b=UscNNWUaRDD+u5bG8nNi6YcwTwe+M7Vqz1C9eJ4agVML1Sk1txX26PWCyKcAdiL8+G EEL+yaMwFsnr3dOLa8lcHg9uOPKVC6YylggzWGx+Ta4H3UqdomWV81MEYoCjtJa3rcAZ 9d3mF6609+RTF9erfjGqkYvl1aADiZFgRFLUdc81J0tjcANCq7hNwg0fkWSEGyvoxb65 1f3pNL1IpSGP3LIHUUjKVEsDLh6C+qNTZLItjkPFa9WuptVxLL2YbO6wAj5k7cBJ2YGd l8KcjRb0LPjrAaC5XqLMlIrxwHsxaOa0AyOHmrZ0SwLqJtwIRBTZBbV2OsIb6l5dZYwI +Nag== X-Forwarded-Encrypted: i=1; AJvYcCWUa9QrBenNGbbS6lt4dAcj03rouOKJG1w9vjl5mZTk0oy38SBfKogQuACNdbIgV3LcaKswmqd6b64jlIw=@vger.kernel.org X-Gm-Message-State: AOJu0Yw6Abp2eSXInWH95scDQHZ866NU1SAc/h4dqFRWnesWX/ad+UXc c/BDzX1EH3k+wWzD6nNNn+N+TDdStbtckspC4ota8JeyUChmr5qxhyDDGcfuZg== X-Gm-Gg: ASbGnctZXgvcQRcWNO1c0ydBlwDWZu6GpPlWtGqwUTG4oodDL4cbNKqEIt9wdH94aQK FdZmcUVeKRlvwKN2gbjiMA/6w6yzyLkzA3EzsTOBoEiTpA6p//WlIs5yTi7k3K1BSxKsH3xy7fv QpSibA76UZb0yoKtl3HtZAbr8/bhGUUXBBhr2s+H+42tm56ZMqOjvsjilxanUzWYu9sVv9Qrpeh n9A8ncbMogjx1MlXsXP8NddXFLOhshb8KQApUmIpwus+6jqQYDe42K4bFqWkql3QvyfI0BeqInN s0mUyAx/s10nG5f+fUt4lcCvzm3QSeY3jsMN0RJPuxms3weQqLvNcrasrr26TJyRwzLQu8Yyjek 7DEqbI727/WtZCLOrOBHXVRgpza7I6m3Zw6BXj/8= X-Google-Smtp-Source: AGHT+IFGi7Cu+9N7wK3GfO8a5CVp2HtPyS0xOXk5eyDGdkQAtqEJjjRjf8h2IeoDdHdHLj4kdG1Llg== X-Received: by 2002:a17:906:4fc9:b0:b04:67f3:890f with SMTP id a640c23a62f3a-b1bb7d41a10mr719096966b.33.1758215214544; Thu, 18 Sep 2025 10:06:54 -0700 (PDT) Received: from [127.0.1.1] ([46.53.240.27]) by smtp.googlemail.com with ESMTPSA id a640c23a62f3a-b1fd271f895sm225845366b.97.2025.09.18.10.06.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Sep 2025 10:06:54 -0700 (PDT) From: Dzmitry Sankouski Date: Thu, 18 Sep 2025 20:06:49 +0300 Subject: [PATCH v4 5/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: <20250918-max77705_77976_charger_improvement-v4-5-11ec9188f489@gmail.com> References: <20250918-max77705_77976_charger_improvement-v4-0-11ec9188f489@gmail.com> In-Reply-To: <20250918-max77705_77976_charger_improvement-v4-0-11ec9188f489@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=1758215207; l=5448; i=dsankouski@gmail.com; s=20240619; h=from:subject:message-id; bh=9bF4jHQg+lKxivFJXmJBwxTSnTVvmDzKxFzLgdySb40=; b=PjF5Mu2/DzyIkWYeXkpf3Z5tcMhfw7f5vliJpO8ZAHw8RG7etXJVXGNXxA2KQINWINIZjrbsz 1w5o+6m983bCe0qEnKDaZHugPXNlzsSi7oiyaK+td924u+PNW0XpH3P 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 837e03bafcc6..23c643a307bd 100644 --- a/drivers/power/supply/max77705_charger.c +++ b/drivers/power/supply/max77705_charger.c @@ -400,43 +400,72 @@ static void max77705_chgin_isr_work(struct work_struc= t *work) power_supply_changed(chg->psy_chg); } =20 -static void max77705_charger_initialize(struct max77705_charger_data *chg) +static int max77705_charger_initialize(struct max77705_charger_data *chg) { struct power_supply_battery_info *info; struct regmap *regmap =3D chg->regmap; + int err; =20 - if (power_supply_get_battery_info(chg->psy_chg, &info) < 0) - return; + err =3D power_supply_get_battery_info(chg->psy_chg, &info); + if (err) + return dev_err_probe(chg->dev, err, "error on getting battery info"); =20 chg->bat_info =3D info; =20 /* unlock charger setting protect */ /* slowest LX slope */ - regmap_field_write(chg->rfield[MAX77705_CHGPROT], MAX77705_CHGPROT_UNLOCK= ED); - regmap_field_write(chg->rfield[MAX77705_LX_SLOPE], MAX77705_SLOWEST_LX_SL= OPE); + err =3D regmap_field_write(chg->rfield[MAX77705_CHGPROT], MAX77705_CHGPRO= T_UNLOCKED); + if (err) + goto err; + + err =3D regmap_field_write(chg->rfield[MAX77705_LX_SLOPE], MAX77705_SLOWE= ST_LX_SLOPE); + if (err) + goto err; =20 /* fast charge timer disable */ /* restart threshold disable */ /* pre-qual charge disable */ - regmap_field_write(chg->rfield[MAX77705_FCHGTIME], MAX77705_FCHGTIME_DISA= BLE); - regmap_field_write(chg->rfield[MAX77705_CHG_RSTRT], MAX77705_CHG_RSTRT_DI= SABLE); - regmap_field_write(chg->rfield[MAX77705_CHG_PQEN], MAX77705_CHG_PQEN_DISA= BLE); + err =3D regmap_field_write(chg->rfield[MAX77705_FCHGTIME], MAX77705_FCHGT= IME_DISABLE); + if (err) + goto err; + + err =3D regmap_field_write(chg->rfield[MAX77705_CHG_RSTRT], MAX77705_CHG_= RSTRT_DISABLE); + if (err) + goto err; =20 - regmap_field_write(chg->rfield[MAX77705_MODE], + err =3D regmap_field_write(chg->rfield[MAX77705_CHG_PQEN], MAX77705_CHG_P= QEN_DISABLE); + if (err) + goto err; + + err =3D regmap_field_write(chg->rfield[MAX77705_MODE], MAX77705_CHG_MASK | MAX77705_BUCK_MASK); + if (err) + goto err; =20 /* charge current 450mA(default) */ /* otg current limit 900mA */ - regmap_field_write(chg->rfield[MAX77705_OTG_ILIM], MAX77705_OTG_ILIM_900); + err =3D regmap_field_write(chg->rfield[MAX77705_OTG_ILIM], MAX77705_OTG_I= LIM_900); + if (err) + goto err; =20 /* BAT to SYS OCP 4.80A */ - regmap_field_write(chg->rfield[MAX77705_REG_B2SOVRC], MAX77705_B2SOVRC_4_= 8A); + err =3D regmap_field_write(chg->rfield[MAX77705_REG_B2SOVRC], MAX77705_B2= SOVRC_4_8A); + if (err) + goto err; =20 /* top off current 150mA */ /* top off timer 30min */ - regmap_field_write(chg->rfield[MAX77705_TO], MAX77705_TO_ITH_150MA); - regmap_field_write(chg->rfield[MAX77705_TO_TIME], MAX77705_TO_TIME_30M); - regmap_field_write(chg->rfield[MAX77705_SYS_TRACK], MAX77705_SYS_TRACK_DI= SABLE); + err =3D regmap_field_write(chg->rfield[MAX77705_TO], MAX77705_TO_ITH_150M= A); + if (err) + goto err; + + err =3D regmap_field_write(chg->rfield[MAX77705_TO_TIME], MAX77705_TO_TIM= E_30M); + if (err) + goto err; + + err =3D regmap_field_write(chg->rfield[MAX77705_SYS_TRACK], MAX77705_SYS_= TRACK_DISABLE); + if (err) + goto err; =20 /* cv voltage 4.2V or 4.35V */ /* MINVSYS 3.6V(default) */ @@ -447,21 +476,38 @@ static void max77705_charger_initialize(struct max777= 05_charger_data *chg) max77705_set_float_voltage(chg, info->voltage_max_design_uv); } =20 - regmap_field_write(chg->rfield[MAX77705_VCHGIN], MAX77705_VCHGIN_4_5); - regmap_field_write(chg->rfield[MAX77705_WCIN], MAX77705_WCIN_4_5); + err =3D regmap_field_write(chg->rfield[MAX77705_VCHGIN], MAX77705_VCHGIN_= 4_5); + if (err) + goto err; + + err =3D regmap_field_write(chg->rfield[MAX77705_WCIN], MAX77705_WCIN_4_5); + if (err) + goto err; =20 /* Watchdog timer */ regmap_update_bits(regmap, MAX77705_CHG_REG_CNFG_00, MAX77705_WDTEN_MASK, 0); =20 /* VBYPSET=3D5.0V */ - regmap_field_write(chg->rfield[MAX77705_VBYPSET], 0); + err =3D regmap_field_write(chg->rfield[MAX77705_VBYPSET], 0); + if (err) + goto err; =20 /* Switching Frequency : 1.5MHz */ - regmap_field_write(chg->rfield[MAX77705_REG_FSW], MAX77705_CHG_FSW_1_5MHz= ); + err =3D regmap_field_write(chg->rfield[MAX77705_REG_FSW], MAX77705_CHG_FS= W_1_5MHz); + if (err) + goto err; =20 /* Auto skip mode */ - regmap_field_write(chg->rfield[MAX77705_REG_DISKIP], MAX77705_AUTO_SKIP); + err =3D regmap_field_write(chg->rfield[MAX77705_REG_DISKIP], MAX77705_AUT= O_SKIP); + if (err) + goto err; + + return 0; + +err: + return dev_err_probe(chg->dev, err, "error while configuring"); + } =20 static int max77705_charger_probe(struct i2c_client *i2c) @@ -524,7 +570,11 @@ static int max77705_charger_probe(struct i2c_client *i= 2c) goto destroy_wq; } =20 - max77705_charger_initialize(chg); + ret =3D max77705_charger_initialize(chg); + if (ret) { + dev_err_probe(dev, ret, "failed to initialize charger IC\n"); + goto destroy_wq; + } =20 ret =3D max77705_charger_enable(chg); if (ret) { --=20 2.39.5 From nobody Thu Oct 2 09:21:19 2025 Received: from mail-ej1-f51.google.com (mail-ej1-f51.google.com [209.85.218.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 9C7CD3191A7 for ; Thu, 18 Sep 2025 17:06:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758215219; cv=none; b=bYKbFamr7QF8DPCKYQlFThYlbT2LZZtLxLTefvL6J8cAFWfSr/nfqzLzTavBhuou2UlbLiLnhFN1lNKMiyLPWexGLEHjxADoP4TQFGmsht6M/k9EnkONFCcqyGCyM9Y0RmnFd8GdUTfZP+Z3Oz6zzBGVddZfmibjJoYzbbmAl+w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758215219; c=relaxed/simple; bh=rM2VMTtuLx1OO1I64a08oL67vd4wqDtZKMaT66QU+PI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=eQiPtaeDZXH0LPB2usjRu3U7U+do8nATG2wVw31lNAYh8eAQP8ZoQVOzvDBaCX3VdUKyMIZxibUa22ZbsjALgGFs0YjnEVIl8Shl1e+lQhorr3gKnom0eVLzMWksYiPCligvIh9VNB1zC5PMxDS+/xdKCQul7tduBtTS6s0Bqbw= 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=SXkpIgGe; arc=none smtp.client-ip=209.85.218.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="SXkpIgGe" Received: by mail-ej1-f51.google.com with SMTP id a640c23a62f3a-b0411b83aafso189630566b.1 for ; Thu, 18 Sep 2025 10:06:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1758215216; x=1758820016; 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=aXZgdW7hQ554+RKU1mAft1z+jxi0i6oZRz2REy9LKZ4=; b=SXkpIgGeYGVdsymu5G9k+Zrg6FA5Pe63uSI5mXm+RjjrcshKUz6Y0gSz43mb4gDNDG wfpPLF1ycAKKZIb5aUm8NTwRO7iEJeCvM8g9iSDF56yVDiBpTdGNw98D4JPHI38Z5JkG 8iWlL8ZffcgjVKeMsOIer31EJCgDNwEy7QBbnJcMNL/y4lJPlbleWdqlZQwM5D3zi9o+ 5iJYYBmJ1YeJ3v2rt6i35QxvLQ53eN5miElhZdkqUVEBEKZBthThY29cPjCGnPv2cv87 3Xq5MrrO8JntjR7YM/TpSqR63xKWXq8qTRRSDlg5rCxCDbRfOd4d+kktbhvF80svPnYl UaHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758215216; x=1758820016; 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=aXZgdW7hQ554+RKU1mAft1z+jxi0i6oZRz2REy9LKZ4=; b=dPfiBBoPmSeuFrj0b6lo9L8hJ4warU8dxUonc24NzryQ8v7gwLl2ss+X2oNQ819xhP abNXAPoKawkUJpFJpaIKpmglpTL/xbuWHw0hFS2L+DnxRa7b9ru76Xt3UcwbVLgVRDJB +h0gqT2zIjLDChI4ZpvLxxBNmWlW3dys3uC0vu5WTT51pKrhmyRfGTU9gr0u9MNO/3DR H/tPYrQ47P4QFzq2hQId0g4pEeI0Qka/lETSRcr0G8cQtzz9KP7tptYHpocg2TXJH8Ag Qb9MiVdokSiwYb2WB+58zmHG2BYrKsvrv4e/7SkhkLtmY+lNE4MMcS2a5PBYwzMzlNxT H/fQ== X-Forwarded-Encrypted: i=1; AJvYcCW4S3+4peASG9q6uvE0AMNP7PVlrqXYa8e+ORwHvIvi1OgXddlrpwh70xnwJdc3a4/fmcwCj3JMOgsQYZ8=@vger.kernel.org X-Gm-Message-State: AOJu0YzFg14Wt2xW+PISzwbO20Z42AKOdEKNWq9BMhlA6MwCRXFjrIvc dHPqAuhHcPcsZR7L4w1nV08LzysgXvHezK4wyqzBUoT4gTPkM6ZaXeyf X-Gm-Gg: ASbGnctYFXRHYeXJl8adcOpvDtS5f3HqipD2vywwv4bb08UKDKxpr8LAVe1XBbqk41N 6S1mNkPxhospc3tPk5jOGxLAK8gHfSsFT+MvINI2tlln+SmpbVdm4lDDznrlQIhXyPVv9DjJMOf kUSpapOHfefZTGMMK/ufgQsuQJ3iCbiTj5g45Tr5ZUUfxuhLqBMv6KOdxSqGnzWA062llOlWAhp ooaWhTnyAonV0DkA7W51nnJhVd4bgN+QpxVktXk5YynsJFTXEwEi08S9dO1hImzj5vQaVZ9BjGZ luHFlmL9J1WJNlRBrAHjuIHOX5+3sf6ReaH3H45LWxeVqyxITX8NVve3H68cj7y3U0ForzmS/iq agC6NxiZHVLzk2OMG9/cxOSsF8jvM3spJDSvY3+c= X-Google-Smtp-Source: AGHT+IHrbzoMMur97LcHmJe0+ZRAgMCELVdzpEsjqR7ceMXQb2WtpqZ350/W8AW36R2xjU50raoeRg== X-Received: by 2002:a17:907:6ea9:b0:b17:ec4a:4f2f with SMTP id a640c23a62f3a-b1bb2261b11mr840490366b.27.1758215215744; Thu, 18 Sep 2025 10:06:55 -0700 (PDT) Received: from [127.0.1.1] ([46.53.240.27]) by smtp.googlemail.com with ESMTPSA id a640c23a62f3a-b1fd271f895sm225845366b.97.2025.09.18.10.06.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Sep 2025 10:06:55 -0700 (PDT) From: Dzmitry Sankouski Date: Thu, 18 Sep 2025 20:06:50 +0300 Subject: [PATCH v4 6/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: <20250918-max77705_77976_charger_improvement-v4-6-11ec9188f489@gmail.com> References: <20250918-max77705_77976_charger_improvement-v4-0-11ec9188f489@gmail.com> In-Reply-To: <20250918-max77705_77976_charger_improvement-v4-0-11ec9188f489@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=1758215207; l=2911; i=dsankouski@gmail.com; s=20240619; h=from:subject:message-id; bh=rM2VMTtuLx1OO1I64a08oL67vd4wqDtZKMaT66QU+PI=; b=pB9WMpdk3DeUxhkHdOrXbuBcKcWjrHr/CcSt/zb6DWEH/wn3J1q4vYzXDuMEP93pitkPR2Qrv ytEDfuoqn2pAB4PC8v0IBR4iL63Z7thpOMWpeer6kpK1QR3q1WZ0hh6 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 --- Changes in v4: - use 'chg' var name for driver private data, like in the rest of the driver --- 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 23c643a307bd..3062411dcb45 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 *chg =3D power_supply_get_drvdata(psy); + int err =3D 0; + + switch (psp) { + case POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT: + err =3D max77705_set_integer(chg, 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(chg, MAX77705_CHG_CHGIN_LIM, + MAX77705_CURRENT_CHGIN_MIN, + MAX77705_CURRENT_CHGIN_MAX, + MAX77705_CURRENT_CHGIN_STEP, + val->intval); + break; + default: + err =3D -EINVAL; + } + + return err; +}; + +static int max77705_property_is_writeable(struct power_supply *psy, + enum power_supply_property psp) +{ + switch (psp) { + case POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT: + case POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT: + return true; + default: + return false; + } +} + static const struct power_supply_desc max77705_charger_psy_desc =3D { .name =3D "max77705-charger", .type =3D POWER_SUPPLY_TYPE_USB, .properties =3D max77705_charger_props, + .property_is_writeable =3D max77705_property_is_writeable, .num_properties =3D ARRAY_SIZE(max77705_charger_props), .get_property =3D max77705_chg_get_property, + .set_property =3D max77705_set_property, }; =20 static void max77705_chgin_isr_work(struct work_struct *work) --=20 2.39.5 From nobody Thu Oct 2 09:21:19 2025 Received: from mail-ej1-f49.google.com (mail-ej1-f49.google.com [209.85.218.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 8C8923191D6 for ; Thu, 18 Sep 2025 17:06:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758215220; cv=none; b=OHsG6SAvSAgoBGC5NUfloNRNLcOzeVZSS9kE/5mLbZRFrpegBQOPCsiWHI4LCL037nwRbM9oOKkn8heA//7KdL8KE64hNkmEn5DDg5FFsGB9DGWPZLKaikrrQwIerZS2zrto2DVTK6c7hzlpWHuEIkVjZx/l4A2dtKRNicsuzdU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758215220; c=relaxed/simple; bh=p0Y001LouGzRYgngGf5yjavclhIzGKKVPJlTdhfMZA8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=HE1LsfFv786pRlv+ftJERU7l9m73UFwTdBxajoDuK8tYDRQpclabzQyqbc2w08SzsCfZHmzE+bmDl8vPjid95VVChjqEmplq3bWP8oI0aB24Dt708m7/5eD9NlntPjuEnxS6dU7ZBjPNSEO+RdvnRRggMSHqPccgOMdYFIO84P8= 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=ePNcaYi0; arc=none smtp.client-ip=209.85.218.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="ePNcaYi0" Received: by mail-ej1-f49.google.com with SMTP id a640c23a62f3a-b00a9989633so250787666b.0 for ; Thu, 18 Sep 2025 10:06:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1758215217; x=1758820017; 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=a/IIuik5CE+0p4i4XUTzTjvbxx21RfH5UCzEfl75uMA=; b=ePNcaYi0NYXJ594ciXRztGPdQJvh5G9RM0wTpkWOqYoHF2880HuUNKLN/rVBc3PcfD VvigLkzwZ1k+jOVEfO0xh/NJ79nNZfXPzIT4lPH/NH1GGo/qencca1OhlLoB8fmQVPwI /Hylgcl4ebdxjhy3rRSAILmC6uR/KEN8uubdnp0H+re/wOxoDJQ4RV1BVOXNCTj9LuT4 ldBw70i76Zpnpy3pO+42Rcmnf5oMcoTS/QbyFU67W59TiV+XvrcdaD32orQ9D6hEnDLN vBenGSoueXZ000MZ3NeWuhNsqTXX6DqQ8f05MTaXVrN74XuQHJ/jhzTmwdbxxXSTMOu7 HEGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758215217; x=1758820017; 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=a/IIuik5CE+0p4i4XUTzTjvbxx21RfH5UCzEfl75uMA=; b=THGdR0FYe7X7P8vLzcyVKehzjWWLXTqPvMksLUyYJ0zNI1TO70+vKbTrxNf5kHTn+c 3L293R1MjLny3aktXyJ1wzw2znEMyBsd1iXSKvTIlE520GT03y2WGLBt85hUzXPOdiOG rrGWibmHZAZQq2Po/IIBmOQY86QCS44hfwmXTnGkyb1f7W6CTq43UdEeoIKya6+fjaxm cjIT9SYn7Ds2Xt2boWeSkeUbDRON9z5CooMeuGo1LFSHoK00VjkvKcOgr5QzfPl47jqG 1ITcSfLzP+XjqUpE43vGIpEcMID+6l6+f3hKXAgmUMf6FVN1UzqJiBghDryVlbLIK0si Ld3w== X-Forwarded-Encrypted: i=1; AJvYcCUlGVNQYVdGv+FG54vtrgTZ6VJQBmgJ6ZpofReA9mRxffozaYNbBm9M5Cw/lz1rpTf0TpNzNH8THB2JGk4=@vger.kernel.org X-Gm-Message-State: AOJu0YwuHGD/s+Whojt3ooUUeFPljMbx6VprQKnCDSlvO/Jxtn+M2fX6 dxR2PDo/2x0cXzuzQ/Mam0ZdsCu+QlS3jMeexHrR5pUJJlcKhtu8JIyF X-Gm-Gg: ASbGncswpt5Qw898m6Y+a8xuOF/+xobCn7PuoKVtNVZ6n6aXEWGUp3BrK4rUCr7+V+O 8WgIe3SuYtjqoXn1LQW2TcPRCgC4OeL5d6IR5/qStnC8a1gf2v2JYDeuFshSXHSO5dKDiHrhGcq zHyg8BvXagvRNCEmf3XwqZEl/DhP3b5qCodW3YuNyh+rZimh/bm0zJ01j8UAgYyGYD+rJZ6zNyt igfadOSzcxVm6vk7ToRCUWMXkiWSP3FE5hADYfFgJ1mwfTKrBufoqKGV8eyY/Lw4KcQSmsq1PKd v1/ecPepr3o2uLiGHA3xYPzjEXeYX+QiuclHxq9SJNd5xxofe5X1MpY0Ol7CmWgCpVwJhYaeMjF CkA5fjYDHhls4kPGSyl8iRpGfjpcuGH7XB3lXPEU= X-Google-Smtp-Source: AGHT+IFJXGsnfRuXnGhNyUp+s17bIwH2J9IJyICxXejXnotTF3zx54YprzQcXlmTDWODob125Eq0YQ== X-Received: by 2002:a17:907:6ea5:b0:b04:2dd0:98 with SMTP id a640c23a62f3a-b1faa41447amr487140366b.12.1758215216824; Thu, 18 Sep 2025 10:06:56 -0700 (PDT) Received: from [127.0.1.1] ([46.53.240.27]) by smtp.googlemail.com with ESMTPSA id a640c23a62f3a-b1fd271f895sm225845366b.97.2025.09.18.10.06.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Sep 2025 10:06:56 -0700 (PDT) From: Dzmitry Sankouski Date: Thu, 18 Sep 2025 20:06:51 +0300 Subject: [PATCH v4 7/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: <20250918-max77705_77976_charger_improvement-v4-7-11ec9188f489@gmail.com> References: <20250918-max77705_77976_charger_improvement-v4-0-11ec9188f489@gmail.com> In-Reply-To: <20250918-max77705_77976_charger_improvement-v4-0-11ec9188f489@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=1758215207; l=3015; i=dsankouski@gmail.com; s=20240619; h=from:subject:message-id; bh=p0Y001LouGzRYgngGf5yjavclhIzGKKVPJlTdhfMZA8=; b=kJ8QFTSv9rLZNHYA6EG0iVEYoNxQCaZcTUPSXBqboxBpRWBLw6i2RPDq64r+FWBOvjL87ZKaV b6k/tDBpI3YDnCZiOnlWXTDimwI6jeyX8WHFHmU9SyOhmK4sBi8Z5d5 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 --- Changes to v4: - remove IRQF_SHARED flag, because interrupt is no longer shared - use IRQF_TRIGGER_NONE, because this is not physical irq - fix intendation - replace pr_err with dev_err_probe - commit msg: remove blank line Changes to v3: - move irq initialization after workqueue and charger initialization --- drivers/power/supply/max77705_charger.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/drivers/power/supply/max77705_charger.c b/drivers/power/supply= /max77705_charger.c index 3062411dcb45..5c8e46627cb0 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 @@ -608,7 +601,7 @@ static int max77705_charger_probe(struct i2c_client *i2= c) =20 max77705_charger_irq_chip.irq_drv_data =3D chg; ret =3D devm_regmap_add_irq_chip(chg->dev, chg->regmap, i2c->irq, - IRQF_ONESHOT | IRQF_SHARED, 0, + IRQF_ONESHOT, 0, &max77705_charger_irq_chip, &irq_data); if (ret) @@ -630,6 +623,15 @@ static int max77705_charger_probe(struct i2c_client *i= 2c) goto destroy_wq; } =20 + ret =3D devm_request_threaded_irq(dev, regmap_irq_get_virq(irq_data, MAX7= 7705_CHGIN_I), + NULL, max77705_chgin_irq, + IRQF_TRIGGER_NONE, + "chgin-irq", chg); + if (ret) { + dev_err_probe(dev, ret, "Failed to Request chgin IRQ\n"); + goto destroy_wq; + } + ret =3D max77705_charger_enable(chg); if (ret) { dev_err_probe(dev, ret, "failed to enable charge\n"); --=20 2.39.5 From nobody Thu Oct 2 09:21:19 2025 Received: from mail-ej1-f45.google.com (mail-ej1-f45.google.com [209.85.218.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5EC16319603 for ; Thu, 18 Sep 2025 17:07:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758215222; cv=none; b=GGJaExbPUEKeVYWbQmEqwPzzTjpzYjrdEb4Imryc9+w/Jq2YNV5NzJSRD1NNOOFLKitSzlLGvGgXs8zK98Y1PPqLcJGwWGVIwZB925/t5nLaVoQ71BKavqb43fRgfvRvVM/gWSJE4PAF8YJI5X0uri1YpzgaN3F4vsRDSyGqQrw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758215222; c=relaxed/simple; bh=tlZW2B/voUhQGw4c+vxZjRtNn5NJaMUoI/L38vxG2ac=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=cvNKEbKk9GD7nNNQX1yPUBknp6oSHvnkAutJyqbg9QqL4YR81vRornJNgYdsY/tz8j/gq/lUK70uG5inFmRN4iaS7kBo0Ys9sA8ZTZLCqlWvp0gjL/ByZJ3wY8YHiMXJ8JvphozT7WL2CI6CcFzYeJBDWUmJfakO9T+nFMni1TA= 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=caGcVahm; arc=none smtp.client-ip=209.85.218.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="caGcVahm" Received: by mail-ej1-f45.google.com with SMTP id a640c23a62f3a-b042eb09948so222933866b.3 for ; Thu, 18 Sep 2025 10:07:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1758215219; x=1758820019; 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=iXhHiAQ9NOSOJzNF711OarjiP/VLzvoqXrEe2ztdQB0=; b=caGcVahmOublmejxgqJiV7OsE89vw4efSn7MhblaUIgLV8GiVOBTZtUBhBActdNdv3 7uNZUJbvP1V6t4oK+P8ClKOo6BpxLB/O3RnrJ85ro4iGN5Yl0+ytZceU+sDLNtStUa66 QQ5N5zY5z10ZNBibQWX2+I8ay349zuE+1HtlotBjj+qQ0bHE9uX29Ghz4a7bIxGRF6pD zHGp33SEGpgiw8s3b1fC1i9ObLS9xFBN/YUNxkZAM3UdJevsJiU59Cvxj566AixuY5i8 2r9iknVEhtPzJNNJ+fW0d2Yy2xFQ/BfyqTiBp45NcznJ/5jh0TzWU44yCIqv3mjDzJiO +r0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758215219; x=1758820019; 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=iXhHiAQ9NOSOJzNF711OarjiP/VLzvoqXrEe2ztdQB0=; b=vfN8Swsf5aVwq0BdguYXBusMsHloA0ewjRm3SIhLJttzrv5jaRupfvp/geNgct7dse tZ+rxXp/uqB3qZ8cye+L1hiaWmuhLQ5anx12RhNFgcsOtzG+K4lxbA35azV1uxJpS39E 7H0781VjqSbQAFi8kZ3i1g3973G8J3X/H2BbWR0++ALM+eDeulNLWN6YiUBalG7mwe7G UdY7Hwqh2SObM+hUDjy0HYD6u5NOvDpJAhpINEdlkdcJB21xEeq0gHxSK5hMd359LOUn 4BN3AynWcxmzVlOPDpwrw9im23knMMWeA9ge2Uoa1me0abqdA0kJqD8wkHJFpd7rwucZ fsgA== X-Forwarded-Encrypted: i=1; AJvYcCX+Y85FsaspCfKpihbEA6h3Ig2U+IRtowbCd7VexsZG+4vZ5u1uzyqOo6Or8D6Z3k6k0OT9/xQe3nNyR88=@vger.kernel.org X-Gm-Message-State: AOJu0YxEwrmKvVy312HgTAkFpFUx3WxeNlHXonLhHWBRZ6KnQ5SXs8Kf rg5dTHtgxH6UYkLKsLLoLOsSvAUDAYkyONoWFGe2MwgMD+KDocyvvp4s X-Gm-Gg: ASbGncteLOH84yXGUU5sQFXqthqvuHHqaJFjU2z9o9EPPAUydgC95lsxFtHWoJ8+yJV itJS2893cypiBl62H1/BTxxFPsibr3OWckUkkN9yeWbRPWFr1C3tykKzihynp/0Bc3AOLamFxtv h+te/nmFJT5NlushLvOWQ+ZyRJ0cHlkSn9kVRariqWSQh8uYfeXVPxY7CSTlsk4BwFLXCEU8xis eNhTktJ5QPurdujev0rK1K0tXgCRev+YJXoKW6555e+hY916uOaVg8G5n2TkjbW6Jge0Vt1cnRk 3TCdkY5h9t/cOWFNyQT+2flNtjoQI1NOJfMpE+eZLY0htkuK1FMZr4WwZlmLS1m+6qmVcM2oQsu kLCmWPKDIl129Mv5LtGfGQqKmPzB5QsHlvENNkjw= X-Google-Smtp-Source: AGHT+IEkSREupr8I8wGDjc+n3QX/mxxViqwmPzAR/4zg2V5deiPg/FgrUVtbfIwH2hoHluertLZuqQ== X-Received: by 2002:a17:907:dac:b0:af9:414d:9c2 with SMTP id a640c23a62f3a-b1baf60b810mr776506366b.3.1758215218559; Thu, 18 Sep 2025 10:06:58 -0700 (PDT) Received: from [127.0.1.1] ([46.53.240.27]) by smtp.googlemail.com with ESMTPSA id a640c23a62f3a-b1fd271f895sm225845366b.97.2025.09.18.10.06.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Sep 2025 10:06:58 -0700 (PDT) From: Dzmitry Sankouski Date: Thu, 18 Sep 2025 20:06:52 +0300 Subject: [PATCH v4 8/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: <20250918-max77705_77976_charger_improvement-v4-8-11ec9188f489@gmail.com> References: <20250918-max77705_77976_charger_improvement-v4-0-11ec9188f489@gmail.com> In-Reply-To: <20250918-max77705_77976_charger_improvement-v4-0-11ec9188f489@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=1758215207; l=3504; i=dsankouski@gmail.com; s=20240619; h=from:subject:message-id; bh=tlZW2B/voUhQGw4c+vxZjRtNn5NJaMUoI/L38vxG2ac=; b=+Gg83ESg6SDRCrcIlLzLQiyXT2ShbXP8kQln9pygdmDQKF4XryODTSj1nJNRVzv/Hxft/SyMB ez0tdREGk0ZA3NdnC56HFyKBPKEvEuluMjhXyLpbn5dGeJ5qllBMLiF 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 5c8e46627cb0..8032dfa0c9a2 100644 --- a/drivers/power/supply/max77705_charger.c +++ b/drivers/power/supply/max77705_charger.c @@ -50,14 +50,14 @@ static irqreturn_t max77705_chgin_irq(int irq, void *ir= q_drv_data) } =20 static const struct regmap_irq max77705_charger_irqs[] =3D { - { .mask =3D MAX77705_BYP_IM, }, - { .mask =3D MAX77705_INP_LIMIT_IM, }, - { .mask =3D MAX77705_BATP_IM, }, - { .mask =3D MAX77705_BAT_IM, }, - { .mask =3D MAX77705_CHG_IM, }, - { .mask =3D MAX77705_WCIN_IM, }, - { .mask =3D MAX77705_CHGIN_IM, }, - { .mask =3D MAX77705_AICL_IM, }, + REGMAP_IRQ_REG_LINE(MAX77705_BYP_I, BITS_PER_BYTE), + REGMAP_IRQ_REG_LINE(MAX77705_INP_LIMIT_I, BITS_PER_BYTE), + REGMAP_IRQ_REG_LINE(MAX77705_BATP_I, BITS_PER_BYTE), + REGMAP_IRQ_REG_LINE(MAX77705_BAT_I, BITS_PER_BYTE), + REGMAP_IRQ_REG_LINE(MAX77705_CHG_I, BITS_PER_BYTE), + REGMAP_IRQ_REG_LINE(MAX77705_WCIN_I, BITS_PER_BYTE), + REGMAP_IRQ_REG_LINE(MAX77705_CHGIN_I, BITS_PER_BYTE), + REGMAP_IRQ_REG_LINE(MAX77705_AICL_I, BITS_PER_BYTE), }; =20 static struct regmap_irq_chip max77705_charger_irq_chip =3D { diff --git a/include/linux/power/max77705_charger.h b/include/linux/power/m= ax77705_charger.h index a612795577b6..6653abfdf747 100644 --- a/include/linux/power/max77705_charger.h +++ b/include/linux/power/max77705_charger.h @@ -12,34 +12,24 @@ #include =20 /* MAX77705_CHG_REG_CHG_INT */ -#define MAX77705_BYP_I BIT(0) -#define MAX77705_INP_LIMIT_I BIT(1) -#define MAX77705_BATP_I BIT(2) -#define MAX77705_BAT_I BIT(3) -#define MAX77705_CHG_I BIT(4) -#define MAX77705_WCIN_I BIT(5) -#define MAX77705_CHGIN_I BIT(6) -#define MAX77705_AICL_I BIT(7) - -/* MAX77705_CHG_REG_CHG_INT_MASK */ -#define MAX77705_BYP_IM BIT(0) -#define MAX77705_INP_LIMIT_IM BIT(1) -#define MAX77705_BATP_IM BIT(2) -#define MAX77705_BAT_IM BIT(3) -#define MAX77705_CHG_IM BIT(4) -#define MAX77705_WCIN_IM BIT(5) -#define MAX77705_CHGIN_IM BIT(6) -#define MAX77705_AICL_IM BIT(7) +#define MAX77705_BYP_I (0) +#define MAX77705_INP_LIMIT_I (1) +#define MAX77705_BATP_I (2) +#define MAX77705_BAT_I (3) +#define MAX77705_CHG_I (4) +#define MAX77705_WCIN_I (5) +#define MAX77705_CHGIN_I (6) +#define MAX77705_AICL_I (7) =20 /* MAX77705_CHG_REG_CHG_INT_OK */ -#define MAX77705_BYP_OK BIT(0) -#define MAX77705_DISQBAT_OK BIT(1) -#define MAX77705_BATP_OK BIT(2) -#define MAX77705_BAT_OK BIT(3) -#define MAX77705_CHG_OK BIT(4) -#define MAX77705_WCIN_OK BIT(5) -#define MAX77705_CHGIN_OK BIT(6) -#define MAX77705_AICL_OK BIT(7) +#define MAX77705_BYP_OK BIT(MAX77705_BYP_I) +#define MAX77705_DISQBAT_OK BIT(MAX77705_INP_LIMIT_I) +#define MAX77705_BATP_OK BIT(MAX77705_BATP_I) +#define MAX77705_BAT_OK BIT(MAX77705_BAT_I) +#define MAX77705_CHG_OK BIT(MAX77705_CHG_I) +#define MAX77705_WCIN_OK BIT(MAX77705_WCIN_I) +#define MAX77705_CHGIN_OK BIT(MAX77705_CHGIN_I) +#define MAX77705_AICL_OK BIT(MAX77705_AICL_I) =20 /* MAX77705_CHG_REG_DETAILS_00 */ #define MAX77705_BATP_DTLS BIT(0) --=20 2.39.5 From nobody Thu Oct 2 09:21:19 2025 Received: from mail-ej1-f49.google.com (mail-ej1-f49.google.com [209.85.218.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 698DD31355D for ; Thu, 18 Sep 2025 17:07:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758215224; cv=none; b=AaXL4DkdbqY9CXKzdY73Zh1PksqaKbm/l9VmDmy1V/Aq9hSRK1kmdFhCf1gPZpGtIg+T5n1E4XDZsYcTmHzg2sxJS+0m7pQrVd6ztwIzbiv0Jw57wAc94PEsNkFF9BrqzujaxX9h2EsPtw204wkNkxOPOu2CggfS/3IwZiNmvq0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758215224; c=relaxed/simple; bh=2j0Z44ZuInJmH1epmNVJSQbicoshH78O9ODW3KemRu4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=HwSNVGwhebVsB1aubZaiayQ8DJfCgLUbKrDPSIl/vzRvRI1mVH3h5YISsSTaWWY7qb31iEhRKxLW9fk+6bOtzzlF+AB+FLoeFYUBK8imTElWd/RlV3oeeiF1+C603irCrqaWyvopn7dMlUqbUPsjzucjC6wA7C6GKsWSHD6OtjQ= 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=muTFnNk/; arc=none smtp.client-ip=209.85.218.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="muTFnNk/" Received: by mail-ej1-f49.google.com with SMTP id a640c23a62f3a-b2391596dcfso74817166b.0 for ; Thu, 18 Sep 2025 10:07:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1758215220; x=1758820020; 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=AZREYZDUdZq758mUlZEILRmYEno001nFmKaO1knNtmM=; b=muTFnNk/MpactNhA1EPArSVisW/N6U+I8D+xDUXzDoqWaGC5HFvfJhnoR16CSvIl2r 5RQRT7wqz207htV38pGr7s12YBue2Ow3oy8+LSrXbxbP1a+wAtdJ8PINawLuDCE6zeiS hP8Vf8tk9cBr5ChduAIX/1f3b/WGOnsQGd/1EOAhu+sqJGiRntdYVKEO+osSNKsxL6yb KN+UX3X8ZOFm3XNZqFMta3zIya3rzm3PHdiGf0q7ZDgYhi1JTSQj1a193902IT3CWXvk jDVREoCoNloiNDsFi8v23qdBUeybZSVZi2OIDl/UW52JNu9xPHHGdMBLQF9At6/Gga2S sxKQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758215220; x=1758820020; 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=AZREYZDUdZq758mUlZEILRmYEno001nFmKaO1knNtmM=; b=JJmhjDK9dTcsa0qviXdQ/8Je3Nvtn+9adYPqVsaylp9buRqoJHEhzKTEo9gIvQZ43w wK4ZSZ/Hfu8LldL7a33nMWZTE4uHa9jriBUw7NFwFwQr8WYTUEbZtOC0oQG4z95OU+9O rsN3FyJgaKe2Cy+VDtUcGn+PWXwYzZYBs4GtwxBznRpaTOeFBX7xYD3FrYv15zUBzQQd 1FLYJA8p8J2G195UbZT2QnQoKxXWSiQBoBaV3h+5ABCAnO8GpE2WEf87ekV/+3kxanku n8pCSSPb0x2bDLsiXU6Q/HMMPvGHLGRVGzLTMS5gWL8z4sL6Ttf5VZ3nGWevss0CuvJx WwYw== X-Forwarded-Encrypted: i=1; AJvYcCVWt09Rgd7RlXJKlHoHjHUkc3ADtOxTXOjdBGnHtsEfx4xKFqlPn3dTmN9iQLOZ9CrpNYmP5AG5dPppCqk=@vger.kernel.org X-Gm-Message-State: AOJu0YxXhmRQHjUrXJ1Olen4MRmQCY2zE1wRxUjgEn7Zqeapp4i4Jqzv QlPeOc2VSas3TckhMweDga/BKxDX51/8Im8WlmCIus+DmmP5SC9UArmc X-Gm-Gg: ASbGncvrVIG64ZbUlfZXM+Bj26HqLxQGueXfMk5MqW+b5DWv4wJ2Laol4cBb2gPAPps qx7s7+riLk4fnaE4MI7AT86B559e9/TT+U3C0v0jfQDdl2VJ6bKnw+T/4QgOLW10bKChpXViuwC EqH6ZERoiX2n77sLyNzCG9hT8q77fmIDDvnrNWQFOh+yQpTKJTXcLnA5iCb6p8sYDEEXT1QB2iF Kv+TnBjBJ0MyfMqKYx5Tz2Iou44eG4FHuuBceP4BL45WCj7zo2Q/x4QTZTrvgktnRPfRaTEZCMP 7lVzJXKbE/PbXZuwMjY4ndVI7dsT7FZmyjmlGV+Hu8/Xds/fBNp/juN1oQzL+1j+snnxYYQ3ND5 fBiGOxJhjHWBx6nqp+cTMKdY3d8XXW4tq72o/UKQ= X-Google-Smtp-Source: AGHT+IHJaYAosIIgzo9wihFAu8HxJKZvFancA9c5JtlSdI6Jj/MWkdQceshUZ3VqvRkTQp7YqCTWJw== X-Received: by 2002:a17:907:3f28:b0:b04:82bc:1dd2 with SMTP id a640c23a62f3a-b1bb25530d3mr752928366b.29.1758215219623; Thu, 18 Sep 2025 10:06:59 -0700 (PDT) Received: from [127.0.1.1] ([46.53.240.27]) by smtp.googlemail.com with ESMTPSA id a640c23a62f3a-b1fd271f895sm225845366b.97.2025.09.18.10.06.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 Sep 2025 10:06:59 -0700 (PDT) From: Dzmitry Sankouski Date: Thu, 18 Sep 2025 20:06:53 +0300 Subject: [PATCH v4 9/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: <20250918-max77705_77976_charger_improvement-v4-9-11ec9188f489@gmail.com> References: <20250918-max77705_77976_charger_improvement-v4-0-11ec9188f489@gmail.com> In-Reply-To: <20250918-max77705_77976_charger_improvement-v4-0-11ec9188f489@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=1758215207; l=4185; i=dsankouski@gmail.com; s=20240619; h=from:subject:message-id; bh=2j0Z44ZuInJmH1epmNVJSQbicoshH78O9ODW3KemRu4=; b=fmL6X3MR1TCWT473mDn6c2k63zhOYbh49PlNdB88/4vGEAtaqPJdKBuUG2pnz3aeETzSKTiYc 5G6bBnTQoaXBvtthLBVnVVi7aOPLjv8HMlCXQ+T+1F0NDsO4xrSdQxz 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 --- Changes in v4: - fix intendation - use IRQF_TRIGGER_NONE, because this is not physical irq - use dev_err_probe instead of pr_err - remove excessive chgin irq request - remove pr_infos --- drivers/power/supply/max77705_charger.c | 58 +++++++++++++++++++++++++++++= ++++ include/linux/power/max77705_charger.h | 5 +++ 2 files changed, 63 insertions(+) diff --git a/drivers/power/supply/max77705_charger.c b/drivers/power/supply= /max77705_charger.c index 8032dfa0c9a2..168a67819a51 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,38 @@ 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--; + + 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 { + 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 @@ -617,6 +659,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"); @@ -632,6 +680,16 @@ static int max77705_charger_probe(struct i2c_client *i= 2c) goto destroy_wq; } =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_NONE, + "aicl-irq", chg); + if (ret) { + dev_err_probe(dev, ret, "Failed to Request aicl IRQ\n"); + goto destroy_wq; + } + ret =3D max77705_charger_enable(chg); if (ret) { dev_err_probe(dev, ret, "failed to enable charge\n"); diff --git a/include/linux/power/max77705_charger.h b/include/linux/power/m= ax77705_charger.h index 6653abfdf747..92fef95e4ac4 100644 --- a/include/linux/power/max77705_charger.h +++ b/include/linux/power/max77705_charger.h @@ -123,6 +123,8 @@ #define MAX77705_DISABLE_SKIP 1 #define MAX77705_AUTO_SKIP 0 =20 +#define AICL_WORK_DELAY 100 + /* uA */ #define MAX77705_CURRENT_CHGIN_STEP 25000 #define MAX77705_CURRENT_CHG_STEP 50000 @@ -185,7 +187,10 @@ struct max77705_charger_data { struct power_supply_battery_info *bat_info; struct workqueue_struct *wqueue; struct work_struct chgin_work; + struct delayed_work aicl_work; struct power_supply *psy_chg; + int is_aicl_irq_disabled; + int aicl_irq; }; =20 #endif /* __MAX77705_CHARGER_H */ --=20 2.39.5