OSDN Git Service

Revert "usb: dwc3: turn off VBUS when leaving host mode"
[sagit-ice-cold/kernel_xiaomi_msm8998.git] / include / sound / apr_elliptic.h
1 #pragma once
2
3 #include <linux/types.h>
4 #include <sound/apr_audio-v2.h>
5 #include <linux/delay.h>
6
7 /* Elliptic Labs UltraSound Module */
8 #define ELLIPTIC_ULTRASOUND_DISABLE                     0
9 #define ELLIPTIC_ULTRASOUND_ENABLE                      1
10 #define ELLIPTIC_ULTRASOUND_SET_PARAMS                  2
11 #define ELLIPTIC_ULTRASOUND_GET_PARAMS                  3
12 #define ELLIPTIC_ULTRASOUND_RAMP_DOWN                   4
13
14 /** Param ID definition */
15 #define ELLIPTIC_ULTRASOUND_PARAM_ID_UPS_DATA            3
16 #define ELLIPTIC_ULTRASOUND_PARAM_ID_CALIBRATION_DATA   11
17 #define ELLIPTIC_ULTRASOUND_PARAM_ID_ENGINE_VERSION     12
18
19 #define ELLIPTIC_ENABLE_APR_SIZE                        16
20 #define ELLIPTIC_COFIG_SET_PARAM_SIZE                   96
21
22 #define ELLIPTIC_ULTRASOUND_MODULE_TX                   0x0F010201
23 #define ELLIPTIC_ULTRASOUND_MODULE_RX                   0x0FF10202
24 #define ULTRASOUND_OPCODE                               0x0FF10204
25
26 #define ELLIPTIC_DATA_READ_BUSY                         0
27 #define ELLIPTIC_DATA_READ_OK                           1
28 #define ELLIPTIC_DATA_READ_CANCEL                       2
29
30 /** 512 byte APR payload */
31 #define ELLIPTIC_GET_PARAMS_SIZE                        128
32 /** System config size is 96 bytes */
33 /* #define ELLIPTIC_SET_PARAMS_SIZE                     128 */
34 #define ELLIPTIC_SET_PARAMS_SIZE                        108
35
36 /** register */
37 #define ELLIPTIC_SYSTEM_CONFIGURATION                   0
38 /** bits */
39 #define ELLIPTIC_SYSTEM_CONFIGURATION_LATENCY           0
40 #define ELLIPTIC_SYSTEM_CONFIGURATION_SENSITIVITY       1
41 #define ELLIPTIC_SYSTEM_CONFIGURATION_SPEAKER_SCALING   2
42 #define ELLIPTIC_SYSTEM_CONFIGURATION_MICROPHONE_INDEX  3
43 #define ELLIPTIC_SYSTEM_CONFIGURATION_OPERATION_MODE            4
44 #define ELLIPTIC_SYSTEM_CONFIGURATION_OPERATION_MODE_FLAGS      5
45 #define ELLIPTIC_SYSTEM_CONFIGURATION_LOG_LEVEL 6
46
47 #define ELLIPTIC_CALIBRATION                            1
48 #define ELLIPTIC_CALIBRATION_STATE                      0
49 #define ELLIPTIC_CALIBRATION_PROFILE            1
50 #define ELLIPTIC_ULTRASOUND_GAIN                        2
51
52 #define ELLIPTIC_SYSTEM_CONFIGURATION_SIZE              96
53 #define ELLIPTIC_CALIBRATION_DATA_SIZE          64
54 #define ELLIPTIC_VERSION_INFO_SIZE              16
55 #define ELLIPTIC_BRANCH_INFO_SIZE               32
56
57 #define ELLIPTIC_PORT_ID                                SLIMBUS_1_TX
58
59 /** Sequence of Elliptic Labs Ultrasound module parameters */
60 struct afe_ultrasound_set_params_t {
61         uint32_t  payload[ELLIPTIC_SET_PARAMS_SIZE];
62 } __packed;
63
64 struct afe_ultrasound_config_command {
65         struct apr_hdr  hdr;
66         struct afe_port_cmd_set_param_v2        param;
67         struct afe_port_param_data_v2   pdata;
68         struct afe_ultrasound_set_params_t      prot_config;
69 } __packed;
70
71 /** Sequence of Elliptic Labs Ultrasound module parameters */
72 struct afe_ultrasound_get_params_t {
73         uint32_t payload[ELLIPTIC_GET_PARAMS_SIZE];
74 } __packed;
75
76 struct afe_ultrasound_get_calib {
77         struct afe_port_cmd_get_param_v2        get_param;
78         struct afe_port_param_data_v2   pdata;
79         struct afe_ultrasound_get_params_t      res_cfg;
80 } __packed;
81
82 struct afe_ultrasound_calib_get_resp {
83         struct afe_ultrasound_get_params_t res_cfg;
84 } __packed;
85
86 /** Elliptic APR public  */
87
88 int32_t ultrasound_apr_set(int32_t port_id, uint32_t *param_id,
89         u8 *user_params, int32_t length);
90
91 int32_t elliptic_process_apr_payload(uint32_t *payload);
92
93
94 typedef struct afe_ultrasound_state {
95         atomic_t us_apr_state;
96         void **ptr_apr;
97         atomic_t *ptr_status;
98         atomic_t *ptr_state;
99         wait_queue_head_t *ptr_wait;
100         int timeout_ms;
101         struct afe_ultrasound_calib_get_resp *ptr_ultrasound_calib_data;
102 } afe_ultrasound_state_t;
103
104 extern afe_ultrasound_state_t elus_afe;