@@ -15,6 +15,7 @@
#include <svc_msg.h>
#include "gpio.h"
+#include "i2c.h"
#include "i2s.h"
extern int bbb_backend;
@@ -73,26 +74,6 @@ struct protocol_version_rsp {
__u8 version_minor;
};
-/* I2C */
-struct i2c_functionality_rsp {
- __le32 functionality;
-};
-
-struct i2c_transfer_desc {
- __le16 addr;
- __le16 flags;
- __le16 size;
-};
-
-struct i2c_transfer_req {
- __le16 op_count;
- struct i2c_transfer_desc desc[0];
-};
-
-struct i2c_transfer_rsp {
- __u8 data[0];
-};
-
/* PWM */
struct pwm_count_rsp {
__u8 count;
@@ -146,9 +127,9 @@ struct op_msg {
struct gb_gpio_irq_unmask_request gpio_irq_unmask_req;
struct gb_gpio_irq_ack_request gpio_irq_ack_req;
struct gb_gpio_irq_event_request gpio_irq_event_req;
- struct i2c_functionality_rsp i2c_fcn_rsp;
- struct i2c_transfer_req i2c_xfer_req;
- struct i2c_transfer_rsp i2c_xfer_rsp;
+ struct gb_i2c_functionality_response i2c_fcn_rsp;
+ struct gb_i2c_transfer_request i2c_xfer_req;
+ struct gb_i2c_transfer_response i2c_xfer_rsp;
struct pwm_count_rsp pwm_cnt_rsp;
struct pwm_activate_req pwm_act_req;
struct pwm_deactivate_req pwm_deact_req;
@@ -72,7 +72,7 @@ void i2c_handler(__u8 *rbuf, size_t size)
break;
case OP_I2C_PROTOCOL_FUNCTIONALITY:
sz = sizeof(struct op_header) +
- sizeof(struct i2c_functionality_rsp);
+ sizeof(struct gb_i2c_functionality_response);
op_rsp->header.size = htole16((__u16)sz);
op_rsp->header.id = oph->id;
op_rsp->header.type = OP_RESPONSE | OP_I2C_PROTOCOL_FUNCTIONALITY;
@@ -110,18 +110,18 @@ void i2c_handler(__u8 *rbuf, size_t size)
break;
case OP_I2C_PROTOCOL_TRANSFER:
op_count = le16toh(op_req->i2c_xfer_req.op_count);
- write_data = (__u8 *)&op_req->i2c_xfer_req.desc[op_count];
+ write_data = (__u8 *)&op_req->i2c_xfer_req.ops[op_count];
gbsim_debug("Number of transfer ops %d\n", op_count);
for (i = 0; i < op_count; i++) {
- struct i2c_transfer_desc *desc;
+ struct gb_i2c_transfer_op *op;
__u16 addr;
__u16 flags;
__u16 size;
- desc = &op_req->i2c_xfer_req.desc[i];
- addr = le16toh(desc->addr);
- flags = le16toh(desc->flags);
- size = le16toh(desc->size);
+ op = &op_req->i2c_xfer_req.ops[i];
+ addr = le16toh(op->addr);
+ flags = le16toh(op->flags);
+ size = le16toh(op->size);
read_op = (flags & I2C_M_RD) ? true : false;
gbsim_debug("op %d: %s address %04x size %04x\n",
i, (read_op ? "read" : "write"),
Instead of duplicating the definitions, reuse the definitions in the newly split out greybus i2c.h header. Cc: Alex Elder <alex.elder@linaro.org> Cc: Greg Kroah-Hartman <gregkh@google.com> Signed-off-by: John Stultz <john.stultz@linaro.org> --- gbsim.h | 27 ++++----------------------- i2c.c | 14 +++++++------- 2 files changed, 11 insertions(+), 30 deletions(-)