Commit 7beb354f authored by Michael Zoran's avatar Michael Zoran Committed by Greg Kroah-Hartman

staging: bcm2835-camera: Convert client_context field to a 32 bit handle

The client_context field is passed around which is really just a pointer
to a msg_context.  A lookup table mechanism for msg_context was added
previously, so convert this field to a handle as well.

The firmware never interperates the client_context, just passed it back.
Signed-off-by: default avatarMichael Zoran <mzoran@crowfest.net>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent c45fe9c6
...@@ -250,7 +250,7 @@ struct mmal_driver_buffer { ...@@ -250,7 +250,7 @@ struct mmal_driver_buffer {
u32 magic; u32 magic;
u32 component_handle; u32 component_handle;
u32 port_handle; u32 port_handle;
void *client_context; u32 client_context;
}; };
/* buffer header */ /* buffer header */
......
...@@ -532,7 +532,7 @@ buffer_from_host(struct vchiq_mmal_instance *instance, ...@@ -532,7 +532,7 @@ buffer_from_host(struct vchiq_mmal_instance *instance,
m.u.buffer_from_host.drvbuf.magic = MMAL_MAGIC; m.u.buffer_from_host.drvbuf.magic = MMAL_MAGIC;
m.u.buffer_from_host.drvbuf.component_handle = port->component->handle; m.u.buffer_from_host.drvbuf.component_handle = port->component->handle;
m.u.buffer_from_host.drvbuf.port_handle = port->handle; m.u.buffer_from_host.drvbuf.port_handle = port->handle;
m.u.buffer_from_host.drvbuf.client_context = msg_context; m.u.buffer_from_host.drvbuf.client_context = msg_context->handle;
/* buffer header */ /* buffer header */
m.u.buffer_from_host.buffer_header.cmd = 0; m.u.buffer_from_host.buffer_header.cmd = 0;
...@@ -614,12 +614,20 @@ static void buffer_to_host_cb(struct vchiq_mmal_instance *instance, ...@@ -614,12 +614,20 @@ static void buffer_to_host_cb(struct vchiq_mmal_instance *instance,
struct mmal_msg *msg, u32 msg_len) struct mmal_msg *msg, u32 msg_len)
{ {
struct mmal_msg_context *msg_context; struct mmal_msg_context *msg_context;
u32 handle;
pr_debug("buffer_to_host_cb: instance:%p msg:%p msg_len:%d\n", pr_debug("buffer_to_host_cb: instance:%p msg:%p msg_len:%d\n",
instance, msg, msg_len); instance, msg, msg_len);
if (msg->u.buffer_from_host.drvbuf.magic == MMAL_MAGIC) { if (msg->u.buffer_from_host.drvbuf.magic == MMAL_MAGIC) {
msg_context = msg->u.buffer_from_host.drvbuf.client_context; handle = msg->u.buffer_from_host.drvbuf.client_context;
msg_context = lookup_msg_context(instance, handle);
if (!msg_context) {
pr_err("drvbuf.client_context(%u) is invalid\n",
handle);
return;
}
} else { } else {
pr_err("MMAL_MSG_TYPE_BUFFER_TO_HOST with bad magic\n"); pr_err("MMAL_MSG_TYPE_BUFFER_TO_HOST with bad magic\n");
return; return;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment