linux/drivers/staging/vc04_services/include/linux/raspberrypi/vchiq.h

/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
/* Copyright (c) 2010-2012 Broadcom. All rights reserved. */

#ifndef VCHIQ_H
#define VCHIQ_H

#define VCHIQ_MAKE_FOURCC(x0, x1, x2, x3)

enum vchiq_reason {};

enum vchiq_bulk_mode {};

enum vchiq_service_option {};

struct vchiq_header {};

struct vchiq_element {};

struct vchiq_instance;
struct vchiq_state;

struct vchiq_service_base {};

struct vchiq_completion_data_kernel {};

struct vchiq_service_params_kernel {};

extern int vchiq_initialise(struct vchiq_state *state,
			    struct vchiq_instance **pinstance);
extern int vchiq_shutdown(struct vchiq_instance *instance);
extern int vchiq_connect(struct vchiq_instance *instance);
extern int vchiq_open_service(struct vchiq_instance *instance,
			      const struct vchiq_service_params_kernel *params,
			      unsigned int *pservice);
extern int vchiq_close_service(struct vchiq_instance *instance,
			       unsigned int service);
extern int vchiq_use_service(struct vchiq_instance *instance, unsigned int service);
extern int vchiq_release_service(struct vchiq_instance *instance,
				 unsigned int service);
extern void vchiq_msg_queue_push(struct vchiq_instance *instance, unsigned int handle,
				 struct vchiq_header *header);
extern void vchiq_release_message(struct vchiq_instance *instance, unsigned int service,
				  struct vchiq_header *header);
extern int vchiq_queue_kernel_message(struct vchiq_instance *instance, unsigned int handle,
				      void *data, unsigned int size);
extern int vchiq_bulk_transmit(struct vchiq_instance *instance, unsigned int service,
			       const void *data, unsigned int size, void *userdata,
			       enum vchiq_bulk_mode mode);
extern int vchiq_bulk_receive(struct vchiq_instance *instance, unsigned int service,
			      void *data, unsigned int size, void *userdata,
			      enum vchiq_bulk_mode mode);
extern void *vchiq_get_service_userdata(struct vchiq_instance *instance, unsigned int service);
extern int vchiq_get_peer_version(struct vchiq_instance *instance, unsigned int handle,
				  short *peer_version);
extern struct vchiq_header *vchiq_msg_hold(struct vchiq_instance *instance, unsigned int handle);

#endif /* VCHIQ_H */