* [PATCH] power: supply: core: Add psy_has_property()
@ 2021-09-01 23:59 Matthias Kaehlcke
2021-09-27 14:48 ` Sebastian Reichel
0 siblings, 1 reply; 2+ messages in thread
From: Matthias Kaehlcke @ 2021-09-01 23:59 UTC (permalink / raw)
To: Sebastian Reichel; +Cc: linux-pm, linux-kernel, Matthias Kaehlcke
Add the helper psy_has_property() to check whether a power supply
has a given property and use it instead of ad hoc iterations over
the property list in multiple locations.
Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
---
drivers/power/supply/power_supply_core.c | 65 ++++++++++++++----------
1 file changed, 37 insertions(+), 28 deletions(-)
diff --git a/drivers/power/supply/power_supply_core.c b/drivers/power/supply/power_supply_core.c
index d99e2f11c183..9309b33ed3ec 100644
--- a/drivers/power/supply/power_supply_core.c
+++ b/drivers/power/supply/power_supply_core.c
@@ -956,26 +956,41 @@ static struct thermal_zone_device_ops psy_tzd_ops = {
.get_temp = power_supply_read_temp,
};
+static bool psy_has_property(const struct power_supply_desc *psy_desc,
+ enum power_supply_property psp)
+{
+ bool found = false;
+ int i;
+
+ for (i = 0; i < psy_desc->num_properties; i++) {
+ if (psy_desc->properties[i] == psp) {
+ found = true;
+ break;
+ }
+ }
+
+ return found;
+}
+
static int psy_register_thermal(struct power_supply *psy)
{
- int i, ret;
+ int ret;
if (psy->desc->no_thermal)
return 0;
/* Register battery zone device psy reports temperature */
- for (i = 0; i < psy->desc->num_properties; i++) {
- if (psy->desc->properties[i] == POWER_SUPPLY_PROP_TEMP) {
- psy->tzd = thermal_zone_device_register(psy->desc->name,
- 0, 0, psy, &psy_tzd_ops, NULL, 0, 0);
- if (IS_ERR(psy->tzd))
- return PTR_ERR(psy->tzd);
- ret = thermal_zone_device_enable(psy->tzd);
- if (ret)
- thermal_zone_device_unregister(psy->tzd);
- return ret;
- }
+ if (psy_has_property(psy->desc, POWER_SUPPLY_PROP_TEMP)) {
+ psy->tzd = thermal_zone_device_register(psy->desc->name,
+ 0, 0, psy, &psy_tzd_ops, NULL, 0, 0);
+ if (IS_ERR(psy->tzd))
+ return PTR_ERR(psy->tzd);
+ ret = thermal_zone_device_enable(psy->tzd);
+ if (ret)
+ thermal_zone_device_unregister(psy->tzd);
+ return ret;
}
+
return 0;
}
@@ -1046,18 +1061,14 @@ static const struct thermal_cooling_device_ops psy_tcd_ops = {
static int psy_register_cooler(struct power_supply *psy)
{
- int i;
-
/* Register for cooling device if psy can control charging */
- for (i = 0; i < psy->desc->num_properties; i++) {
- if (psy->desc->properties[i] ==
- POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT) {
- psy->tcd = thermal_cooling_device_register(
- (char *)psy->desc->name,
- psy, &psy_tcd_ops);
- return PTR_ERR_OR_ZERO(psy->tcd);
- }
+ if (psy_has_property(psy->desc, POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT)) {
+ psy->tcd = thermal_cooling_device_register(
+ (char *)psy->desc->name,
+ psy, &psy_tcd_ops);
+ return PTR_ERR_OR_ZERO(psy->tcd);
}
+
return 0;
}
@@ -1095,7 +1106,7 @@ __power_supply_register(struct device *parent,
{
struct device *dev;
struct power_supply *psy;
- int i, rc;
+ int rc;
if (!parent)
pr_warn("%s: Expected proper parent device for '%s'\n",
@@ -1104,11 +1115,9 @@ __power_supply_register(struct device *parent,
if (!desc || !desc->name || !desc->properties || !desc->num_properties)
return ERR_PTR(-EINVAL);
- for (i = 0; i < desc->num_properties; ++i) {
- if ((desc->properties[i] == POWER_SUPPLY_PROP_USB_TYPE) &&
- (!desc->usb_types || !desc->num_usb_types))
- return ERR_PTR(-EINVAL);
- }
+ if (psy_has_property(desc, POWER_SUPPLY_PROP_USB_TYPE) &&
+ (!desc->usb_types || !desc->num_usb_types))
+ return ERR_PTR(-EINVAL);
psy = kzalloc(sizeof(*psy), GFP_KERNEL);
if (!psy)
--
2.33.0.153.gba50c8fa24-goog
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] power: supply: core: Add psy_has_property()
2021-09-01 23:59 [PATCH] power: supply: core: Add psy_has_property() Matthias Kaehlcke
@ 2021-09-27 14:48 ` Sebastian Reichel
0 siblings, 0 replies; 2+ messages in thread
From: Sebastian Reichel @ 2021-09-27 14:48 UTC (permalink / raw)
To: Matthias Kaehlcke; +Cc: linux-pm, linux-kernel
[-- Attachment #1: Type: text/plain, Size: 4004 bytes --]
Hi,
On Wed, Sep 01, 2021 at 04:59:36PM -0700, Matthias Kaehlcke wrote:
> Add the helper psy_has_property() to check whether a power supply
> has a given property and use it instead of ad hoc iterations over
> the property list in multiple locations.
>
> Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
> ---
Thanks, queued.
-- Sebastian
>
> drivers/power/supply/power_supply_core.c | 65 ++++++++++++++----------
> 1 file changed, 37 insertions(+), 28 deletions(-)
>
> diff --git a/drivers/power/supply/power_supply_core.c b/drivers/power/supply/power_supply_core.c
> index d99e2f11c183..9309b33ed3ec 100644
> --- a/drivers/power/supply/power_supply_core.c
> +++ b/drivers/power/supply/power_supply_core.c
> @@ -956,26 +956,41 @@ static struct thermal_zone_device_ops psy_tzd_ops = {
> .get_temp = power_supply_read_temp,
> };
>
> +static bool psy_has_property(const struct power_supply_desc *psy_desc,
> + enum power_supply_property psp)
> +{
> + bool found = false;
> + int i;
> +
> + for (i = 0; i < psy_desc->num_properties; i++) {
> + if (psy_desc->properties[i] == psp) {
> + found = true;
> + break;
> + }
> + }
> +
> + return found;
> +}
> +
> static int psy_register_thermal(struct power_supply *psy)
> {
> - int i, ret;
> + int ret;
>
> if (psy->desc->no_thermal)
> return 0;
>
> /* Register battery zone device psy reports temperature */
> - for (i = 0; i < psy->desc->num_properties; i++) {
> - if (psy->desc->properties[i] == POWER_SUPPLY_PROP_TEMP) {
> - psy->tzd = thermal_zone_device_register(psy->desc->name,
> - 0, 0, psy, &psy_tzd_ops, NULL, 0, 0);
> - if (IS_ERR(psy->tzd))
> - return PTR_ERR(psy->tzd);
> - ret = thermal_zone_device_enable(psy->tzd);
> - if (ret)
> - thermal_zone_device_unregister(psy->tzd);
> - return ret;
> - }
> + if (psy_has_property(psy->desc, POWER_SUPPLY_PROP_TEMP)) {
> + psy->tzd = thermal_zone_device_register(psy->desc->name,
> + 0, 0, psy, &psy_tzd_ops, NULL, 0, 0);
> + if (IS_ERR(psy->tzd))
> + return PTR_ERR(psy->tzd);
> + ret = thermal_zone_device_enable(psy->tzd);
> + if (ret)
> + thermal_zone_device_unregister(psy->tzd);
> + return ret;
> }
> +
> return 0;
> }
>
> @@ -1046,18 +1061,14 @@ static const struct thermal_cooling_device_ops psy_tcd_ops = {
>
> static int psy_register_cooler(struct power_supply *psy)
> {
> - int i;
> -
> /* Register for cooling device if psy can control charging */
> - for (i = 0; i < psy->desc->num_properties; i++) {
> - if (psy->desc->properties[i] ==
> - POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT) {
> - psy->tcd = thermal_cooling_device_register(
> - (char *)psy->desc->name,
> - psy, &psy_tcd_ops);
> - return PTR_ERR_OR_ZERO(psy->tcd);
> - }
> + if (psy_has_property(psy->desc, POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT)) {
> + psy->tcd = thermal_cooling_device_register(
> + (char *)psy->desc->name,
> + psy, &psy_tcd_ops);
> + return PTR_ERR_OR_ZERO(psy->tcd);
> }
> +
> return 0;
> }
>
> @@ -1095,7 +1106,7 @@ __power_supply_register(struct device *parent,
> {
> struct device *dev;
> struct power_supply *psy;
> - int i, rc;
> + int rc;
>
> if (!parent)
> pr_warn("%s: Expected proper parent device for '%s'\n",
> @@ -1104,11 +1115,9 @@ __power_supply_register(struct device *parent,
> if (!desc || !desc->name || !desc->properties || !desc->num_properties)
> return ERR_PTR(-EINVAL);
>
> - for (i = 0; i < desc->num_properties; ++i) {
> - if ((desc->properties[i] == POWER_SUPPLY_PROP_USB_TYPE) &&
> - (!desc->usb_types || !desc->num_usb_types))
> - return ERR_PTR(-EINVAL);
> - }
> + if (psy_has_property(desc, POWER_SUPPLY_PROP_USB_TYPE) &&
> + (!desc->usb_types || !desc->num_usb_types))
> + return ERR_PTR(-EINVAL);
>
> psy = kzalloc(sizeof(*psy), GFP_KERNEL);
> if (!psy)
> --
> 2.33.0.153.gba50c8fa24-goog
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2021-09-27 14:48 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-01 23:59 [PATCH] power: supply: core: Add psy_has_property() Matthias Kaehlcke
2021-09-27 14:48 ` Sebastian Reichel
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.