summaryrefslogtreecommitdiff
path: root/original-kernel-headers/sound/wcd-dsp-glink.h
blob: 39d128d370a078b9fb24316b12c74642a26d7993 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#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 */