From: Jonathan Cameron <jic23@kernel.org>
To: Alexandru Ardelean <alexandru.ardelean@analog.com>
Cc: <linux-kernel@vger.kernel.org>, <linux-iio@vger.kernel.org>,
<bleung@chromium.org>, <enric.balletbo@collabora.com>,
<groeck@chromium.org>, <gwendal@chromium.org>
Subject: Re: [PATCH 1/2] iio: cros_ec: do an early exit if not physical_device case
Date: Sun, 21 Feb 2021 16:29:05 +0000 [thread overview]
Message-ID: <20210221162905.65be88d0@archlinux> (raw)
In-Reply-To: <20201123144017.18311-1-alexandru.ardelean@analog.com>
On Mon, 23 Nov 2020 16:40:16 +0200
Alexandru Ardelean <alexandru.ardelean@analog.com> wrote:
> This whole code-block was put under one big if() condition/block.
> This change does an early return if the 'physical_device' boolean is false,
> thus unindenting the block by one level.
>
> No other functional change has been done.
>
> Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
@Gwendal, others This series from Alex has been outstanding for a while
but may well still apply.
Ideally looking for an ack.
Thanks,
Jonathan
> ---
> .../cros_ec_sensors/cros_ec_sensors_core.c | 161 +++++++++---------
> 1 file changed, 81 insertions(+), 80 deletions(-)
>
> diff --git a/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c b/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
> index 5c6c4e6fec9b..9470014936f2 100644
> --- a/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
> +++ b/drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c
> @@ -287,89 +287,90 @@ int cros_ec_sensors_core_init(struct platform_device *pdev,
>
> indio_dev->name = pdev->name;
>
> - if (physical_device) {
> - state->param.cmd = MOTIONSENSE_CMD_INFO;
> - state->param.info.sensor_num = sensor_platform->sensor_num;
> - ret = cros_ec_motion_send_host_cmd(state, 0);
> - if (ret) {
> - dev_warn(dev, "Can not access sensor info\n");
> + if (!physical_device)
> + return 0;
> +
> + state->param.cmd = MOTIONSENSE_CMD_INFO;
> + state->param.info.sensor_num = sensor_platform->sensor_num;
> + ret = cros_ec_motion_send_host_cmd(state, 0);
> + if (ret) {
> + dev_warn(dev, "Can not access sensor info\n");
> + return ret;
> + }
> + state->type = state->resp->info.type;
> + state->loc = state->resp->info.location;
> +
> + /* Set sign vector, only used for backward compatibility. */
> + memset(state->sign, 1, CROS_EC_SENSOR_MAX_AXIS);
> +
> + for (i = CROS_EC_SENSOR_X; i < CROS_EC_SENSOR_MAX_AXIS; i++)
> + state->calib[i].scale = MOTION_SENSE_DEFAULT_SCALE;
> +
> + /* 0 is a correct value used to stop the device */
> + if (state->msg->version < 3) {
> + get_default_min_max_freq(state->resp->info.type,
> + &frequencies[1],
> + &frequencies[2],
> + &state->fifo_max_event_count);
> + } else {
> + frequencies[1] = state->resp->info_3.min_frequency;
> + frequencies[2] = state->resp->info_3.max_frequency;
> + state->fifo_max_event_count =
> + state->resp->info_3.fifo_max_event_count;
> + }
> + for (i = 0; i < ARRAY_SIZE(frequencies); i++) {
> + state->frequencies[2 * i] = frequencies[i] / 1000;
> + state->frequencies[2 * i + 1] =
> + (frequencies[i] % 1000) * 1000;
> + }
> +
> + if (cros_ec_check_features(ec, EC_FEATURE_MOTION_SENSE_FIFO)) {
> + /*
> + * Create a software buffer, feed by the EC FIFO.
> + * We can not use trigger here, as events are generated
> + * as soon as sample_frequency is set.
> + */
> + struct iio_buffer *buffer;
> +
> + buffer = devm_iio_kfifo_allocate(dev);
> + if (!buffer)
> + return -ENOMEM;
> +
> + iio_device_attach_buffer(indio_dev, buffer);
> + indio_dev->modes = INDIO_BUFFER_SOFTWARE;
> +
> + ret = cros_ec_sensorhub_register_push_data(
> + sensor_hub, sensor_platform->sensor_num,
> + indio_dev, push_data);
> + if (ret)
> return ret;
> - }
> - state->type = state->resp->info.type;
> - state->loc = state->resp->info.location;
>
> - /* Set sign vector, only used for backward compatibility. */
> - memset(state->sign, 1, CROS_EC_SENSOR_MAX_AXIS);
> + ret = devm_add_action_or_reset(
> + dev, cros_ec_sensors_core_clean, pdev);
> + if (ret)
> + return ret;
>
> - for (i = CROS_EC_SENSOR_X; i < CROS_EC_SENSOR_MAX_AXIS; i++)
> - state->calib[i].scale = MOTION_SENSE_DEFAULT_SCALE;
> -
> - /* 0 is a correct value used to stop the device */
> - if (state->msg->version < 3) {
> - get_default_min_max_freq(state->resp->info.type,
> - &frequencies[1],
> - &frequencies[2],
> - &state->fifo_max_event_count);
> - } else {
> - frequencies[1] = state->resp->info_3.min_frequency;
> - frequencies[2] = state->resp->info_3.max_frequency;
> - state->fifo_max_event_count =
> - state->resp->info_3.fifo_max_event_count;
> - }
> - for (i = 0; i < ARRAY_SIZE(frequencies); i++) {
> - state->frequencies[2 * i] = frequencies[i] / 1000;
> - state->frequencies[2 * i + 1] =
> - (frequencies[i] % 1000) * 1000;
> - }
> -
> - if (cros_ec_check_features(ec, EC_FEATURE_MOTION_SENSE_FIFO)) {
> - /*
> - * Create a software buffer, feed by the EC FIFO.
> - * We can not use trigger here, as events are generated
> - * as soon as sample_frequency is set.
> - */
> - struct iio_buffer *buffer;
> -
> - buffer = devm_iio_kfifo_allocate(dev);
> - if (!buffer)
> - return -ENOMEM;
> -
> - iio_device_attach_buffer(indio_dev, buffer);
> - indio_dev->modes = INDIO_BUFFER_SOFTWARE;
> -
> - ret = cros_ec_sensorhub_register_push_data(
> - sensor_hub, sensor_platform->sensor_num,
> - indio_dev, push_data);
> - if (ret)
> - return ret;
> -
> - ret = devm_add_action_or_reset(
> - dev, cros_ec_sensors_core_clean, pdev);
> - if (ret)
> - return ret;
> -
> - /* Timestamp coming from FIFO are in ns since boot. */
> - ret = iio_device_set_clock(indio_dev, CLOCK_BOOTTIME);
> - if (ret)
> - return ret;
> - } else {
> - const struct attribute **fifo_attrs;
> -
> - if (has_hw_fifo)
> - fifo_attrs = cros_ec_sensor_fifo_attributes;
> - else
> - fifo_attrs = NULL;
> -
> - /*
> - * The only way to get samples in buffer is to set a
> - * software trigger (systrig, hrtimer).
> - */
> - ret = devm_iio_triggered_buffer_setup_ext(
> - dev, indio_dev, NULL, trigger_capture,
> - NULL, fifo_attrs);
> - if (ret)
> - return ret;
> - }
> + /* Timestamp coming from FIFO are in ns since boot. */
> + ret = iio_device_set_clock(indio_dev, CLOCK_BOOTTIME);
> + if (ret)
> + return ret;
> + } else {
> + const struct attribute **fifo_attrs;
> +
> + if (has_hw_fifo)
> + fifo_attrs = cros_ec_sensor_fifo_attributes;
> + else
> + fifo_attrs = NULL;
> +
> + /*
> + * The only way to get samples in buffer is to set a
> + * software trigger (systrig, hrtimer).
> + */
> + ret = devm_iio_triggered_buffer_setup_ext(
> + dev, indio_dev, NULL, trigger_capture,
> + NULL, fifo_attrs);
> + if (ret)
> + return ret;
> }
>
> return 0;
next prev parent reply other threads:[~2021-02-21 16:30 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-23 14:40 [PATCH 1/2] iio: cros_ec: do an early exit if not physical_device case Alexandru Ardelean
2020-11-23 14:40 ` [PATCH 2/2] iio: cros_ec: un-indent block that configures motion sensor fifo Alexandru Ardelean
2021-02-21 16:29 ` Jonathan Cameron [this message]
2021-03-02 10:46 ` [PATCH 1/2] iio: cros_ec: do an early exit if not physical_device case Enric Balletbo i Serra
2021-03-07 11:59 ` Jonathan Cameron
2021-03-07 18:45 ` Alexandru Ardelean
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=20210221162905.65be88d0@archlinux \
--to=jic23@kernel.org \
--cc=alexandru.ardelean@analog.com \
--cc=bleung@chromium.org \
--cc=enric.balletbo@collabora.com \
--cc=groeck@chromium.org \
--cc=gwendal@chromium.org \
--cc=linux-iio@vger.kernel.org \
--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 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.