blob: 39d128d370a078b9fb24316b12c74642a26d7993 [file] [log] [blame]
Banajit Goswamide8271c2017-01-18 00:28:59 -08001#ifndef _WCD_DSP_GLINK_H
2#define _WCD_DSP_GLINK_H
3
4#include <linux/types.h>
5
6#define WDSP_CH_NAME_MAX_LEN 50
7
8enum {
9 WDSP_REG_PKT = 1,
10 WDSP_CMD_PKT,
11 WDSP_READY_PKT,
12};
13#define WDSP_READY_PKT WDSP_READY_PKT
14
15/*
16 * struct wdsp_reg_pkt - Glink channel information structure format
17 * @no_of_channels: Number of glink channels to open
18 * @payload[0]: Dynamic array contains all the glink channels information
19 */
20struct wdsp_reg_pkt {
21 __u8 no_of_channels;
22 __u8 payload[0];
23};
24
25/*
26 * struct wdsp_cmd_pkt - WDSP command packet format
27 * @ch_name: Name of the glink channel
28 * @payload_size: Size of the payload
29 * @payload[0]: Actual data payload
30 */
31struct wdsp_cmd_pkt {
32 char ch_name[WDSP_CH_NAME_MAX_LEN];
33 __u32 payload_size;
34 __u8 payload[0];
35};
36
37/*
38 * struct wdsp_write_pkt - Format that userspace send the data to driver.
39 * @pkt_type: Type of the packet(REG or CMD PKT)
40 * @payload[0]: Payload is either cmd or reg pkt structure based on pkt type
41 */
42struct wdsp_write_pkt {
43 __u8 pkt_type;
44 __u8 payload[0];
45};
46
47/*
48 * struct wdsp_glink_ch_cfg - Defines the glink channel configuration.
49 * @ch_name: Name of the glink channel
50 * @latency_in_us: Latency specified in micro seconds for QOS
51 * @no_of_intents: Number of intents prequeued
52 * @intents_size[0]: Dynamic array to specify size of each intent
53 */
54struct wdsp_glink_ch_cfg {
55 char name[WDSP_CH_NAME_MAX_LEN];
56 __u32 latency_in_us;
57 __u32 no_of_intents;
58 __u32 intents_size[0];
59};
60#endif /* _WCD_DSP_GLINK_H */