summaryrefslogtreecommitdiff
path: root/zephyr/emul/emul_common_i2c.c
diff options
context:
space:
mode:
Diffstat (limited to 'zephyr/emul/emul_common_i2c.c')
-rw-r--r--zephyr/emul/emul_common_i2c.c52
1 files changed, 24 insertions, 28 deletions
diff --git a/zephyr/emul/emul_common_i2c.c b/zephyr/emul/emul_common_i2c.c
index 327188cb48..70bc962c5f 100644
--- a/zephyr/emul/emul_common_i2c.c
+++ b/zephyr/emul/emul_common_i2c.c
@@ -3,16 +3,16 @@
* found in the LICENSE file.
*/
-#include "emul/emul_common_i2c.h"
+#define LOG_LEVEL CONFIG_I2C_LOG_LEVEL
+#include <zephyr/logging/log.h>
+LOG_MODULE_REGISTER(emul_common_i2c);
#include <zephyr/device.h>
#include <zephyr/drivers/emul.h>
#include <zephyr/drivers/i2c.h>
#include <zephyr/drivers/i2c_emul.h>
-#include <zephyr/logging/log.h>
-#define LOG_LEVEL CONFIG_I2C_LOG_LEVEL
-LOG_MODULE_REGISTER(emul_common_i2c);
+#include "emul/emul_common_i2c.h"
/** Check description in emul_common_i2c.h */
int i2c_common_emul_lock_data(struct i2c_common_emul_data *common_data,
@@ -172,6 +172,16 @@ static int i2c_common_emul_write_byte(const struct emul *target,
{
int reg, ret;
+ /* Custom user handler */
+ if (data->write_func) {
+ ret = data->write_func(target, data->cur_reg, val,
+ data->msg_byte, data->write_func_data);
+ if (ret < 0) {
+ return -EIO;
+ } else if (ret == 0) {
+ return 0;
+ }
+ }
/* Check if user wants to fail on accessed register */
if (data->access_reg) {
reg = data->access_reg(target, data->cur_reg, data->msg_byte,
@@ -185,18 +195,6 @@ static int i2c_common_emul_write_byte(const struct emul *target,
data->write_fail_reg == I2C_COMMON_EMUL_FAIL_ALL_REG) {
return -EIO;
}
-
- /* Custom user handler */
- if (data->write_func) {
- ret = data->write_func(target, data->cur_reg, val,
- data->msg_byte, data->write_func_data);
- if (ret < 0) {
- return -EIO;
- } else if (ret == 0) {
- return 0;
- }
- }
-
/* Emulator handler */
if (data->write_byte) {
k_mutex_lock(&data->data_mtx, K_FOREVER);
@@ -230,6 +228,16 @@ static int i2c_common_emul_read_byte(const struct emul *target,
{
int reg, ret;
+ /* Custom user handler */
+ if (data->read_func) {
+ ret = data->read_func(target, data->cur_reg, val,
+ data->msg_byte, data->read_func_data);
+ if (ret < 0) {
+ return -EIO;
+ } else if (ret == 0) {
+ return 0;
+ }
+ }
/* Check if user wants to fail on accessed register */
if (data->access_reg) {
reg = data->access_reg(target, data->cur_reg, data->msg_byte,
@@ -242,18 +250,6 @@ static int i2c_common_emul_read_byte(const struct emul *target,
data->read_fail_reg == I2C_COMMON_EMUL_FAIL_ALL_REG) {
return -EIO;
}
-
- /* Custom user handler */
- if (data->read_func) {
- ret = data->read_func(target, data->cur_reg, val,
- data->msg_byte, data->read_func_data);
- if (ret < 0) {
- return -EIO;
- } else if (ret == 0) {
- return 0;
- }
- }
-
/* Emulator handler */
if (data->read_byte) {
k_mutex_lock(&data->data_mtx, K_FOREVER);