Skip to content

Commit 48cb1ac

Browse files
committed
zephyr/machine_i2c_target: Update bindings.
Signed-off-by: Damien George <[email protected]>
1 parent 91a5b4e commit 48cb1ac

File tree

2 files changed

+16
-10
lines changed

2 files changed

+16
-10
lines changed

ports/zephyr/machine_i2c_target.c

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,6 @@
3131

3232
#include "zephyr_device.h"
3333

34-
static machine_i2c_target_data_t i2c_target_data[4];
35-
3634
typedef struct _machine_i2c_target_obj_t {
3735
mp_obj_base_t base;
3836
const struct device *dev;
@@ -50,15 +48,15 @@ static int i2c_target_write_requested(struct i2c_target_config *config) {
5048
// printk("wr req\n");
5149
writing = true;
5250
reading = false;
53-
machine_i2c_target_data_addr_match(&i2c_target_data[0], false);
51+
machine_i2c_target_data_addr_match(&machine_i2c_target_data[0], false);
5452
return 0;
5553
}
5654

5755
static int i2c_target_write_received(struct i2c_target_config *config, uint8_t val) {
5856
// printk("wr recv %d\n", val);
5957
global_val = val;
6058
machine_i2c_target_obj_t *self = CONTAINER_OF(config, machine_i2c_target_obj_t, cfg);
61-
machine_i2c_target_data_t *data = &i2c_target_data[0];
59+
machine_i2c_target_data_t *data = &machine_i2c_target_data[0];
6260
machine_i2c_target_data_write_request(self, data);
6361
return 0;
6462
}
@@ -70,7 +68,7 @@ static int i2c_target_read_requested(struct i2c_target_config *config, uint8_t *
7068
// printk("rd req\n");
7169
writing = false;
7270
machine_i2c_target_obj_t *self = CONTAINER_OF(config, machine_i2c_target_obj_t, cfg);
73-
machine_i2c_target_data_t *data = &i2c_target_data[0];
71+
machine_i2c_target_data_t *data = &machine_i2c_target_data[0];
7472
if (!reading) {
7573
machine_i2c_target_data_addr_match(data, true);
7674
machine_i2c_target_data_read_request(self, data);
@@ -83,7 +81,7 @@ static int i2c_target_read_requested(struct i2c_target_config *config, uint8_t *
8381
static int i2c_target_read_processed(struct i2c_target_config *config, uint8_t *val) {
8482
// printk("rd processed\n");
8583
machine_i2c_target_obj_t *self = CONTAINER_OF(config, machine_i2c_target_obj_t, cfg);
86-
machine_i2c_target_data_t *data = &i2c_target_data[0];
84+
machine_i2c_target_data_t *data = &machine_i2c_target_data[0];
8785
machine_i2c_target_data_read_request(self, data);
8886
*val = global_val;
8987
return 0;
@@ -94,11 +92,11 @@ static int i2c_target_stop(struct i2c_target_config *config) {
9492
// printk("stop\n");
9593
if (!writing && !reading) {
9694
// Assume a stop without a start is a 0-byte write.
97-
machine_i2c_target_data_addr_match(&i2c_target_data[0], false);
95+
machine_i2c_target_data_addr_match(&machine_i2c_target_data[0], false);
9896
}
9997
writing = false;
10098
reading = false;
101-
machine_i2c_target_data_t *data = &i2c_target_data[0];
99+
machine_i2c_target_data_t *data = &machine_i2c_target_data[0];
102100
machine_i2c_target_data_stop(data);
103101
return 0;
104102
}
@@ -114,6 +112,10 @@ static struct i2c_target_callbacks i2c_target_callbacks = {
114112
/******************************************************************************/
115113
// I2CTarget port implementation
116114

115+
static inline size_t mp_machine_i2c_target_get_index(machine_i2c_target_obj_t *self) {
116+
return 0;
117+
}
118+
117119
static void mp_machine_i2c_target_deinit_all_port(void) {
118120
}
119121

@@ -167,8 +169,8 @@ static mp_obj_t mp_machine_i2c_target_make_new(const mp_obj_type_t *type, size_t
167169
self->cfg.callbacks = &i2c_target_callbacks;
168170

169171
// Initialise data.
170-
MP_STATE_PORT(i2c_target_mem_obj)[0] = args[ARG_mem].u_obj;
171-
machine_i2c_target_data_t *data = &i2c_target_data[0];
172+
MP_STATE_PORT(machine_i2c_target_mem_obj)[0] = args[ARG_mem].u_obj;
173+
machine_i2c_target_data_t *data = &machine_i2c_target_data[0];
172174
machine_i2c_target_data_init(data, args[ARG_mem].u_obj, args[ARG_mem_addrsize].u_int);
173175

174176
#if 0
@@ -189,6 +191,8 @@ static mp_obj_t mp_machine_i2c_target_make_new(const mp_obj_type_t *type, size_t
189191
}
190192
#endif
191193

194+
// TODO check that only one can be created at once.
195+
192196
// Initialise the I2C target.
193197
// TODO: don't reinitialize if no arguments given.
194198
int ret = i2c_target_register(self->dev, &self->cfg);

ports/zephyr/mpconfigport.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@
6969
#ifdef CONFIG_I2C_TARGET
7070
#define MICROPY_PY_MACHINE_I2C_TARGET (1)
7171
#define MICROPY_PY_MACHINE_I2C_TARGET_INCLUDEFILE "ports/zephyr/machine_i2c_target.c"
72+
#define MICROPY_PY_MACHINE_I2C_TARGET_MAX (1)
73+
#define MICROPY_PY_MACHINE_I2C_TARGET_HARD_IRQ (1)
7274
#endif
7375
#define MICROPY_PY_MACHINE_SOFTI2C (1)
7476
#define MICROPY_PY_MACHINE_SPI (1)

0 commit comments

Comments
 (0)