Message ID | 20190620185259.142133-2-gwendal@chromium.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Support accelerometers for veyron_minnie | expand |
Hi, On Thu, Jun 20, 2019 at 11:53 AM Gwendal Grignou <gwendal@chromium.org> wrote: > > To allow cros_ec iio core library to be used with legacy device, add a > vector to rotate sensor data if necessary: legacy devices are not > reporting data in HTML5/Android sensor referential. > > TEST=On veyron minnie, check chrome detect tablet mode and rotate > screen in tablet mode. TEST= doesn't belong in an upstream patch. > Signed-off-by: Gwendal Grignou <gwendal@chromium.org> > --- > drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c | 5 ++++- > include/linux/iio/common/cros_ec_sensors_core.h | 1 + > 2 files changed, 5 insertions(+), 1 deletion(-) > > 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 719a0df5aeeb..1b2e7a8242ad 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 > @@ -66,8 +66,10 @@ int cros_ec_sensors_core_init(struct platform_device *pdev, > } > 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); > + } > return 0; Normally there's a blank line before the "return". There was before your patch. Why did you remove it? It'll make your diff cleaner if you keep it. Also, should you be basing your patch atop +Fabien's series? I notice you got a conflict when you picked this into the Chrome OS tree, but maybe you wouldn't have if you had based atop <https://lore.kernel.org/patchwork/patch/1090463/> AKA <https://lkml.kernel.org/r/ac3cdc104e59565d178dfa86f2727045224dc4da.1560848479.git.fabien.lahoudere@collabora.com> -Doug
On Thu, Jun 20, 2019 at 2:46 PM Doug Anderson <dianders@chromium.org> wrote: > > Hi, > > On Thu, Jun 20, 2019 at 11:53 AM Gwendal Grignou <gwendal@chromium.org> wrote: > > > > To allow cros_ec iio core library to be used with legacy device, add a > > vector to rotate sensor data if necessary: legacy devices are not > > reporting data in HTML5/Android sensor referential. > > > > TEST=On veyron minnie, check chrome detect tablet mode and rotate > > screen in tablet mode. > > TEST= doesn't belong in an upstream patch. > > > > Signed-off-by: Gwendal Grignou <gwendal@chromium.org> > > --- > > drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c | 5 ++++- > > include/linux/iio/common/cros_ec_sensors_core.h | 1 + > > 2 files changed, 5 insertions(+), 1 deletion(-) > > > > 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 719a0df5aeeb..1b2e7a8242ad 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 > > @@ -66,8 +66,10 @@ int cros_ec_sensors_core_init(struct platform_device *pdev, > > } > > 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); > > + } > > return 0; > > Normally there's a blank line before the "return". There was before > your patch. Why did you remove it? It'll make your diff cleaner if > you keep it. Will fix these issues in next patch. > > Also, should you be basing your patch atop +Fabien's series? I notice > you got a conflict when you picked this into the Chrome OS tree, but > maybe you wouldn't have if you had based atop > <https://lore.kernel.org/patchwork/patch/1090463/> AKA > <https://lkml.kernel.org/r/ac3cdc104e59565d178dfa86f2727045224dc4da.1560848479.git.fabien.lahoudere@collabora.com> I did not based on top of Fabien's patches because this change is orthogonal to Fabien's. Moreover a new set of patches is needed as the attributes added (min_freq, max_freq) do not match the current sysfs ABI. Gwendal. > > > -Doug
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 719a0df5aeeb..1b2e7a8242ad 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 @@ -66,8 +66,10 @@ int cros_ec_sensors_core_init(struct platform_device *pdev, } 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); + } return 0; } EXPORT_SYMBOL_GPL(cros_ec_sensors_core_init); @@ -254,6 +256,7 @@ static int cros_ec_sensors_read_data_unsafe(struct iio_dev *indio_dev, if (ret < 0) return ret; + *data *= st->sign[i]; data++; } diff --git a/include/linux/iio/common/cros_ec_sensors_core.h b/include/linux/iio/common/cros_ec_sensors_core.h index ce16445411ac..a1c85ad4df91 100644 --- a/include/linux/iio/common/cros_ec_sensors_core.h +++ b/include/linux/iio/common/cros_ec_sensors_core.h @@ -71,6 +71,7 @@ struct cros_ec_sensors_core_state { enum motionsensor_location loc; s16 calib[CROS_EC_SENSOR_MAX_AXIS]; + s8 sign[CROS_EC_SENSOR_MAX_AXIS]; u8 samples[CROS_EC_SAMPLE_SIZE];
To allow cros_ec iio core library to be used with legacy device, add a vector to rotate sensor data if necessary: legacy devices are not reporting data in HTML5/Android sensor referential. TEST=On veyron minnie, check chrome detect tablet mode and rotate screen in tablet mode. Signed-off-by: Gwendal Grignou <gwendal@chromium.org> --- drivers/iio/common/cros_ec_sensors/cros_ec_sensors_core.c | 5 ++++- include/linux/iio/common/cros_ec_sensors_core.h | 1 + 2 files changed, 5 insertions(+), 1 deletion(-)