diff options
Diffstat (limited to 'drivers/staging/vc04_services/interface/vchiq_arm/vchiq_shim.c')
-rw-r--r-- | drivers/staging/vc04_services/interface/vchiq_arm/vchiq_shim.c | 56 |
1 files changed, 8 insertions, 48 deletions
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 48984abc3854..8af95fc361ed 100644 --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_shim.c +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_shim.c @@ -556,6 +556,7 @@ EXPORT_SYMBOL(vchi_connect); int32_t vchi_disconnect(VCHI_INSTANCE_T instance_handle) { VCHIQ_INSTANCE_T instance = (VCHIQ_INSTANCE_T)instance_handle; + return vchiq_status_to_vchi(vchiq_shutdown(instance)); } EXPORT_SYMBOL(vchi_disconnect); @@ -733,6 +734,7 @@ int32_t vchi_service_close(const VCHI_SERVICE_HANDLE_T handle) { int32_t ret = -1; SHIM_SERVICE_T *service = (SHIM_SERVICE_T *)handle; + if (service) { VCHIQ_STATUS_T status = vchiq_close_service(service->handle); if (status == VCHIQ_SUCCESS) { @@ -750,8 +752,10 @@ int32_t vchi_service_destroy(const VCHI_SERVICE_HANDLE_T handle) { int32_t ret = -1; SHIM_SERVICE_T *service = (SHIM_SERVICE_T *)handle; + if (service) { VCHIQ_STATUS_T status = vchiq_remove_service(service->handle); + if (status == VCHIQ_SUCCESS) { service_free(service); service = NULL; @@ -770,6 +774,7 @@ int32_t vchi_service_set_option(const VCHI_SERVICE_HANDLE_T handle, int32_t ret = -1; SHIM_SERVICE_T *service = (SHIM_SERVICE_T *)handle; VCHIQ_SERVICE_OPTION_T vchiq_option; + switch (option) { case VCHI_SERVICE_OPTION_TRACE: vchiq_option = VCHIQ_SERVICE_OPTION_TRACE; @@ -797,6 +802,7 @@ int32_t vchi_get_peer_version(const VCHI_SERVICE_HANDLE_T handle, short *peer_ve { int32_t ret = -1; SHIM_SERVICE_T *service = (SHIM_SERVICE_T *)handle; + if (service) { VCHIQ_STATUS_T status; @@ -808,54 +814,6 @@ int32_t vchi_get_peer_version(const VCHI_SERVICE_HANDLE_T handle, short *peer_ve } EXPORT_SYMBOL(vchi_get_peer_version); -/* ---------------------------------------------------------------------- - * read a uint32_t from buffer. - * network format is defined to be little endian - * -------------------------------------------------------------------- */ -uint32_t -vchi_readbuf_uint32(const void *_ptr) -{ - const unsigned char *ptr = _ptr; - return ptr[0] | (ptr[1] << 8) | (ptr[2] << 16) | (ptr[3] << 24); -} - -/* ---------------------------------------------------------------------- - * write a uint32_t to buffer. - * network format is defined to be little endian - * -------------------------------------------------------------------- */ -void -vchi_writebuf_uint32(void *_ptr, uint32_t value) -{ - unsigned char *ptr = _ptr; - ptr[0] = (unsigned char)((value >> 0) & 0xFF); - ptr[1] = (unsigned char)((value >> 8) & 0xFF); - ptr[2] = (unsigned char)((value >> 16) & 0xFF); - ptr[3] = (unsigned char)((value >> 24) & 0xFF); -} - -/* ---------------------------------------------------------------------- - * read a uint16_t from buffer. - * network format is defined to be little endian - * -------------------------------------------------------------------- */ -uint16_t -vchi_readbuf_uint16(const void *_ptr) -{ - const unsigned char *ptr = _ptr; - return ptr[0] | (ptr[1] << 8); -} - -/* ---------------------------------------------------------------------- - * write a uint16_t into the buffer. - * network format is defined to be little endian - * -------------------------------------------------------------------- */ -void -vchi_writebuf_uint16(void *_ptr, uint16_t value) -{ - unsigned char *ptr = _ptr; - ptr[0] = (value >> 0) & 0xFF; - ptr[1] = (value >> 8) & 0xFF; -} - /*********************************************************** * Name: vchi_service_use * @@ -869,6 +827,7 @@ vchi_writebuf_uint16(void *_ptr, uint16_t value) int32_t vchi_service_use(const VCHI_SERVICE_HANDLE_T handle) { int32_t ret = -1; + SHIM_SERVICE_T *service = (SHIM_SERVICE_T *)handle; if (service) ret = vchiq_status_to_vchi(vchiq_use_service(service->handle)); @@ -889,6 +848,7 @@ EXPORT_SYMBOL(vchi_service_use); int32_t vchi_service_release(const VCHI_SERVICE_HANDLE_T handle) { int32_t ret = -1; + SHIM_SERVICE_T *service = (SHIM_SERVICE_T *)handle; if (service) ret = vchiq_status_to_vchi( |