/* mmal instance */
struct vchiq_mmal_instance *instance;
/* mmal port */
-@@ -167,6 +169,9 @@ struct vchiq_mmal_instance {
+@@ -168,6 +170,9 @@ struct vchiq_mmal_instance {
/* component to use next */
int component_idx;
struct vchiq_mmal_component component[VCHIQ_MMAL_MAX_COMPONENTS];
};
static struct mmal_msg_context *
-@@ -248,7 +253,44 @@ static void buffer_work_cb(struct work_s
+@@ -251,7 +256,44 @@ static void buffer_work_cb(struct work_s
msg_context->u.bulk.mmal_flags,
msg_context->u.bulk.dts,
msg_context->u.bulk.pts);
}
/* enqueue a bulk receive for a given message context */
-@@ -257,7 +299,6 @@ static int bulk_receive(struct vchiq_mma
+@@ -260,7 +302,6 @@ static int bulk_receive(struct vchiq_mma
struct mmal_msg_context *msg_context)
{
unsigned long rd_len;
rd_len = msg->u.buffer_from_host.buffer_header.length;
-@@ -293,45 +334,10 @@ static int bulk_receive(struct vchiq_mma
+@@ -294,45 +335,10 @@ static int bulk_receive(struct vchiq_mma
msg_context->u.bulk.dts = msg->u.buffer_from_host.buffer_header.dts;
msg_context->u.bulk.pts = msg->u.buffer_from_host.buffer_header.pts;
}
/* data in message, memcpy from packet into output buffer */
-@@ -379,6 +385,8 @@ buffer_from_host(struct vchiq_mmal_insta
+@@ -380,6 +386,8 @@ buffer_from_host(struct vchiq_mmal_insta
/* initialise work structure ready to schedule callback */
INIT_WORK(&msg_context->u.bulk.work, buffer_work_cb);
+ INIT_WORK(&msg_context->u.bulk.buffer_to_host_work,
+ buffer_to_host_work_cb);
- /* prep the buffer from host message */
- memset(&m, 0xbc, sizeof(m)); /* just to make debug clearer */
-@@ -459,7 +467,7 @@ static void buffer_to_host_cb(struct vch
+ atomic_inc(&port->buffers_with_vpu);
+
+@@ -465,7 +473,7 @@ static void buffer_to_host_cb(struct vch
if (msg->u.buffer_from_host.buffer_header.flags &
MMAL_BUFFER_HEADER_FLAG_EOS) {
msg_context->u.bulk.status =
if (msg_context->u.bulk.status == 0)
return; /* successful bulk submission, bulk
* completion will trigger callback
-@@ -1793,6 +1801,9 @@ int vchiq_mmal_finalise(struct vchiq_mma
+@@ -1789,6 +1797,9 @@ int vchiq_mmal_finalise(struct vchiq_mma
mutex_unlock(&instance->vchiq_mutex);
vfree(instance->bulk_scratch);
idr_destroy(&instance->context_map);
-@@ -1862,6 +1873,11 @@ int vchiq_mmal_init(struct vchiq_mmal_in
+@@ -1858,6 +1869,11 @@ int vchiq_mmal_init(struct vchiq_mmal_in
params.callback_param = instance;
status = vchi_service_open(vchi_instance, ¶ms, &instance->handle);
if (status) {
pr_err("Failed to open VCHI service connection (status=%d)\n",
-@@ -1876,8 +1892,9 @@ int vchiq_mmal_init(struct vchiq_mmal_in
+@@ -1872,8 +1888,9 @@ int vchiq_mmal_init(struct vchiq_mmal_in
return 0;
err_close_services: