summaryrefslogtreecommitdiff
path: root/include/sound/apr_elliptic.h
blob: 5d42a37c748967d84275f13070ff4751c30b5dd9 (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
#pragma once

#include <linux/types.h>
#include <sound/apr_audio-v2.h>
#include <elliptic/elliptic_data_io.h>
#include <linux/delay.h>



#define ELLIPTIC_ULTRASOUND_MODULE_TX			0x0F010201
#define ELLIPTIC_ULTRASOUND_MODULE_RX			0x0FF10202
#define ULTRASOUND_OPCODE				0x0FF10204


#define ELLIPTIC_PORT_ID				SLIMBUS_1_TX

/** Sequence of Elliptic Labs Ultrasound module parameters */
struct afe_ultrasound_set_params_t {
	uint32_t  payload[ELLIPTIC_SET_PARAMS_SIZE];
} __packed;

struct afe_ultrasound_config_command {
	struct apr_hdr                      hdr;
	struct afe_port_cmd_set_param_v2    param;
	struct afe_port_param_data_v2       pdata;
	struct afe_ultrasound_set_params_t  prot_config;
} __packed;

/** Sequence of Elliptic Labs Ultrasound module parameters */

/** Elliptic APR public  */

int32_t ultrasound_apr_set_parameter(int32_t port_id, uint32_t param_id,
	u8 *user_params, int32_t length);

int32_t elliptic_process_apr_payload(uint32_t *payload);

int elliptic_notify_gain_change_msg(int component_id, int gaindb);

typedef struct afe_ultrasound_state {
	atomic_t us_apr_state;
	void **ptr_apr;
	atomic_t *ptr_status;
	atomic_t *ptr_state;
	wait_queue_head_t *ptr_wait;
	int timeout_ms;
} afe_ultrasound_state_t;

extern afe_ultrasound_state_t elus_afe;