diff --git a/drivers/staging/vc04_services/interface/vchi/vchi.h b/drivers/staging/vc04_services/interface/vchi/vchi.h index 74fd169e079a..72771fdee9d6 100644 --- a/drivers/staging/vc04_services/interface/vchi/vchi.h +++ b/drivers/staging/vc04_services/interface/vchi/vchi.h @@ -11,16 +11,6 @@ // Macros to manipulate 'FOURCC' values #define MAKE_FOURCC(x) ((int32_t)((x[0] << 24) | (x[1] << 16) | (x[2] << 8) | x[3])) -// Opaque service information -struct opaque_vchi_service_t; - -// Descriptor for a held message. Allocated by client, initialised by vchi_msg_hold, -// vchi_msg_iter_hold or vchi_msg_iter_hold_next. Fields are for internal VCHI use only. -struct vchi_held_msg { - struct opaque_vchi_service_t *service; - void *message; -}; - // Opaque handle for a VCHIQ instance struct vchiq_instance; @@ -67,7 +57,7 @@ extern int vchi_queue_kernel_message(unsigned handle, void *data, extern int32_t vchi_msg_hold(unsigned handle, void **data, // } may be NULL, as info can be uint32_t *msg_size, // } obtained from HELD_MSG_T - struct vchi_held_msg *message_descriptor); + struct vchiq_header **message); /******************************************************************************* * Global service support API - operations on held messages @@ -75,7 +65,7 @@ extern int32_t vchi_msg_hold(unsigned handle, ******************************************************************************/ // Routine to release a held message after it has been processed -extern int32_t vchi_held_msg_release(struct vchi_held_msg *message); +extern int32_t vchi_held_msg_release(unsigned handle, struct vchiq_header *message); /****************************************************************************** * Global bulk API diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_shim.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_shim.c index 578346965da6..6eb9a9878641 100644 --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_shim.c +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_shim.c @@ -113,7 +113,8 @@ EXPORT_SYMBOL(vchi_bulk_queue_transmit); /*********************************************************** * Name: vchi_held_msg_release * - * Arguments: struct vchi_held_msg *message + * Arguments: unsgined handle + * struct vchiq_header *message * * Description: Routine to release a held message (after it has been read with * vchi_msg_hold) @@ -121,7 +122,7 @@ EXPORT_SYMBOL(vchi_bulk_queue_transmit); * Returns: int32_t - success == 0 * ***********************************************************/ -int32_t vchi_held_msg_release(struct vchi_held_msg *message) +int32_t vchi_held_msg_release(unsigned handle, struct vchiq_header *message) { /* * Convert the service field pointer back to an @@ -131,8 +132,7 @@ int32_t vchi_held_msg_release(struct vchi_held_msg *message) * to a pointer. */ - vchiq_release_message((unsigned int)(long)message->service, - (struct vchiq_header *)message->message); + vchiq_release_message(handle, message); return 0; } @@ -144,7 +144,7 @@ EXPORT_SYMBOL(vchi_held_msg_release); * Arguments: struct vchi_service *service, * void **data, * uint32_t *msg_size, - * struct vchi_held_msg *message_handle + * struct vchiq_header **message * * Description: Routine to return a pointer to the current message (to allow * in place processing). The message is dequeued - don't forget @@ -155,7 +155,7 @@ EXPORT_SYMBOL(vchi_held_msg_release); * ***********************************************************/ int32_t vchi_msg_hold(unsigned handle, void **data, uint32_t *msg_size, - struct vchi_held_msg *message_handle) + struct vchiq_header **message) { struct vchiq_header *header; @@ -165,18 +165,7 @@ int32_t vchi_msg_hold(unsigned handle, void **data, uint32_t *msg_size, *data = header->data; *msg_size = header->size; - - /* - * upcast the unsigned int which is an int - * to a pointer and stuff it in the held message. - * This pointer is opaque to everything except - * vchi_held_msg_release which simply downcasts it back - * to an int. - */ - - message_handle->service = - (struct opaque_vchi_service_t *)(long)handle; - message_handle->message = header; + *message = header; return 0; }