public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Lee Jones <lee.jones@linaro.org>
To: Gwendal Grignou <gwendal@chromium.org>
Cc: andy.shevchenko@gmail.com, groeck@chromium.org,
	enric.balletbo@collabora.com, linux-kernel@vger.kernel.org,
	kernel@collabora.com
Subject: Re: [PATCH v5] mfd: cros_ec_dev: Register cros_ec_accel_legacy driver as a subdevice
Date: Tue, 2 Apr 2019 04:46:10 +0100	[thread overview]
Message-ID: <20190402034610.GG4187@dell> (raw)
In-Reply-To: <20190228013541.76792-1-gwendal@chromium.org>

On Wed, 27 Feb 2019, Gwendal Grignou wrote:

> From: Enric Balletbo i Serra <enric.balletbo@collabora.com>
> 
> With this patch, the cros_ec_ctl driver will register the legacy
> accelerometer driver (named cros_ec_accel_legacy) if it fails to
> register sensors through the usual path cros_ec_sensors_register().
> This legacy device is present on Chromebook devices with older EC
> firmware only supporting deprecated EC commands (Glimmer based devices).
> 
> Tested-by: Gwendal Grignou <gwendal@chromium.org>
> Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
> Reviewed-by: Gwendal Grignou <gwendal@chromium.org>
> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
> ---
> Changes in v5:
> - Remove unnecessary white lines.
> 
> Changes in v4:
> - [5/8] Nit: EC -> ECs (Lee Jones)
> - [5/8] Statically define cros_ec_accel_legacy_cells (Lee Jones)
> 
> Changes in v3:
> - [5/8] Add the Reviewed-by Andy Shevchenko.
> 
> Changes in v2:
> - [5/8] Add the Reviewed-by Gwendal.
> 
>  drivers/mfd/cros_ec_dev.c | 66 +++++++++++++++++++++++++++++++++++++++
>  1 file changed, 66 insertions(+)
> 
> diff --git a/drivers/mfd/cros_ec_dev.c b/drivers/mfd/cros_ec_dev.c
> index d275deaecb12..64567bd0a081 100644
> --- a/drivers/mfd/cros_ec_dev.c
> +++ b/drivers/mfd/cros_ec_dev.c
> @@ -376,6 +376,69 @@ static void cros_ec_sensors_register(struct cros_ec_dev *ec)
>  	kfree(msg);
>  }
>  
> +static struct cros_ec_sensor_platform sensor_platforms[] = {
> +	{ .sensor_num = 0 },
> +	{ .sensor_num = 1 }
> +};

I'm still very uncomfortable with this struct.

Other than these indices, the sensors have no other distinguishing
features, thus there should be no need to identify or distinguish
between them in this way.

> +static const struct mfd_cell cros_ec_accel_legacy_cells[] = {
> +	{
> +		.name = "cros-ec-accel-legacy",
> +		.id = 0,
> +		.platform_data = &sensor_platforms[0],
> +		.pdata_size = sizeof(struct cros_ec_sensor_platform),
> +	},
> +	{
> +		.name = "cros-ec-accel-legacy",
> +		.id = 1,
> +		.platform_data = &sensor_platforms[1],
> +		.pdata_size = sizeof(struct cros_ec_sensor_platform),
> +	}
> +};
> +
> +static void cros_ec_accel_legacy_register(struct cros_ec_dev *ec)
> +{
> +	struct cros_ec_device *ec_dev = ec->ec_dev;
> +	u8 status;
> +	int ret;
> +
> +	/*
> +	 * ECs that need legacy support are the main EC, directly connected to
> +	 * the AP.
> +	 */
> +	if (ec->cmd_offset != 0)
> +		return;
> +
> +	/*
> +	 * Check if EC supports direct memory reads and if EC has
> +	 * accelerometers.
> +	 */
> +	if (!ec_dev->cmd_readmem)
> +		return;
> +
> +	ret = ec_dev->cmd_readmem(ec_dev, EC_MEMMAP_ACC_STATUS, 1, &status);
> +	if (ret < 0) {
> +		dev_warn(ec->dev, "EC does not support direct reads.\n");
> +		return;
> +	}
> +
> +	/* Check if EC has accelerometers. */
> +	if (!(status & EC_MEMMAP_ACC_STATUS_PRESENCE_BIT)) {
> +		dev_info(ec->dev, "EC does not have accelerometers.\n");
> +		return;
> +	}
> +
> +	/*
> +	 * Register 2 accelerometers
> +	 */
> +	ret = mfd_add_devices(ec->dev, PLATFORM_DEVID_AUTO,

Using PLATFORM_DEVID_AUTO whilst providing the MFD cells with IDs
doesn't make any sense.  Please remove the IDs from the cells.

> +			      cros_ec_accel_legacy_cells,
> +			      ARRAY_SIZE(cros_ec_accel_legacy_cells),
> +			      NULL, 0, NULL);
> +	if (ret)
> +		dev_err(ec_dev->dev, "failed to add EC sensors\n");
> +}
> +
>  static const struct mfd_cell cros_ec_cec_cells[] = {
>  	{ .name = "cros-ec-cec" }
>  };
> @@ -437,6 +500,9 @@ static int ec_device_probe(struct platform_device *pdev)
>  	/* check whether this EC is a sensor hub. */
>  	if (cros_ec_check_features(ec, EC_FEATURE_MOTION_SENSE))
>  		cros_ec_sensors_register(ec);
> +	else
> +		/* Workaroud for older EC firmware */
> +		cros_ec_accel_legacy_register(ec);
>  
>  	/* Check whether this EC instance has CEC host command support */
>  	if (cros_ec_check_features(ec, EC_FEATURE_CEC)) {

-- 
Lee Jones [李琼斯]
Linaro Services Technical Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog

  reply	other threads:[~2019-04-02  3:46 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-20 12:27 [PATCH v4 0/8] mfd: cros_ec: add subdevices and fixes Enric Balletbo i Serra
2018-03-20 12:27 ` [PATCH v4 1/8] mfd: cros_ec: fail early if we cannot identify the EC Enric Balletbo i Serra
2018-03-20 12:27 ` [PATCH v4 2/8] mfd: cros_ec: free IRQ automatically Enric Balletbo i Serra
2018-03-20 12:27 ` [PATCH v4 3/8] mfd: cros_ec: Don't try to grab log when suspended Enric Balletbo i Serra
2018-03-20 12:27 ` [PATCH v4 4/8] mfd: cros_ec_dev: Register cros-ec-rtc driver as a subdevice Enric Balletbo i Serra
2018-03-28 10:54   ` Lee Jones
2018-03-28 10:58     ` Enric Balletbo i Serra
2018-03-20 12:27 ` [PATCH v4 5/8] mfd: cros_ec_dev: Register cros_ec_accel_legacy " Enric Balletbo i Serra
2018-03-28 11:03   ` Lee Jones
2018-04-04  8:03     ` Enric Balletbo Serra
2018-04-04  9:06       ` Enric Balletbo Serra
2018-04-16 13:20         ` Lee Jones
2019-02-28  1:03           ` Gwendal Grignou
2019-02-28  1:35             ` [PATCH v5] " Gwendal Grignou
2019-04-02  3:46               ` Lee Jones [this message]
2019-05-28 21:53                 ` Gwendal Grignou
2019-05-29 11:44                   ` Lee Jones
2019-05-29 18:38                     ` Gwendal Grignou
2019-05-30  7:48                       ` Lee Jones
2019-05-31  4:46                         ` Gwendal Grignou
2019-05-31  8:13                           ` Lee Jones
2019-05-31 21:02                             ` Gwendal Grignou
2019-06-03  6:22                               ` Lee Jones
2019-06-03 17:01                                 ` Gwendal Grignou
2018-03-20 12:27 ` [PATCH v4 6/8] mfd: cros_ec_dev: register shutdown function for debugfs Enric Balletbo i Serra
2018-03-20 12:27 ` [PATCH v4 7/8] mfd: cros_ec_i2c: add ACPI module device table Enric Balletbo i Serra
2018-03-20 12:27 ` [PATCH v4 8/8] mfd: cros_ec_i2c: moving the system sleep pm ops to late 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=20190402034610.GG4187@dell \
    --to=lee.jones@linaro.org \
    --cc=andy.shevchenko@gmail.com \
    --cc=enric.balletbo@collabora.com \
    --cc=groeck@chromium.org \
    --cc=gwendal@chromium.org \
    --cc=kernel@collabora.com \
    --cc=linux-kernel@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox