sensor: all: Fix missing result argument on RTIO callbacks

If there's an error/result checked, consider the callback result in
such solution.

Signed-off-by: Luis Ubieda <luisf@croxel.com>
diff --git a/drivers/sensor/pixart/paa3905/paa3905_stream.c b/drivers/sensor/pixart/paa3905/paa3905_stream.c
index 3f8b281..3984da5 100644
--- a/drivers/sensor/pixart/paa3905/paa3905_stream.c
+++ b/drivers/sensor/pixart/paa3905/paa3905_stream.c
@@ -59,6 +59,7 @@
 
 static void paa3905_complete_result(struct rtio *ctx,
 				    const struct rtio_sqe *sqe,
+				    int err,
 				    void *arg)
 {
 	const struct device *dev = (const struct device *)arg;
@@ -66,7 +67,6 @@
 	struct rtio_iodev_sqe *iodev_sqe = data->stream.iodev_sqe;
 	struct paa3905_encoded_data *edata = sqe->userdata;
 	struct rtio_cqe *cqe;
-	int err;
 
 	edata->header.events.drdy = true &&
 				    data->stream.settings.enabled.drdy;
@@ -85,6 +85,22 @@
 		start_drdy_backup_timer(dev);
 	}
 
+	/* Flush RTIO bus CQEs */
+	do {
+		cqe = rtio_cqe_consume(ctx);
+		if (cqe != NULL) {
+			if (err >= 0) {
+				err = cqe->result;
+			}
+			rtio_cqe_release(ctx, cqe);
+		}
+	} while (cqe != NULL);
+
+	if (err < 0) {
+		rtio_iodev_sqe_err(iodev_sqe, err);
+		return;
+	}
+
 	/** Attempt chip recovery if erratic behavior is detected  */
 	if (!REG_OBSERVATION_CHIP_OK(edata->observation)) {
 
@@ -101,15 +117,6 @@
 	} else {
 		rtio_iodev_sqe_ok(iodev_sqe, 0);
 	}
-
-	/* Flush RTIO bus CQEs */
-	do {
-		cqe = rtio_cqe_consume(ctx);
-		if (cqe != NULL) {
-			err = cqe->result;
-			rtio_cqe_release(ctx, cqe);
-		}
-	} while (cqe != NULL);
 }
 
 static void paa3905_stream_get_data(const struct device *dev)
diff --git a/drivers/sensor/pixart/pat9136/pat9136_stream.c b/drivers/sensor/pixart/pat9136/pat9136_stream.c
index 3f7bff7..3a1e1e6 100644
--- a/drivers/sensor/pixart/pat9136/pat9136_stream.c
+++ b/drivers/sensor/pixart/pat9136/pat9136_stream.c
@@ -45,6 +45,7 @@
 
 static void pat9136_complete_result(struct rtio *ctx,
 				    const struct rtio_sqe *sqe,
+				    int result,
 				    void *arg)
 {
 	const struct device *dev = (const struct device *)arg;
@@ -74,11 +75,13 @@
 
 	/** Attempt chip recovery if erratic behavior is detected  */
 	if (!REG_OBSERVATION_READ_IS_VALID(edata->observation)) {
-
 		LOG_WRN("CHIP OK register indicates issues. Attempting chip recovery: 0x%02X",
 			edata->observation);
+		result = -EAGAIN;
+	}
 
-		rtio_iodev_sqe_err(iodev_sqe, -EAGAIN);
+	if (result < 0) {
+		rtio_iodev_sqe_err(iodev_sqe, result);
 	} else {
 		rtio_iodev_sqe_ok(iodev_sqe, 0);
 	}
diff --git a/drivers/sensor/pni/rm3100/rm3100_stream.c b/drivers/sensor/pni/rm3100/rm3100_stream.c
index d56a443..597585e 100644
--- a/drivers/sensor/pni/rm3100/rm3100_stream.c
+++ b/drivers/sensor/pni/rm3100/rm3100_stream.c
@@ -16,13 +16,13 @@
 #include <zephyr/logging/log.h>
 LOG_MODULE_REGISTER(RM3100_STREAM, CONFIG_SENSOR_LOG_LEVEL);
 
-static void rm3100_complete_result(struct rtio *ctx, const struct rtio_sqe *sqe, void *arg)
+static void rm3100_complete_result(struct rtio *ctx, const struct rtio_sqe *sqe, int err,
+				   void *arg)
 {
 	const struct device *dev = (const struct device *)arg;
 	struct rm3100_data *data = dev->data;
 	struct rtio_iodev_sqe *iodev_sqe = data->stream.iodev_sqe;
 	struct rtio_cqe *cqe;
-	int err = 0;
 	struct rm3100_encoded_data *edata = sqe->userdata;
 
 	edata->header.events.drdy = ((edata->header.status != 0) &&
@@ -39,7 +39,9 @@
 	do {
 		cqe = rtio_cqe_consume(ctx);
 		if (cqe != NULL) {
-			err = cqe->result;
+			if (err >= 0) {
+				err = cqe->result;
+			}
 			rtio_cqe_release(ctx, cqe);
 		}
 	} while (cqe != NULL);