From: Lee Jones <lee.jones@linaro.org>
To: Enric Balletbo i Serra <enric.balletbo@collabora.com>
Cc: linux-kernel@vger.kernel.org, Jonathan Corbet <corbet@lwn.net>,
Krzysztof Kozlowski <krzk@kernel.org>,
Will Deacon <will.deacon@arm.com>,
MyungJoo Ham <myungjoo.ham@samsung.com>,
Chanwoo Choi <cw00.choi@samsung.com>,
Benson Leung <bleung@chromium.org>,
Guenter Roeck <groeck@chromium.org>,
Jonathan Cameron <jic23@kernel.org>,
Dmitry Torokhov <dmitry.torokhov@gmail.com>,
Mauro Carvalho Chehab <mchehab@kernel.org>,
Sebastian Reichel <sre@kernel.org>,
Thierry Reding <thierry.reding@gmail.com>,
Alexandre Belloni <alexandre.belloni@bootlin.com>,
Liam Girdwood <lgirdwood@gmail.com>,
Mark Brown <broonie@kernel.org>,
Neil Armstrong <narmstrong@baylibre.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Collabora kernel ML <kernel@collabora.com>,
Andy Shevchenko <andriy.shevchenko@linux.intel.com>,
Gwendal Grignou <gwendal@chromium.org>
Subject: Re: [PATCH v5 08/11] mfd: cros_ec: Add convenience struct to define dedicated CrOS EC MCUs
Date: Mon, 12 Aug 2019 08:16:39 +0100 [thread overview]
Message-ID: <20190812071639.GC4594@dell> (raw)
In-Reply-To: <20190722133257.9336-9-enric.balletbo@collabora.com>
On Mon, 22 Jul 2019, Enric Balletbo i Serra wrote:
> With the increasing use of dedicated CrOS EC MCUs, it takes a fair amount
> of boiler plate code to add those devices, add a struct that can be used
> to specify a dedicated CrOS EC MCU so we can just add a new item to it to
> define a new dedicated MCU.
>
> Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
> Acked-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Reviewed-by: Gwendal Grignou <gwendal@chromium.org>
> Tested-by: Gwendal Grignou <gwendal@chromium.org>
> ---
>
> Changes in v5: None
> Changes in v4: None
> Changes in v3: None
> Changes in v2: None
>
> drivers/mfd/cros_ec_dev.c | 87 +++++++++++++++++++++------------------
> 1 file changed, 48 insertions(+), 39 deletions(-)
>
> diff --git a/drivers/mfd/cros_ec_dev.c b/drivers/mfd/cros_ec_dev.c
> index c6bf52d795f2..e0e18c0eb9f5 100644
> --- a/drivers/mfd/cros_ec_dev.c
> +++ b/drivers/mfd/cros_ec_dev.c
> @@ -22,6 +22,41 @@ static struct class cros_class = {
> .name = "chromeos",
> };
>
> +/**
> + * cros_feature_to_name - CrOS feature id to name/short description.
> + * @id: The feature identifier.
> + * @name: Device name associated with the feature id.
> + * @desc: Short name that will be displayed.
> + */
> +struct cros_feature_to_name {
> + unsigned int id;
> + const char *name;
> + const char *desc;
> +};
> +
> +static const struct cros_feature_to_name cros_mcu_devices[] = {
> + {
> + .id = EC_FEATURE_FINGERPRINT,
> + .name = CROS_EC_DEV_FP_NAME,
> + .desc = "Fingerprint",
> + },
> + {
> + .id = EC_FEATURE_ISH,
> + .name = CROS_EC_DEV_ISH_NAME,
> + .desc = "Integrated Sensor Hub",
> + },
> + {
> + .id = EC_FEATURE_SCP,
> + .name = CROS_EC_DEV_SCP_NAME,
> + .desc = "System Control Processor",
> + },
> + {
> + .id = EC_FEATURE_TOUCHPAD,
> + .name = CROS_EC_DEV_TP_NAME,
> + .desc = "Touchpad",
> + },
> +};
> +
> static int cros_ec_check_features(struct cros_ec_dev *ec, int feature)
> {
> struct cros_ec_command *msg;
> @@ -278,6 +313,7 @@ static int ec_device_probe(struct platform_device *pdev)
> struct device *dev = &pdev->dev;
> struct cros_ec_platform *ec_platform = dev_get_platdata(dev);
> struct cros_ec_dev *ec = kzalloc(sizeof(*ec), GFP_KERNEL);
> + int i;
>
> if (!ec)
> return retval;
> @@ -290,47 +326,20 @@ static int ec_device_probe(struct platform_device *pdev)
> ec->features[1] = -1U; /* Not cached yet */
> device_initialize(&ec->class_dev);
>
> - /* Check whether this is actually a Fingerprint MCU rather than an EC */
> - if (cros_ec_check_features(ec, EC_FEATURE_FINGERPRINT)) {
> - dev_info(dev, "CrOS Fingerprint MCU detected.\n");
> - /*
> - * Help userspace differentiating ECs from FP MCU,
> - * regardless of the probing order.
> - */
> - ec_platform->ec_name = CROS_EC_DEV_FP_NAME;
> - }
> -
> - /*
> - * Check whether this is actually an Integrated Sensor Hub (ISH)
> - * rather than an EC.
> - */
> - if (cros_ec_check_features(ec, EC_FEATURE_ISH)) {
> - dev_info(dev, "CrOS ISH MCU detected.\n");
> - /*
> - * Help userspace differentiating ECs from ISH MCU,
> - * regardless of the probing order.
> - */
> - ec_platform->ec_name = CROS_EC_DEV_ISH_NAME;
> - }
> -
> - /* Check whether this is actually a Touchpad MCU rather than an EC */
> - if (cros_ec_check_features(ec, EC_FEATURE_TOUCHPAD)) {
> - dev_info(dev, "CrOS Touchpad MCU detected.\n");
> + for (i = 0; i < ARRAY_SIZE(cros_mcu_devices); i++) {
> /*
> - * Help userspace differentiating ECs from TP MCU,
> - * regardless of the probing order.
> + * Check whether this is actually a dedicated MCU rather
> + * than an standard EC.
> */
> - ec_platform->ec_name = CROS_EC_DEV_TP_NAME;
> - }
> -
> - /* Check whether this is actually a SCP rather than an EC. */
> - if (cros_ec_check_features(ec, EC_FEATURE_SCP)) {
> - dev_info(dev, "CrOS SCP MCU detected.\n");
> - /*
> - * Help userspace differentiating ECs from SCP,
> - * regardless of the probing order.
> - */
> - ec_platform->ec_name = CROS_EC_DEV_SCP_NAME;
> + if (cros_ec_check_features(ec, cros_mcu_devices[i].id)) {
> + dev_info(dev, "CrOS %s MCU detected\n",
> + cros_mcu_devices[i].desc);
> + /*
> + * Help userspace differentiating ECs from other MCU,
> + * regardless of the probing order.
> + */
> + ec_platform->ec_name = cros_mcu_devices[i].name;
I assume by "dedicated MCU", you mean it can only support one of these
at a time? If so, please make that clear by adding a break statement
once the MCU type has been determined.
> + }
> }
>
> /*
--
Lee Jones [李琼斯]
Linaro Services Technical Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
next prev parent reply other threads:[~2019-08-12 7:16 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-22 13:32 [PATCH v5 00/11] Move part of cros-ec out of MFD subsystem Enric Balletbo i Serra
2019-07-22 13:32 ` [PATCH v5 01/11] mfd / platform: cros_ec: Handle chained ECs as platform devices Enric Balletbo i Serra
2019-08-12 7:24 ` Lee Jones
2019-07-22 13:32 ` [PATCH v5 02/11] mfd / platform: cros_ec: Move cros-ec core driver out from MFD Enric Balletbo i Serra
2019-08-12 7:24 ` Lee Jones
2019-07-22 13:32 ` [PATCH v5 03/11] mfd / platform: cros_ec: Miscellaneous character device to talk with the EC Enric Balletbo i Serra
2019-08-12 7:24 ` Lee Jones
2019-07-22 13:32 ` [PATCH v5 04/11] mfd: cros_ec: Switch to use the new cros-ec-chardev driver Enric Balletbo i Serra
2019-08-12 7:25 ` Lee Jones
2019-07-22 13:32 ` [PATCH v5 05/11] mfd / platform: cros_ec: Rename config to a better name Enric Balletbo i Serra
2019-08-12 7:25 ` Lee Jones
2019-07-22 13:32 ` [PATCH v5 06/11] mfd / platform: cros_ec: Reorganize platform and mfd includes Enric Balletbo i Serra
2019-08-12 7:25 ` Lee Jones
2019-07-22 13:32 ` [PATCH v5 07/11] mfd: cros_ec: Use kzalloc and cros_ec_cmd_xfer_status helper Enric Balletbo i Serra
2019-08-12 7:25 ` Lee Jones
2019-07-22 13:32 ` [PATCH v5 08/11] mfd: cros_ec: Add convenience struct to define dedicated CrOS EC MCUs Enric Balletbo i Serra
2019-08-12 7:16 ` Lee Jones [this message]
2019-08-21 17:40 ` Enric Balletbo i Serra
2019-07-22 13:32 ` [PATCH v5 09/11] mfd: cros_ec: Add convenience struct to define autodetectable CrOS EC subdevices Enric Balletbo i Serra
2019-08-12 7:25 ` Lee Jones
2019-07-22 13:32 ` [PATCH v5 10/11] mfd: cros_ec: Use mfd_add_hotplug_devices() helper Enric Balletbo i Serra
2019-08-12 7:24 ` Lee Jones
2019-08-21 17:50 ` Enric Balletbo i Serra
2019-07-22 13:32 ` [PATCH v5 11/11] arm/arm64: defconfig: Update configs to use the new CROS_EC options Enric Balletbo i Serra
2019-08-12 7:26 ` Lee Jones
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=20190812071639.GC4594@dell \
--to=lee.jones@linaro.org \
--cc=alexandre.belloni@bootlin.com \
--cc=andriy.shevchenko@linux.intel.com \
--cc=bleung@chromium.org \
--cc=broonie@kernel.org \
--cc=corbet@lwn.net \
--cc=cw00.choi@samsung.com \
--cc=dmitry.torokhov@gmail.com \
--cc=enric.balletbo@collabora.com \
--cc=gregkh@linuxfoundation.org \
--cc=groeck@chromium.org \
--cc=gwendal@chromium.org \
--cc=jic23@kernel.org \
--cc=kernel@collabora.com \
--cc=krzk@kernel.org \
--cc=lgirdwood@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mchehab@kernel.org \
--cc=myungjoo.ham@samsung.com \
--cc=narmstrong@baylibre.com \
--cc=sre@kernel.org \
--cc=thierry.reding@gmail.com \
--cc=will.deacon@arm.com \
/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.