All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sebastian Reichel <sebastian.reichel@collabora.com>
To: Matthias Kaehlcke <mka@chromium.org>
Cc: linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] power: supply: core: Add psy_has_property()
Date: Mon, 27 Sep 2021 16:48:21 +0200	[thread overview]
Message-ID: <20210927144821.c6rzox4xyqkanzgz@earth.universe> (raw)
In-Reply-To: <20210901165911.1.I61edd8453dd683a125623b4173988b438033c0af@changeid>

[-- 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 --]

      reply	other threads:[~2021-09-27 14:48 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-01 23:59 [PATCH] power: supply: core: Add psy_has_property() Matthias Kaehlcke
2021-09-27 14:48 ` Sebastian Reichel [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210927144821.c6rzox4xyqkanzgz@earth.universe \
    --to=sebastian.reichel@collabora.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=mka@chromium.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.