As https://lore.kernel.org/all/20240304211940.it.083-kees@kernel.org/ pointed out, to enforce the 0-sized destinations, the remaining 0-sized destinations need to be handled. Thus the struct gb_control_get_manifest_response and struct gb_i2c_transfer_response are removed.
Signed-off-by: clingfei clf700383@gmail.com --- drivers/staging/greybus/i2c.c | 9 ++++----- include/linux/greybus/greybus_protocols.h | 9 --------- 2 files changed, 4 insertions(+), 14 deletions(-)
diff --git a/drivers/staging/greybus/i2c.c b/drivers/staging/greybus/i2c.c index 14f1ff6d448c..2857c2834206 100644 --- a/drivers/staging/greybus/i2c.c +++ b/drivers/staging/greybus/i2c.c @@ -144,15 +144,14 @@ gb_i2c_operation_create(struct gb_connection *connection, }
static void gb_i2c_decode_response(struct i2c_msg *msgs, u32 msg_count, - struct gb_i2c_transfer_response *response) + u8 *data) { struct i2c_msg *msg = msgs; - u8 *data; u32 i;
- if (!response) + if (!data) return; - data = response->data; + for (i = 0; i < msg_count; i++) { if (msg->flags & I2C_M_RD) { memcpy(msg->buf, data, msg->len); @@ -188,7 +187,7 @@ static int gb_i2c_transfer_operation(struct gb_i2c_device *gb_i2c_dev,
ret = gb_operation_request_send_sync(operation); if (!ret) { - struct gb_i2c_transfer_response *response; + u8 *response;
response = operation->response->payload; gb_i2c_decode_response(msgs, msg_count, response); diff --git a/include/linux/greybus/greybus_protocols.h b/include/linux/greybus/greybus_protocols.h index 820134b0105c..14395f9300d6 100644 --- a/include/linux/greybus/greybus_protocols.h +++ b/include/linux/greybus/greybus_protocols.h @@ -110,11 +110,6 @@ struct gb_control_get_manifest_size_response { __le16 size; } __packed;
-/* Control protocol manifest get request has no payload */ -struct gb_control_get_manifest_response { - __u8 data[0]; -} __packed; - /* Control protocol [dis]connected request */ struct gb_control_connected_request { __le16 cport_id; @@ -678,10 +673,6 @@ struct gb_i2c_transfer_request { __le16 op_count; struct gb_i2c_transfer_op ops[]; /* op_count of these */ } __packed; -struct gb_i2c_transfer_response { - __u8 data[0]; /* inbound data */ -} __packed; -
/* GPIO */