1
0
Fork 0

staging: vchi: Use enum vchiq_bulk_mode instead of vchi's transmission flags

vchi has a set of transfer flags which almost map 1:1 to vchiq's own
transfer modes. For the sake of simplicity let's use the later and
delete vchi's.

Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Link: https://lore.kernel.org/r/20200629150945.10720-20-nsaenzjulienne@suse.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
zero-sugar-mainline-defconfig
Nicolas Saenz Julienne 2020-06-29 17:09:17 +02:00 committed by Greg Kroah-Hartman
parent a24ac57ef8
commit 0abd7412e9
6 changed files with 9 additions and 55 deletions

View File

@ -348,7 +348,7 @@ int bcm2835_audio_write(struct bcm2835_alsa_stream *alsa_stream,
/* Send the message to the videocore */
status = vchi_bulk_queue_transmit(instance->service,
src, count,
VCHI_FLAGS_BLOCK_UNTIL_DATA_READ,
VCHIQ_BULK_MODE_BLOCKING,
NULL);
} else {
while (count > 0) {

View File

@ -9,6 +9,7 @@
#include <sound/core.h>
#include <sound/pcm.h>
#include <sound/pcm-indirect.h>
#include "interface/vchiq_arm/vchiq_if.h"
#include "interface/vchi/vchi.h"
#define MAX_SUBSTREAMS (8)

View File

@ -105,14 +105,14 @@ extern int32_t vchi_held_msg_release(struct vchi_held_msg *message);
extern int32_t vchi_bulk_queue_receive(struct vchi_service *service,
void *data_dst,
uint32_t data_size,
enum vchi_flags flags,
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,
const void *data_src,
uint32_t data_size,
enum vchi_flags flags,
enum vchiq_bulk_mode mode,
void *transfer_handle);
/******************************************************************************

View File

@ -4,15 +4,6 @@
#ifndef VCHI_COMMON_H_
#define VCHI_COMMON_H_
//flags used when sending messages (must be bitmapped)
enum vchi_flags {
VCHI_FLAGS_NONE = 0x0,
VCHI_FLAGS_BLOCK_UNTIL_OP_COMPLETE = 0x1, // waits for message to be received, or sent (NB. not the same as being seen on other side)
VCHI_FLAGS_CALLBACK_WHEN_OP_COMPLETE = 0x2, // run a callback when message sent
VCHI_FLAGS_BLOCK_UNTIL_QUEUED = 0x4, // return once the transfer is in a queue ready to go
VCHI_FLAGS_BLOCK_UNTIL_DATA_READ = 0x10,
};
//callback reasons when an event occurs on a service
enum vchi_callback_reason {
/*

View File

@ -3,6 +3,7 @@
#include <linux/module.h>
#include <linux/types.h>
#include "vchiq_if.h"
#include "../vchi/vchi.h"
#include "vchiq.h"
#include "vchiq_core.h"
@ -57,30 +58,11 @@ EXPORT_SYMBOL(vchi_queue_kernel_message);
*
***********************************************************/
int32_t vchi_bulk_queue_receive(struct vchi_service *service, void *data_dst,
uint32_t data_size, enum vchi_flags flags,
uint32_t data_size, enum vchiq_bulk_mode mode,
void *bulk_handle)
{
enum vchiq_bulk_mode mode;
enum vchiq_status status;
switch ((int)flags) {
case VCHI_FLAGS_CALLBACK_WHEN_OP_COMPLETE
| VCHI_FLAGS_BLOCK_UNTIL_QUEUED:
WARN_ON(!service->callback);
mode = VCHIQ_BULK_MODE_CALLBACK;
break;
case VCHI_FLAGS_BLOCK_UNTIL_OP_COMPLETE:
mode = VCHIQ_BULK_MODE_BLOCKING;
break;
case VCHI_FLAGS_BLOCK_UNTIL_QUEUED:
case VCHI_FLAGS_NONE:
mode = VCHIQ_BULK_MODE_NOCALLBACK;
break;
default:
WARN(1, "unsupported message\n");
return VCHIQ_ERROR;
}
while (1) {
status = vchiq_bulk_receive(service->handle, data_dst,
data_size, bulk_handle, mode);
@ -116,31 +98,11 @@ EXPORT_SYMBOL(vchi_bulk_queue_receive);
int32_t vchi_bulk_queue_transmit(struct vchi_service *service,
const void *data_src,
uint32_t data_size,
enum vchi_flags flags,
enum vchiq_bulk_mode mode,
void *bulk_handle)
{
enum vchiq_bulk_mode mode;
enum vchiq_status status;
switch ((int)flags) {
case VCHI_FLAGS_CALLBACK_WHEN_OP_COMPLETE
| VCHI_FLAGS_BLOCK_UNTIL_QUEUED:
WARN_ON(!service->callback);
mode = VCHIQ_BULK_MODE_CALLBACK;
break;
case VCHI_FLAGS_BLOCK_UNTIL_DATA_READ:
case VCHI_FLAGS_BLOCK_UNTIL_OP_COMPLETE:
mode = VCHIQ_BULK_MODE_BLOCKING;
break;
case VCHI_FLAGS_BLOCK_UNTIL_QUEUED:
case VCHI_FLAGS_NONE:
mode = VCHIQ_BULK_MODE_NOCALLBACK;
break;
default:
WARN(1, "unsupported message\n");
return VCHIQ_ERROR;
}
while (1) {
status = vchiq_bulk_transmit(service->handle, data_src,
data_size, bulk_handle, mode);

View File

@ -29,6 +29,7 @@
#include "mmal-vchiq.h"
#include "mmal-msg.h"
#include "interface/vchiq_arm/vchiq_if.h"
#include "interface/vchi/vchi.h"
/*
@ -300,8 +301,7 @@ static void buffer_to_host_work_cb(struct work_struct *work)
* of 4 bytes
*/
(len + 3) & ~3,
VCHI_FLAGS_CALLBACK_WHEN_OP_COMPLETE |
VCHI_FLAGS_BLOCK_UNTIL_QUEUED,
VCHIQ_BULK_MODE_CALLBACK,
msg_context);
vchi_service_release(instance->service);