123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- /* 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__ */
|