* [PATCH v2 0/2] chrome: Remove Custom ABI |location| attribute
@ 2022-04-27 19:08 Gwendal Grignou
2022-04-27 19:08 ` [PATCH v2 1/2] iio: ABI: Add a new location label Gwendal Grignou
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Gwendal Grignou @ 2022-04-27 19:08 UTC (permalink / raw)
To: jic23; +Cc: bleung, linux-iio, Gwendal Grignou
Instead of using the custom |location| attribute, use the |label| attribute
introduced in kernel 5.8.
A new location is required for sensors located in a camera subassembly that
swivels.
---
changes in v2:
* Add "accel-camera" define.
* remove |location| attribute completely.
Gwendal Grignou (2):
iio: ABI: Add a new location label
iio: common: cros_ec_sensors: Add label attribute
Documentation/ABI/testing/sysfs-bus-iio | 5 ++++
drivers/iio/accel/cros_ec_accel_legacy.c | 2 +-
.../cros_ec_sensors/cros_ec_sensors_core.c | 30 ++++++-------------
drivers/iio/light/cros_ec_light_prox.c | 2 --
drivers/iio/pressure/cros_ec_baro.c | 2 --
.../linux/iio/common/cros_ec_sensors_core.h | 2 --
6 files changed, 15 insertions(+), 28 deletions(-)
--
2.36.0.464.gb9c8b46e94-goog
^ permalink raw reply [flat|nested] 5+ messages in thread* [PATCH v2 1/2] iio: ABI: Add a new location label 2022-04-27 19:08 [PATCH v2 0/2] chrome: Remove Custom ABI |location| attribute Gwendal Grignou @ 2022-04-27 19:08 ` Gwendal Grignou 2022-04-27 19:08 ` [PATCH v2 2/2] iio: common: cros_ec_sensors: Add label attribute Gwendal Grignou 2022-04-28 8:31 ` [PATCH v2 0/2] chrome: Remove Custom ABI |location| attribute Jonathan Cameron 2 siblings, 0 replies; 5+ messages in thread From: Gwendal Grignou @ 2022-04-27 19:08 UTC (permalink / raw) To: jic23; +Cc: bleung, linux-iio, Gwendal Grignou Add "accel-camera" when an IMU is location near the camera in a swivel sub-assembly. These IMU are used for AR applications. Signed-off-by: Gwendal Grignou <gwendal@chromium.org> --- changes in v2: * New, add "accel-camera" define. Documentation/ABI/testing/sysfs-bus-iio | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Documentation/ABI/testing/sysfs-bus-iio b/Documentation/ABI/testing/sysfs-bus-iio index d4ccc68fdcf05..3e00d7f7ee22b 100644 --- a/Documentation/ABI/testing/sysfs-bus-iio +++ b/Documentation/ABI/testing/sysfs-bus-iio @@ -79,6 +79,11 @@ Description: * "accel-base" * "accel-display" + For devices where an accelerometer is housed in the swivel camera subassembly + (for AR application), the following standardized label is used: + + * "accel-camera" + What: /sys/bus/iio/devices/iio:deviceX/current_timestamp_clock KernelVersion: 4.5 Contact: linux-iio@vger.kernel.org -- 2.36.0.464.gb9c8b46e94-goog ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v2 2/2] iio: common: cros_ec_sensors: Add label attribute 2022-04-27 19:08 [PATCH v2 0/2] chrome: Remove Custom ABI |location| attribute Gwendal Grignou 2022-04-27 19:08 ` [PATCH v2 1/2] iio: ABI: Add a new location label Gwendal Grignou @ 2022-04-27 19:08 ` Gwendal Grignou 2022-04-28 8:31 ` [PATCH v2 0/2] chrome: Remove Custom ABI |location| attribute Jonathan Cameron 2 siblings, 0 replies; 5+ messages in thread From: Gwendal Grignou @ 2022-04-27 19:08 UTC (permalink / raw) To: jic23; +Cc: bleung, linux-iio, Gwendal Grignou When sensor location is known, populate iio sysfs "label" attribute: * "accel-base" : the sensor is in the base of the convertible (2-1) device. * "accel-display" : the sensor is in the lid/display plane of the device. * "accel-camera" : the sensor is in the swivel camera subassembly. The non-standard |location| attribute is removed, the field |loc| in cros_ec_sensors_core_state is removed. It apply to standalone accelerometer as well as IMU (accelerometer + gyroscope) and sensors where the location is known (light). Signed-off-by: Gwendal Grignou <gwendal@chromium.org> --- changes in v2: * Use "accel-camera" define. * remove |location| attribute completely. * remove ->loc field, and duplication of setting ->type field. drivers/iio/accel/cros_ec_accel_legacy.c | 2 +- .../cros_ec_sensors/cros_ec_sensors_core.c | 30 ++++++------------- drivers/iio/light/cros_ec_light_prox.c | 2 -- drivers/iio/pressure/cros_ec_baro.c | 2 -- .../linux/iio/common/cros_ec_sensors_core.h | 2 -- 5 files changed, 10 insertions(+), 28 deletions(-) diff --git a/drivers/iio/accel/cros_ec_accel_legacy.c b/drivers/iio/accel/cros_ec_accel_legacy.c index b6f3471b62dcf..1c0171f26e99e 100644 --- a/drivers/iio/accel/cros_ec_accel_legacy.c +++ b/drivers/iio/accel/cros_ec_accel_legacy.c @@ -230,7 +230,7 @@ static int cros_ec_accel_legacy_probe(struct platform_device *pdev) indio_dev->channels = cros_ec_accel_legacy_channels; indio_dev->num_channels = ARRAY_SIZE(cros_ec_accel_legacy_channels); /* The lid sensor needs to be presented inverted. */ - if (state->loc == MOTIONSENSE_LOC_LID) { + if (!strcmp(indio_dev->label, "accel-display")) { state->sign[CROS_EC_SENSOR_X] = -1; state->sign[CROS_EC_SENSOR_Z] = -1; } 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 5976aca48e3bd..e5ccedef13a80 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 @@ -29,12 +29,6 @@ */ #define CROS_EC_FIFO_SIZE (2048 * 2 / 3) -static char *cros_ec_loc[] = { - [MOTIONSENSE_LOC_BASE] = "base", - [MOTIONSENSE_LOC_LID] = "lid", - [MOTIONSENSE_LOC_MAX] = "unknown", -}; - static int cros_ec_get_host_cmd_version_mask(struct cros_ec_device *ec_dev, u16 cmd_offset, u16 cmd, u32 *mask) { @@ -287,6 +281,8 @@ int cros_ec_sensors_core_init(struct platform_device *pdev, indio_dev->name = pdev->name; if (physical_device) { + enum motionsensor_location loc; + state->param.cmd = MOTIONSENSE_CMD_INFO; state->param.info.sensor_num = sensor_platform->sensor_num; ret = cros_ec_motion_send_host_cmd(state, 0); @@ -295,7 +291,13 @@ int cros_ec_sensors_core_init(struct platform_device *pdev, return ret; } state->type = state->resp->info.type; - state->loc = state->resp->info.location; + loc = state->resp->info.location; + if (loc == MOTIONSENSE_LOC_BASE) + indio_dev->label = "accel-base"; + else if (loc == MOTIONSENSE_LOC_LID) + indio_dev->label = "accel-display"; + else if (loc == MOTIONSENSE_LOC_CAMERA) + indio_dev->label = "accel-camera"; /* Set sign vector, only used for backward compatibility. */ memset(state->sign, 1, CROS_EC_SENSOR_MAX_AXIS); @@ -442,15 +444,6 @@ static ssize_t cros_ec_sensors_id(struct iio_dev *indio_dev, return snprintf(buf, PAGE_SIZE, "%d\n", st->param.info.sensor_num); } -static ssize_t cros_ec_sensors_loc(struct iio_dev *indio_dev, - uintptr_t private, const struct iio_chan_spec *chan, - char *buf) -{ - struct cros_ec_sensors_core_state *st = iio_priv(indio_dev); - - return snprintf(buf, PAGE_SIZE, "%s\n", cros_ec_loc[st->loc]); -} - const struct iio_chan_spec_ext_info cros_ec_sensors_ext_info[] = { { .name = "calibrate", @@ -462,11 +455,6 @@ const struct iio_chan_spec_ext_info cros_ec_sensors_ext_info[] = { .shared = IIO_SHARED_BY_ALL, .read = cros_ec_sensors_id }, - { - .name = "location", - .shared = IIO_SHARED_BY_ALL, - .read = cros_ec_sensors_loc - }, { }, }; EXPORT_SYMBOL_GPL(cros_ec_sensors_ext_info); diff --git a/drivers/iio/light/cros_ec_light_prox.c b/drivers/iio/light/cros_ec_light_prox.c index de472f23d1cba..a00a8b3b86cfa 100644 --- a/drivers/iio/light/cros_ec_light_prox.c +++ b/drivers/iio/light/cros_ec_light_prox.c @@ -188,8 +188,6 @@ static int cros_ec_light_prox_probe(struct platform_device *pdev) indio_dev->info = &cros_ec_light_prox_info; state = iio_priv(indio_dev); - state->core.type = state->core.resp->info.type; - state->core.loc = state->core.resp->info.location; channel = state->channels; /* Common part */ diff --git a/drivers/iio/pressure/cros_ec_baro.c b/drivers/iio/pressure/cros_ec_baro.c index 2f882e1094232..1d9d34ae3c0a8 100644 --- a/drivers/iio/pressure/cros_ec_baro.c +++ b/drivers/iio/pressure/cros_ec_baro.c @@ -145,8 +145,6 @@ static int cros_ec_baro_probe(struct platform_device *pdev) indio_dev->info = &cros_ec_baro_info; state = iio_priv(indio_dev); - state->core.type = state->core.resp->info.type; - state->core.loc = state->core.resp->info.location; channel = state->channels; /* Common part */ channel->info_mask_separate = BIT(IIO_CHAN_INFO_RAW); diff --git a/include/linux/iio/common/cros_ec_sensors_core.h b/include/linux/iio/common/cros_ec_sensors_core.h index c582e1a142320..a8259c8822f56 100644 --- a/include/linux/iio/common/cros_ec_sensors_core.h +++ b/include/linux/iio/common/cros_ec_sensors_core.h @@ -41,7 +41,6 @@ typedef irqreturn_t (*cros_ec_sensors_capture_t)(int irq, void *p); * @param: motion sensor parameters structure * @resp: motion sensor response structure * @type: type of motion sensor - * @loc: location where the motion sensor is placed * @range_updated: True if the range of the sensor has been * updated. * @curr_range: If updated, the current range value. @@ -67,7 +66,6 @@ struct cros_ec_sensors_core_state { struct ec_response_motion_sense *resp; enum motionsensor_type type; - enum motionsensor_location loc; bool range_updated; int curr_range; -- 2.36.0.464.gb9c8b46e94-goog ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v2 0/2] chrome: Remove Custom ABI |location| attribute 2022-04-27 19:08 [PATCH v2 0/2] chrome: Remove Custom ABI |location| attribute Gwendal Grignou 2022-04-27 19:08 ` [PATCH v2 1/2] iio: ABI: Add a new location label Gwendal Grignou 2022-04-27 19:08 ` [PATCH v2 2/2] iio: common: cros_ec_sensors: Add label attribute Gwendal Grignou @ 2022-04-28 8:31 ` Jonathan Cameron 2022-05-08 18:05 ` Jonathan Cameron 2 siblings, 1 reply; 5+ messages in thread From: Jonathan Cameron @ 2022-04-28 8:31 UTC (permalink / raw) To: Gwendal Grignou; +Cc: jic23, bleung, linux-iio On Wed, 27 Apr 2022 12:08:02 -0700 Gwendal Grignou <gwendal@chromium.org> wrote: > Instead of using the custom |location| attribute, use the |label| attribute > introduced in kernel 5.8. > A new location is required for sensors located in a camera subassembly that > swivels. > I'm assuming this ABI change is fine because you can change the software stack as well? Is this likely to break anyone relying on the old location attribute? Jonathan > --- > changes in v2: > * Add "accel-camera" define. > * remove |location| attribute completely. > > Gwendal Grignou (2): > iio: ABI: Add a new location label > iio: common: cros_ec_sensors: Add label attribute > > Documentation/ABI/testing/sysfs-bus-iio | 5 ++++ > drivers/iio/accel/cros_ec_accel_legacy.c | 2 +- > .../cros_ec_sensors/cros_ec_sensors_core.c | 30 ++++++------------- > drivers/iio/light/cros_ec_light_prox.c | 2 -- > drivers/iio/pressure/cros_ec_baro.c | 2 -- > .../linux/iio/common/cros_ec_sensors_core.h | 2 -- > 6 files changed, 15 insertions(+), 28 deletions(-) > ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH v2 0/2] chrome: Remove Custom ABI |location| attribute 2022-04-28 8:31 ` [PATCH v2 0/2] chrome: Remove Custom ABI |location| attribute Jonathan Cameron @ 2022-05-08 18:05 ` Jonathan Cameron 0 siblings, 0 replies; 5+ messages in thread From: Jonathan Cameron @ 2022-05-08 18:05 UTC (permalink / raw) To: Jonathan Cameron; +Cc: Gwendal Grignou, bleung, linux-iio On Thu, 28 Apr 2022 09:31:30 +0100 Jonathan Cameron <Jonathan.Cameron@Huawei.com> wrote: > On Wed, 27 Apr 2022 12:08:02 -0700 > Gwendal Grignou <gwendal@chromium.org> wrote: > > > Instead of using the custom |location| attribute, use the |label| attribute > > introduced in kernel 5.8. > > A new location is required for sensors located in a camera subassembly that > > swivels. > > > > I'm assuming this ABI change is fine because you can change the software stack > as well? > > Is this likely to break anyone relying on the old location attribute? > > Jonathan > Reply was off list for some reason. Anyhow, upshot is that this is fine so applied to the togreg branch of iio.git and pushed out as testing for 0-day to poke at it. Thanks, Jonathan > > --- > > changes in v2: > > * Add "accel-camera" define. > > * remove |location| attribute completely. > > > > Gwendal Grignou (2): > > iio: ABI: Add a new location label > > iio: common: cros_ec_sensors: Add label attribute > > > > Documentation/ABI/testing/sysfs-bus-iio | 5 ++++ > > drivers/iio/accel/cros_ec_accel_legacy.c | 2 +- > > .../cros_ec_sensors/cros_ec_sensors_core.c | 30 ++++++------------- > > drivers/iio/light/cros_ec_light_prox.c | 2 -- > > drivers/iio/pressure/cros_ec_baro.c | 2 -- > > .../linux/iio/common/cros_ec_sensors_core.h | 2 -- > > 6 files changed, 15 insertions(+), 28 deletions(-) > > > ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2022-05-08 19:17 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2022-04-27 19:08 [PATCH v2 0/2] chrome: Remove Custom ABI |location| attribute Gwendal Grignou 2022-04-27 19:08 ` [PATCH v2 1/2] iio: ABI: Add a new location label Gwendal Grignou 2022-04-27 19:08 ` [PATCH v2 2/2] iio: common: cros_ec_sensors: Add label attribute Gwendal Grignou 2022-04-28 8:31 ` [PATCH v2 0/2] chrome: Remove Custom ABI |location| attribute Jonathan Cameron 2022-05-08 18:05 ` Jonathan Cameron
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.