diff options
author | Nicolas Saenz Julienne <nsaenzjulienne@suse.de> | 2020-06-29 18:09:09 +0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2020-07-01 16:47:03 +0300 |
commit | a7983fd9462560884056a91a7ffa346eeb9eb421 (patch) | |
tree | e4172fb284cad605401956c70132e76cf7301c3f /drivers/staging/vc04_services/interface | |
parent | b5f1547b6e3bddbbac263a1c7adfb51427a57a2c (diff) | |
download | linux-a7983fd9462560884056a91a7ffa346eeb9eb421.tar.xz |
staging: vchi: Get rid of struct vchi_instance_handle
The idea behind this was to create an opaque handle to struct
vchiq_instance. This can be achieved without creating a new type by
means of a forward declaration of struct vchiq_instance.
This saves us from a lot of useless casting and overall simplifies code.
Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Link: https://lore.kernel.org/r/20200629150945.10720-12-nsaenzjulienne@suse.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/vc04_services/interface')
-rw-r--r-- | drivers/staging/vc04_services/interface/vchi/vchi.h | 12 | ||||
-rw-r--r-- | drivers/staging/vc04_services/interface/vchiq_arm/vchiq_shim.c | 30 |
2 files changed, 15 insertions, 27 deletions
diff --git a/drivers/staging/vc04_services/interface/vchi/vchi.h b/drivers/staging/vc04_services/interface/vchi/vchi.h index 1daef5ad70f1..6b73d8fb394a 100644 --- a/drivers/staging/vc04_services/interface/vchi/vchi.h +++ b/drivers/staging/vc04_services/interface/vchi/vchi.h @@ -49,8 +49,8 @@ struct service_creation { void *callback_param; }; -// Opaque handle for a VCHI instance -struct vchi_instance_handle; +// Opaque handle for a VCHIQ instance +struct vchiq_instance; // Opaque handle for a server or client struct vchi_service_handle; @@ -61,19 +61,19 @@ struct vchi_service_handle; *****************************************************************************/ // Routine used to initialise the vchi on both local + remote connections -extern int32_t vchi_initialise(struct vchi_instance_handle **instance_handle); +extern int32_t vchi_initialise(struct vchiq_instance **instance); -extern int32_t vchi_connect(struct vchi_instance_handle *instance_handle); +extern int32_t vchi_connect(struct vchiq_instance *instance); //When this is called, ensure that all services have no data pending. //Bulk transfers can remain 'queued' -extern int32_t vchi_disconnect(struct vchi_instance_handle *instance_handle); +extern int32_t vchi_disconnect(struct vchiq_instance *instance); /****************************************************************************** * Global service API *****************************************************************************/ // Routine to open a named service -extern int32_t vchi_service_open(struct vchi_instance_handle *instance_handle, +extern int32_t vchi_service_open(struct vchiq_instance *instance, struct service_creation *setup, struct vchi_service_handle **handle); 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 54c2492b7c83..8758704d61c9 100644 --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_shim.c +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_shim.c @@ -287,7 +287,7 @@ EXPORT_SYMBOL(vchi_msg_hold); /*********************************************************** * Name: vchi_initialise * - * Arguments: struct vchi_instance_handle **instance_handle + * Arguments: struct vchiq_instance **instance * * Description: Initialises the hardware but does not transmit anything * When run as a Host App this will be called twice hence the need @@ -297,23 +297,16 @@ EXPORT_SYMBOL(vchi_msg_hold); * ***********************************************************/ -int32_t vchi_initialise(struct vchi_instance_handle **instance_handle) +int32_t vchi_initialise(struct vchiq_instance **instance) { - struct vchiq_instance *instance; - enum vchiq_status status; - - status = vchiq_initialise(&instance); - - *instance_handle = (struct vchi_instance_handle *)instance; - - return status; + return vchiq_initialise(instance); } EXPORT_SYMBOL(vchi_initialise); /*********************************************************** * Name: vchi_connect * - * Arguments: struct vchi_instance_handle *instance_handle + * Arguments: struct vchiq_instance *instance * * Description: Starts the command service on each connection, * causing INIT messages to be pinged back and forth @@ -321,10 +314,8 @@ EXPORT_SYMBOL(vchi_initialise); * Returns: 0 if successful, failure otherwise * ***********************************************************/ -int32_t vchi_connect(struct vchi_instance_handle *instance_handle) +int32_t vchi_connect(struct vchiq_instance *instance) { - struct vchiq_instance *instance = (struct vchiq_instance *)instance_handle; - return vchiq_connect(instance); } EXPORT_SYMBOL(vchi_connect); @@ -332,7 +323,7 @@ EXPORT_SYMBOL(vchi_connect); /*********************************************************** * Name: vchi_disconnect * - * Arguments: struct vchi_instance_handle *instance_handle + * Arguments: struct vchiq_instance *instance * * Description: Stops the command service on each connection, * causing DE-INIT messages to be pinged back and forth @@ -340,10 +331,8 @@ EXPORT_SYMBOL(vchi_connect); * Returns: 0 if successful, failure otherwise * ***********************************************************/ -int32_t vchi_disconnect(struct vchi_instance_handle *instance_handle) +int32_t vchi_disconnect(struct vchiq_instance *instance) { - struct vchiq_instance *instance = (struct vchiq_instance *)instance_handle; - return vchiq_shutdown(instance); } EXPORT_SYMBOL(vchi_disconnect); @@ -352,7 +341,7 @@ EXPORT_SYMBOL(vchi_disconnect); * Name: vchi_service_open * Name: vchi_service_create * - * Arguments: struct vchi_instance_handle *instance_handle + * Arguments: struct vchiq_instance *instance * struct service_creation *setup, * struct vchi_service_handle **handle * @@ -446,11 +435,10 @@ static void service_free(struct shim_service *service) } } -int32_t vchi_service_open(struct vchi_instance_handle *instance_handle, +int32_t vchi_service_open(struct vchiq_instance *instance, struct service_creation *setup, struct vchi_service_handle **handle) { - struct vchiq_instance *instance = (struct vchiq_instance *)instance_handle; struct shim_service *service = service_alloc(instance, setup); *handle = (struct vchi_service_handle *)service; |