Skip to content

Commit 59e8919

Browse files
ubiedanashif
authored andcommitted
sensor: akm09918c: Use RTIO workq on akm09918c_submit
To make its execution path non-blocking from the caller's perspective. Signed-off-by: Luis Ubieda <[email protected]>
1 parent aff6e31 commit 59e8919

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

drivers/sensor/asahi_kasei/akm09918c/Kconfig

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
# Copyright (c) 2023 Google LLC
2+
# Copyright (c) 2024 Croxel Inc.
23
# SPDX-License-Identifier: Apache-2.0
34

45
config AKM09918C
56
bool "AKM09918C Magnetometer"
67
default y
78
depends on DT_HAS_ASAHI_KASEI_AKM09918C_ENABLED
89
select I2C
10+
select RTIO_WORKQ if SENSOR_ASYNC_API
911
help
1012
Enable driver for AK8975 magnetometer.
1113

drivers/sensor/asahi_kasei/akm09918c/akm09918c_async.c

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,21 @@
11
/*
22
* Copyright (c) 2023 Google LLC
3+
* Copyright (c) 2024 Croxel Inc.
4+
*
35
* SPDX-License-Identifier: Apache-2.0
46
*/
57

68
#include <zephyr/logging/log.h>
9+
#include <zephyr/rtio/work.h>
710

811
#include "akm09918c.h"
912

1013
LOG_MODULE_DECLARE(AKM09918C, CONFIG_SENSOR_LOG_LEVEL);
1114

12-
void akm09918c_submit(const struct device *dev, struct rtio_iodev_sqe *iodev_sqe)
15+
void akm09918c_submit_sync(struct rtio_iodev_sqe *iodev_sqe)
1316
{
17+
const struct sensor_read_config *cfg = iodev_sqe->sqe.iodev->data;
18+
const struct device *dev = cfg->sensor;
1419
uint32_t min_buf_len = sizeof(struct akm09918c_encoded_data);
1520
int rc;
1621
uint8_t *buf;
@@ -38,3 +43,12 @@ void akm09918c_submit(const struct device *dev, struct rtio_iodev_sqe *iodev_sqe
3843

3944
rtio_iodev_sqe_ok(iodev_sqe, 0);
4045
}
46+
47+
void akm09918c_submit(const struct device *dev, struct rtio_iodev_sqe *iodev_sqe)
48+
{
49+
struct rtio_work_req *req = rtio_work_req_alloc();
50+
51+
__ASSERT_NO_MSG(req);
52+
53+
rtio_work_req_submit(req, iodev_sqe, akm09918c_submit_sync);
54+
}

0 commit comments

Comments
 (0)