From 372ccb3cf248c5486ccee958e2250b7169658700 Mon Sep 17 00:00:00 2001 From: Dylan Van Assche Date: Sat, 8 Jun 2024 11:39:05 +0200 Subject: [PATCH] temp/iio-sensor-proxy: upgrade SSC patches (MR 5215) Include latest fixes for SSC support and require building against libssc 0.1.6 or higher. [ci:skip-build]: already built successfully in CI --- ...01-iio-sensor-proxy-depend-on-libssc.patch | 203 ++------------ ...oximity-support-SSC-proximity-sensor.patch | 249 +++++++++++------- .../0003-light-support-SSC-light-sensor.patch | 58 ++-- ...ter-support-SSC-accelerometer-sensor.patch | 87 ++++-- ...5-compass-support-SSC-compass-sensor.patch | 65 +++-- ...accelerometer-apply-accel-attributes.patch | 81 ------ ... => 0006-data-add-libssc-udev-rules.patch} | 27 +- .../0007-CI-add-libssc-build.patch | 47 ++++ ...nsor-proxy.service.in-add-AF_QIPCRTR.patch | 29 ++ temp/iio-sensor-proxy/APKBUILD | 28 +- 10 files changed, 419 insertions(+), 455 deletions(-) delete mode 100644 temp/iio-sensor-proxy/0006-accelerometer-apply-accel-attributes.patch rename temp/iio-sensor-proxy/{0007-data-add-libssc-udev-rules.patch => 0006-data-add-libssc-udev-rules.patch} (59%) create mode 100644 temp/iio-sensor-proxy/0007-CI-add-libssc-build.patch create mode 100644 temp/iio-sensor-proxy/0008-data-iio-sensor-proxy.service.in-add-AF_QIPCRTR.patch diff --git a/temp/iio-sensor-proxy/0001-iio-sensor-proxy-depend-on-libssc.patch b/temp/iio-sensor-proxy/0001-iio-sensor-proxy-depend-on-libssc.patch index 6085bd957..fc02dff62 100644 --- a/temp/iio-sensor-proxy/0001-iio-sensor-proxy-depend-on-libssc.patch +++ b/temp/iio-sensor-proxy/0001-iio-sensor-proxy-depend-on-libssc.patch @@ -1,34 +1,21 @@ -From 4fd3611f93b0a35e8311c6a6e3fe03545154d8bb Mon Sep 17 00:00:00 2001 +From e651b07633f5a9a3bd499a2e3aaf2f8b7e4f8cef Mon Sep 17 00:00:00 2001 From: Dylan Van Assche Date: Sun, 23 Apr 2023 16:54:10 +0200 -Subject: [PATCH 1/7] iio-sensor-proxy: depend on libssc +Subject: [PATCH 1/8] iio-sensor-proxy: depend on libssc +Add libssc library to iio-sensor-proxy and discover FastRPC +devices as possible subsystems for sensors. The presence of +FastRPC devices indicate the support for Qualcomm Snapdragon Sensor +Core (SSC). --- - data/80-iio-sensor-proxy.rules | 2 + - meson.build | 3 + - meson_options.txt | 4 ++ - src/drivers.h | 7 ++ - src/drv-ssc-proximity.c | 121 +++++++++++++++++++++++++++++++++ - src/iio-sensor-proxy.c | 21 +++++- - src/meson.build | 7 ++ - 7 files changed, 164 insertions(+), 1 deletion(-) - create mode 100644 src/drv-ssc-proximity.c + meson.build | 3 +++ + meson_options.txt | 4 ++++ + src/iio-sensor-proxy.c | 15 ++++++++++++++- + src/meson.build | 7 +++++++ + 4 files changed, 28 insertions(+), 1 deletion(-) -diff --git a/data/80-iio-sensor-proxy.rules b/data/80-iio-sensor-proxy.rules -index 85d93f9..bd917b2 100644 ---- a/data/80-iio-sensor-proxy.rules -+++ b/data/80-iio-sensor-proxy.rules -@@ -16,6 +16,8 @@ SUBSYSTEM=="iio", TEST=="scan_elements/in_intensity_both_en", ENV{IIO_SENSOR_PRO - SUBSYSTEM=="iio", TEST=="in_proximity_raw", ENV{IIO_SENSOR_PROXY_TYPE}+="iio-poll-proximity" - SUBSYSTEM=="input", ENV{ID_INPUT_ACCELEROMETER}=="1", ENV{IIO_SENSOR_PROXY_TYPE}+="input-accel" - -+SUBSYSTEM=="misc", KERNEL=="fastrpc-sdsp", ENV{IIO_SENSOR_PROXY_TYPE}+="ssc-accel" -+ - ENV{IIO_SENSOR_PROXY_TYPE}=="", GOTO="iio_sensor_proxy_end" - - # We got here because we have a sensor type, which means we need the service diff --git a/meson.build b/meson.build -index b45493f..bef4209 100644 +index 767e539..fe97a27 100644 --- a/meson.build +++ b/meson.build @@ -46,6 +46,9 @@ gio_dep = dependency('gio-2.0') @@ -56,167 +43,11 @@ index de5fbf4..2b60f82 100644 option('gtk_doc', type: 'boolean', value: false, -diff --git a/src/drivers.h b/src/drivers.h -index b760faa..895cb55 100644 ---- a/src/drivers.h -+++ b/src/drivers.h -@@ -160,4 +160,11 @@ extern SensorDriver iio_buffer_light; - extern SensorDriver iio_buffer_compass; - extern SensorDriver iio_poll_proximity; - -+#ifdef LIBSSC -+extern SensorDriver ssc_accel; -+extern SensorDriver ssc_light; -+extern SensorDriver ssc_compass; -+extern SensorDriver ssc_proximity; -+#endif -+ - gboolean drv_check_udev_sensor_type (GUdevDevice *device, const gchar *match, const char *name); -diff --git a/src/drv-ssc-proximity.c b/src/drv-ssc-proximity.c -new file mode 100644 -index 0000000..5e06967 ---- /dev/null -+++ b/src/drv-ssc-proximity.c -@@ -0,0 +1,121 @@ -+/* -+ * Copyright (c) 2023 Dylan Van Assche -+ * -+ * This program is free software; you can redistribute it and/or modify it -+ * under the terms of the GNU General Public License version 3 as published by -+ * the Free Software Foundation. -+ */ -+ -+#include "drivers.h" -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#define QRTR_DEVICE_URI "qrtr://9" -+#define UDEV_DEVICE_NAME "fastrpc-sdsp" -+#define PROXIMITY_NEAR_LEVEL "PROXIMITY_NEAR_LEVEL" -+ -+typedef struct DrvData { -+ SSCSensorProximity *sensor; -+ guint measurement_id; -+} DrvData; -+ -+static gboolean -+ssc_proximity_discover (GUdevDevice *device) -+{ -+ g_autoptr (SSCSensorProximity) sensor = NULL; -+ g_autoptr (GFile) file = g_file_new_for_uri (QRTR_DEVICE_URI); -+ g_autoptr (GError) error = NULL; -+ -+ g_debug ("SUBSYSTEM: %s | NAME: %s", g_udev_device_get_subsystem (device), g_udev_device_get_name (device)); -+ if (g_strcmp0 (g_udev_device_get_name (device), UDEV_DEVICE_NAME)) -+ return FALSE; -+ -+ sensor = ssc_sensor_proximity_new_sync (file, NULL, &error); -+ -+ return sensor ? TRUE : FALSE; -+} -+ -+static void -+measurement_cb (SSCSensorProximity *sensor, gboolean near, gpointer user_data) -+{ -+ SensorDevice *sensor_device = user_data; -+ ProximityReadings readings; -+ -+ readings.is_near = near ? PROXIMITY_NEAR_TRUE : PROXIMITY_NEAR_FALSE; -+ g_debug ("SSC Proximity sensor '%s': near: %s", sensor_device->name, readings.is_near ? "NEAR" : "FAR"); -+ sensor_device->callback_func (sensor_device, (gpointer) &readings, sensor_device->user_data); -+} -+ -+static SensorDevice * -+ssc_proximity_open (GUdevDevice *device) -+{ -+ SensorDevice *sensor_device; -+ DrvData *drv_data; -+ g_autoptr (GFile) file = g_file_new_for_uri (QRTR_DEVICE_URI); -+ g_autoptr (GError) error = NULL; -+ -+ sensor_device = g_new0 (SensorDevice, 1); -+ sensor_device->priv = g_new0 (DrvData, 1); -+ drv_data = (DrvData *) sensor_device->priv; -+ -+ /* Create sensor */ -+ drv_data->sensor = ssc_sensor_proximity_new_sync (file, NULL, &error); -+ if (!drv_data->sensor) { -+ g_warning ("Creating SSC proximity sensor failed: %s", error ? error->message : "UNKNOWN"); -+ return NULL; -+ } -+ g_object_get (drv_data->sensor, -+ SSC_SENSOR_NAME, &sensor_device->name, -+ NULL); -+ -+ /* Start listening for measurements */ -+ drv_data->measurement_id = g_signal_connect (drv_data->sensor, -+ "measurement", -+ G_CALLBACK (measurement_cb), -+ sensor_device); -+ -+ /* Enable sensor */ -+ if (!ssc_sensor_proximity_open_sync (drv_data->sensor, NULL, &error)) { -+ g_warning ("Opening SSC proximity sensor failed: %s", error ? error->message : "UNKNOWN"); -+ g_object_unref (sensor_device); -+ return NULL; -+ } -+ -+ return sensor_device; -+} -+ -+static void -+ssc_proximity_close (SensorDevice *sensor_device) -+{ -+ g_autoptr (GError) error = NULL; -+ DrvData *drv_data = (DrvData *) sensor_device->priv; -+ -+ /* Stop listening for measurements */ -+ g_warn_if_fail (drv_data->measurement_id > 0); -+ g_signal_handler_disconnect (drv_data->sensor, drv_data->measurement_id); -+ -+ /* Disable sensor */ -+ if (!ssc_sensor_proximity_close_sync (drv_data->sensor, NULL, &error)) -+ g_warning ("Closing SSC proximity sensor failed: %s", error ? error->message : "UNKNOWN"); -+ -+ g_clear_object (&drv_data->sensor); -+ g_clear_pointer (&sensor_device->priv, g_free); -+ g_free (sensor_device); -+} -+ -+SensorDriver ssc_proximity = { -+ .driver_name = "SSC proximity sensor", -+ .type = DRIVER_TYPE_PROXIMITY, -+ -+ .discover = ssc_proximity_discover, -+ .open = ssc_proximity_open, -+ .close = ssc_proximity_close, -+}; diff --git a/src/iio-sensor-proxy.c b/src/iio-sensor-proxy.c -index 836e742..17debbb 100644 +index 1884839..220dc71 100644 --- a/src/iio-sensor-proxy.c +++ b/src/iio-sensor-proxy.c -@@ -73,6 +73,12 @@ static const SensorDriver * const drivers[] = { - &fake_light, - &iio_buffer_compass, - &iio_poll_proximity, -+#ifdef HAS_LIBSSC -+ &ssc_accel, -+ &ssc_light, -+ &ssc_compass, -+ &ssc_proximity, -+#endif - }; - - static ReadingsUpdateFunc driver_type_to_callback_func (DriverType type); -@@ -122,6 +128,11 @@ find_sensors (GUdevClient *client, +@@ -124,6 +124,11 @@ find_sensors (GUdevClient *client, platform = g_udev_client_query_by_subsystem (client, "platform"); devices = g_list_concat (devices, input); devices = g_list_concat (devices, platform); @@ -228,7 +59,7 @@ index 836e742..17debbb 100644 /* Find the devices */ for (l = devices; l != NULL; l = l->next) { -@@ -684,7 +695,15 @@ name_acquired_handler (GDBusConnection *connection, +@@ -686,7 +691,15 @@ name_acquired_handler (GDBusConnection *connection, gpointer user_data) { SensorData *data = user_data; @@ -246,7 +77,7 @@ index 836e742..17debbb 100644 data->client = g_udev_client_new (subsystems); diff --git a/src/meson.build b/src/meson.build -index 8ddd37b..90d550d 100644 +index 4b822fc..3e503de 100644 --- a/src/meson.build +++ b/src/meson.build @@ -1,5 +1,8 @@ @@ -270,5 +101,5 @@ index 8ddd37b..90d550d 100644 'iio-sensor-proxy-resources', 'iio-sensor-proxy.gresource.xml', c_name: 'iio_sensor_proxy', -- -2.40.0 +2.45.1 diff --git a/temp/iio-sensor-proxy/0002-proximity-support-SSC-proximity-sensor.patch b/temp/iio-sensor-proxy/0002-proximity-support-SSC-proximity-sensor.patch index 106a1a76e..6a3201d5a 100644 --- a/temp/iio-sensor-proxy/0002-proximity-support-SSC-proximity-sensor.patch +++ b/temp/iio-sensor-proxy/0002-proximity-support-SSC-proximity-sensor.patch @@ -1,116 +1,189 @@ -From 0f9327f15d1d76bc6b7772929e302930d428f167 Mon Sep 17 00:00:00 2001 +From 27b5c9e0dba5601447b21816e8ee7063c6154268 Mon Sep 17 00:00:00 2001 From: Dylan Van Assche Date: Sun, 23 Apr 2023 17:54:46 +0200 -Subject: [PATCH 2/7] proximity: support SSC proximity sensor +Subject: [PATCH 2/8] proximity: support SSC proximity sensor +Add driver for the proximity sensor exposed by libssc. --- - src/drivers.h | 5 +---- - src/drv-ssc-proximity.c | 18 ++++-------------- - src/iio-sensor-proxy.c | 3 --- - src/meson.build | 1 + - 4 files changed, 6 insertions(+), 21 deletions(-) + src/drivers.h | 4 ++ + src/drv-ssc-proximity.c | 122 ++++++++++++++++++++++++++++++++++++++++ + src/iio-sensor-proxy.c | 3 + + src/meson.build | 6 ++ + 4 files changed, 135 insertions(+) + create mode 100644 src/drv-ssc-proximity.c diff --git a/src/drivers.h b/src/drivers.h -index 895cb55..5dcac8a 100644 +index 33ad667..464e801 100644 --- a/src/drivers.h +++ b/src/drivers.h -@@ -160,10 +160,7 @@ extern SensorDriver iio_buffer_light; - extern SensorDriver iio_buffer_compass; +@@ -161,4 +161,8 @@ extern SensorDriver iio_buffer_compass; extern SensorDriver iio_poll_proximity; + extern SensorDriver input_proximity; --#ifdef LIBSSC --extern SensorDriver ssc_accel; --extern SensorDriver ssc_light; --extern SensorDriver ssc_compass; +#ifdef HAS_LIBSSC - extern SensorDriver ssc_proximity; - #endif - ++extern SensorDriver ssc_proximity; ++#endif ++ + gboolean drv_check_udev_sensor_type (GUdevDevice *device, const gchar *match, const char *name); diff --git a/src/drv-ssc-proximity.c b/src/drv-ssc-proximity.c -index 5e06967..c87a796 100644 ---- a/src/drv-ssc-proximity.c +new file mode 100644 +index 0000000..0ec8b08 +--- /dev/null +++ b/src/drv-ssc-proximity.c -@@ -18,8 +18,6 @@ - #include - #include - --#define QRTR_DEVICE_URI "qrtr://9" --#define UDEV_DEVICE_NAME "fastrpc-sdsp" - #define PROXIMITY_NEAR_LEVEL "PROXIMITY_NEAR_LEVEL" - - typedef struct DrvData { -@@ -30,17 +28,11 @@ typedef struct DrvData { - static gboolean - ssc_proximity_discover (GUdevDevice *device) - { -- g_autoptr (SSCSensorProximity) sensor = NULL; -- g_autoptr (GFile) file = g_file_new_for_uri (QRTR_DEVICE_URI); -- g_autoptr (GError) error = NULL; -- -- g_debug ("SUBSYSTEM: %s | NAME: %s", g_udev_device_get_subsystem (device), g_udev_device_get_name (device)); -- if (g_strcmp0 (g_udev_device_get_name (device), UDEV_DEVICE_NAME)) +@@ -0,0 +1,122 @@ ++/* ++ * Copyright (c) 2023 Dylan Van Assche ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 3 as published by ++ * the Free Software Foundation. ++ */ ++ ++#include "drivers.h" ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++typedef struct DrvData { ++ SSCSensorProximity *sensor; ++ guint measurement_id; ++} DrvData; ++ ++static gboolean ++ssc_proximity_discover (GUdevDevice *device) ++{ ++ SSCSensorProximity *sensor = NULL; ++ ++ /* Verify presence of FastRPC device */ + if (!drv_check_udev_sensor_type (device, "ssc-proximity", NULL)) - return FALSE; - -- sensor = ssc_sensor_proximity_new_sync (file, NULL, &error); -- -- return sensor ? TRUE : FALSE; ++ return FALSE; ++ ++ /* Open and close SSC proximity sensor for discovering */ ++ sensor = ssc_sensor_proximity_new_sync (NULL, NULL); ++ if (!sensor) ++ return FALSE; ++ ++ if (!ssc_sensor_proximity_close_sync (sensor, NULL, NULL)) ++ return FALSE; ++ ++ g_clear_object (&sensor); ++ + g_debug ("Found SSC proximity at %s", g_udev_device_get_sysfs_path (device)); + return TRUE; - } - - static void -@@ -50,7 +42,6 @@ measurement_cb (SSCSensorProximity *sensor, gboolean near, gpointer user_data) - ProximityReadings readings; - - readings.is_near = near ? PROXIMITY_NEAR_TRUE : PROXIMITY_NEAR_FALSE; -- g_debug ("SSC Proximity sensor '%s': near: %s", sensor_device->name, readings.is_near ? "NEAR" : "FAR"); - sensor_device->callback_func (sensor_device, (gpointer) &readings, sensor_device->user_data); - } - -@@ -59,7 +50,6 @@ ssc_proximity_open (GUdevDevice *device) - { - SensorDevice *sensor_device; - DrvData *drv_data; -- g_autoptr (GFile) file = g_file_new_for_uri (QRTR_DEVICE_URI); - g_autoptr (GError) error = NULL; - - sensor_device = g_new0 (SensorDevice, 1); -@@ -67,7 +57,7 @@ ssc_proximity_open (GUdevDevice *device) - drv_data = (DrvData *) sensor_device->priv; - - /* Create sensor */ -- drv_data->sensor = ssc_sensor_proximity_new_sync (file, NULL, &error); ++} ++ ++static void ++measurement_cb (SSCSensorProximity *sensor, gboolean near, gpointer user_data) ++{ ++ SensorDevice *sensor_device = user_data; ++ ProximityReadings readings; ++ ++ readings.is_near = near ? PROXIMITY_NEAR_TRUE : PROXIMITY_NEAR_FALSE; ++ sensor_device->callback_func (sensor_device, (gpointer) &readings, sensor_device->user_data); ++} ++ ++static SensorDevice * ++ssc_proximity_open (GUdevDevice *device) ++{ ++ SensorDevice *sensor_device; ++ DrvData *drv_data; ++ g_autoptr (GError) error = NULL; ++ ++ sensor_device = g_new0 (SensorDevice, 1); ++ sensor_device->priv = g_new0 (DrvData, 1); ++ drv_data = (DrvData *) sensor_device->priv; ++ ++ /* Create sensor */ + drv_data->sensor = ssc_sensor_proximity_new_sync (NULL, &error); - if (!drv_data->sensor) { - g_warning ("Creating SSC proximity sensor failed: %s", error ? error->message : "UNKNOWN"); - return NULL; ++ if (!drv_data->sensor) { ++ g_warning ("Creating SSC proximity sensor failed: %s", error ? error->message : "UNKNOWN"); ++ return NULL; ++ } ++ g_object_get (drv_data->sensor, ++ SSC_SENSOR_NAME, &sensor_device->name, ++ NULL); ++ ++ /* Start listening for measurements */ ++ drv_data->measurement_id = g_signal_connect (drv_data->sensor, ++ "measurement", ++ G_CALLBACK (measurement_cb), ++ sensor_device); ++ ++ /* Enable sensor */ ++ if (!ssc_sensor_proximity_open_sync (drv_data->sensor, NULL, &error)) { ++ g_warning ("Opening SSC proximity sensor failed: %s", error ? error->message : "UNKNOWN"); ++ g_object_unref (sensor_device); ++ return NULL; ++ } ++ ++ return sensor_device; ++} ++ ++static void ++ssc_proximity_close (SensorDevice *sensor_device) ++{ ++ g_autoptr (GError) error = NULL; ++ DrvData *drv_data = (DrvData *) sensor_device->priv; ++ ++ /* Stop listening for measurements */ ++ g_warn_if_fail (drv_data->measurement_id > 0); ++ g_signal_handler_disconnect (drv_data->sensor, drv_data->measurement_id); ++ ++ /* Disable sensor */ ++ if (!ssc_sensor_proximity_close_sync (drv_data->sensor, NULL, &error)) ++ g_warning ("Closing SSC proximity sensor failed: %s", error ? error->message : "UNKNOWN"); ++ ++ g_clear_object (&drv_data->sensor); ++ g_clear_pointer (&sensor_device->priv, g_free); ++ g_free (sensor_device); ++} ++ ++SensorDriver ssc_proximity = { ++ .driver_name = "SSC proximity sensor", ++ .type = DRIVER_TYPE_PROXIMITY, ++ ++ .discover = ssc_proximity_discover, ++ .open = ssc_proximity_open, ++ .close = ssc_proximity_close, ++}; diff --git a/src/iio-sensor-proxy.c b/src/iio-sensor-proxy.c -index 17debbb..dbd3f6e 100644 +index 220dc71..257c822 100644 --- a/src/iio-sensor-proxy.c +++ b/src/iio-sensor-proxy.c -@@ -74,9 +74,6 @@ static const SensorDriver * const drivers[] = { +@@ -75,6 +75,9 @@ static const SensorDriver * const drivers[] = { &iio_buffer_compass, &iio_poll_proximity, - #ifdef HAS_LIBSSC -- &ssc_accel, -- &ssc_light, -- &ssc_compass, - &ssc_proximity, - #endif + &input_proximity, ++#ifdef HAS_LIBSSC ++ &ssc_proximity, ++#endif }; + + static ReadingsUpdateFunc driver_type_to_callback_func (DriverType type); diff --git a/src/meson.build b/src/meson.build -index 90d550d..7019b1c 100644 +index 3e503de..9a74481 100644 --- a/src/meson.build +++ b/src/meson.build -@@ -35,6 +35,7 @@ sources = [ - 'drv-iio-buffer-light.c', - 'drv-iio-buffer-compass.c', - 'drv-iio-poll-proximity.c', -+ 'drv-ssc-proximity.c', - 'iio-buffer-utils.c', - 'accel-mount-matrix.c', - 'accel-scale.c', +@@ -45,6 +45,12 @@ sources = [ + config_h_files, + ] + ++if get_option('ssc-support') ++ sources = sources + [ ++ 'drv-ssc-proximity.c', ++ ] ++endif ++ + executable('iio-sensor-proxy', + sources, + dependencies: deps, -- -2.40.0 +2.45.1 diff --git a/temp/iio-sensor-proxy/0003-light-support-SSC-light-sensor.patch b/temp/iio-sensor-proxy/0003-light-support-SSC-light-sensor.patch index db476b8c1..65406cc45 100644 --- a/temp/iio-sensor-proxy/0003-light-support-SSC-light-sensor.patch +++ b/temp/iio-sensor-proxy/0003-light-support-SSC-light-sensor.patch @@ -1,21 +1,22 @@ -From 59f184ccecf212196c0d76b1cb705eab59c51826 Mon Sep 17 00:00:00 2001 +From cfd4f19473145c3adfba06e2e44c2e6e773f30cc Mon Sep 17 00:00:00 2001 From: Dylan Van Assche Date: Mon, 24 Apr 2023 16:56:20 +0200 -Subject: [PATCH 3/7] light: support SSC light sensor +Subject: [PATCH 3/8] light: support SSC light sensor +Add driver for the light sensor exposed by libssc. --- src/drivers.h | 1 + - src/drv-ssc-light.c | 112 +++++++++++++++++++++++++++++++++++++++++ + src/drv-ssc-light.c | 123 +++++++++++++++++++++++++++++++++++++++++ src/iio-sensor-proxy.c | 1 + src/meson.build | 1 + - 4 files changed, 115 insertions(+) + 4 files changed, 126 insertions(+) create mode 100644 src/drv-ssc-light.c diff --git a/src/drivers.h b/src/drivers.h -index 5dcac8a..a97528b 100644 +index 464e801..46df2fd 100644 --- a/src/drivers.h +++ b/src/drivers.h -@@ -162,6 +162,7 @@ extern SensorDriver iio_poll_proximity; +@@ -163,6 +163,7 @@ extern SensorDriver input_proximity; #ifdef HAS_LIBSSC extern SensorDriver ssc_proximity; @@ -25,10 +26,10 @@ index 5dcac8a..a97528b 100644 gboolean drv_check_udev_sensor_type (GUdevDevice *device, const gchar *match, const char *name); diff --git a/src/drv-ssc-light.c b/src/drv-ssc-light.c new file mode 100644 -index 0000000..689eca5 +index 0000000..e5ad8dd --- /dev/null +++ b/src/drv-ssc-light.c -@@ -0,0 +1,112 @@ +@@ -0,0 +1,123 @@ +/* + * Copyright (c) 2023 Dylan Van Assche + * @@ -49,8 +50,6 @@ index 0000000..689eca5 +#include +#include + -+#define UDEV_DEVICE_NAME "fastrpc-" -+ +typedef struct DrvData { + SSCSensorLight *sensor; + guint measurement_id; @@ -59,9 +58,22 @@ index 0000000..689eca5 +static gboolean +ssc_light_discover (GUdevDevice *device) +{ ++ SSCSensorLight *sensor; ++ ++ /* Verify presence of FastRPC device */ + if (!drv_check_udev_sensor_type (device, "ssc-light", NULL)) + return FALSE; + ++ /* Open and close SSC light sensor for discovering */ ++ sensor = ssc_sensor_light_new_sync (NULL, NULL); ++ if (!sensor) ++ return FALSE; ++ ++ if (!ssc_sensor_light_close_sync (sensor, NULL, NULL)) ++ return FALSE; ++ ++ g_clear_object (&sensor); ++ + g_debug ("Found SSC light at %s", g_udev_device_get_sysfs_path (device)); + return TRUE; +} @@ -142,11 +154,11 @@ index 0000000..689eca5 + .close = ssc_light_close, +}; diff --git a/src/iio-sensor-proxy.c b/src/iio-sensor-proxy.c -index dbd3f6e..f70e996 100644 +index 257c822..77a75ab 100644 --- a/src/iio-sensor-proxy.c +++ b/src/iio-sensor-proxy.c -@@ -75,6 +75,7 @@ static const SensorDriver * const drivers[] = { - &iio_poll_proximity, +@@ -77,6 +77,7 @@ static const SensorDriver * const drivers[] = { + &input_proximity, #ifdef HAS_LIBSSC &ssc_proximity, + &ssc_light, @@ -154,17 +166,17 @@ index dbd3f6e..f70e996 100644 }; diff --git a/src/meson.build b/src/meson.build -index 7019b1c..104143c 100644 +index 9a74481..2f3c1e6 100644 --- a/src/meson.build +++ b/src/meson.build -@@ -36,6 +36,7 @@ sources = [ - 'drv-iio-buffer-compass.c', - 'drv-iio-poll-proximity.c', - 'drv-ssc-proximity.c', -+ 'drv-ssc-light.c', - 'iio-buffer-utils.c', - 'accel-mount-matrix.c', - 'accel-scale.c', +@@ -48,6 +48,7 @@ sources = [ + if get_option('ssc-support') + sources = sources + [ + 'drv-ssc-proximity.c', ++ 'drv-ssc-light.c', + ] + endif + -- -2.40.0 +2.45.1 diff --git a/temp/iio-sensor-proxy/0004-accelerometer-support-SSC-accelerometer-sensor.patch b/temp/iio-sensor-proxy/0004-accelerometer-support-SSC-accelerometer-sensor.patch index 3a1768f5f..f43736c91 100644 --- a/temp/iio-sensor-proxy/0004-accelerometer-support-SSC-accelerometer-sensor.patch +++ b/temp/iio-sensor-proxy/0004-accelerometer-support-SSC-accelerometer-sensor.patch @@ -1,35 +1,38 @@ -From fe8b7e42a7f813842ff51f4d8f194a7c20534bcb Mon Sep 17 00:00:00 2001 +From cdc8a661bdeb7f0ada6b08beb6ceee40188d8843 Mon Sep 17 00:00:00 2001 From: Dylan Van Assche Date: Mon, 24 Apr 2023 17:01:10 +0200 -Subject: [PATCH 4/7] accelerometer: support SSC accelerometer sensor +Subject: [PATCH 4/8] accelerometer: support SSC accelerometer sensor +Add driver for the accelerometer sensor exposed by libssc. +Mount matrix is supported through environment variables set +by udev rules because extracting the mount matrix from the +Qualcomm Snapdragon Sensor Core (SSC) firmware is not possible yet. --- - src/drivers.h | 2 + - src/drv-ssc-accel.c | 113 +++++++++++++++++++++++++++++++++++++++++ + src/drivers.h | 1 + + src/drv-ssc-accel.c | 145 +++++++++++++++++++++++++++++++++++++++++ src/iio-sensor-proxy.c | 1 + src/meson.build | 1 + - 4 files changed, 117 insertions(+) + 4 files changed, 148 insertions(+) create mode 100644 src/drv-ssc-accel.c diff --git a/src/drivers.h b/src/drivers.h -index a97528b..a68fcbb 100644 +index 46df2fd..40707ec 100644 --- a/src/drivers.h +++ b/src/drivers.h -@@ -163,6 +163,8 @@ extern SensorDriver iio_poll_proximity; +@@ -164,6 +164,7 @@ extern SensorDriver input_proximity; #ifdef HAS_LIBSSC extern SensorDriver ssc_proximity; extern SensorDriver ssc_light; +extern SensorDriver ssc_accel; -+extern SensorDriver ssc_compass; #endif gboolean drv_check_udev_sensor_type (GUdevDevice *device, const gchar *match, const char *name); diff --git a/src/drv-ssc-accel.c b/src/drv-ssc-accel.c new file mode 100644 -index 0000000..a9b5eec +index 0000000..26364db --- /dev/null +++ b/src/drv-ssc-accel.c -@@ -0,0 +1,113 @@ +@@ -0,0 +1,145 @@ +/* + * Copyright (c) 2023 Dylan Van Assche + * @@ -39,6 +42,7 @@ index 0000000..a9b5eec + */ + +#include "drivers.h" ++#include "accel-mount-matrix.h" + +#include +#include @@ -53,14 +57,30 @@ index 0000000..a9b5eec +typedef struct DrvData { + SSCSensorAccelerometer *sensor; + guint measurement_id; ++ AccelVec3 *mount_matrix; ++ AccelLocation location; ++ AccelScale scale; +} DrvData; + +static gboolean +ssc_accelerometer_discover (GUdevDevice *device) +{ ++ SSCSensorAccelerometer *sensor = NULL; ++ ++ /* Verify presence of FastRPC device */ + if (!drv_check_udev_sensor_type (device, "ssc-accel", NULL)) + return FALSE; + ++ /* Open and close SSC accelerometer for discovering */ ++ sensor = ssc_sensor_accelerometer_new_sync (NULL, NULL); ++ if (!sensor) ++ return FALSE; ++ ++ if (!ssc_sensor_accelerometer_close_sync (sensor, NULL, NULL)) ++ return FALSE; ++ ++ g_clear_object (&sensor); ++ + g_debug ("Found SSC accelerometer at %s", g_udev_device_get_sysfs_path (device)); + return TRUE; +} @@ -69,12 +89,21 @@ index 0000000..a9b5eec +measurement_cb (SSCSensorAccelerometer *sensor, gfloat accel_x, gfloat accel_y, gfloat accel_z, gpointer user_data) +{ + SensorDevice *sensor_device = user_data; ++ DrvData *drv_data = (DrvData *) sensor_device->priv; + AccelReadings readings; ++ AccelVec3 tmp; + -+ readings.accel_x = accel_x; -+ readings.accel_y = accel_y; -+ readings.accel_z = accel_z; -+ set_accel_scale (&readings.scale, 1.0); ++ tmp.x = accel_x; ++ tmp.y = accel_y; ++ tmp.z = accel_z; ++ ++ if (!apply_mount_matrix (drv_data->mount_matrix, &tmp)) ++ g_warning ("Could not apply mount matrix"); ++ ++ readings.accel_x = tmp.x; ++ readings.accel_y = tmp.y; ++ readings.accel_z = tmp.z; ++ copy_accel_scale (&readings.scale, drv_data->scale); + + sensor_device->callback_func (sensor_device, (gpointer) &readings, sensor_device->user_data); +} @@ -90,6 +119,11 @@ index 0000000..a9b5eec + sensor_device->priv = g_new0 (DrvData, 1); + drv_data = (DrvData *) sensor_device->priv; + ++ /* Setup accel attributes */ ++ drv_data->mount_matrix = setup_mount_matrix (device); ++ drv_data->location = setup_accel_location (device); ++ set_accel_scale (&drv_data->scale, 1.0); ++ + /* Create sensor */ + drv_data->sensor = ssc_sensor_accelerometer_new_sync (NULL, &error); + if (!drv_data->sensor) { @@ -131,6 +165,7 @@ index 0000000..a9b5eec + g_warning ("Closing SSC accelerometer sensor failed: %s", error ? error->message : "UNKNOWN"); + + g_clear_object (&drv_data->sensor); ++ g_clear_pointer (&drv_data->mount_matrix, g_free); + g_clear_pointer (&sensor_device->priv, g_free); + g_free (sensor_device); +} @@ -144,10 +179,10 @@ index 0000000..a9b5eec + .close = ssc_accelerometer_close, +}; diff --git a/src/iio-sensor-proxy.c b/src/iio-sensor-proxy.c -index f70e996..644e835 100644 +index 77a75ab..6c0e96f 100644 --- a/src/iio-sensor-proxy.c +++ b/src/iio-sensor-proxy.c -@@ -76,6 +76,7 @@ static const SensorDriver * const drivers[] = { +@@ -78,6 +78,7 @@ static const SensorDriver * const drivers[] = { #ifdef HAS_LIBSSC &ssc_proximity, &ssc_light, @@ -156,17 +191,17 @@ index f70e996..644e835 100644 }; diff --git a/src/meson.build b/src/meson.build -index 104143c..e44338b 100644 +index 2f3c1e6..d59cfdd 100644 --- a/src/meson.build +++ b/src/meson.build -@@ -37,6 +37,7 @@ sources = [ - 'drv-iio-poll-proximity.c', - 'drv-ssc-proximity.c', - 'drv-ssc-light.c', -+ 'drv-ssc-accel.c', - 'iio-buffer-utils.c', - 'accel-mount-matrix.c', - 'accel-scale.c', +@@ -49,6 +49,7 @@ if get_option('ssc-support') + sources = sources + [ + 'drv-ssc-proximity.c', + 'drv-ssc-light.c', ++ 'drv-ssc-accel.c', + ] + endif + -- -2.40.0 +2.45.1 diff --git a/temp/iio-sensor-proxy/0005-compass-support-SSC-compass-sensor.patch b/temp/iio-sensor-proxy/0005-compass-support-SSC-compass-sensor.patch index bf46d3a67..c15bf864e 100644 --- a/temp/iio-sensor-proxy/0005-compass-support-SSC-compass-sensor.patch +++ b/temp/iio-sensor-proxy/0005-compass-support-SSC-compass-sensor.patch @@ -1,21 +1,35 @@ -From 20ab71eb279869eec770c497aed6832b64c7df15 Mon Sep 17 00:00:00 2001 +From 9f394846ebcd1cb0f052b239d16ceb9b9742c823 Mon Sep 17 00:00:00 2001 From: Dylan Van Assche Date: Mon, 24 Apr 2023 18:29:15 +0200 -Subject: [PATCH 5/7] compass: support SSC compass sensor +Subject: [PATCH 5/8] compass: support SSC compass sensor +Add driver for the compass sensor exposed by libssc. --- - src/drv-ssc-compass.c | 112 +++++++++++++++++++++++++++++++++++++++++ + src/drivers.h | 1 + + src/drv-ssc-compass.c | 123 +++++++++++++++++++++++++++++++++++++++++ src/iio-sensor-proxy.c | 1 + src/meson.build | 1 + - 3 files changed, 114 insertions(+) + 4 files changed, 126 insertions(+) create mode 100644 src/drv-ssc-compass.c +diff --git a/src/drivers.h b/src/drivers.h +index 40707ec..5e0347c 100644 +--- a/src/drivers.h ++++ b/src/drivers.h +@@ -165,6 +165,7 @@ extern SensorDriver input_proximity; + extern SensorDriver ssc_proximity; + extern SensorDriver ssc_light; + extern SensorDriver ssc_accel; ++extern SensorDriver ssc_compass; + #endif + + gboolean drv_check_udev_sensor_type (GUdevDevice *device, const gchar *match, const char *name); diff --git a/src/drv-ssc-compass.c b/src/drv-ssc-compass.c new file mode 100644 -index 0000000..7a367b3 +index 0000000..5e65c15 --- /dev/null +++ b/src/drv-ssc-compass.c -@@ -0,0 +1,112 @@ +@@ -0,0 +1,123 @@ +/* + * Copyright (c) 2023 Dylan Van Assche + * @@ -36,8 +50,6 @@ index 0000000..7a367b3 +#include +#include + -+#define UDEV_DEVICE_NAME "fastrpc-" -+ +typedef struct DrvData { + SSCSensorCompass *sensor; + guint measurement_id; @@ -46,9 +58,22 @@ index 0000000..7a367b3 +static gboolean +ssc_compass_discover (GUdevDevice *device) +{ ++ SSCSensorCompass *sensor = NULL; ++ ++ /* Verify presence of FastRPC device */ + if (!drv_check_udev_sensor_type (device, "ssc-compass", NULL)) + return FALSE; + ++ /* Open and close SSC compass for discovering */ ++ sensor = ssc_sensor_compass_new_sync (NULL, NULL); ++ if (!sensor) ++ return FALSE; ++ ++ if (!ssc_sensor_compass_close_sync (sensor, NULL, NULL)) ++ return FALSE; ++ ++ g_clear_object(&sensor); ++ + g_debug ("Found SSC compass at %s", g_udev_device_get_sysfs_path (device)); + return TRUE; +} @@ -129,10 +154,10 @@ index 0000000..7a367b3 + .close = ssc_compass_close, +}; diff --git a/src/iio-sensor-proxy.c b/src/iio-sensor-proxy.c -index 644e835..5414677 100644 +index 6c0e96f..17858da 100644 --- a/src/iio-sensor-proxy.c +++ b/src/iio-sensor-proxy.c -@@ -77,6 +77,7 @@ static const SensorDriver * const drivers[] = { +@@ -79,6 +79,7 @@ static const SensorDriver * const drivers[] = { &ssc_proximity, &ssc_light, &ssc_accel, @@ -141,17 +166,17 @@ index 644e835..5414677 100644 }; diff --git a/src/meson.build b/src/meson.build -index e44338b..08b25e6 100644 +index d59cfdd..1e753cc 100644 --- a/src/meson.build +++ b/src/meson.build -@@ -38,6 +38,7 @@ sources = [ - 'drv-ssc-proximity.c', - 'drv-ssc-light.c', - 'drv-ssc-accel.c', -+ 'drv-ssc-compass.c', - 'iio-buffer-utils.c', - 'accel-mount-matrix.c', - 'accel-scale.c', +@@ -50,6 +50,7 @@ if get_option('ssc-support') + 'drv-ssc-proximity.c', + 'drv-ssc-light.c', + 'drv-ssc-accel.c', ++ 'drv-ssc-compass.c', + ] + endif + -- -2.40.0 +2.45.1 diff --git a/temp/iio-sensor-proxy/0006-accelerometer-apply-accel-attributes.patch b/temp/iio-sensor-proxy/0006-accelerometer-apply-accel-attributes.patch deleted file mode 100644 index 207573773..000000000 --- a/temp/iio-sensor-proxy/0006-accelerometer-apply-accel-attributes.patch +++ /dev/null @@ -1,81 +0,0 @@ -From 8c15df3b56af5a5414b90abd746f824990a3441c Mon Sep 17 00:00:00 2001 -From: Dylan Van Assche -Date: Tue, 25 Apr 2023 18:34:45 +0200 -Subject: [PATCH 6/7] accelerometer: apply accel attributes - -Mount matrix, location, and scaling ---- - src/drv-ssc-accel.c | 27 +++++++++++++++++++++++---- - 1 file changed, 23 insertions(+), 4 deletions(-) - -diff --git a/src/drv-ssc-accel.c b/src/drv-ssc-accel.c -index a9b5eec..a64f28e 100644 ---- a/src/drv-ssc-accel.c -+++ b/src/drv-ssc-accel.c -@@ -7,6 +7,7 @@ - */ - - #include "drivers.h" -+#include "accel-mount-matrix.h" - - #include - #include -@@ -21,6 +22,9 @@ - typedef struct DrvData { - SSCSensorAccelerometer *sensor; - guint measurement_id; -+ AccelVec3 *mount_matrix; -+ AccelLocation location; -+ AccelScale scale; - } DrvData; - - static gboolean -@@ -37,12 +41,21 @@ static void - measurement_cb (SSCSensorAccelerometer *sensor, gfloat accel_x, gfloat accel_y, gfloat accel_z, gpointer user_data) - { - SensorDevice *sensor_device = user_data; -+ DrvData *drv_data = (DrvData *) sensor_device->priv; - AccelReadings readings; -+ AccelVec3 tmp; -+ -+ tmp.x = accel_x; -+ tmp.y = accel_y; -+ tmp.z = accel_z; - -- readings.accel_x = accel_x; -- readings.accel_y = accel_y; -- readings.accel_z = accel_z; -- set_accel_scale (&readings.scale, 1.0); -+ if (!apply_mount_matrix (drv_data->mount_matrix, &tmp)) -+ g_warning ("Could not apply mount matrix"); -+ -+ readings.accel_x = tmp.x; -+ readings.accel_y = tmp.y; -+ readings.accel_z = tmp.z; -+ copy_accel_scale (&readings.scale, drv_data->scale); - - sensor_device->callback_func (sensor_device, (gpointer) &readings, sensor_device->user_data); - } -@@ -58,6 +71,11 @@ ssc_accelerometer_open (GUdevDevice *device) - sensor_device->priv = g_new0 (DrvData, 1); - drv_data = (DrvData *) sensor_device->priv; - -+ /* Setup accel attributes */ -+ drv_data->mount_matrix = setup_mount_matrix (device); -+ drv_data->location = setup_accel_location (device); -+ set_accel_scale (&drv_data->scale, 1.0); -+ - /* Create sensor */ - drv_data->sensor = ssc_sensor_accelerometer_new_sync (NULL, &error); - if (!drv_data->sensor) { -@@ -99,6 +117,7 @@ ssc_accelerometer_close (SensorDevice *sensor_device) - g_warning ("Closing SSC accelerometer sensor failed: %s", error ? error->message : "UNKNOWN"); - - g_clear_object (&drv_data->sensor); -+ g_clear_pointer (&drv_data->mount_matrix, g_free); - g_clear_pointer (&sensor_device->priv, g_free); - g_free (sensor_device); - } --- -2.40.0 - diff --git a/temp/iio-sensor-proxy/0007-data-add-libssc-udev-rules.patch b/temp/iio-sensor-proxy/0006-data-add-libssc-udev-rules.patch similarity index 59% rename from temp/iio-sensor-proxy/0007-data-add-libssc-udev-rules.patch rename to temp/iio-sensor-proxy/0006-data-add-libssc-udev-rules.patch index bd8325d39..bddf82ffc 100644 --- a/temp/iio-sensor-proxy/0007-data-add-libssc-udev-rules.patch +++ b/temp/iio-sensor-proxy/0006-data-add-libssc-udev-rules.patch @@ -1,13 +1,17 @@ -From 6a8c37f8f180ed3d0589948d28b1d9322a0cae3c Mon Sep 17 00:00:00 2001 +From 313d84bd57ba0bd240e6ac2d75ed3184212c9911 Mon Sep 17 00:00:00 2001 From: Dylan Van Assche Date: Wed, 26 Apr 2023 18:54:07 +0200 -Subject: [PATCH 7/7] data: add libssc udev rules +Subject: [PATCH 6/8] data: add libssc udev rules +Add udev rules to indicate possible sensor types like +ssc-accel, ssc-light, ssc-proximity, and ssc-compass +when a FastRPC node is present. This commit enables +the usage of the libssc sensor drivers in iio-sensor-proxy +which are introduced in the previous commits. --- data/80-iio-sensor-proxy-libssc.rules | 11 +++++++++++ - data/80-iio-sensor-proxy.rules | 2 -- data/meson.build | 10 +++++++++- - 3 files changed, 20 insertions(+), 3 deletions(-) + 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 data/80-iio-sensor-proxy-libssc.rules diff --git a/data/80-iio-sensor-proxy-libssc.rules b/data/80-iio-sensor-proxy-libssc.rules @@ -27,19 +31,6 @@ index 0000000..c4fad16 +SUBSYSTEM=="misc", KERNEL=="fastrpc-*", ENV{IIO_SENSOR_PROXY_TYPE}+="ssc-accel ssc-light ssc-proximity ssc-compass" + +LABEL="iio_sensor_proxy_libssc_end" -diff --git a/data/80-iio-sensor-proxy.rules b/data/80-iio-sensor-proxy.rules -index bd917b2..85d93f9 100644 ---- a/data/80-iio-sensor-proxy.rules -+++ b/data/80-iio-sensor-proxy.rules -@@ -16,8 +16,6 @@ SUBSYSTEM=="iio", TEST=="scan_elements/in_intensity_both_en", ENV{IIO_SENSOR_PRO - SUBSYSTEM=="iio", TEST=="in_proximity_raw", ENV{IIO_SENSOR_PROXY_TYPE}+="iio-poll-proximity" - SUBSYSTEM=="input", ENV{ID_INPUT_ACCELEROMETER}=="1", ENV{IIO_SENSOR_PROXY_TYPE}+="input-accel" - --SUBSYSTEM=="misc", KERNEL=="fastrpc-sdsp", ENV{IIO_SENSOR_PROXY_TYPE}+="ssc-accel" -- - ENV{IIO_SENSOR_PROXY_TYPE}=="", GOTO="iio_sensor_proxy_end" - - # We got here because we have a sensor type, which means we need the service diff --git a/data/meson.build b/data/meson.build index 97dbc07..8b78125 100644 --- a/data/meson.build @@ -60,5 +51,5 @@ index 97dbc07..8b78125 100644 ) -- -2.40.0 +2.45.1 diff --git a/temp/iio-sensor-proxy/0007-CI-add-libssc-build.patch b/temp/iio-sensor-proxy/0007-CI-add-libssc-build.patch new file mode 100644 index 000000000..c8e484aa0 --- /dev/null +++ b/temp/iio-sensor-proxy/0007-CI-add-libssc-build.patch @@ -0,0 +1,47 @@ +From cd0d6b7d9be8f256cef9acd502447619e751034c Mon Sep 17 00:00:00 2001 +From: Dylan Van Assche +Date: Fri, 24 May 2024 21:00:25 +0200 +Subject: [PATCH 7/8] CI: add libssc build + +libssc support is behind a meson build flag which is disabled by default, +add a separate build to CI. +--- + .gitlab-ci.yml | 22 ++++++++++++++++++++++ + 1 file changed, 22 insertions(+) + +diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml +index 8e691b6..5efeb7c 100644 +--- a/.gitlab-ci.yml ++++ b/.gitlab-ci.yml +@@ -45,6 +45,28 @@ build_stable: + - "${CI_PROJECT_DIR}/_build/meson-dist" + - "${CI_PROJECT_DIR}/_build/docs/html/" + ++build_libssc: ++ before_script: ++ # Undo delangification present in the Fedora Docker images ++ - rm -f /etc/rpm/macros.image-language-conf ++ - if [ -x /bin/dnf ]; then dnf update -y; else dnf5 update -y; fi ++ - if [ -x /bin/dnf ]; then dnf install -y $DEPENDENCIES; else dnf5 install -y $DEPENDENCIES; fi ++ - if [ -x /bin/dnf ]; then dnf install -y libqmi-devel protobuf-c-devel; else dnf5 install -y libqmi-devel protobuf-c-devel; fi ++ - if [ -x /bin/dnf ]; then dnf reinstall -y glib2; else dnf5 reinstall -y glib2; fi ++ - git clone "https://codeberg.org/DylanVanAssche/libssc.git" ++ - cd libssc ++ - mkdir _build ++ - meson _build ++ - meson compile -C _build ++ - meson install --no-rebuild -C _build ++ - cd .. ++ script: ++ - meson -Dssc-support=true _build ++ - ninja -v -C _build ++ - ninja -v -C _build install ++ - ninja -v -C _build uninstall ++ - ninja -v -C _build dist ++ + pages: + needs: + - build_stable +-- +2.45.1 + diff --git a/temp/iio-sensor-proxy/0008-data-iio-sensor-proxy.service.in-add-AF_QIPCRTR.patch b/temp/iio-sensor-proxy/0008-data-iio-sensor-proxy.service.in-add-AF_QIPCRTR.patch new file mode 100644 index 000000000..11482d74f --- /dev/null +++ b/temp/iio-sensor-proxy/0008-data-iio-sensor-proxy.service.in-add-AF_QIPCRTR.patch @@ -0,0 +1,29 @@ +From c70950f1e33aba5c58c337e8dfb73d40efed5b5d Mon Sep 17 00:00:00 2001 +From: Dylan Van Assche +Date: Sat, 1 Jun 2024 21:15:15 +0200 +Subject: [PATCH 8/8] data: iio-sensor-proxy.service.in: add AF_QIPCRTR + +Allow AF_QIPCRTR in lockdown for libssc. +Libssc uses the QMI protocol over QRTR in the kernel. +Systemd limits the address families to UNIX, LOCAL, and NETLINK. +However, QRTR uses its own address family: AF_QIPCRTR. +Add it to the allowed families. +--- + data/iio-sensor-proxy.service.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/data/iio-sensor-proxy.service.in b/data/iio-sensor-proxy.service.in +index 4bc921b..29ea3c0 100644 +--- a/data/iio-sensor-proxy.service.in ++++ b/data/iio-sensor-proxy.service.in +@@ -14,6 +14,6 @@ ProtectControlGroups=true + ProtectHome=true + ProtectKernelModules=true + PrivateTmp=true +-RestrictAddressFamilies=AF_UNIX AF_LOCAL AF_NETLINK ++RestrictAddressFamilies=AF_UNIX AF_LOCAL AF_NETLINK AF_QIPCRTR + MemoryDenyWriteExecute=true + RestrictRealtime=true +-- +2.45.1 + diff --git a/temp/iio-sensor-proxy/APKBUILD b/temp/iio-sensor-proxy/APKBUILD index 4486402d8..c00005b74 100644 --- a/temp/iio-sensor-proxy/APKBUILD +++ b/temp/iio-sensor-proxy/APKBUILD @@ -2,7 +2,7 @@ pkgname=iio-sensor-proxy pkgver=9999 -pkgrel=3 +pkgrel=4 pkgdesc="IIO sensors to D-Bus proxy" url="https://gitlab.freedesktop.org/hadess/iio-sensor-proxy" arch="aarch64" @@ -14,10 +14,10 @@ makedepends=" libgudev-dev meson polkit-dev - libssc-dev + libssc-dev>=0.1.6 " subpackages="$pkgname-openrc" -_commit="48cb957c41b8d51d882219866e1366c45e21c352" +_commit="fe56bdba1243cc5f6a652eb75d11ae1d1957ff7e" builddir="$srcdir/$pkgname-$_commit" source="https://gitlab.freedesktop.org/hadess/iio-sensor-proxy/-/archive/$_commit/iio-sensor-proxy-$_commit.tar.gz iio-sensor-proxy.initd @@ -26,8 +26,9 @@ source="https://gitlab.freedesktop.org/hadess/iio-sensor-proxy/-/archive/$_commi 0003-light-support-SSC-light-sensor.patch 0004-accelerometer-support-SSC-accelerometer-sensor.patch 0005-compass-support-SSC-compass-sensor.patch - 0006-accelerometer-apply-accel-attributes.patch - 0007-data-add-libssc-udev-rules.patch + 0006-data-add-libssc-udev-rules.patch + 0007-CI-add-libssc-build.patch + 0008-data-iio-sensor-proxy.service.in-add-AF_QIPCRTR.patch " # tests fail on armv7 and armhf, and it seems to be due to some weird issue # with pmaports qemu CI (not reproducible locally with `pmb build --arch @@ -54,13 +55,14 @@ package() { } sha512sums=" -f899058ba346b272c5174de0f2c0870bf6a13782f0c0c248163bc6cec7fbebca689ed97a0fbebd770a8857212cfc760849ad97034eaaec7fef40b7e58d811f31 iio-sensor-proxy-48cb957c41b8d51d882219866e1366c45e21c352.tar.gz +49b96fefbcfabb706fc6189d3f40e6e1a1e847ec6e4101398bf639db9e844c5c5057f2267f3e541d302d002d0042a84fdd56191207ed0e911f80342cd1d416c4 iio-sensor-proxy-fe56bdba1243cc5f6a652eb75d11ae1d1957ff7e.tar.gz f695c3f6c7cad50a5da8b8df28172b4a8c0be750e3bfc93a1b80a7fe1e5a05f24fd0e5af3e0af727c05dfe3a98b3067a6ebd7617c13243b60e1e495b2b3d6987 iio-sensor-proxy.initd -43bf2ce5928c996ef56939a5ff232160f6af5a40cc673753763facbcb18511b1f551fa1a91f55ac9d0d4cbe544de7326208617ffc032cfeb9e39a5ab6538e825 0001-iio-sensor-proxy-depend-on-libssc.patch -c6eb40824d5f4fe8b46d26f3ed4773502c9ff3ed58ec82df4a4f570bdcba81c39ff41f6d400bcece13fc46486272d13238d58afc34982b0972894b4d01a81309 0002-proximity-support-SSC-proximity-sensor.patch -2e909a9a2a8c95d5255e14f6e0280f329e83e02dce8c16555df77c818a3cda658a7ebfb4c27d3e251e6830de2374f5f1bf2735be09af09ff0255c902125601ea 0003-light-support-SSC-light-sensor.patch -cb627cb4fc40e195683dcf1a7837f2fc902851310f3cee42ab18e42d6243b8fafc92accf699b5805670f9a8c76cf0cc422a201be64836efe9e5b943f6d151d70 0004-accelerometer-support-SSC-accelerometer-sensor.patch -045d76e0399ea2a5e99955d56a77f4fab9b5bc7d50512c60ae1a6dfd8e56e209690743545582bef35451fbd1a03f67d58e7143c2c91811d402a0e8e908f22bbc 0005-compass-support-SSC-compass-sensor.patch -17eab0005d6d4989e57ef6f37a7bfbd7541c19c129c9dc481000635884b981a8da0b9f264bc61059ac27882cd653eff7a78ec231ecbd158773f71d55e6ab8e9b 0006-accelerometer-apply-accel-attributes.patch -5495aa9d9ba3b83c0845556bcc1ef66d72a76d9685b791c15080dece62c00d93c76a2dce0e146ba0f3027ed2c34957d0019def9cee0fd133ec72c554ccfeb2d3 0007-data-add-libssc-udev-rules.patch +3d1be8e5a932ca6ca0b908caaa7f16dcdbbc6e48a75183c1b7c225689f309203f7008f53ed4276c93790dc7dc0b2cb3c9b3f00cef84305657f279369f1307d89 0001-iio-sensor-proxy-depend-on-libssc.patch +bb8e1496411c030062eeb1bb919c9680c32d9571587540368c663b6739e3c506d21ab90836a4e83be526019e654af393dc849031ab81bb8aadff623873232d58 0002-proximity-support-SSC-proximity-sensor.patch +465f4296778b3c0269b00badd11f841c2ea9dbc14b7489b21f2e4d8e45a628fa59327c91692f8e350c926776de05173e2abc9bef54e51bf0378866ace3891152 0003-light-support-SSC-light-sensor.patch +4f6a3b76fc10eb42a4824cc49b063acc1c54a762637f7ff37a1ac42adb1410fbfe5e17b5277bb8fcb4d232b94971cf96c61925f4c207c9b4b56c78321b1b7d69 0004-accelerometer-support-SSC-accelerometer-sensor.patch +80d59825dde8ff8bcc92b3d6d659968f88f82c8198e9576e1a77b2d38be074781926c45115e213e4c557a3dc7ba1c1391d67cb6f0c49d23aff2e0cdbfedefc87 0005-compass-support-SSC-compass-sensor.patch +651d3281fe64fb72780bdfc4f3416af6f221c5c0aebf8b9a87d2cf6b5a31ebd0816199b45c97f24810807286a4a8839b6304a12cfc23b4191261a30efd3fbe2b 0006-data-add-libssc-udev-rules.patch +bdb8831d89f389badd5de0eb52d9eca5dbdf045dbcfab18165d43798c9e329c3e68e3209b8ad1053916cfac6c54984dd47aa379c419d46f1c25ad6a57c2bd771 0007-CI-add-libssc-build.patch +c778168de17f86e3d50b62a4905d3940e9d69bb919fe3b9b5fc8962d8fe9b7cdb48a57dd8128ded93ff08493f65a7f602e6e7ad295e6736c74c273a2c6399c35 0008-data-iio-sensor-proxy.service.in-add-AF_QIPCRTR.patch "