Warning: This file is not a C or C++ file. It does not have highlighting.
1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
---|---|
2 | /* |
3 | * Copyright (C) 2024 Cirrus Logic, Inc. and |
4 | * Cirrus Logic International Semiconductor Ltd. |
5 | */ |
6 | |
7 | #ifndef CS_AMP_LIB_H |
8 | #define CS_AMP_LIB_H |
9 | |
10 | #include <linux/efi.h> |
11 | #include <linux/types.h> |
12 | |
13 | struct cs_dsp; |
14 | |
15 | struct cirrus_amp_cal_data { |
16 | u32 calTarget[2]; |
17 | u32 calTime[2]; |
18 | s8 calAmbient; |
19 | u8 calStatus; |
20 | u16 calR; |
21 | } __packed; |
22 | |
23 | struct cirrus_amp_efi_data { |
24 | u32 size; |
25 | u32 count; |
26 | struct cirrus_amp_cal_data data[]; |
27 | } __packed; |
28 | |
29 | /** |
30 | * struct cirrus_amp_cal_controls - definition of firmware calibration controls |
31 | * @alg_id: ID of algorithm containing the controls. |
32 | * @mem_region: DSP memory region containing the controls. |
33 | * @ambient: Name of control for calAmbient value. |
34 | * @calr: Name of control for calR value. |
35 | * @status: Name of control for calStatus value. |
36 | * @checksum: Name of control for checksum value. |
37 | */ |
38 | struct cirrus_amp_cal_controls { |
39 | unsigned int alg_id; |
40 | int mem_region; |
41 | const char *ambient; |
42 | const char *calr; |
43 | const char *status; |
44 | const char *checksum; |
45 | }; |
46 | |
47 | int cs_amp_write_cal_coeffs(struct cs_dsp *dsp, |
48 | const struct cirrus_amp_cal_controls *controls, |
49 | const struct cirrus_amp_cal_data *data); |
50 | int cs_amp_get_efi_calibration_data(struct device *dev, u64 target_uid, int amp_index, |
51 | struct cirrus_amp_cal_data *out_data); |
52 | |
53 | struct cs_amp_test_hooks { |
54 | efi_status_t (*get_efi_variable)(efi_char16_t *name, |
55 | efi_guid_t *guid, |
56 | unsigned long *size, |
57 | void *buf); |
58 | |
59 | int (*write_cal_coeff)(struct cs_dsp *dsp, |
60 | const struct cirrus_amp_cal_controls *controls, |
61 | const char *ctl_name, u32 val); |
62 | }; |
63 | |
64 | extern const struct cs_amp_test_hooks * const cs_amp_test_hooks; |
65 | |
66 | #endif /* CS_AMP_LIB_H */ |
67 |
Warning: This file is not a C or C++ file. It does not have highlighting.