[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Yl3vd4kfgwJXMs/w@chromium.org>
Date: Mon, 18 Apr 2022 23:08:39 +0000
From: Prashant Malani <pmalani@...omium.org>
To: Stephen Boyd <swboyd@...omium.org>
Cc: Benson Leung <bleung@...omium.org>, linux-kernel@...r.kernel.org,
patches@...ts.linux.dev, Lee Jones <lee.jones@...aro.org>,
Daisuke Nojiri <dnojiri@...omium.org>,
Guenter Roeck <groeck@...omium.org>,
chrome-platform@...ts.linux.dev
Subject: Re: [PATCH 1/3] platform/chrome: cros_ec_proto: Add peripheral
charger count API
Hey Stephen,
On Apr 14 17:32, Stephen Boyd wrote:
> Add a peripheral charger count API similar to the one implemented in the
> ChromeOS PCHG driver so we can use it to decide whether or not to
> register the PCHG device in the cros_ec MFD driver.
>
> Cc: Lee Jones <lee.jones@...aro.org>
> Cc: Daisuke Nojiri <dnojiri@...omium.org>
> Cc: Benson Leung <bleung@...omium.org>
> Cc: Guenter Roeck <groeck@...omium.org>
> Cc: <chrome-platform@...ts.linux.dev>
> Signed-off-by: Stephen Boyd <swboyd@...omium.org>
> ---
> drivers/platform/chrome/cros_ec_proto.c | 31 +++++++++++++++++++++
> include/linux/platform_data/cros_ec_proto.h | 1 +
> 2 files changed, 32 insertions(+)
>
> diff --git a/drivers/platform/chrome/cros_ec_proto.c b/drivers/platform/chrome/cros_ec_proto.c
> index c4caf2e2de82..42269703ca6c 100644
> --- a/drivers/platform/chrome/cros_ec_proto.c
> +++ b/drivers/platform/chrome/cros_ec_proto.c
> @@ -832,6 +832,37 @@ bool cros_ec_check_features(struct cros_ec_dev *ec, int feature)
> }
> EXPORT_SYMBOL_GPL(cros_ec_check_features);
>
> +/**
> + * cros_ec_pchg_port_count() - Return the number of peripheral charger ports.
> + * @ec: EC device.
> + *
> + * Return: Number of peripheral charger ports, or 0 in case of error.
> + */
> +unsigned int cros_ec_pchg_port_count(struct cros_ec_dev *ec)
> +{
> + struct cros_ec_command *msg;
> + const struct ec_response_pchg_count *rsp;
> + struct cros_ec_device *ec_dev = ec->ec_dev;
> + int ret, count = 0;
> +
> + msg = kzalloc(sizeof(*msg) + sizeof(*rsp), GFP_KERNEL);
> + if (!msg)
> + return 0;
> +
> + msg->command = EC_CMD_PCHG_COUNT + ec->cmd_offset;
> + msg->insize = sizeof(*rsp);
> +
> + ret = cros_ec_cmd_xfer_status(ec_dev, msg);
> + if (ret >= 0) {
> + rsp = (const struct ec_response_pchg_count *)msg->data;
> + count = rsp->port_count;
> + }
> + kfree(msg);
Can we use the wrapper function cros_ec_command() [1] here, which does
the kzalloc and msg construction?
Best regards,
-Prashant
[1] https://elixir.bootlin.com/linux/latest/source/drivers/platform/chrome/cros_ec_proto.c#L914
Powered by blists - more mailing lists