media: allegro: add field for number of buffers
When pushing the buffers for the intermediate and reference frames to the MCU, the driver relied on the message size to calculate the number of buffers. As it is not necessary anymore to keep the messages binary compatible to the firmware, we can just explicitly write the number of buffers into the message. Signed-off-by: Michael Tretter <m.tretter@pengutronix.de> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
parent
3de1683966
commit
53c200ff49
|
@ -1115,6 +1115,7 @@ static int allegro_mcu_push_buffer_internal(struct allegro_channel *channel,
|
|||
msg->header.length = size - sizeof(msg->header);
|
||||
msg->header.type = type;
|
||||
msg->channel_id = channel->mcu_channel_id;
|
||||
msg->num_buffers = num_buffers;
|
||||
|
||||
buffer = msg->buffer;
|
||||
list_for_each_entry(al_buffer, list, head) {
|
||||
|
|
|
@ -156,7 +156,7 @@ allegro_enc_push_buffers(u32 *dst, struct mcu_msg_push_buffers_internal *msg)
|
|||
{
|
||||
unsigned int i = 0;
|
||||
struct mcu_msg_push_buffers_internal_buffer *buffer;
|
||||
unsigned int num_buffers = (msg->header.length - 4) / sizeof(*buffer);
|
||||
unsigned int num_buffers = msg->num_buffers;
|
||||
unsigned int j;
|
||||
|
||||
dst[i++] = msg->channel_id;
|
||||
|
|
|
@ -169,6 +169,7 @@ struct mcu_msg_push_buffers_internal_buffer {
|
|||
struct mcu_msg_push_buffers_internal {
|
||||
struct mcu_msg_header header;
|
||||
u32 channel_id;
|
||||
size_t num_buffers;
|
||||
struct mcu_msg_push_buffers_internal_buffer buffer[];
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
|
|
Loading…
Reference in New Issue