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
This commit is contained in:
Dylan Van Assche 2024-06-08 11:39:05 +02:00 committed by Oliver Smith
parent bcc52c36bb
commit 372ccb3cf2
No known key found for this signature in database
GPG key ID: 5AE7F5513E0885CB
10 changed files with 419 additions and 455 deletions

View file

@ -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 <me@dylanvanassche.be>
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 <fcntl.h>
+#include <unistd.h>
+#include <string.h>
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <gio/gio.h>
+#include <libssc-sensor.h>
+#include <libssc-sensor-proximity.h>
+
+#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

View file

@ -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 <me@dylanvanassche.be>
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 <libssc-sensor.h>
#include <libssc-sensor-proximity.h>
-#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 <fcntl.h>
+#include <unistd.h>
+#include <string.h>
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <gio/gio.h>
+#include <libssc-sensor.h>
+#include <libssc-sensor-proximity.h>
+
+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

View file

@ -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 <me@dylanvanassche.be>
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 <libssc-sensor.h>
+#include <libssc-sensor-light.h>
+
+#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

View file

@ -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 <me@dylanvanassche.be>
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 <fcntl.h>
+#include <unistd.h>
@ -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

View file

@ -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 <me@dylanvanassche.be>
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 <libssc-sensor.h>
+#include <libssc-sensor-compass.h>
+
+#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

View file

@ -1,81 +0,0 @@
From 8c15df3b56af5a5414b90abd746f824990a3441c Mon Sep 17 00:00:00 2001
From: Dylan Van Assche <me@dylanvanassche.be>
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 <fcntl.h>
#include <unistd.h>
@@ -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

View file

@ -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 <me@dylanvanassche.be>
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

View file

@ -0,0 +1,47 @@
From cd0d6b7d9be8f256cef9acd502447619e751034c Mon Sep 17 00:00:00 2001
From: Dylan Van Assche <me@dylanvanassche.be>
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

View file

@ -0,0 +1,29 @@
From c70950f1e33aba5c58c337e8dfb73d40efed5b5d Mon Sep 17 00:00:00 2001
From: Dylan Van Assche <me@dylanvanassche.be>
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

View file

@ -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
"