From nobody Mon Feb 9 13:17:33 2026 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 0D02729E077; Tue, 29 Apr 2025 22:55:07 +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=1745967308; cv=none; b=M8os08ujbhGZ6QIyiReLDs7ZN4frXQ8kvAQHVwU9rp6LGyE2hdaPiobZX+Tc3i19eOhS8i5yztZV+Br9IMBao5A9KkmZ6XSQBWlYGshyju4Zvyeb0VFRcoeY8O1G9k6mrniIiknIC57SCbJPZtGqlmnWegYyE3BeYV9yz50FXgw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745967308; c=relaxed/simple; bh=z6RCFb2/vB/uPI6y66W4S0l3zN9napepWbci1XWwVNA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=awa0GMFDaL7LRYBzduXNwy+n/oQPkqOVjraV1xgJ01+zZkwq+MbTMajPceIPhbp3NO4TTeQ8CPeZhy6CYigJMYldBTWWDsSmOHEos8TBZ9gabzABobL/Z6zkU43BNlwWWSkUykkuQhenJsvdo/joS9ymv2r4mmWMynBH4Ed6mg4= 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 71B68C4AF0C; Tue, 29 Apr 2025 22:55:07 +0000 (UTC) Received: by venus (Postfix, from userid 1000) id 996A9180D29; Wed, 30 Apr 2025 00:55:05 +0200 (CEST) From: Sebastian Reichel Date: Wed, 30 Apr 2025 00:54:23 +0200 Subject: [PATCH v2 1/5] regulator: act8865-regulator: switch psy_cfg from of_node to fwnode 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: <20250430-psy-core-convert-to-fwnode-v2-1-f9643b958677@collabora.com> References: <20250430-psy-core-convert-to-fwnode-v2-0-f9643b958677@collabora.com> In-Reply-To: <20250430-psy-core-convert-to-fwnode-v2-0-f9643b958677@collabora.com> To: Sebastian Reichel , Mark Brown , Linus Walleij , Hans de Goede Cc: Liam Girdwood , Vinod Koul , Kishon Vijay Abraham I , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , Matti Vaittinen , =?utf-8?q?Pali_Roh=C3=A1r?= , Krzysztof Kozlowski , AngeloGioacchino Del Regno , linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-phy@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=owEBbQKS/ZANAwAKAdju1/PIO/qaAcsmYgBoEVjHDxq9L2bIbtg8Ask+9Zi5ANVFY3lYCI4aQ 1JyhAehH1mJAjMEAAEKAB0WIQTvZg0HRj+Lcmp5VBPY7tfzyDv6mgUCaBFYxwAKCRDY7tfzyDv6 mjzDD/wOGjU5SJQHiuXe/cZCCPiDYMgcjvExrnrRPHAsmfQ8cA56gJqkfcj22CNOu04ye4imlhi yUknuYuBnQa1uK65tN0iWjEWkdMjQoapGiAOdjyc1CItMevOZ+LEXb5t6OVn1Jd4pM2QJfL3ITx +v1G8aXTtwnwewtK1FXzlGB8tvQAYiucZ5/luThafwsWgkQcGA5gB4ie74ISTSKR7b68bwwBQdk ho/W+nyVJGcmJxN7pc2P6YhXLArH9v/5xPfR4rb6q8lI+eN4HVHwAeuqxsF4/JC54F7Yz+B8VPJ Zg9Py/7RnrqoHvqu45i0/xJOiSsuLArj/PwZjKHLU8Oy6p5Syff0diY41bI9WgHxL4mmKyJaqGO 801NMGkeYzbp3zWU42RGDEMpoIuttu2wPGWCN3mUtG64Qa4HVTParjzQWbMSVRcwOv5SNZmea8P o70TPGBPoAkvhhzwvRD/ZqXFAOVeEMtiaXZAabNCT2ArJsGwF14GyUaTTcsSKCu3X9nI3JOU9Jq RA5Cg1FqJDdTLzBMmJhJr9RXsXa+zmC1a9eR7KV9oDZajKQqWt4BN0JlPVf/NcUbCIQdT+F/dvx FlX6e7P4bJ85YDuKHUF6/5hE4carsmjdi6jZQ4QoXMNduuXw97fAvcY/efVaRTvfUiGEmwHmsVK cNdFp9Tw6gpu91A== 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 Reviewed-by: Hans de Goede --- drivers/regulator/act8865-regulator.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/regulator/act8865-regulator.c b/drivers/regulator/act8= 865-regulator.c index 0457af23c55acdd97b2cdc6fd6bfd07ae0f9d11f..b2a6ddc6f56d32e8758977e2585= 8b972e294bc84 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, st= ruct regmap *regmap) struct power_supply *charger; struct power_supply_config cfg =3D { .drv_data =3D regmap, - .of_node =3D dev->of_node, + .fwnode =3D dev_fwnode(dev), }; =20 charger =3D devm_power_supply_register(dev, &act8600_charger_desc, &cfg); --=20 2.47.2 From nobody Mon Feb 9 13:17:33 2026 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 0D09229E07E; Tue, 29 Apr 2025 22:55:07 +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=1745967308; cv=none; b=agfpolJdTVKofhjCc5bV4HCAyYTZL0GLZSlW3jYKZTxqgo7NGosOJ6CX4+Xpvw/PAeihVyoxiwDiiZJ8PWpe3RA6P4+zrBVTbEg2GtvAGVG+ZdnQhBw9oHqjeMPJLNNVhZ/W/LQmX/lAzsYKDxZJZrI3UMrYOZDPTxojrzJzp+0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745967308; c=relaxed/simple; bh=VdxKhz6N3WuAtyhJvRnjh/8RH3azoVAUuV/Qt7lH9OU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=u1CNP3Inn7AbtJfAAhcoe3r94R3q5xzzgmM5PsIny+UlrmKr7jd956KIkb5sLNcWW9mH8c3MOJzaWskjTA4iYEY834xYH9eJjCOIHQk16zIjRkwsyz5fcI/eY60Bdum1WOYmjfg9J9AUU/QC/m5Lza7VwwSVVJWBlx3FzO3KGAk= 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 66969C4CEE3; Tue, 29 Apr 2025 22:55:07 +0000 (UTC) Received: by venus (Postfix, from userid 1000) id 9B5DC180F44; Wed, 30 Apr 2025 00:55:05 +0200 (CEST) From: Sebastian Reichel Date: Wed, 30 Apr 2025 00:54:24 +0200 Subject: [PATCH v2 2/5] power: supply: core: remove of_node from power_supply_config 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: <20250430-psy-core-convert-to-fwnode-v2-2-f9643b958677@collabora.com> References: <20250430-psy-core-convert-to-fwnode-v2-0-f9643b958677@collabora.com> In-Reply-To: <20250430-psy-core-convert-to-fwnode-v2-0-f9643b958677@collabora.com> To: Sebastian Reichel , Mark Brown , Linus Walleij , Hans de Goede Cc: Liam Girdwood , Vinod Koul , Kishon Vijay Abraham I , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , Matti Vaittinen , =?utf-8?q?Pali_Roh=C3=A1r?= , Krzysztof Kozlowski , AngeloGioacchino Del Regno , linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-phy@vger.kernel.org, Sebastian Reichel X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=1586; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=VdxKhz6N3WuAtyhJvRnjh/8RH3azoVAUuV/Qt7lH9OU=; b=owEBbQKS/ZANAwAKAdju1/PIO/qaAcsmYgBoEVjIQWkdUql6NNuli5U3aY4Y/bKXE4oGhtlL1 v31l/zwZ+6JAjMEAAEKAB0WIQTvZg0HRj+Lcmp5VBPY7tfzyDv6mgUCaBFYyAAKCRDY7tfzyDv6 mvqJD/4q4P+lOwNAv610m+hf8jOlOOuGuYYiqa9IXiJfUz/0xX0sCa+00tOsyfqDXQvWa4n3nYt utv05VXwMp7e0Q6d8W4Nm2+JPgnCKIQ9h5p95IUNEz66Wa8IEiVSOv9xr8K1Axttg2dzaUuGf9m DYcuEBWCZJHWKFbDHcxbPKU3jRCSl496VdcyVgtg1o1XHERNLn5t7wYGiagIbi9DcrxyC7oY04O 9DnUT2ATJBc7RD9Zmbxvsl3sti1nPKepXQ3k4abfGyWByko3PmhV1E6QhB4YJ8XxFH2v17dN2Td KB48RRjmYn1PEy98E08AlS6Qd20BlG5phguqg7IXXgaQpmzImHrK3d+fzyn/fwxrmuJgjiG0YlX w04O0uJU3Wpush0TofNEsCZISQmMsme6I//qyYCm50AlN2pbBiFLH/WAL0bxpsxC/iTRPuuCoFr G90uC6GdFhYTvEAn1kIO5CuyVYvgP/TRKDULENPtCWvlW3Mln8BH2UpsbT0ZPJnTtK9eD6aWuVD 2qvRwdI0TY68ncJoa9wSG+s5Y6UdVZEZ23qiNd7oPaXYpXNmvx/szd4GSf876ybw3YrdUbG8kdK bZKjAqLrvF8EAj8HvOyruxQTn0VLj7FSOg+eW5wqcwc3X99jsnvoVYfTq46xVxje3y4kSRxn0G3 e0Ci+mdeca0kTKA== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A All drivers have been migrated from .of_node to .fwnode, so let's kill the former. Reviewed-by: AngeloGioacchino Del Regno Signed-off-by: Sebastian Reichel Reviewed-by: Hans de Goede --- drivers/power/supply/power_supply_core.c | 3 +-- include/linux/power_supply.h | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/power/supply/power_supply_core.c b/drivers/power/suppl= y/power_supply_core.c index 33a5bfce4604f012344733ba489eda1c5e8b92c0..89947f1fe610d8a75756e1e4e53= 39b06349f9ab8 100644 --- a/drivers/power/supply/power_supply_core.c +++ b/drivers/power/supply/power_supply_core.c @@ -1529,10 +1529,9 @@ __power_supply_register(struct device *parent, dev_set_drvdata(dev, psy); psy->desc =3D desc; if (cfg) { + device_set_node(dev, cfg->fwnode); dev->groups =3D cfg->attr_grp; psy->drv_data =3D cfg->drv_data; - dev->of_node =3D - cfg->fwnode ? to_of_node(cfg->fwnode) : cfg->of_node; psy->supplied_to =3D cfg->supplied_to; psy->num_supplicants =3D cfg->num_supplicants; } diff --git a/include/linux/power_supply.h b/include/linux/power_supply.h index c4cb854971f53a244ba7742a15ce7a5515da6199..b6eb31a23c878aa9ed8ad7bcb02= a13721354e1cb 100644 --- a/include/linux/power_supply.h +++ b/include/linux/power_supply.h @@ -229,7 +229,6 @@ struct power_supply; =20 /* Run-time specific power supply configuration */ struct power_supply_config { - struct device_node *of_node; struct fwnode_handle *fwnode; =20 /* Driver private data */ --=20 2.47.2 From nobody Mon Feb 9 13:17:33 2026 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 0D1782BCF49; Tue, 29 Apr 2025 22:55:07 +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=1745967308; cv=none; b=FR6NO2Ye8s2BtU/7RhdIGZAKrwBq6wtqJMpO5upSECMgSK6UfjQ/JwVfQLTyzkL9/FTaJ2iR5XHdv4Jj3bXQaTDCmMAEGAjYhr4fnx+C0qL33ljleXv2SQXuY8tl0+B0RaFP0g2ZhycxMaKFimUbx8LoUVbl3POr47bOzF8v3C0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745967308; c=relaxed/simple; bh=Mf87Q1NReuMQ6nVtcCiED6x4UVx35A/lYEh1WPwLGFU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RQzeYndM2liUbqthFvGWNsqhWYNNkkzi1J984h1/imemNSgon2nyvFFJrcuMmlIlGRU5fDEk8YkSZg4WoFXLCOBU1PlmyzfIsjqYxII4yWTQoW2H3qOliv6B7Qif5+6C2sCRZrDxCSi4/rQggl9lSi/EgUWr5wJ/Hn84NIb4bxM= 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 69A81C4CEEB; Tue, 29 Apr 2025 22:55:07 +0000 (UTC) Received: by venus (Postfix, from userid 1000) id 9D038180F47; Wed, 30 Apr 2025 00:55:05 +0200 (CEST) From: Sebastian Reichel Date: Wed, 30 Apr 2025 00:54:25 +0200 Subject: [PATCH v2 3/5] power: supply: core: battery-info: fully switch to fwnode 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: <20250430-psy-core-convert-to-fwnode-v2-3-f9643b958677@collabora.com> References: <20250430-psy-core-convert-to-fwnode-v2-0-f9643b958677@collabora.com> In-Reply-To: <20250430-psy-core-convert-to-fwnode-v2-0-f9643b958677@collabora.com> To: Sebastian Reichel , Mark Brown , Linus Walleij , Hans de Goede Cc: Liam Girdwood , Vinod Koul , Kishon Vijay Abraham I , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , Matti Vaittinen , =?utf-8?q?Pali_Roh=C3=A1r?= , Krzysztof Kozlowski , AngeloGioacchino Del Regno , linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-phy@vger.kernel.org, Sebastian Reichel X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=6475; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=Mf87Q1NReuMQ6nVtcCiED6x4UVx35A/lYEh1WPwLGFU=; b=owEBbQKS/ZANAwAKAdju1/PIO/qaAcsmYgBoEVjIOugsWPH+KGkWoWwpex9riQL9D4JLnyjIH IWHyBHJJuiJAjMEAAEKAB0WIQTvZg0HRj+Lcmp5VBPY7tfzyDv6mgUCaBFYyAAKCRDY7tfzyDv6 mtw3D/0XUhTBR6T3+jZ0aKBb3VfbUVGOz+ZCjiSo5lXG9hMTOt9FBudCKBWrZ8IxKuY+PWa2O1i OVX2M5zA7qpDB8k4X59SAkQejzXXtvQ0epB7qkE8tnYll9YmSNSQ1d4oHxa8wdKmayzKgBpvthC w8j9yP56g+Dl1efyxPB3dKMefceLD+p/6UUwCNVJ+RVWVEeGp19ip6Z293bjCAerJ1JgDDvzcaZ zSaXk9Asq903PZ49E9xiqQZ7q1Lo30BVn1f0sfiaaj3Pltda9KkgE+BsTsJchZJOm5PlQC8VpIQ 8lkkHcndU1Dvj9gB34PeJzmNoLR0qiaIx8ETUiiWLD6anClYrYvE5du/jfDQAl/gEFgQRUEJ2kM jpCikhaSt34qo3h1m+cT5c2Q2gkCRp09zTLOzj85iDGlFRJ+9LRZcsbtNb8NJLICYI27RSZ7NlB lTFMxtB7d9eYjo4axES9Bjk13UCiHZJ0bRKgYasdPopI9vza5UMII5e7EyTMWyfy4hkKNipJ9Xf 6NVBkgkw1vNziKyyd4Us3Bey8PxSHNV9D/d7vKxAnDQlwAWw+iNH2ivDbY9sbT7OYbt57f1VAaQ BdmfiLp/FBikYeiRqWgOnz0CDaxdcBtkO93HEhPRFZfSpdw0MNpP4OJ60XZOvqje6Xb7dR06ji8 aIK0mnByuj9C2rA== 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. Reviewed-by: AngeloGioacchino Del Regno 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/suppl= y/power_supply_core.c index 89947f1fe610d8a75756e1e4e5339b06349f9ab8..a8d1fe66e2486a833ccaa3ed77b= 861c6e52c5760 100644 --- a/drivers/power/supply/power_supply_core.c +++ b/drivers/power/supply/power_supply_core.c @@ -585,32 +585,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 =3D NULL; - struct fwnode_reference_args args; - struct fwnode_handle *fwnode =3D 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]; =20 - if (psy->dev.of_node) { - battery_np =3D of_parse_phandle(psy->dev.of_node, "monitored-battery", 0= ); - if (!battery_np) - return -ENODEV; + srcnode =3D dev_fwnode(&psy->dev); + if (!srcnode && psy->dev.parent) + srcnode =3D dev_fwnode(psy->dev.parent); =20 - fwnode =3D fwnode_handle_get(of_fwnode_handle(battery_np)); - } else if (psy->dev.parent) { - err =3D fwnode_property_get_reference_args( - dev_fwnode(psy->dev.parent), - "monitored-battery", NULL, 0, 0, &args); - if (err) - return err; - - fwnode =3D args.fwnode; - } - - if (!fwnode) - return -ENOENT; + fwnode =3D fwnode_find_reference(srcnode, "monitored-battery", 0); + if (IS_ERR(fwnode)) + return PTR_ERR(fwnode); =20 err =3D fwnode_property_read_string(fwnode, "compatible", &value); if (err) @@ -740,15 +727,7 @@ int power_supply_get_battery_info(struct power_supply = *psy, info->temp_max =3D min_max[1]; } =20 - /* - * 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 =3D of_property_count_u32_elems(battery_np, "ocv-capacity-celsius"); + len =3D fwnode_property_count_u32(fwnode, "ocv-capacity-celsius"); if (len < 0 && len !=3D -EINVAL) { err =3D len; goto out_put_node; @@ -757,13 +736,13 @@ int power_supply_get_battery_info(struct power_supply= *psy, err =3D -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); } =20 for (index =3D 0; index < len; index++) { struct power_supply_battery_ocv_table *table; - int i, tab_len, size; + int i, tab_len; =20 char *propname __free(kfree) =3D kasprintf(GFP_KERNEL, "ocv-capacity-tab= le-%d", index); @@ -772,60 +751,98 @@ int power_supply_get_battery_info(struct power_supply= *psy, err =3D -ENOMEM; goto out_put_node; } - list =3D of_get_property(battery_np, propname, &size); - if (!list || !size) { + proplen =3D fwnode_property_count_u32(fwnode, propname); + if (proplen < 0 || proplen % 2 !=3D 0) { dev_err(&psy->dev, "failed to get %s\n", propname); power_supply_put_battery_info(psy, info); err =3D -EINVAL; goto out_put_node; } + propdata =3D kcalloc(proplen, sizeof(*propdata), GFP_KERNEL); + if (!propdata) { + kfree(propname); + power_supply_put_battery_info(psy, info); + err =3D -EINVAL; + goto out_put_node; + } + err =3D fwnode_property_read_u32_array(fwnode, propname, propdata, propl= en); + 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; + } =20 - tab_len =3D size / (2 * sizeof(__be32)); + tab_len =3D proplen / 2; info->ocv_table_size[index] =3D tab_len; =20 info->ocv_table[index] =3D table =3D 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 =3D -ENOMEM; goto out_put_node; } =20 for (i =3D 0; i < tab_len; i++) { - table[i].ocv =3D be32_to_cpu(*list); - list++; - table[i].capacity =3D be32_to_cpu(*list); - list++; + table[i].ocv =3D propdata[i*2]; + table[i].capacity =3D propdata[i*2+1]; } + + kfree(propdata); } =20 - list =3D of_get_property(battery_np, "resistance-temp-table", &len); - if (!list || !len) + proplen =3D fwnode_property_count_u32(fwnode, "resistance-temp-table"); + if (proplen < 0 || proplen % 2 !=3D 0) { + power_supply_put_battery_info(psy, info); + err =3D -ENOMEM; goto out_ret_pointer; + } else if (proplen =3D=3D 0) { + goto out_ret_pointer; + } =20 - info->resist_table_size =3D len / (2 * sizeof(__be32)); + propdata =3D kcalloc(proplen, sizeof(*propdata), GFP_KERNEL); + if (!propdata) { + power_supply_put_battery_info(psy, info); + err =3D -ENOMEM; + goto out_ret_pointer; + } + + err =3D 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 =3D proplen / 2; info->resist_table =3D resist_table =3D 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 =3D -ENOMEM; goto out_put_node; } =20 for (index =3D 0; index < info->resist_table_size; index++) { - resist_table[index].temp =3D be32_to_cpu(*list++); - resist_table[index].resistance =3D be32_to_cpu(*list++); + resist_table[index].temp =3D propdata[index*2]; + resist_table[index].resistance =3D propdata[index*2+1]; } =20 + kfree(propdata); + out_ret_pointer: /* Finally return the whole thing */ *info_out =3D info; =20 out_put_node: fwnode_handle_put(fwnode); - of_node_put(battery_np); return err; } EXPORT_SYMBOL_GPL(power_supply_get_battery_info); --=20 2.47.2 From nobody Mon Feb 9 13:17:33 2026 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 0D10E29E07F; Tue, 29 Apr 2025 22:55:07 +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=1745967308; cv=none; b=k1zC7Zmr7M+r9DWM2pjISckDD2L2KXoMJKxUd9aIqrCs0K+KeoIZDb2FxIndb13N6zk52nfVdenYzfzPkWe/qsRo24Ne8HMJZIPRq0VwayJgD08Sc+6faBKAHxpt1YRyJDT+WHdyuH6/pMySmQt29xC+sOUDs9UMX0b5JNw4Nw8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745967308; c=relaxed/simple; bh=IJzS5fR5PlviP1nSPIds1VEEtL+e1C05VsYij93xy0A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=tT6PhwVGFgFeHcoyKWmUrRz3e6vlIWOIBtrVD+6dxm5f2h5GmH/KzjA+Yg4n4teIcEEDmdotfdTeES59jAH0ly+yIlxNQQT9rU2TXu59VxHhAJeCePV74xKepbns1tgfVmQi/Rh+EcXO/+M6JsG0LffOx4ENtaDsTquvqNa2SPU= 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 7B884C4CEEE; Tue, 29 Apr 2025 22:55:07 +0000 (UTC) Received: by venus (Postfix, from userid 1000) id 9E671180F49; Wed, 30 Apr 2025 00:55:05 +0200 (CEST) From: Sebastian Reichel Date: Wed, 30 Apr 2025 00:54:26 +0200 Subject: [PATCH v2 4/5] power: supply: core: convert to fwnnode 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: <20250430-psy-core-convert-to-fwnode-v2-4-f9643b958677@collabora.com> References: <20250430-psy-core-convert-to-fwnode-v2-0-f9643b958677@collabora.com> In-Reply-To: <20250430-psy-core-convert-to-fwnode-v2-0-f9643b958677@collabora.com> To: Sebastian Reichel , Mark Brown , Linus Walleij , Hans de Goede Cc: Liam Girdwood , Vinod Koul , Kishon Vijay Abraham I , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , Matti Vaittinen , =?utf-8?q?Pali_Roh=C3=A1r?= , Krzysztof Kozlowski , AngeloGioacchino Del Regno , linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-phy@vger.kernel.org, Sebastian Reichel X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=7944; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=IJzS5fR5PlviP1nSPIds1VEEtL+e1C05VsYij93xy0A=; b=owEBbQKS/ZANAwAKAdju1/PIO/qaAcsmYgBoEVjIYyXpmHCZ1YHwatEvvi1avU7aKgxy2B6oD EYzqNkkjGmJAjMEAAEKAB0WIQTvZg0HRj+Lcmp5VBPY7tfzyDv6mgUCaBFYyAAKCRDY7tfzyDv6 mqUOD/oCsdHoipnan5iyIl3im160f6GTokCnqTMsfSiqnbeguVi+eGqB06r0fExy3sRvFANpC5s PyohQBXGDWoPZAovG3Ebp6YR5TcchNHI8bm0b93f8owLeMVr8VuPF177P/Z/HRlXiQD50eZa3op 8ZDLmnbGTQ/MKdYLW+OzUGKIBwIBNjTjHpbBohGKv0eoulxJc3XW1OCwDRYXvxYHQht1Ronzg8p hi+7aiJQAO7EQquInpi73lKWX1fAfn/1iJ4LRnTuJquGryycmA71yfBELVubXqY79n4ZqgTfmGr jEGnYxN049YAYqDCV+l9Cd+FejzmSJ6VT9x7cMKR0BylxAb8OEx+iDUSlw8ptkIircH6H531cHz z6eVi9JV+e2zZKMsthUeJkZNblompPVKJGoxFg9VkkFjjNuxKxHDTIMPl10jeKdAUq07MUwETHg JOKiVEurWM+GeA1NVHTC1zTsjJK+YY+c9VyM4Q8kpcxmtAH015y5TMiElvGg1qwTd2+yTDXV0p+ mjAolCJ+Q4oBe75qpffk4mW2JnOrTcTqG1tKE46rYF0Ha+nKwGUVTcxn73S7+G42e3GFzz/Aycb lDeTqSMOcrsQtEpERqIjH0Yf1yRdDiT1Ce2h0iFUs8E+y1Z/2Dco35zBZV6mFcgbb9RkrHkpDRA duDY6LDi4IwxGnw== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A Replace any DT specific code with fwnode in the power-supply core. Reviewed-by: AngeloGioacchino Del Regno Signed-off-by: Sebastian Reichel Reviewed-by: Hans de Goede --- drivers/power/supply/bq2415x_charger.c | 2 +- drivers/power/supply/power_supply_core.c | 65 ++++++++++++++++------------= ---- include/linux/power_supply.h | 2 +- 3 files changed, 34 insertions(+), 35 deletions(-) diff --git a/drivers/power/supply/bq2415x_charger.c b/drivers/power/supply/= bq2415x_charger.c index 9e3b9181ee76a4f473228bba022917677acce256..1ecbca510bba99ee7abcda33a71= 9035adfceeb5f 100644 --- a/drivers/power/supply/bq2415x_charger.c +++ b/drivers/power/supply/bq2415x_charger.c @@ -1674,7 +1674,7 @@ static int bq2415x_probe(struct i2c_client *client) /* Query for initial reported_mode and set it */ if (bq->nb.notifier_call) { if (np) { - notify_psy =3D power_supply_get_by_phandle(np, + notify_psy =3D power_supply_get_by_phandle(of_fwnode_handle(np), "ti,usb-charger-detection"); if (IS_ERR(notify_psy)) notify_psy =3D NULL; diff --git a/drivers/power/supply/power_supply_core.c b/drivers/power/suppl= y/power_supply_core.c index a8d1fe66e2486a833ccaa3ed77b861c6e52c5760..1d53ceaa8fd161e7e72b90befab= b9380393c99f2 100644 --- a/drivers/power/supply/power_supply_core.c +++ b/drivers/power/supply/power_supply_core.c @@ -18,7 +18,6 @@ #include #include #include -#include #include #include #include @@ -196,24 +195,24 @@ static int __power_supply_populate_supplied_from(stru= ct power_supply *epsy, void *data) { struct power_supply *psy =3D data; - struct device_node *np; + struct fwnode_handle *np; int i =3D 0; =20 do { - np =3D of_parse_phandle(psy->dev.of_node, "power-supplies", i++); - if (!np) + np =3D fwnode_find_reference(psy->dev.fwnode, "power-supplies", i++); + if (IS_ERR(np)) break; =20 - if (np =3D=3D epsy->dev.of_node) { + if (np =3D=3D epsy->dev.fwnode) { dev_dbg(&psy->dev, "%s: Found supply : %s\n", psy->desc->name, epsy->desc->name); psy->supplied_from[i-1] =3D (char *)epsy->desc->name; psy->num_supplies++; - of_node_put(np); + fwnode_handle_put(np); break; } - of_node_put(np); - } while (np); + fwnode_handle_put(np); + } while (!IS_ERR(np)); =20 return 0; } @@ -232,16 +231,16 @@ static int power_supply_populate_supplied_from(struct= power_supply *psy) static int __power_supply_find_supply_from_node(struct power_supply *epsy, void *data) { - struct device_node *np =3D data; + struct fwnode_handle *fwnode =3D data; =20 /* returning non-zero breaks out of power_supply_for_each_psy loop */ - if (epsy->dev.of_node =3D=3D np) + if (epsy->dev.fwnode =3D=3D fwnode) return 1; =20 return 0; } =20 -static int power_supply_find_supply_from_node(struct device_node *supply_n= ode) +static int power_supply_find_supply_from_fwnode(struct fwnode_handle *supp= ly_node) { int error; =20 @@ -249,7 +248,7 @@ static int power_supply_find_supply_from_node(struct de= vice_node *supply_node) * power_supply_for_each_psy() either returns its own errors or values * returned by __power_supply_find_supply_from_node(). * - * __power_supply_find_supply_from_node() will return 0 (no match) + * __power_supply_find_supply_from_fwnode() will return 0 (no match) * or 1 (match). * * We return 0 if power_supply_for_each_psy() returned 1, -EPROBE_DEFER if @@ -262,7 +261,7 @@ static int power_supply_find_supply_from_node(struct de= vice_node *supply_node) =20 static int power_supply_check_supplies(struct power_supply *psy) { - struct device_node *np; + struct fwnode_handle *np; int cnt =3D 0; =20 /* If there is already a list honor it */ @@ -270,24 +269,24 @@ static int power_supply_check_supplies(struct power_s= upply *psy) return 0; =20 /* No device node found, nothing to do */ - if (!psy->dev.of_node) + if (!psy->dev.fwnode) return 0; =20 do { int ret; =20 - np =3D of_parse_phandle(psy->dev.of_node, "power-supplies", cnt++); - if (!np) + np =3D fwnode_find_reference(psy->dev.fwnode, "power-supplies", cnt++); + if (IS_ERR(np)) break; =20 - ret =3D power_supply_find_supply_from_node(np); - of_node_put(np); + ret =3D power_supply_find_supply_from_fwnode(np); + fwnode_handle_put(np); =20 if (ret) { dev_dbg(&psy->dev, "Failed to find supply!\n"); return ret; } - } while (np); + } while (!IS_ERR(np)); =20 /* Missing valid "power-supplies" entries */ if (cnt =3D=3D 1) @@ -498,14 +497,14 @@ void power_supply_put(struct power_supply *psy) EXPORT_SYMBOL_GPL(power_supply_put); =20 #ifdef CONFIG_OF -static int power_supply_match_device_node(struct device *dev, const void *= data) +static int power_supply_match_device_fwnode(struct device *dev, const void= *data) { - return dev->parent && dev->parent->of_node =3D=3D data; + return dev->parent && dev_fwnode(dev->parent) =3D=3D data; } =20 /** * power_supply_get_by_phandle() - Search for a power supply and returns i= ts ref - * @np: Pointer to device node holding phandle property + * @fwnode: Pointer to fwnode holding phandle property * @property: Name of property holding a power supply name * * If power supply was found, it increases reference count for the @@ -515,21 +514,21 @@ static int power_supply_match_device_node(struct devi= ce *dev, const void *data) * Return: On success returns a reference to a power supply with * matching name equals to value under @property, NULL or ERR_PTR otherwis= e. */ -struct power_supply *power_supply_get_by_phandle(struct device_node *np, - const char *property) +struct power_supply *power_supply_get_by_phandle(struct fwnode_handle *fwn= ode, + const char *property) { - struct device_node *power_supply_np; + struct fwnode_handle *power_supply_fwnode; struct power_supply *psy =3D NULL; struct device *dev; =20 - power_supply_np =3D of_parse_phandle(np, property, 0); - if (!power_supply_np) - return ERR_PTR(-ENODEV); + power_supply_fwnode =3D fwnode_find_reference(fwnode, property, 0); + if (IS_ERR(power_supply_fwnode)) + return ERR_CAST(power_supply_fwnode); =20 - dev =3D class_find_device(&power_supply_class, NULL, power_supply_np, - power_supply_match_device_node); + dev =3D class_find_device(&power_supply_class, NULL, power_supply_fwnode, + power_supply_match_device_fwnode); =20 - of_node_put(power_supply_np); + fwnode_handle_put(power_supply_fwnode); =20 if (dev) { psy =3D dev_to_psy(dev); @@ -561,14 +560,14 @@ struct power_supply *devm_power_supply_get_by_phandle= (struct device *dev, { struct power_supply **ptr, *psy; =20 - if (!dev->of_node) + if (!dev_fwnode(dev)) return ERR_PTR(-ENODEV); =20 ptr =3D devres_alloc(devm_power_supply_put, sizeof(*ptr), GFP_KERNEL); if (!ptr) return ERR_PTR(-ENOMEM); =20 - psy =3D power_supply_get_by_phandle(dev->of_node, property); + psy =3D power_supply_get_by_phandle(dev_fwnode(dev), property); if (IS_ERR_OR_NULL(psy)) { devres_free(ptr); } else { diff --git a/include/linux/power_supply.h b/include/linux/power_supply.h index b6eb31a23c878aa9ed8ad7bcb02a13721354e1cb..c95f098374cbdeafe8cddb52da3= 903f4f0e0f0fc 100644 --- a/include/linux/power_supply.h +++ b/include/linux/power_supply.h @@ -805,7 +805,7 @@ static inline struct power_supply *power_supply_get_by_= name(const char *name) { return NULL; } #endif #ifdef CONFIG_OF -extern struct power_supply *power_supply_get_by_phandle(struct device_node= *np, +extern struct power_supply *power_supply_get_by_phandle(struct fwnode_hand= le *fwnode, const char *property); extern struct power_supply *devm_power_supply_get_by_phandle( struct device *dev, const char *property); --=20 2.47.2 From nobody Mon Feb 9 13:17:33 2026 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 8B4602BF3D8; Tue, 29 Apr 2025 22:55:10 +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=1745967310; cv=none; b=l+CnNroYYIDHW6QeS/ryjBAO9BhzOoqRjrhzgVSHcrOWolc02GGZTyTX7HnwFwTdURSU9gy8YuLV3nIgFVmMFirZXD71Z+SWvZbmwtrWVonNqvfJUH6vKos8PVxYplIxtRrcla8bTAMxkH/PRdtSA5o2nTacN1MEzFeHZQRtwUo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1745967310; c=relaxed/simple; bh=QCJ6iYp20NqIOjw/5OGJ6nPJ1tBnqyJTLxoCDobBKRw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ok4mjz9FujNApXT39tSWYCacCjf6kih7ZFwikgInwNxN7eCRJC5aw/YiAHSMOxEbffCYW4uOP0Zx/GtUARrtYYRmC977AuQ+qqR9lM/4jM11Zzi4u7rtdZSB6Rl7f5+d/rDyeXgZkikhnUxz+9lGdRB++8+70DXIhgMqCRmnv0M= 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 CA5DCC4CEEF; Tue, 29 Apr 2025 22:55:09 +0000 (UTC) Received: by venus (Postfix, from userid 1000) id 9FB04180F4D; Wed, 30 Apr 2025 00:55:05 +0200 (CEST) From: Sebastian Reichel Date: Wed, 30 Apr 2025 00:54:27 +0200 Subject: [PATCH v2 5/5] power: supply: core: rename power_supply_get_by_phandle to power_supply_get_by_reference 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: <20250430-psy-core-convert-to-fwnode-v2-5-f9643b958677@collabora.com> References: <20250430-psy-core-convert-to-fwnode-v2-0-f9643b958677@collabora.com> In-Reply-To: <20250430-psy-core-convert-to-fwnode-v2-0-f9643b958677@collabora.com> To: Sebastian Reichel , Mark Brown , Linus Walleij , Hans de Goede Cc: Liam Girdwood , Vinod Koul , Kishon Vijay Abraham I , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , Matti Vaittinen , =?utf-8?q?Pali_Roh=C3=A1r?= , Krzysztof Kozlowski , AngeloGioacchino Del Regno , linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-phy@vger.kernel.org, Sebastian Reichel X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=6652; i=sebastian.reichel@collabora.com; h=from:subject:message-id; bh=QCJ6iYp20NqIOjw/5OGJ6nPJ1tBnqyJTLxoCDobBKRw=; b=owEBbQKS/ZANAwAKAdju1/PIO/qaAcsmYgBoEVjJpX1UmjvjOF0iMgntcGqelQSYOvUFrG93Q WpCpFWGtcSJAjMEAAEKAB0WIQTvZg0HRj+Lcmp5VBPY7tfzyDv6mgUCaBFYyQAKCRDY7tfzyDv6 mu1OD/4pl7iQ24/sd8C6sHQIcDbnP/beMQiThkWKCe5430ZMYjCW7jBKdzLbngDpKsGgLTiiHr3 jVBQ6VNViOZ9QiRkEP6FSUHdFUHlZs7dGBJwotx4/Xl2GQ4gkKkf39UGiNudlbcp0wOu9b4sd16 et50HbgnQCxnunFRJVJpyvHyNvaXEZR0KP21Gj23jnzj1u7yD2J9zpQIq6fpdT2s71mz+ZIOTs/ 37Tho4hsKIh9evuRW9FLznvK8zj48g83PJD5eZYdgmpLnCePP2w0fkEpALpNQCUp47iCfFUX0uZ NTodYD6JWfFa6AJjm1W6pLG1nj7iSAJhYCOWLqYiNynoYpwn9IsT7d6h9Z0IkiT0LTLV81tsj41 xLEQzYGEUxzSb7WhOKxi5pKnOzysN501Z3HzbB9/z6EXSt/m3N3LyvVmpT+RoNDe/7FS2siUGqx CA1JK+3gqPzLj2N/9omQxiqk0JKgbuj2H4a/L+rXyYyDgve/1WttG6Qac1w3KMt5+MX2JkE6Enp sjWp9G7SsakQkPykzYS5vigMzBBkqBPigtbOsWZbgSsV29R+AcTa76HkuUBdPqw134oF7Tor6M5 1NUo2YKtQDTZe4R1Iy5Cq2izD5sF3zfbBbYNkkOPQlDFETit9RKK1Lj+t+A7DKR7eyhtXqNTOAN PWHoOJR0Z9Nyr0g== X-Developer-Key: i=sebastian.reichel@collabora.com; a=openpgp; fpr=EF660D07463F8B726A795413D8EED7F3C83BFA9A (devm_)power_supply_get_by_phandle now internally uses fwnode and are no longer DT specific. Thus drop the ifdef check for CONFIG_OF and rename to (devm_)power_supply_get_by_reference to avoid the DT terminology. Signed-off-by: Sebastian Reichel Reviewed-by: Hans de Goede --- drivers/phy/allwinner/phy-sun4i-usb.c | 2 +- drivers/power/supply/bq2415x_charger.c | 2 +- drivers/power/supply/power_supply_core.c | 22 ++++++++++------------ include/linux/power_supply.h | 15 +++------------ 4 files changed, 15 insertions(+), 26 deletions(-) diff --git a/drivers/phy/allwinner/phy-sun4i-usb.c b/drivers/phy/allwinner/= phy-sun4i-usb.c index 29b8fd4b935113f3e4790ee7f78141226048492d..8873aed3a52aa3f26564b6b2e57= 6110c4069d28c 100644 --- a/drivers/phy/allwinner/phy-sun4i-usb.c +++ b/drivers/phy/allwinner/phy-sun4i-usb.c @@ -754,7 +754,7 @@ static int sun4i_usb_phy_probe(struct platform_device *= pdev) } =20 if (of_property_present(np, "usb0_vbus_power-supply")) { - data->vbus_power_supply =3D devm_power_supply_get_by_phandle(dev, + data->vbus_power_supply =3D devm_power_supply_get_by_reference(dev, "usb0_vbus_power-supply"); if (IS_ERR(data->vbus_power_supply)) { dev_err(dev, "Couldn't get the VBUS power supply\n"); diff --git a/drivers/power/supply/bq2415x_charger.c b/drivers/power/supply/= bq2415x_charger.c index 1ecbca510bba99ee7abcda33a719035adfceeb5f..917c26ee56bc9f9da2f95f75a7d= 7f1afb0cea8d8 100644 --- a/drivers/power/supply/bq2415x_charger.c +++ b/drivers/power/supply/bq2415x_charger.c @@ -1674,7 +1674,7 @@ static int bq2415x_probe(struct i2c_client *client) /* Query for initial reported_mode and set it */ if (bq->nb.notifier_call) { if (np) { - notify_psy =3D power_supply_get_by_phandle(of_fwnode_handle(np), + notify_psy =3D power_supply_get_by_reference(of_fwnode_handle(np), "ti,usb-charger-detection"); if (IS_ERR(notify_psy)) notify_psy =3D NULL; diff --git a/drivers/power/supply/power_supply_core.c b/drivers/power/suppl= y/power_supply_core.c index 1d53ceaa8fd161e7e72b90befabb9380393c99f2..37b9fa48faab27754d14d8379ed= 40d9bdda098ef 100644 --- a/drivers/power/supply/power_supply_core.c +++ b/drivers/power/supply/power_supply_core.c @@ -496,14 +496,13 @@ void power_supply_put(struct power_supply *psy) } EXPORT_SYMBOL_GPL(power_supply_put); =20 -#ifdef CONFIG_OF static int power_supply_match_device_fwnode(struct device *dev, const void= *data) { return dev->parent && dev_fwnode(dev->parent) =3D=3D data; } =20 /** - * power_supply_get_by_phandle() - Search for a power supply and returns i= ts ref + * power_supply_get_by_reference() - Search for a power supply and returns= its ref * @fwnode: Pointer to fwnode holding phandle property * @property: Name of property holding a power supply name * @@ -514,8 +513,8 @@ static int power_supply_match_device_fwnode(struct devi= ce *dev, const void *data * Return: On success returns a reference to a power supply with * matching name equals to value under @property, NULL or ERR_PTR otherwis= e. */ -struct power_supply *power_supply_get_by_phandle(struct fwnode_handle *fwn= ode, - const char *property) +struct power_supply *power_supply_get_by_reference(struct fwnode_handle *f= wnode, + const char *property) { struct fwnode_handle *power_supply_fwnode; struct power_supply *psy =3D NULL; @@ -537,7 +536,7 @@ struct power_supply *power_supply_get_by_phandle(struct= fwnode_handle *fwnode, =20 return psy; } -EXPORT_SYMBOL_GPL(power_supply_get_by_phandle); +EXPORT_SYMBOL_GPL(power_supply_get_by_reference); =20 static void devm_power_supply_put(struct device *dev, void *res) { @@ -547,16 +546,16 @@ static void devm_power_supply_put(struct device *dev,= void *res) } =20 /** - * devm_power_supply_get_by_phandle() - Resource managed version of - * power_supply_get_by_phandle() + * devm_power_supply_get_by_reference() - Resource managed version of + * power_supply_get_by_reference() * @dev: Pointer to device holding phandle property * @property: Name of property holding a power supply phandle * * Return: On success returns a reference to a power supply with * matching name equals to value under @property, NULL or ERR_PTR otherwis= e. */ -struct power_supply *devm_power_supply_get_by_phandle(struct device *dev, - const char *property) +struct power_supply *devm_power_supply_get_by_reference(struct device *dev, + const char *property) { struct power_supply **ptr, *psy; =20 @@ -567,7 +566,7 @@ struct power_supply *devm_power_supply_get_by_phandle(s= truct device *dev, if (!ptr) return ERR_PTR(-ENOMEM); =20 - psy =3D power_supply_get_by_phandle(dev_fwnode(dev), property); + psy =3D power_supply_get_by_reference(dev_fwnode(dev), property); if (IS_ERR_OR_NULL(psy)) { devres_free(ptr); } else { @@ -576,8 +575,7 @@ struct power_supply *devm_power_supply_get_by_phandle(s= truct device *dev, } return psy; } -EXPORT_SYMBOL_GPL(devm_power_supply_get_by_phandle); -#endif /* CONFIG_OF */ +EXPORT_SYMBOL_GPL(devm_power_supply_get_by_reference); =20 int power_supply_get_battery_info(struct power_supply *psy, struct power_supply_battery_info **info_out) diff --git a/include/linux/power_supply.h b/include/linux/power_supply.h index c95f098374cbdeafe8cddb52da3903f4f0e0f0fc..158227e86cfcb91b0fae7b1f9c9= 44c5c395969ca 100644 --- a/include/linux/power_supply.h +++ b/include/linux/power_supply.h @@ -804,19 +804,10 @@ static inline void power_supply_put(struct power_supp= ly *psy) {} static inline struct power_supply *power_supply_get_by_name(const char *na= me) { return NULL; } #endif -#ifdef CONFIG_OF -extern struct power_supply *power_supply_get_by_phandle(struct fwnode_hand= le *fwnode, - const char *property); -extern struct power_supply *devm_power_supply_get_by_phandle( +extern struct power_supply *power_supply_get_by_reference(struct fwnode_ha= ndle *fwnode, + const char *property); +extern struct power_supply *devm_power_supply_get_by_reference( struct device *dev, const char *property); -#else /* !CONFIG_OF */ -static inline struct power_supply * -power_supply_get_by_phandle(struct device_node *np, const char *property) -{ return NULL; } -static inline struct power_supply * -devm_power_supply_get_by_phandle(struct device *dev, const char *property) -{ return NULL; } -#endif /* CONFIG_OF */ =20 extern const enum power_supply_property power_supply_battery_info_properti= es[]; extern const size_t power_supply_battery_info_properties_size; --=20 2.47.2