lkml.org 
[lkml]   [2021]   [Jun]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH v2 2/5] staging: vchiq: Move certain declarations to vchiq_arm.h
    Move certain declarations from vchiq_arm.c to vchiq_arm.h to allow
    code sharing. This will be useful when we eventually separate the vchiq
    char driver code from platform code, into its own file.

    Signed-off-by: Ojaswin Mujoo <ojaswin98@gmail.com>
    ---
    .../interface/vchiq_arm/vchiq_arm.c | 66 ++---------------
    .../interface/vchiq_arm/vchiq_arm.h | 70 +++++++++++++++++++
    2 files changed, 75 insertions(+), 61 deletions(-)

    diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
    index f2d8116913f2..8b18f9642e6c 100644
    --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
    +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
    @@ -38,12 +38,6 @@
    #undef MODULE_PARAM_PREFIX
    #define MODULE_PARAM_PREFIX DEVICE_NAME "."

    -/* Some per-instance constants */
    -#define MAX_COMPLETIONS 128
    -#define MAX_SERVICES 64
    -#define MAX_ELEMENTS 8
    -#define MSG_QUEUE_SIZE 128
    -
    #define KEEPALIVE_VER 1
    #define KEEPALIVE_VER_MIN KEEPALIVE_VER

    @@ -51,62 +45,12 @@
    int vchiq_arm_log_level = VCHIQ_LOG_DEFAULT;
    int vchiq_susp_log_level = VCHIQ_LOG_ERROR;

    -struct user_service {
    - struct vchiq_service *service;
    - void __user *userdata;
    - struct vchiq_instance *instance;
    - char is_vchi;
    - char dequeue_pending;
    - char close_pending;
    - int message_available_pos;
    - int msg_insert;
    - int msg_remove;
    - struct completion insert_event;
    - struct completion remove_event;
    - struct completion close_event;
    - struct vchiq_header *msg_queue[MSG_QUEUE_SIZE];
    -};
    -
    -struct bulk_waiter_node {
    - struct bulk_waiter bulk_waiter;
    - int pid;
    - struct list_head list;
    -};
    -
    -struct vchiq_instance {
    - struct vchiq_state *state;
    - struct vchiq_completion_data_kernel completions[MAX_COMPLETIONS];
    - int completion_insert;
    - int completion_remove;
    - struct completion insert_event;
    - struct completion remove_event;
    - struct mutex completion_mutex;
    -
    - int connected;
    - int closing;
    - int pid;
    - int mark;
    - int use_close_delivered;
    - int trace;
    -
    - struct list_head bulk_waiter_list;
    - struct mutex bulk_waiter_list_mutex;
    -
    - struct vchiq_debugfs_node debugfs_node;
    -};
    -
    -struct dump_context {
    - char __user *buf;
    - size_t actual;
    - size_t space;
    - loff_t offset;
    -};
    +DEFINE_SPINLOCK(msg_queue_spinlock);
    +struct vchiq_state g_state;

    static struct cdev vchiq_cdev;
    static dev_t vchiq_devid;
    -static struct vchiq_state g_state;
    static struct class *vchiq_class;
    -static DEFINE_SPINLOCK(msg_queue_spinlock);
    static struct platform_device *bcm2835_camera;
    static struct platform_device *bcm2835_audio;
    static struct platform_device *bcm2835_codec;
    @@ -587,7 +531,7 @@ add_completion(struct vchiq_instance *instance, enum vchiq_reason reason,
    *
    ***************************************************************************/

    -static enum vchiq_status
    +enum vchiq_status
    service_callback(enum vchiq_reason reason, struct vchiq_header *header,
    unsigned int handle, void *bulk_userdata)
    {
    @@ -2215,7 +2159,7 @@ vchiq_fops = {
    *
    * Returns 0 on success else returns the error code.
    */
    -static int vchiq_register_chrdev(struct device *parent)
    +int vchiq_register_chrdev(struct device *parent)
    {
    struct device *vchiq_dev;
    int ret;
    @@ -2274,7 +2218,7 @@ static int vchiq_register_chrdev(struct device *parent)
    * vchiq_deregister_chrdev - Deregister and cleanup the vchiq char
    * driver and device files
    */
    -static void vchiq_deregister_chrdev(void)
    +void vchiq_deregister_chrdev(void)
    {
    device_destroy(vchiq_class, vchiq_devid);
    cdev_del(&vchiq_cdev);
    diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.h b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.h
    index f8b1c005af62..bc9af1a0c764 100644
    --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.h
    +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.h
    @@ -14,6 +14,12 @@
    #include "vchiq_core.h"
    #include "vchiq_debugfs.h"

    +/* Some per-instance constants */
    +#define MAX_COMPLETIONS 128
    +#define MAX_SERVICES 64
    +#define MAX_ELEMENTS 8
    +#define MSG_QUEUE_SIZE 128
    +
    enum USE_TYPE_E {
    USE_TYPE_SERVICE,
    USE_TYPE_VCHIQ
    @@ -56,9 +62,63 @@ struct vchiq_drvdata {
    struct rpi_firmware *fw;
    };

    +struct user_service {
    + struct vchiq_service *service;
    + void __user *userdata;
    + struct vchiq_instance *instance;
    + char is_vchi;
    + char dequeue_pending;
    + char close_pending;
    + int message_available_pos;
    + int msg_insert;
    + int msg_remove;
    + struct completion insert_event;
    + struct completion remove_event;
    + struct completion close_event;
    + struct vchiq_header *msg_queue[MSG_QUEUE_SIZE];
    +};
    +
    +struct bulk_waiter_node {
    + struct bulk_waiter bulk_waiter;
    + int pid;
    + struct list_head list;
    +};
    +
    +struct vchiq_instance {
    + struct vchiq_state *state;
    + struct vchiq_completion_data_kernel completions[MAX_COMPLETIONS];
    + int completion_insert;
    + int completion_remove;
    + struct completion insert_event;
    + struct completion remove_event;
    + struct mutex completion_mutex;
    +
    + int connected;
    + int closing;
    + int pid;
    + int mark;
    + int use_close_delivered;
    + int trace;
    +
    + struct list_head bulk_waiter_list;
    + struct mutex bulk_waiter_list_mutex;
    +
    + struct vchiq_debugfs_node debugfs_node;
    +};
    +
    +struct dump_context {
    + char __user *buf;
    + size_t actual;
    + size_t space;
    + loff_t offset;
    +};
    +
    extern int vchiq_arm_log_level;
    extern int vchiq_susp_log_level;

    +extern spinlock_t msg_queue_spinlock;
    +extern struct vchiq_state g_state;
    +
    int vchiq_platform_init(struct platform_device *pdev,
    struct vchiq_state *state);

    @@ -112,4 +172,14 @@ vchiq_instance_get_trace(struct vchiq_instance *instance);
    extern void
    vchiq_instance_set_trace(struct vchiq_instance *instance, int trace);

    +extern void
    +vchiq_deregister_chrdev(void);
    +
    +extern int
    +vchiq_register_chrdev(struct device *parent);
    +
    +extern enum vchiq_status
    +service_callback(enum vchiq_reason reason, struct vchiq_header *header,
    + unsigned int handle, void *bulk_userdata);
    +
    #endif /* VCHIQ_ARM_H */
    --
    2.25.1
    \
     
     \ /
      Last update: 2021-06-20 14:57    [W:4.319 / U:0.444 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site