i2c-echo.c (bbcad04ecd006f0588d16b185451c152763bcf93) i2c-echo.c (b14037f37f913a21eddadb1e4b53a2f7adf720ad)
1#include "qemu/osdep.h"
2#include "qemu/timer.h"
3#include "qemu/main-loop.h"
4#include "block/aio.h"
5#include "hw/i2c/i2c.h"
6
7#define TYPE_I2C_ECHO "i2c-echo"
8OBJECT_DECLARE_SIMPLE_TYPE(I2CEchoState, I2C_ECHO)
9
10enum i2c_echo_state {
11 I2C_ECHO_STATE_IDLE,
1#include "qemu/osdep.h"
2#include "qemu/timer.h"
3#include "qemu/main-loop.h"
4#include "block/aio.h"
5#include "hw/i2c/i2c.h"
6
7#define TYPE_I2C_ECHO "i2c-echo"
8OBJECT_DECLARE_SIMPLE_TYPE(I2CEchoState, I2C_ECHO)
9
10enum i2c_echo_state {
11 I2C_ECHO_STATE_IDLE,
12 I2C_ECHO_STATE_REQUEST_MASTER,
13 I2C_ECHO_STATE_START_SEND,
14 I2C_ECHO_STATE_ACK,
15};
16
17typedef struct I2CEchoState {
18 I2CSlave parent_obj;
19
20 I2CBus *bus;

--- 8 unchanged lines hidden (view full) ---

29static void i2c_echo_bh(void *opaque)
30{
31 I2CEchoState *state = opaque;
32
33 switch (state->state) {
34 case I2C_ECHO_STATE_IDLE:
35 return;
36
12 I2C_ECHO_STATE_START_SEND,
13 I2C_ECHO_STATE_ACK,
14};
15
16typedef struct I2CEchoState {
17 I2CSlave parent_obj;
18
19 I2CBus *bus;

--- 8 unchanged lines hidden (view full) ---

28static void i2c_echo_bh(void *opaque)
29{
30 I2CEchoState *state = opaque;
31
32 switch (state->state) {
33 case I2C_ECHO_STATE_IDLE:
34 return;
35
37 case I2C_ECHO_STATE_REQUEST_MASTER:
38 i2c_bus_master(state->bus, state->bh);
39 state->state = I2C_ECHO_STATE_START_SEND;
40 return;
41
42 case I2C_ECHO_STATE_START_SEND:
43 if (i2c_start_send_async(state->bus, state->data[0])) {
44 goto release_bus;
45 }
46
47 state->pos++;
48 state->state = I2C_ECHO_STATE_ACK;
49 return;

--- 30 unchanged lines hidden (view full) ---

80
81 case I2C_START_SEND:
82 state->pos = 0;
83
84 break;
85
86 case I2C_FINISH:
87 state->pos = 0;
36 case I2C_ECHO_STATE_START_SEND:
37 if (i2c_start_send_async(state->bus, state->data[0])) {
38 goto release_bus;
39 }
40
41 state->pos++;
42 state->state = I2C_ECHO_STATE_ACK;
43 return;

--- 30 unchanged lines hidden (view full) ---

74
75 case I2C_START_SEND:
76 state->pos = 0;
77
78 break;
79
80 case I2C_FINISH:
81 state->pos = 0;
88 state->state = I2C_ECHO_STATE_REQUEST_MASTER;
89 qemu_bh_schedule(state->bh);
82 state->state = I2C_ECHO_STATE_START_SEND;
83 i2c_bus_master(state->bus, state->bh);
90
91 break;
92
93 case I2C_NACK:
94 break;
95
96 default:
97 return -1;

--- 65 unchanged lines hidden ---
84
85 break;
86
87 case I2C_NACK:
88 break;
89
90 default:
91 return -1;

--- 65 unchanged lines hidden ---