Skip to content

Commit

Permalink
core/i2c: Add request state tracking
Browse files Browse the repository at this point in the history
Allow the submitter to track the state of an I2C request by adding
a state field to the request. This avoids the need to use a stub
completion callback in some cases.

Signed-off-by: Oliver O'Halloran <oohall@gmail.com>
Signed-off-by: Stewart Smith <stewart@linux.ibm.com>
  • Loading branch information
oohal authored and stewartsmith committed Mar 28, 2019
1 parent 722cf1c commit a31085d
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 2 deletions.
1 change: 1 addition & 0 deletions hw/p8-i2c.c
Original file line number Diff line number Diff line change
Expand Up @@ -441,6 +441,7 @@ static void p8_i2c_complete_request(struct p8_i2c_master *master,
list_del(&req->link);
master->state = state_idle;
req->result = ret;
req->req_state = i2c_req_done;

/* Schedule re-enabling of sensor cache */
if (master->occ_cache_dis)
Expand Down
14 changes: 12 additions & 2 deletions include/i2c.h
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,12 @@ struct i2c_request {
uint32_t offset; /* Internal device offset */
uint32_t rw_len; /* Length of the data request */
void *rw_buf; /* Data request buffer */
enum i2c_request_state {
i2c_req_new, /* un-initialised */
i2c_req_queued, /* waiting in the queue */
i2c_req_done, /* request has been completed */
} req_state;

void (*completion)( /* Completion callback */
int rc, struct i2c_request *req);
void *user_data; /* Client data */
Expand All @@ -68,9 +74,13 @@ struct i2c_request {
extern void i2c_add_bus(struct i2c_bus *bus);
extern struct i2c_bus *i2c_find_bus_by_id(uint32_t opal_id);

static inline int i2c_queue_req(struct i2c_request *req)
static inline int64_t i2c_queue_req(struct i2c_request *req)
{
return req->bus->queue_req(req);
int64_t ret = req->bus->queue_req(req);

if (!ret)
req->req_state = i2c_req_queued;
return ret;
}

static inline uint64_t i2c_run_req(struct i2c_request *req)
Expand Down

0 comments on commit a31085d

Please sign in to comment.