Files
android_kernel_samsung_sm86…/include/ipc/aprv2_vm.h
Timothy Sham 150c909ba3 ipc: add audio apr virtualization support
Add support for virtualized APR frontend driver for audio.
Virtualized APR frontend driver resides in guest VM and
supports all legacy APR APIs. It will rely on MSM_HAB
to communicate with APR backend driver, which resides in
physical VM, where legacy SMD is utilized for communication
between APPS and ADSP.

Change-Id: I1df70a76defec17a45db93f3707c35e4fa796bc0
Signed-off-by: Timothy Sham <tsham@codeaurora.org>
2019-05-13 23:45:35 -07:00

109 строки
2.8 KiB
C

/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (c) 2016-2017, 2019 The Linux Foundation. All rights reserved.
*/
#ifndef __APRV2_VM_H__
#define __APRV2_VM_H__
#define APRV2_VM_MAX_DNS_SIZE (31)
/* Includes NULL character. */
#define APRV2_VM_PKT_SERVICE_ID_MASK (0x00FF)
/* Bitmask of the service ID field. */
/* Packet Structure Definition */
struct aprv2_vm_packet_t {
uint32_t header;
uint16_t src_addr;
uint16_t src_port;
uint16_t dst_addr;
uint16_t dst_port;
uint32_t token;
uint32_t opcode;
};
/**
* In order to send command/event via MM HAB, the following buffer
* format shall be followed, where the buffer is provided to the
* HAB send API.
* |-----cmd_id or evt_id -----| <- 32 bit, e.g. APRV2_VM_CMDID_REGISTER
* |-----cmd payload ----------| e.g. aprv2_vm_cmd_register_t
* | ... |
*
* In order to receive a command response or event ack, the following
* buffer format shall be followed, where the buffer is provided to
* the HAB receive API.
* |-----cmd response ---------| e.g. aprv2_vm_cmd_register_rsp_t
* | ... |
*/
/* Registers a service with the backend APR driver. */
#define APRV2_VM_CMDID_REGISTER (0x00000001)
struct aprv2_vm_cmd_register_t {
uint32_t name_size;
/**< The service name string size in bytes. */
char name[APRV2_VM_MAX_DNS_SIZE];
/**<
* The service name string to register.
*
* A NULL name means the service does not have a name.
*/
uint16_t addr;
/**<
* The address to register.
*
* A zero value means to auto-generate a free dynamic address.
* A non-zero value means to directly use the statically assigned address.
*/
};
struct aprv2_vm_cmd_register_rsp_t {
int32_t status;
/**< The status of registration. */
uint32_t handle;
/**< The registered service handle. */
uint16_t addr;
/**< The actual registered address. */
};
#define APRV2_VM_CMDID_DEREGISTER (0x00000002)
struct aprv2_vm_cmd_deregister_t {
uint32_t handle;
/**< The registered service handle. */
};
struct aprv2_vm_cmd_deregister_rsp_t {
int32_t status;
/**< The status of de-registration. */
};
#define APRV2_VM_CMDID_ASYNC_SEND (0x00000003)
struct aprv2_vm_cmd_async_send_t {
uint32_t handle;
/**< The registered service handle. */
struct aprv2_vm_packet_t pkt_header;
/**< The packet header. */
/* The apr packet payload follows */
};
struct aprv2_vm_cmd_async_send_rsp_t {
int32_t status;
/**< The status of send. */
};
#define APRV2_VM_EVT_RX_PKT_AVAILABLE (0x00000004)
struct aprv2_vm_evt_rx_pkt_available_t {
struct aprv2_vm_packet_t pkt_header;
/**< The packet header. */
/* The apr packet payload follows */
};
struct aprv2_vm_ack_rx_pkt_available_t {
int32_t status;
};
#endif /* __APRV2_VM_H__ */