summaryrefslogtreecommitdiffstats
path: root/drivers/staging/vc04_services/interface
diff options
context:
space:
mode:
authorNicolas Saenz Julienne <nsaenzjulienne@suse.de>2020-06-29 17:09:29 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2020-07-01 15:47:06 +0200
commit3a8895a9219f6b58d006546c40c1addb764a7c1d (patch)
treecf061fa42bc9f72624d029bdaf22c6982cc56c79 /drivers/staging/vc04_services/interface
parent65c7536672b9ee82da399eed6f5f4f658012c758 (diff)
staging: vchi: Get rid of struct vchi_service
The structure only contains a single parameter, which is the underlying vchiq handle. Get rid of the struct and directly pass the handle around. Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de> Link: https://lore.kernel.org/r/20200629150945.10720-32-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.h25
-rw-r--r--drivers/staging/vc04_services/interface/vchiq_arm/vchiq_shim.c99
2 files changed, 33 insertions, 91 deletions
diff --git a/drivers/staging/vc04_services/interface/vchi/vchi.h b/drivers/staging/vc04_services/interface/vchi/vchi.h
index 4afa6e9f57c4..74fd169e079a 100644
--- a/drivers/staging/vc04_services/interface/vchi/vchi.h
+++ b/drivers/staging/vc04_services/interface/vchi/vchi.h
@@ -21,10 +21,6 @@ struct vchi_held_msg {
void *message;
};
-struct vchi_service {
- unsigned int handle;
-};
-
// Opaque handle for a VCHIQ instance
struct vchiq_instance;
@@ -46,24 +42,23 @@ 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 vchiq_instance *instance,
- struct vchiq_service_params *setup,
- struct vchi_service **service);
+extern int vchi_service_open(struct vchiq_instance *instance,
+ struct vchiq_service_params *params,
+ unsigned *handle);
-extern int32_t vchi_get_peer_version(struct vchi_service *service,
- short *peer_version);
+extern int32_t vchi_get_peer_version(unsigned handle, short *peer_version);
// Routine to close a named service
-extern int32_t vchi_service_close(struct vchi_service *service);
+extern int32_t vchi_service_close(unsigned handle);
// Routine to increment ref count on a named service
-extern int32_t vchi_service_use(struct vchi_service *service);
+extern int32_t vchi_service_use(unsigned handle);
// Routine to decrement ref count on a named service
-extern int32_t vchi_service_release(struct vchi_service *service);
+extern int32_t vchi_service_release(unsigned handle);
/* Routine to send a message from kernel memory across a service */
-extern int vchi_queue_kernel_message(struct vchi_service *service, void *data,
+extern int vchi_queue_kernel_message(unsigned handle, void *data,
unsigned int size);
// Routine to look at a message in place.
@@ -87,14 +82,14 @@ extern int32_t vchi_held_msg_release(struct vchi_held_msg *message);
*****************************************************************************/
// Routine to prepare interface for a transfer from the other side
-extern int32_t vchi_bulk_queue_receive(struct vchi_service *service,
+extern int32_t vchi_bulk_queue_receive(unsigned handle,
void *data_dst,
uint32_t data_size,
enum vchiq_bulk_mode mode,
void *transfer_handle);
// Routine to queue up data ready for transfer to the other (once they have signalled they are ready)
-extern int32_t vchi_bulk_queue_transmit(struct vchi_service *service,
+extern int32_t vchi_bulk_queue_transmit(unsigned handle,
const void *data_src,
uint32_t data_size,
enum vchiq_bulk_mode mode,
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 30083927b33d..578346965da6 100644
--- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_shim.c
+++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_shim.c
@@ -10,14 +10,12 @@
#include "vchiq.h"
#include "vchiq_core.h"
-int vchi_queue_kernel_message(struct vchi_service *service, void *data,
- unsigned int size)
+int vchi_queue_kernel_message(unsigned handle, void *data, unsigned int size)
{
enum vchiq_status status;
while (1) {
- status = vchiq_queue_kernel_message(service->handle, data,
- size);
+ status = vchiq_queue_kernel_message(handle, data, size);
/*
* vchiq_queue_message() may return VCHIQ_RETRY, so we need to
@@ -48,15 +46,15 @@ EXPORT_SYMBOL(vchi_queue_kernel_message);
* Returns: int32_t - success == 0
*
***********************************************************/
-int32_t vchi_bulk_queue_receive(struct vchi_service *service, void *data_dst,
+int32_t vchi_bulk_queue_receive(unsigned handle, void *data_dst,
uint32_t data_size, enum vchiq_bulk_mode mode,
void *bulk_handle)
{
enum vchiq_status status;
while (1) {
- status = vchiq_bulk_receive(service->handle, data_dst,
- data_size, bulk_handle, mode);
+ status = vchiq_bulk_receive(handle, data_dst, data_size,
+ bulk_handle, mode);
/*
* vchiq_bulk_receive() may return VCHIQ_RETRY, so we need to
* implement a retry mechanism since this function is supposed
@@ -86,17 +84,15 @@ EXPORT_SYMBOL(vchi_bulk_queue_receive);
* Returns: int32_t - success == 0
*
***********************************************************/
-int32_t vchi_bulk_queue_transmit(struct vchi_service *service,
- const void *data_src,
- uint32_t data_size,
- enum vchiq_bulk_mode mode,
+int32_t vchi_bulk_queue_transmit(unsigned handle, const void *data_src,
+ uint32_t data_size, enum vchiq_bulk_mode mode,
void *bulk_handle)
{
enum vchiq_status status;
while (1) {
- status = vchiq_bulk_transmit(service->handle, data_src,
- data_size, bulk_handle, mode);
+ status = vchiq_bulk_transmit(handle, data_src, data_size,
+ bulk_handle, mode);
/*
* vchiq_bulk_transmit() may return VCHIQ_RETRY, so we need to
@@ -245,7 +241,7 @@ EXPORT_SYMBOL(vchi_disconnect);
*
* Arguments: struct vchiq_instance *instance
* struct service_creation *setup,
- * struct vchi_service **service
+ * unsigned *handle
*
* Description: Routine to open a service
*
@@ -253,103 +249,54 @@ EXPORT_SYMBOL(vchi_disconnect);
*
***********************************************************/
-static struct vchi_service *service_alloc(void)
-{
- return kzalloc(sizeof(struct vchi_service), GFP_KERNEL);
-}
-
-static void service_free(struct vchi_service *service)
-{
- if (service)
- kfree(service);
-}
-
int32_t vchi_service_open(struct vchiq_instance *instance,
- struct vchiq_service_params *params,
- struct vchi_service **service)
+ struct vchiq_service_params *params,
+ unsigned *handle)
{
-
- *service = service_alloc();
- if (*service) {
- enum vchiq_status status;
-
- status = vchiq_open_service(instance, params,
- &((*service)->handle));
- if (status != VCHIQ_SUCCESS) {
- service_free(*service);
- *service = NULL;
- }
- }
-
- return *service ? 0 : -1;
+ return vchiq_open_service(instance, params, handle);
}
EXPORT_SYMBOL(vchi_service_open);
-int32_t vchi_service_close(struct vchi_service *service)
+int32_t vchi_service_close(unsigned handle)
{
- int32_t ret = -1;
-
- if (service) {
- enum vchiq_status status = vchiq_close_service(service->handle);
- if (status == VCHIQ_SUCCESS)
- service_free(service);
-
- ret = status;
- }
- return ret;
+ return vchiq_close_service(handle);
}
EXPORT_SYMBOL(vchi_service_close);
-int32_t vchi_get_peer_version(struct vchi_service *service, short *peer_version)
+int32_t vchi_get_peer_version(unsigned handle, short *peer_version)
{
- int32_t ret = -1;
-
- if (service) {
- enum vchiq_status status;
-
- status = vchiq_get_peer_version(service->handle, peer_version);
- ret = status;
- }
- return ret;
+ return vchiq_get_peer_version(handle, peer_version);
}
EXPORT_SYMBOL(vchi_get_peer_version);
/***********************************************************
* Name: vchi_service_use
*
- * Arguments: struct vchi_service *service
+ * Arguments: unsigned handle
*
* Description: Routine to increment refcount on a service
*
* Returns: void
*
***********************************************************/
-int32_t vchi_service_use(struct vchi_service *service)
+int32_t vchi_service_use(unsigned handle)
{
- int32_t ret = -1;
-
- if (service)
- ret = vchiq_use_service(service->handle);
- return ret;
+ return vchiq_use_service(handle);
}
EXPORT_SYMBOL(vchi_service_use);
/***********************************************************
* Name: vchi_service_release
*
- * Arguments: struct vchi_service *service
+ * Arguments: unsigned handle
*
* Description: Routine to decrement refcount on a service
*
* Returns: void
*
***********************************************************/
-int32_t vchi_service_release(struct vchi_service *service)
+int32_t vchi_service_release(unsigned handle)
{
- int32_t ret = -1;
-
- if (service)
- ret = vchiq_release_service(service->handle);
- return ret;
+ return vchiq_release_service(handle);
}
EXPORT_SYMBOL(vchi_service_release);