Banajit Goswami | de8271c | 2017-01-18 00:28:59 -0800 | [diff] [blame] | 1 | #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 | |
| 8 | enum { |
| 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 | */ |
| 20 | struct 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 | */ |
| 31 | struct 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 | */ |
| 42 | struct 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 | */ |
| 54 | struct 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 */ |