Commit f23f8a05 authored by Adrien Thierry's avatar Adrien Thierry Committed by Greg Kroah-Hartman

staging: vchiq_arm: pass vchiq instance to 'vchiq_get_service_userdata'

In order to remove the 'vchiq_states' global array, we need to pass the
vchiq_instance reference to the 'handle_to_service' function, as well as
to all functions that call 'handle_to_service'. This will allow
accessing the vchiq state through the vchiq instance instead of through
the global array.

'handle_to_service' is called by 'vchiq_get_service_userdata'.
Therefore, pass the vchiq instance reference to it.
Tested-by: default avatarStefan Wahren <stefan.wahren@i2se.com>
Signed-off-by: default avatarAdrien Thierry <athierry@redhat.com>
Link: https://lore.kernel.org/r/20220518191126.60396-7-athierry@redhat.comSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent bad44825
...@@ -96,7 +96,8 @@ static enum vchiq_status audio_vchi_callback(struct vchiq_instance *vchiq_instan ...@@ -96,7 +96,8 @@ static enum vchiq_status audio_vchi_callback(struct vchiq_instance *vchiq_instan
struct vchiq_header *header, struct vchiq_header *header,
unsigned int handle, void *userdata) unsigned int handle, void *userdata)
{ {
struct bcm2835_audio_instance *instance = vchiq_get_service_userdata(handle); struct bcm2835_audio_instance *instance = vchiq_get_service_userdata(vchiq_instance,
handle);
struct vc_audio_msg *m; struct vc_audio_msg *m;
if (reason != VCHIQ_MESSAGE_AVAILABLE) if (reason != VCHIQ_MESSAGE_AVAILABLE)
......
...@@ -109,7 +109,7 @@ extern enum vchiq_status vchiq_bulk_transmit(struct vchiq_instance *instance, un ...@@ -109,7 +109,7 @@ extern enum vchiq_status vchiq_bulk_transmit(struct vchiq_instance *instance, un
extern enum vchiq_status vchiq_bulk_receive(struct vchiq_instance *instance, unsigned int service, extern enum vchiq_status vchiq_bulk_receive(struct vchiq_instance *instance, unsigned int service,
void *data, unsigned int size, void *userdata, void *data, unsigned int size, void *userdata,
enum vchiq_bulk_mode mode); enum vchiq_bulk_mode mode);
extern void *vchiq_get_service_userdata(unsigned int service); extern void *vchiq_get_service_userdata(struct vchiq_instance *instance, unsigned int service);
extern enum vchiq_status vchiq_get_peer_version(struct vchiq_instance *instance, extern enum vchiq_status vchiq_get_peer_version(struct vchiq_instance *instance,
unsigned int handle, unsigned int handle,
short *peer_version); short *peer_version);
......
...@@ -411,7 +411,7 @@ vchiq_get_client_id(struct vchiq_instance *instance, unsigned int handle) ...@@ -411,7 +411,7 @@ vchiq_get_client_id(struct vchiq_instance *instance, unsigned int handle)
} }
void * void *
vchiq_get_service_userdata(unsigned int handle) vchiq_get_service_userdata(struct vchiq_instance *instance, unsigned int handle)
{ {
void *userdata; void *userdata;
struct vchiq_service *service; struct vchiq_service *service;
......
...@@ -553,7 +553,7 @@ static enum vchiq_status service_callback(struct vchiq_instance *vchiq_instance, ...@@ -553,7 +553,7 @@ static enum vchiq_status service_callback(struct vchiq_instance *vchiq_instance,
struct vchiq_header *header, struct vchiq_header *header,
unsigned int handle, void *bulk_ctx) unsigned int handle, void *bulk_ctx)
{ {
struct vchiq_mmal_instance *instance = vchiq_get_service_userdata(handle); struct vchiq_mmal_instance *instance = vchiq_get_service_userdata(vchiq_instance, handle);
u32 msg_len; u32 msg_len;
struct mmal_msg *msg; struct mmal_msg *msg;
struct mmal_msg_context *msg_context; struct mmal_msg_context *msg_context;
......
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