lkml.org 
[lkml]   [2020]   [Jun]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 22/50] staging: vchi: Use enum vchiq_bulk_mode instead of vchi's transmission flags
    Date
    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>
    ---
    .../bcm2835-audio/bcm2835-vchiq.c | 2 +-
    .../vc04_services/bcm2835-audio/bcm2835.h | 1 +
    .../vc04_services/interface/vchi/vchi.h | 4 +-
    .../interface/vchi/vchi_common.h | 9 ----
    .../interface/vchiq_arm/vchiq_shim.c | 44 ++-----------------
    .../vc04_services/vchiq-mmal/mmal-vchiq.c | 4 +-
    6 files changed, 9 insertions(+), 55 deletions(-)

    diff --git a/drivers/staging/vc04_services/bcm2835-audio/bcm2835-vchiq.c b/drivers/staging/vc04_services/bcm2835-audio/bcm2835-vchiq.c
    index 68119246f10b..565853ec1e7a 100644
    --- a/drivers/staging/vc04_services/bcm2835-audio/bcm2835-vchiq.c
    +++ b/drivers/staging/vc04_services/bcm2835-audio/bcm2835-vchiq.c
    @@ -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) {
    diff --git a/drivers/staging/vc04_services/bcm2835-audio/bcm2835.h b/drivers/staging/vc04_services/bcm2835-audio/bcm2835.h
    index 2a94e825194f..7a0e4ab50fc7 100644
    --- a/drivers/staging/vc04_services/bcm2835-audio/bcm2835.h
    +++ b/drivers/staging/vc04_services/bcm2835-audio/bcm2835.h
    @@ -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)
    diff --git a/drivers/staging/vc04_services/interface/vchi/vchi.h b/drivers/staging/vc04_services/interface/vchi/vchi.h
    index 92ce811fc28d..9a74ca4e1062 100644
    --- a/drivers/staging/vc04_services/interface/vchi/vchi.h
    +++ b/drivers/staging/vc04_services/interface/vchi/vchi.h
    @@ -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);

    /******************************************************************************
    diff --git a/drivers/staging/vc04_services/interface/vchi/vchi_common.h b/drivers/staging/vc04_services/interface/vchi/vchi_common.h
    index e07376fe4dfd..52b447c19445 100644
    --- a/drivers/staging/vc04_services/interface/vchi/vchi_common.h
    +++ b/drivers/staging/vc04_services/interface/vchi/vchi_common.h
    @@ -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 {
    /*
    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 0466512cfe3c..3a5545e0db6b 100644
    --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_shim.c
    +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_shim.c
    @@ -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);
    diff --git a/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c b/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
    index 4ee4601cba1c..153a81a11ffc 100644
    --- a/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
    +++ b/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c
    @@ -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);
    --
    2.27.0
    \
     
     \ /
      Last update: 2020-06-23 18:48    [W:4.167 / U:0.152 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site