All of lore.kernel.org
 help / color / mirror / Atom feed
From: Enric Balletbo i Serra <enric.balletbo@collabora.com>
To: Prashant Malani <pmalani@chromium.org>, linux-kernel@vger.kernel.org
Cc: Benson Leung <bleung@chromium.org>,
	Guenter Roeck <groeck@chromium.org>,
	Lee Jones <lee.jones@linaro.org>,
	Gwendal Grignou <gwendal@chromium.org>,
	Jonathan Cameron <Jonathan.Cameron@huawei.com>,
	Evan Green <evgreen@chromium.org>
Subject: Re: [PATCH 01/17] platform/chrome: Add EC command msg wrapper
Date: Mon, 3 Feb 2020 16:27:23 +0100	[thread overview]
Message-ID: <86fb1f07-7677-52e6-024e-48528d5093b2@collabora.com> (raw)
In-Reply-To: <20200130203106.201894-2-pmalani@chromium.org>

Hi Prashant,

Many thanks to work on this. Some comments below ...

On 30/1/20 21:30, Prashant Malani wrote:
> Many callers of cros_ec_cmd_xfer_status() use a similar set up of
> allocating and filling a message buffer and then copying any received
> data to a target buffer.
> 
> Create a utility function cros_ec_send_cmd_msg() that performs this
> setup so that callers can use this function instead. Subsequent patches
> will convert callers of cros_ec_cmd_xfer_status() to the new function
> instead.
> 
> Signed-off-by: Prashant Malani <pmalani@chromium.org>
> ---
>  drivers/platform/chrome/cros_ec_proto.c     | 57 +++++++++++++++++++++
>  include/linux/platform_data/cros_ec_proto.h |  5 ++
>  2 files changed, 62 insertions(+)
> 
> diff --git a/drivers/platform/chrome/cros_ec_proto.c b/drivers/platform/chrome/cros_ec_proto.c
> index da1b1c45043333..53f3bfac71d90e 100644
> --- a/drivers/platform/chrome/cros_ec_proto.c
> +++ b/drivers/platform/chrome/cros_ec_proto.c
> @@ -5,6 +5,7 @@
>  
>  #include <linux/delay.h>
>  #include <linux/device.h>
> +#include <linux/mfd/cros_ec.h>
>  #include <linux/module.h>
>  #include <linux/platform_data/cros_ec_commands.h>
>  #include <linux/platform_data/cros_ec_proto.h>
> @@ -570,6 +571,62 @@ int cros_ec_cmd_xfer_status(struct cros_ec_device *ec_dev,
>  }
>  EXPORT_SYMBOL(cros_ec_cmd_xfer_status);
>  
> +/**
> + * cros_ec_send_cmd_msg() - Utility function to send commands to ChromeOS EC.

I'm wondering if just cros_ec_cmd() shouldn't be a better name. If it's a
replacement of current user usage of cros_ec_cmd_xfer and
cros_ec_cmd_xfer_status, this will be used a lot, and have a short name and
clear will help the users of this helper.

> + * @ec: EC device struct.
> + * @version: Command version number (often 0).
> + * @command: Command ID including offset.
> + * @outdata: Data to be sent to the EC.
> + * @outsize: Size of the &outdata buffer.
> + * @indata: Data to be received from the EC.
> + * @insize: Size of the &indata buffer.
> + *
> + * This function is a wrapper around &cros_ec_cmd_xfer_status, and performs

You say that is a wrapper around cros_ec_cmd_xfer_status but then you remove
that function, and rewrite the doc here. Just explain for what is this helper
without referencing cros_ec_cmd_xfer_status and cros_ec_cmd_xfer.

> + * some of the common work involved with sending a command to the EC. This
> + * includes allocating and filling up a &struct cros_ec_command message buffer,
> + * and copying the received data to another buffer.
> + *
> + * Return: The number of bytes transferred on success or negative error code.
> + */
> +int cros_ec_send_cmd_msg(struct cros_ec_device *ec, unsigned int version,
> +			 unsigned int command, void *outdata,
> +			 unsigned int outsize, void *indata,
> +			 unsigned int insize)

Should we change the parameter types from "unsigned int" to "u32" to match both
ec hardware and the storage type in struct cros_ec_command?

> +{
> +	struct cros_ec_command *msg;
> +	int ret;
> +
> +	msg = kzalloc(sizeof(*msg) + max(outsize, insize), GFP_KERNEL);
> +	if (!msg)
> +		return -ENOMEM;
> +
> +	msg->version = version;
> +	msg->command = command;
> +	msg->outsize = outsize;
> +	msg->insize = insize;
> +
> +	if (outdata && outsize > 0)
> +		memcpy(msg->data, outdata, outsize);
> +
> +	ret = cros_ec_cmd_xfer(ec, msg);
> +	if (ret < 0) {
> +		dev_err(ec->dev, "Command xfer error (err:%d)\n", ret);
> +		goto cleanup;
> +	} else if (msg->result != EC_RES_SUCCESS) {
> +		dev_dbg(ec->dev, "Command result (err: %d)\n", msg->result);
> +		ret = -EPROTO;
> +		goto cleanup;
> +	}
> +
> +	if (insize)
> +		memcpy(indata, msg->data, insize);
> +
> +cleanup:
> +	kfree(msg);
> +	return ret;
> +}
> +EXPORT_SYMBOL(cros_ec_send_cmd_msg);
> +
>  static int get_next_event_xfer(struct cros_ec_device *ec_dev,
>  			       struct cros_ec_command *msg,
>  			       struct ec_response_get_next_event_v1 *event,
> diff --git a/include/linux/platform_data/cros_ec_proto.h b/include/linux/platform_data/cros_ec_proto.h
> index 30098a5515231d..166ce26bdd79eb 100644
> --- a/include/linux/platform_data/cros_ec_proto.h
> +++ b/include/linux/platform_data/cros_ec_proto.h
> @@ -201,6 +201,11 @@ int cros_ec_cmd_xfer(struct cros_ec_device *ec_dev,
>  int cros_ec_cmd_xfer_status(struct cros_ec_device *ec_dev,
>  			    struct cros_ec_command *msg);
>  
> +int cros_ec_send_cmd_msg(struct cros_ec_device *ec_dev, unsigned int version,
> +			 unsigned int command, void *outdata,
> +			 unsigned int outsize, void *indata,
> +			 unsigned int insize);
> +
>  int cros_ec_register(struct cros_ec_device *ec_dev);
>  
>  int cros_ec_unregister(struct cros_ec_device *ec_dev);
> 

  reply	other threads:[~2020-02-03 15:27 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-30 20:30 [PATCH 00/17] platform/chrome: Replace cros_ec_cmd_xfer_status Prashant Malani
2020-01-30 20:30 ` Prashant Malani
2020-01-30 20:30 ` [PATCH 01/17] platform/chrome: Add EC command msg wrapper Prashant Malani
2020-02-03 15:27   ` Enric Balletbo i Serra [this message]
2020-02-03 18:24     ` Prashant Malani
2020-01-30 20:30 ` [PATCH 02/17] platform/chrome: chardev: Use send_cmd_msg() Prashant Malani
2020-01-30 20:30 ` [PATCH 03/17] platform/chrome: proto: Use send_cmd_msg Prashant Malani
2020-01-30 20:30 ` [PATCH 04/17] platform/chrome: usbpd_logger: Use cmd_send_msg() Prashant Malani
2020-01-30 20:30 ` [PATCH 05/17] platform/chrome: sensorhub: Use send_cmd_msg() Prashant Malani
2020-01-30 20:30 ` [PATCH 06/17] platform/chrome: debugfs: " Prashant Malani
2020-01-30 20:30 ` [PATCH 07/17] platform/chrome: sysfs: " Prashant Malani
2020-01-30 20:30 ` [PATCH 08/17] extcon: cros_ec: Use cros_ec_send_cmd_msg() Prashant Malani
2020-01-30 20:30 ` [PATCH 09/17] hid: google-hammer: " Prashant Malani
2020-01-30 20:30 ` [PATCH 10/17] iio: cros_ec: " Prashant Malani
2020-02-02  9:43   ` Jonathan Cameron
2020-02-03 18:31     ` Prashant Malani
2020-01-30 20:30 ` [PATCH 11/17] ASoC: cros_ec_codec: " Prashant Malani
2020-01-30 20:30   ` [alsa-devel] " Prashant Malani
2020-02-01 11:03   ` Mark Brown
2020-02-01 11:03     ` [alsa-devel] " Mark Brown
2020-02-03 18:42     ` Prashant Malani
2020-02-03 18:42       ` [alsa-devel] " Prashant Malani
2020-01-30 20:30 ` [PATCH 12/17] power: supply: cros: " Prashant Malani
2020-01-30 20:31 ` [PATCH 13/17] pwm: cros-ec: Remove cros_ec_cmd_xfer_status() Prashant Malani
2020-01-30 20:31   ` Prashant Malani
2020-02-03 15:33   ` Enric Balletbo i Serra
2020-02-03 18:26     ` Prashant Malani
2020-02-03 18:39       ` Prashant Malani
2020-01-30 20:31 ` [PATCH 14/17] rtc: cros-ec: Use cros_ec_send_cmd_msg() Prashant Malani
2020-01-30 20:31 ` [PATCH 15/17] media: cros-ec-cec: " Prashant Malani
2020-02-02 22:08   ` kbuild test robot
2020-02-02 22:08     ` kbuild test robot
2020-02-03  5:35   ` kbuild test robot
2020-02-03  5:35     ` kbuild test robot
2020-01-30 20:31 ` [PATCH 16/17] i2c: cros-ec-tunnel: " Prashant Malani
2020-01-30 20:31   ` Prashant Malani
2020-01-30 20:31 ` [PATCH 17/17] platform/chrome: Drop cros_ec_cmd_xfer_status() Prashant Malani
2020-02-03 15:35   ` Enric Balletbo i Serra

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=86fb1f07-7677-52e6-024e-48528d5093b2@collabora.com \
    --to=enric.balletbo@collabora.com \
    --cc=Jonathan.Cameron@huawei.com \
    --cc=bleung@chromium.org \
    --cc=evgreen@chromium.org \
    --cc=groeck@chromium.org \
    --cc=gwendal@chromium.org \
    --cc=lee.jones@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pmalani@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.