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 --- |