#ifndef _WCD_DSP_GLINK_H #define _WCD_DSP_GLINK_H #include <linux/types.h> #define WDSP_CH_NAME_MAX_LEN 50 enum { WDSP_REG_PKT = 1, WDSP_CMD_PKT, WDSP_READY_PKT, }; #define WDSP_READY_PKT WDSP_READY_PKT /* * struct wdsp_reg_pkt - Glink channel information structure format * @no_of_channels: Number of glink channels to open * @payload[0]: Dynamic array contains all the glink channels information */ struct wdsp_reg_pkt { __u8 no_of_channels; __u8 payload[0]; }; /* * struct wdsp_cmd_pkt - WDSP command packet format * @ch_name: Name of the glink channel * @payload_size: Size of the payload * @payload[0]: Actual data payload */ struct wdsp_cmd_pkt { char ch_name[WDSP_CH_NAME_MAX_LEN]; __u32 payload_size; __u8 payload[0]; }; /* * struct wdsp_write_pkt - Format that userspace send the data to driver. * @pkt_type: Type of the packet(REG or CMD PKT) * @payload[0]: Payload is either cmd or reg pkt structure based on pkt type */ struct wdsp_write_pkt { __u8 pkt_type; __u8 payload[0]; }; /* * struct wdsp_glink_ch_cfg - Defines the glink channel configuration. * @ch_name: Name of the glink channel * @latency_in_us: Latency specified in micro seconds for QOS * @no_of_intents: Number of intents prequeued * @intents_size[0]: Dynamic array to specify size of each intent */ struct wdsp_glink_ch_cfg { char name[WDSP_CH_NAME_MAX_LEN]; __u32 latency_in_us; __u32 no_of_intents; __u32 intents_size[0]; }; #endif /* _WCD_DSP_GLINK_H */