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>
This commit is contained in:
parent
a24ac57ef8
commit
0abd7412e9
|
@ -348,7 +348,7 @@ int bcm2835_audio_write(struct bcm2835_alsa_stream *alsa_stream,
|
||||||
/* Send the message to the videocore */
|
/* Send the message to the videocore */
|
||||||
status = vchi_bulk_queue_transmit(instance->service,
|
status = vchi_bulk_queue_transmit(instance->service,
|
||||||
src, count,
|
src, count,
|
||||||
VCHI_FLAGS_BLOCK_UNTIL_DATA_READ,
|
VCHIQ_BULK_MODE_BLOCKING,
|
||||||
NULL);
|
NULL);
|
||||||
} else {
|
} else {
|
||||||
while (count > 0) {
|
while (count > 0) {
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
#include <sound/core.h>
|
#include <sound/core.h>
|
||||||
#include <sound/pcm.h>
|
#include <sound/pcm.h>
|
||||||
#include <sound/pcm-indirect.h>
|
#include <sound/pcm-indirect.h>
|
||||||
|
#include "interface/vchiq_arm/vchiq_if.h"
|
||||||
#include "interface/vchi/vchi.h"
|
#include "interface/vchi/vchi.h"
|
||||||
|
|
||||||
#define MAX_SUBSTREAMS (8)
|
#define MAX_SUBSTREAMS (8)
|
||||||
|
|
|
@ -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,
|
extern int32_t vchi_bulk_queue_receive(struct vchi_service *service,
|
||||||
void *data_dst,
|
void *data_dst,
|
||||||
uint32_t data_size,
|
uint32_t data_size,
|
||||||
enum vchi_flags flags,
|
enum vchiq_bulk_mode mode,
|
||||||
void *transfer_handle);
|
void *transfer_handle);
|
||||||
|
|
||||||
// Routine to queue up data ready for transfer to the other (once they have signalled they are ready)
|
// 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(struct vchi_service *service,
|
||||||
const void *data_src,
|
const void *data_src,
|
||||||
uint32_t data_size,
|
uint32_t data_size,
|
||||||
enum vchi_flags flags,
|
enum vchiq_bulk_mode mode,
|
||||||
void *transfer_handle);
|
void *transfer_handle);
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
|
|
|
@ -4,15 +4,6 @@
|
||||||
#ifndef VCHI_COMMON_H_
|
#ifndef VCHI_COMMON_H_
|
||||||
#define 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
|
//callback reasons when an event occurs on a service
|
||||||
enum vchi_callback_reason {
|
enum vchi_callback_reason {
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
|
|
||||||
|
#include "vchiq_if.h"
|
||||||
#include "../vchi/vchi.h"
|
#include "../vchi/vchi.h"
|
||||||
#include "vchiq.h"
|
#include "vchiq.h"
|
||||||
#include "vchiq_core.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,
|
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)
|
void *bulk_handle)
|
||||||
{
|
{
|
||||||
enum vchiq_bulk_mode mode;
|
|
||||||
enum vchiq_status status;
|
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) {
|
while (1) {
|
||||||
status = vchiq_bulk_receive(service->handle, data_dst,
|
status = vchiq_bulk_receive(service->handle, data_dst,
|
||||||
data_size, bulk_handle, mode);
|
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,
|
int32_t vchi_bulk_queue_transmit(struct vchi_service *service,
|
||||||
const void *data_src,
|
const void *data_src,
|
||||||
uint32_t data_size,
|
uint32_t data_size,
|
||||||
enum vchi_flags flags,
|
enum vchiq_bulk_mode mode,
|
||||||
void *bulk_handle)
|
void *bulk_handle)
|
||||||
{
|
{
|
||||||
enum vchiq_bulk_mode mode;
|
|
||||||
enum vchiq_status status;
|
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) {
|
while (1) {
|
||||||
status = vchiq_bulk_transmit(service->handle, data_src,
|
status = vchiq_bulk_transmit(service->handle, data_src,
|
||||||
data_size, bulk_handle, mode);
|
data_size, bulk_handle, mode);
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
#include "mmal-vchiq.h"
|
#include "mmal-vchiq.h"
|
||||||
#include "mmal-msg.h"
|
#include "mmal-msg.h"
|
||||||
|
|
||||||
|
#include "interface/vchiq_arm/vchiq_if.h"
|
||||||
#include "interface/vchi/vchi.h"
|
#include "interface/vchi/vchi.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -300,8 +301,7 @@ static void buffer_to_host_work_cb(struct work_struct *work)
|
||||||
* of 4 bytes
|
* of 4 bytes
|
||||||
*/
|
*/
|
||||||
(len + 3) & ~3,
|
(len + 3) & ~3,
|
||||||
VCHI_FLAGS_CALLBACK_WHEN_OP_COMPLETE |
|
VCHIQ_BULK_MODE_CALLBACK,
|
||||||
VCHI_FLAGS_BLOCK_UNTIL_QUEUED,
|
|
||||||
msg_context);
|
msg_context);
|
||||||
|
|
||||||
vchi_service_release(instance->service);
|
vchi_service_release(instance->service);
|
||||||
|
|
Loading…
Reference in a new issue