From patchwork Mon Feb 24 23:21:34 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sebastian Reichel X-Patchwork-Id: 868010 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B00371EEA4E; Mon, 24 Feb 2025 23:22:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740439320; cv=none; b=d7E0qbcDiZXs0FC80wJY4qF28S5ryrmlL8Ww+spOcV0w73Kx9mS3MGln1m/MuRlZqBn+cJIivtMPToWkY70OvQh4KKlACE8gPqZ1llcNzI9e0NLLIk0jiORU/Jq9hTwHzu2Q9OKXnaJUUYXJcKrpZpr+z1AhibZ/1kNVw+cPItQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740439320; c=relaxed/simple; bh=QKY3PTyYmEm+cEdjzXqQF41L9DqH+mU5dbNV5sPtDaM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=rMacCA1LZafO3afru4GwVj5ThUwVgY5F62QZ+GVEqpFrU7SloH1av6SHabO/sAqXF0HrfxgWG5T1INITjlAGBkkNzB2E4vgaSSuxJLWBT/UhEaulaLSijKdB6xUCJ3I37Lm8+vfNtY3UJ5UJUXnPEy9enznTDE8SxE9/VtQF7Gs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 228DAC4CEE6; Mon, 24 Feb 2025 23:22:00 +0000 (UTC) Received: by venus (Postfix, from userid 1000) id 443AD18066E; Tue, 25 Feb 2025 00:21:58 +0100 (CET) From: Sebastian Reichel Date: Tue, 25 Feb 2025 00:21:34 +0100 Subject: [PATCH 1/7] power: supply: core: get rid of of_node Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250225-psy-core-convert-to-fwnode-v1-1-d5e4369936bb@collabora.com> References: <20250225-psy-core-convert-to-fwnode-v1-0-d5e4369936bb@collabora.com> In-Reply-To: <20250225-psy-core-convert-to-fwnode-v1-0-d5e4369936bb@collabora.com> To: Sebastian Reichel , Mark Brown , Greg Kroah-Hartman , Linus Walleij , Hans de Goede Cc: Liam Girdwood , Chen-Yu Tsai , Matti Vaittinen , =?utf-8?q?Pali_Roh=C3=A1r?= , Paul Cercueil , Samuel Holland , David Lechner , Krzysztof Kozlowski , Marek Szyprowski , Sebastian Krzyszkowiak , Purism Kernel Team , Bartosz Golaszewski , Konrad Dybcio , Matthias Brugger , AngeloGioacchino Del Regno , Orson Zhai , Baolin Wang , Chunyan Zhang , linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, Sebastian Reichel X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3060; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=QKY3PTyYmEm+cEdjzXqQF41L9DqH+mU5dbNV5sPtDaM=; b=owEBbQKS/ZANAwAKAdju1/PIO/qaAcsmYgBnvP8TOdMot9PQtethDjqEyfHqR6xxTbTQsfBlw 8mEd4upDXmJAjMEAAEKAB0WIQTvZg0HRj+Lcmp5VBPY7tfzyDv6mgUCZ7z/EwAKCRDY7tfzyDv6 mgJ1D/4+BYlcCsk5XiDQ6TjNon6jTYwL6NAwYYW2+Fk77yDPgHAlNcMqIjzTuPInpKddPtoYT/s hUJh+DdhYK6iBjffxQ0EX/Sd18zIFgkzKBPnSQYXzr+bJIKTWyK7HclXNEr9yj9slfq1E8Vpsv/ gJ3dI2WLavtgABq0JTehVeUgDrPNdwGu37il+ttiBHWwAplsHkkkveIQ7ZNSigHCcwz5GFzb1Vv nsfK4fOmuqA3XeMwEbxp8KWlxwa2T3zjfv5ujPRYo4BQ9AXetwvVfpSuAzKLdD8HCouQ3XCkFxo yK+qYxyyuXC+mi63KkHvguAYOdq8iBxCVq3ZISe/TQaWJBeKjaj6NfjR+4b3f4pscR4SnG0wnXY W2B3CSAe2M2MIyKOpkadwT0a9Q+7xZsKyy0oYxSb00LqJ3Iw7CVYNGGW0zB2UZkHizXLjFSan5G dvZ8bYd/s1zW49+TeQZmraYfU6KBRYgDMC4j5zuAFV+oGRlBYyT+x1E90mscXmTS95oJc2yLSrV If44wTSvpgD+WhS/Rda95i2O7Wo0EAOQdSkUyVwomkEaGoSWUw3EDGsPZLce/J8Db+xXRnXfKkM /YQ7mgA3vvAGPUvA7eYJexIYrs3eIwhZ2QqrD2JpBM2DmiT+YXR5Ch5ku+eC49DBiN6SdpYryKa Sa2v9AnC39QUBbQ== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A This removes .of_node from 'struct power_supply', since there is already a copy in .dev.of_node and there is no need to have two copies. Signed-off-by: Sebastian Reichel --- drivers/power/supply/power_supply_core.c | 17 ++++++++--------- include/linux/power_supply.h | 1 - 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/drivers/power/supply/power_supply_core.c b/drivers/power/supply/power_supply_core.c index d0bb52a7a0367a8e07787be211691cad14a41a54..11030035da6f121ca76bebf800c06cfd5db57578 100644 --- a/drivers/power/supply/power_supply_core.c +++ b/drivers/power/supply/power_supply_core.c @@ -200,11 +200,11 @@ static int __power_supply_populate_supplied_from(struct power_supply *epsy, int i = 0; do { - np = of_parse_phandle(psy->of_node, "power-supplies", i++); + np = of_parse_phandle(psy->dev.of_node, "power-supplies", i++); if (!np) break; - if (np == epsy->of_node) { + if (np == epsy->dev.of_node) { dev_dbg(&psy->dev, "%s: Found supply : %s\n", psy->desc->name, epsy->desc->name); psy->supplied_from[i-1] = (char *)epsy->desc->name; @@ -235,7 +235,7 @@ static int __power_supply_find_supply_from_node(struct power_supply *epsy, struct device_node *np = data; /* returning non-zero breaks out of power_supply_for_each_psy loop */ - if (epsy->of_node == np) + if (epsy->dev.of_node == np) return 1; return 0; @@ -270,13 +270,13 @@ static int power_supply_check_supplies(struct power_supply *psy) return 0; /* No device node found, nothing to do */ - if (!psy->of_node) + if (!psy->dev.of_node) return 0; do { int ret; - np = of_parse_phandle(psy->of_node, "power-supplies", cnt++); + np = of_parse_phandle(psy->dev.of_node, "power-supplies", cnt++); if (!np) break; @@ -606,8 +606,8 @@ int power_supply_get_battery_info(struct power_supply *psy, const __be32 *list; u32 min_max[2]; - if (psy->of_node) { - battery_np = of_parse_phandle(psy->of_node, "monitored-battery", 0); + if (psy->dev.of_node) { + battery_np = of_parse_phandle(psy->dev.of_node, "monitored-battery", 0); if (!battery_np) return -ENODEV; @@ -1544,9 +1544,8 @@ __power_supply_register(struct device *parent, if (cfg) { dev->groups = cfg->attr_grp; psy->drv_data = cfg->drv_data; - psy->of_node = + dev->of_node = cfg->fwnode ? to_of_node(cfg->fwnode) : cfg->of_node; - dev->of_node = psy->of_node; psy->supplied_to = cfg->supplied_to; psy->num_supplicants = cfg->num_supplicants; } diff --git a/include/linux/power_supply.h b/include/linux/power_supply.h index 6ed53b292162469d7b357734d5589bff18a201d0..975ccab56597ef579ef0c9dc913dcb0a26b5855a 100644 --- a/include/linux/power_supply.h +++ b/include/linux/power_supply.h @@ -316,7 +316,6 @@ struct power_supply { char **supplied_from; size_t num_supplies; - struct device_node *of_node; /* Driver private data */ void *drv_data; From patchwork Mon Feb 24 23:21:35 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sebastian Reichel X-Patchwork-Id: 868011 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AFFE0101F2; Mon, 24 Feb 2025 23:22:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740439320; cv=none; b=YiMB/h1QF1zlmUf2sVIgLeWgS0aX9HCl7t5ZpA6DbpPguRAGWKqs5Zg3jwkq1vZdv0+Z486eyA2hdcghSqEnSCboWhNa50MNpwZrCYLSgud2/vWH7KwSV0IJ6IUTL3daY09Q1wVpSIpVHX6TtHT05XWGcVa+8m/gy0cac8LXLXg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740439320; c=relaxed/simple; bh=z6RCFb2/vB/uPI6y66W4S0l3zN9napepWbci1XWwVNA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=a3z1nQHBA+OaOTPCu1iu4uCfg2EkXA9QaZVWlG5pfCBD4coBSOUln+Xicr0K2eqrMfalrAlynodHExUyqB4viFW6N6rC61vDLt4sHWEzxbuP2S2P1yRSK8zlkDVcofuWoVp/n5InIaN0JH4oWgpHgnC1EtMWYaxQf5kDmOFTIvo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1CE11C4CED6; Mon, 24 Feb 2025 23:22:00 +0000 (UTC) Received: by venus (Postfix, from userid 1000) id 470D218066F; Tue, 25 Feb 2025 00:21:58 +0100 (CET) From: Sebastian Reichel Date: Tue, 25 Feb 2025 00:21:35 +0100 Subject: [PATCH 2/7] regulator: act8865-regulator: switch psy_cfg from of_node to fwnode Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250225-psy-core-convert-to-fwnode-v1-2-d5e4369936bb@collabora.com> References: <20250225-psy-core-convert-to-fwnode-v1-0-d5e4369936bb@collabora.com> In-Reply-To: <20250225-psy-core-convert-to-fwnode-v1-0-d5e4369936bb@collabora.com> To: Sebastian Reichel , Mark Brown , Greg Kroah-Hartman , Linus Walleij , Hans de Goede Cc: Liam Girdwood , Chen-Yu Tsai , Matti Vaittinen , =?utf-8?q?Pali_Roh=C3=A1r?= , Paul Cercueil , Samuel Holland , David Lechner , Krzysztof Kozlowski , Marek Szyprowski , Sebastian Krzyszkowiak , Purism Kernel Team , Bartosz Golaszewski , Konrad Dybcio , Matthias Brugger , AngeloGioacchino Del Regno , Orson Zhai , Baolin Wang , Chunyan Zhang , linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, Sebastian Reichel X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=890; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=z6RCFb2/vB/uPI6y66W4S0l3zN9napepWbci1XWwVNA=; b=kA0DAAoB2O7X88g7+poByyZiAGe8/xSimcaazLXGcNG/1mTR16VIq9X7i+gMf3F5pKIfBdrFE 4kCMwQAAQoAHRYhBO9mDQdGP4tyanlUE9ju1/PIO/qaBQJnvP8UAAoJENju1/PIO/qafVQP/11l j3+tzVXJQejIIWqovbTDKhcu5evCd64HmFmMcW/lxU7NGcV9hWKXIcrO7Vc/VWSFALTqK0vUA4L X/BPijrawRPWY5a5KZLd39MjVcApUCSZpDLcL9Qyb7maxy0Yu0KkR9znpYQtDl/BGcNcTowxPmt wxW75zdKnSbEnG06VR8OHwIBb/QcpYS8aiLV2WL36yQRGZfdpXOmeTLOII82zVI+CFYZX8pNhb7 z7pHK74GC6Ec6RJ3hJJfCNLUbpFlwNdL+yMb2361EazgpKHXpmzv6mRA2EcB1qtKCgglogQ85HI ywvbZ2Fac/wmgvz9Bmn9hyQLMEhpL7gInMMluFZERAQQ0qYH4TugA09hHhAK9XsTFnVrLsD/lsC JRbIKqLR6uRRrsqEdqlTM+4YZBG0/7WlrSIgi94WiRDsbn+dKWp3u9En1YHhGJJI9B3kkhdubRg +aNOHqVbc3o7BX4m2T/X0svguaoFbaTF3/KCfdisxSvR1Y4eWzQ+ek4yql2FVBjgnLQAra0pW3B 4FptwcIRqre30P4uAErYuqZGI8pliU/cn2OWfZ0f+m8SiUIamfFNkRiK0Fa+PZhLuMq8wiN04cJ HuuDNxsCoqByr0DotSzNt9i8FdjyLHtDGLuN0gADzgu7h2hqnKGg2A6ZfvilZeJbPSkA4UcJhMM 9naKi X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A In order to remove .of_node from the power_supply_config struct, use .fwnode instead. Signed-off-by: Sebastian Reichel --- drivers/regulator/act8865-regulator.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/regulator/act8865-regulator.c b/drivers/regulator/act8865-regulator.c index 0457af23c55acdd97b2cdc6fd6bfd07ae0f9d11f..b2a6ddc6f56d32e8758977e25858b972e294bc84 100644 --- a/drivers/regulator/act8865-regulator.c +++ b/drivers/regulator/act8865-regulator.c @@ -643,7 +643,7 @@ static int act8600_charger_probe(struct device *dev, struct regmap *regmap) struct power_supply *charger; struct power_supply_config cfg = { .drv_data = regmap, - .of_node = dev->of_node, + .fwnode = dev_fwnode(dev), }; charger = devm_power_supply_register(dev, &act8600_charger_desc, &cfg); From patchwork Mon Feb 24 23:21:36 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sebastian Reichel X-Patchwork-Id: 868009 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CF24B20969D; Mon, 24 Feb 2025 23:22:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740439320; cv=none; b=sTTMI23F5eUcQbdtyjyAqkN3Fr7ErfhGPOzdNkrmMNtYA0bUHXqsvqYxk3hnspk6bZ0lbFmstILR3YDsBhgqR3dx4pUPfTyGdE4YDG9zdT+Zv4inGpMzwRMfp2slOLHBt9CzQQ0//NXE/2Q6UoL7i9YLsIFXIPA7xt/2jRaZAC4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740439320; c=relaxed/simple; bh=uzPXWIS9wiOW79/JSZO2CHjg9YrfY89iBDn3F99mMoA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=HPN99AhXWsPiw21clwrlPnHJVVE4Q0wTWBfakMlRHDhk0R8+g31RKcV46T3xxLALjiAM4jnZsEdhzIlPLdOezTRPUG704Po4wzUuO9/hHR+F+SY2nMVxhIKo2JGw/OvE15iNo8AKnG+zqPm9ycIX41+oG+gA+laqbYzYVr4mFXg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 57039C4CEEA; Mon, 24 Feb 2025 23:22:00 +0000 (UTC) Received: by venus (Postfix, from userid 1000) id 48EC2180670; Tue, 25 Feb 2025 00:21:58 +0100 (CET) From: Sebastian Reichel Date: Tue, 25 Feb 2025 00:21:36 +0100 Subject: [PATCH 3/7] usb: common: usb-conn-gpio: switch psy_cfg from of_node to fwnode Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250225-psy-core-convert-to-fwnode-v1-3-d5e4369936bb@collabora.com> References: <20250225-psy-core-convert-to-fwnode-v1-0-d5e4369936bb@collabora.com> In-Reply-To: <20250225-psy-core-convert-to-fwnode-v1-0-d5e4369936bb@collabora.com> To: Sebastian Reichel , Mark Brown , Greg Kroah-Hartman , Linus Walleij , Hans de Goede Cc: Liam Girdwood , Chen-Yu Tsai , Matti Vaittinen , =?utf-8?q?Pali_Roh=C3=A1r?= , Paul Cercueil , Samuel Holland , David Lechner , Krzysztof Kozlowski , Marek Szyprowski , Sebastian Krzyszkowiak , Purism Kernel Team , Bartosz Golaszewski , Konrad Dybcio , Matthias Brugger , AngeloGioacchino Del Regno , Orson Zhai , Baolin Wang , Chunyan Zhang , linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, Sebastian Reichel X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=843; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=uzPXWIS9wiOW79/JSZO2CHjg9YrfY89iBDn3F99mMoA=; b=owEBbQKS/ZANAwAKAdju1/PIO/qaAcsmYgBnvP8UYJ+0B3ptqT3rXwREAooFmD/swymICio8W pnPXcJgGfCJAjMEAAEKAB0WIQTvZg0HRj+Lcmp5VBPY7tfzyDv6mgUCZ7z/FAAKCRDY7tfzyDv6 mhDbD/wPcjHYHqB7mWdnW0pSNyWcUXdbmSEDURYINy7zI99wrkA/LWWxAFFYRbfTt2W3TN81jDg +gIkNHV5UvwYKZexxSpNauGWbL8+nNAMbydAmAscz3cVVIytG2cvlnrjdJUVinzZkC8f0FnsKXS KslyWepD9DXE/luVAEuoKLB4rmnjw0cmHqHhMiquMBzxIEsoL+j+cnzehZBhdGJqcAvjdaMingD 6Xj4wybnES19QVzcW5fTMVS5VOjqoeJpKMc4ao+Fy7zcrAimxo8Yw/uLIMHgPNVwb8ckXDt7Chs rZZQ4muc0MgVgt5+FflH9CVmTQRxRxrGYhuE2MWm0bnC8xVGzHAdxPCBmavimApX45L6AYiT7ld 7hFAB5UA58VHqSmgHyG1vyvH2/Hewbf0SIwmTFHAoTzmCionvtAJiPg2kp4uzLH2Y7xm50+R9nW t88nwfk7ht9SipZt2G0Wi/Jmg3b6z94oNTFus0sSYr6QTtgMnxZghX3K6BmOUDyizaJkcDOyxvn Xmsww8Oox+9z7uMHzA4iPWLdypB7gZts/19/JBs0BStW6rJx2iN/jqVxjypGVNQpp/52ipVESt5 tBmz1K0AtGNPgWlA55B8K9sLKJS7zL/Bzq3OZeXqMzrSE3Gj5ZCsBhOGaiUA1C54EfmogjtGZbr qxREWTr8WxmDiTg== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A In order to remove .of_node from the power_supply_config struct, use .fwnode instead. Signed-off-by: Sebastian Reichel --- drivers/usb/common/usb-conn-gpio.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/usb/common/usb-conn-gpio.c b/drivers/usb/common/usb-conn-gpio.c index aa710b50791b0282be0a6a26cffdd981b794acaa..1e36be2a28fd5ca5e1495b7923e4d3e25d7cedef 100644 --- a/drivers/usb/common/usb-conn-gpio.c +++ b/drivers/usb/common/usb-conn-gpio.c @@ -158,7 +158,7 @@ static int usb_conn_psy_register(struct usb_conn_info *info) struct device *dev = info->dev; struct power_supply_desc *desc = &info->desc; struct power_supply_config cfg = { - .of_node = dev->of_node, + .fwnode = dev_fwnode(dev), }; desc->name = "usb-charger"; From patchwork Mon Feb 24 23:21:39 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sebastian Reichel X-Patchwork-Id: 868008 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D29E0101F2; Mon, 24 Feb 2025 23:22:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740439322; cv=none; b=lu+dQwu4C/k6to5w8p8jCqzqxPMVjzlqTBfNqfpFAvIGbfugoGDc5YmKp0Yaabxpru5LHRNiT/ZM7Nw7/AfDS9JI5R1MfmKK9rV0tt2BRvPTU9PCCDn1n6ZJeaGJ9wA0zzXN3vk7DJkYVcgzBB27UcLgj2Ewx+4QqRWTpAQETaU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740439322; c=relaxed/simple; bh=3EWj8wydEal1AdBKhkc/cc9ZWdBhQhAMquhRLczJRC4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=k2E4tZQBYvJ8H+MGKp/EHbhpgkqVtReq/t1ad+2VZf3OhhWoaYtDvWkot8371B/vG4yuBa3Tfj0z/ywXKuoP+EyHYcrT0LlZNb6nloGNI+9Bab2Y9f6xmRCFZSyoLOMWh/j5GpKu6bHq8g+v0z5nkUDdnXRxyxv0DUQwoDItC9E= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 Received: by smtp.kernel.org (Postfix) with ESMTPSA id 42913C4CEF1; Mon, 24 Feb 2025 23:22:02 +0000 (UTC) Received: by venus (Postfix, from userid 1000) id 4E1D3180665; Tue, 25 Feb 2025 00:21:58 +0100 (CET) From: Sebastian Reichel Date: Tue, 25 Feb 2025 00:21:39 +0100 Subject: [PATCH 6/7] power: supply: core: battery-info: fully switch to fwnode Precedence: bulk X-Mailing-List: linux-pm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250225-psy-core-convert-to-fwnode-v1-6-d5e4369936bb@collabora.com> References: <20250225-psy-core-convert-to-fwnode-v1-0-d5e4369936bb@collabora.com> In-Reply-To: <20250225-psy-core-convert-to-fwnode-v1-0-d5e4369936bb@collabora.com> To: Sebastian Reichel , Mark Brown , Greg Kroah-Hartman , Linus Walleij , Hans de Goede Cc: Liam Girdwood , Chen-Yu Tsai , Matti Vaittinen , =?utf-8?q?Pali_Roh=C3=A1r?= , Paul Cercueil , Samuel Holland , David Lechner , Krzysztof Kozlowski , Marek Szyprowski , Sebastian Krzyszkowiak , Purism Kernel Team , Bartosz Golaszewski , Konrad Dybcio , Matthias Brugger , AngeloGioacchino Del Regno , Orson Zhai , Baolin Wang , Chunyan Zhang , linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org, Sebastian Reichel X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=6392; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=3EWj8wydEal1AdBKhkc/cc9ZWdBhQhAMquhRLczJRC4=; b=owEBbQKS/ZANAwAKAdju1/PIO/qaAcsmYgBnvP8VJZw40VZ+5kAHfcQzqKYee3Q4orBeXO6F5 kkSHkBj0S6JAjMEAAEKAB0WIQTvZg0HRj+Lcmp5VBPY7tfzyDv6mgUCZ7z/FQAKCRDY7tfzyDv6 mvPJD/9F8NWw5U7KxrbhD6aMHpKjS8DxiTv2n/0X6f1BVogwhklGLpdX6mNc1y98cshIPjFFJ+k U/PshiFvspaIQ1yxSmDJMvlUEsiPNWbH1l+QvzVKP736haoDH8UvOmxdtZzXU38R70m/oLMQ9Je JX0oIgfUlodpewdR7SQAWuBKvD7leAH4ow1fxwjaX1w+wrdOxm6Jnb55umC7pbkjsTsQVwVUnJa mFpWyCuHNpdmZX6/asmM8hhe/d+3+1QuJycQ8p/q9JVzK27622oEEMfxj7CW7SUqFh9VjEEws6G 4rVvGnhhq3o121PlXicG0l2s/28oJcnIbJm4g0ZZ9n5pwfMcdsn0Yh4+JmJUrAbiKJr9g8RXyS2 gSqmWw7lcKDVSzD9RdeGgchp9zb7leNu3ZC7QSlxZtp+vxfRv7YO7e6qOttAM2aErv98LJDzKYn xCXGrT3+XdJjxMOPgxcfhSyv1uglivrvr/IwL59LGzR9TwJcusrIjAAFDuifffGRlCnEwQ/O1/H y+KPhWt6WFefHRUg/bpy9puVmxYw//KJ3s/dytgSE9uBn7lVZdDssXago/ugmOWfpWQQml6B0mW wYsN6yxjGaUJcQFoBeuBltqJaVmlPzGCsslUNEc+ojp4Pw7MIyzwJH3MYESnOpxkZJQ9KlktJtL p1gWbzvzcINri2A== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A Also use fwnode based parsing for "ocv-capacity-celsius" and "resistance-temp-table", so that any DT specific bits are removed from the power-supply core. Signed-off-by: Sebastian Reichel --- drivers/power/supply/power_supply_core.c | 109 ++++++++++++++++++------------- 1 file changed, 63 insertions(+), 46 deletions(-) diff --git a/drivers/power/supply/power_supply_core.c b/drivers/power/supply/power_supply_core.c index c43539ea1318506ada0a6fcbcdbf7ece253f5257..0e5fa16fd8f832414f34fae31086128928fa57cc 100644 --- a/drivers/power/supply/power_supply_core.c +++ b/drivers/power/supply/power_supply_core.c @@ -598,32 +598,19 @@ int power_supply_get_battery_info(struct power_supply *psy, { struct power_supply_resistance_temp_table *resist_table; struct power_supply_battery_info *info; - struct device_node *battery_np = NULL; - struct fwnode_reference_args args; - struct fwnode_handle *fwnode = NULL; + struct fwnode_handle *srcnode, *fwnode; const char *value; - int err, len, index; - const __be32 *list; + int err, len, index, proplen; + u32 *propdata; u32 min_max[2]; - if (psy->dev.of_node) { - battery_np = of_parse_phandle(psy->dev.of_node, "monitored-battery", 0); - if (!battery_np) - return -ENODEV; + srcnode = dev_fwnode(&psy->dev); + if (!srcnode && psy->dev.parent) + srcnode = dev_fwnode(psy->dev.parent); - fwnode = fwnode_handle_get(of_fwnode_handle(battery_np)); - } else if (psy->dev.parent) { - err = fwnode_property_get_reference_args( - dev_fwnode(psy->dev.parent), - "monitored-battery", NULL, 0, 0, &args); - if (err) - return err; - - fwnode = args.fwnode; - } - - if (!fwnode) - return -ENOENT; + fwnode = fwnode_find_reference(srcnode, "monitored-battery", 0); + if (IS_ERR(fwnode)) + return PTR_ERR(fwnode); err = fwnode_property_read_string(fwnode, "compatible", &value); if (err) @@ -753,15 +740,7 @@ int power_supply_get_battery_info(struct power_supply *psy, info->temp_max = min_max[1]; } - /* - * The below code uses raw of-data parsing to parse - * /schemas/types.yaml#/definitions/uint32-matrix - * data, so for now this is only support with of. - */ - if (!battery_np) - goto out_ret_pointer; - - len = of_property_count_u32_elems(battery_np, "ocv-capacity-celsius"); + len = fwnode_property_count_u32(fwnode, "ocv-capacity-celsius"); if (len < 0 && len != -EINVAL) { err = len; goto out_put_node; @@ -770,13 +749,13 @@ int power_supply_get_battery_info(struct power_supply *psy, err = -EINVAL; goto out_put_node; } else if (len > 0) { - of_property_read_u32_array(battery_np, "ocv-capacity-celsius", + fwnode_property_read_u32_array(fwnode, "ocv-capacity-celsius", info->ocv_temp, len); } for (index = 0; index < len; index++) { struct power_supply_battery_ocv_table *table; - int i, tab_len, size; + int i, tab_len; char *propname __free(kfree) = kasprintf(GFP_KERNEL, "ocv-capacity-table-%d", index); @@ -785,60 +764,98 @@ int power_supply_get_battery_info(struct power_supply *psy, err = -ENOMEM; goto out_put_node; } - list = of_get_property(battery_np, propname, &size); - if (!list || !size) { + proplen = fwnode_property_count_u32(fwnode, propname); + if (proplen < 0 || proplen % 2 != 0) { dev_err(&psy->dev, "failed to get %s\n", propname); power_supply_put_battery_info(psy, info); err = -EINVAL; goto out_put_node; } + propdata = kcalloc(proplen, sizeof(*propdata), GFP_KERNEL); + if (!propdata) { + kfree(propname); + power_supply_put_battery_info(psy, info); + err = -EINVAL; + goto out_put_node; + } + err = fwnode_property_read_u32_array(fwnode, propname, propdata, proplen); + if (err < 0) { + dev_err(&psy->dev, "failed to get %s\n", propname); + kfree(propname); + kfree(propdata); + power_supply_put_battery_info(psy, info); + goto out_put_node; + } - tab_len = size / (2 * sizeof(__be32)); + tab_len = proplen / 2; info->ocv_table_size[index] = tab_len; info->ocv_table[index] = table = devm_kcalloc(&psy->dev, tab_len, sizeof(*table), GFP_KERNEL); if (!info->ocv_table[index]) { + kfree(propdata); power_supply_put_battery_info(psy, info); err = -ENOMEM; goto out_put_node; } for (i = 0; i < tab_len; i++) { - table[i].ocv = be32_to_cpu(*list); - list++; - table[i].capacity = be32_to_cpu(*list); - list++; + table[i].ocv = propdata[i*2]; + table[i].capacity = propdata[i*2+1]; } + + kfree(propdata); } - list = of_get_property(battery_np, "resistance-temp-table", &len); - if (!list || !len) + proplen = fwnode_property_count_u32(fwnode, "resistance-temp-table"); + if (proplen < 0 || proplen % 2 != 0) { + power_supply_put_battery_info(psy, info); + err = -ENOMEM; goto out_ret_pointer; + } else if (proplen == 0) { + goto out_ret_pointer; + } - info->resist_table_size = len / (2 * sizeof(__be32)); + propdata = kcalloc(proplen, sizeof(*propdata), GFP_KERNEL); + if (!propdata) { + power_supply_put_battery_info(psy, info); + err = -ENOMEM; + goto out_ret_pointer; + } + + err = fwnode_property_read_u32_array(fwnode, "resistance-temp-table", + propdata, proplen); + if (err < 0) { + kfree(propdata); + power_supply_put_battery_info(psy, info); + goto out_put_node; + } + + info->resist_table_size = proplen / 2; info->resist_table = resist_table = devm_kcalloc(&psy->dev, info->resist_table_size, sizeof(*resist_table), GFP_KERNEL); if (!info->resist_table) { + kfree(propdata); power_supply_put_battery_info(psy, info); err = -ENOMEM; goto out_put_node; } for (index = 0; index < info->resist_table_size; index++) { - resist_table[index].temp = be32_to_cpu(*list++); - resist_table[index].resistance = be32_to_cpu(*list++); + resist_table[index].temp = propdata[index*2]; + resist_table[index].resistance = propdata[index*2+1]; } + kfree(propdata); + out_ret_pointer: /* Finally return the whole thing */ *info_out = info; out_put_node: fwnode_handle_put(fwnode); - of_node_put(battery_np); return err; } EXPORT_SYMBOL_GPL(power_supply_get_battery_info);