blob: 68c48b71088a6977d3e82c53d034dc7d3979a108 [file] [log] [blame]
Meng Wang688a8672019-01-29 13:43:33 +08001/* SPDX-License-Identifier: GPL-2.0-only */
Mangesh Kunchamwar4e1e7182018-04-26 17:58:58 +05302/*
Meng Wang61af6842018-09-10 17:47:55 +08003 * Copyright (c) 2014, 2018, The Linux Foundation. All rights reserved.
Mangesh Kunchamwar4e1e7182018-04-26 17:58:58 +05304 */
5#ifndef __Q6AFECAL_HWDEP_H__
6#define __Q6AFECAL_HWDEP_H__
7#include <sound/msmcal-hwdep.h>
8
9enum q6afe_cal_states {
10 Q6AFECAL_UNINITIALISED,
11 Q6AFECAL_INITIALISED,
12 Q6AFECAL_RECEIVED
13};
14
15struct afe_fw_info {
16 struct firmware_cal *fw[Q6AFE_MAX_CAL];
17 DECLARE_BITMAP(cal_bit, Q6AFE_MAX_CAL);
18 /* for calibration tracking */
19 unsigned long q6afecal_state[Q6AFE_MAX_CAL];
20 struct mutex lock;
21};
22
23struct firmware_cal {
24 u8 *data;
25 size_t size;
26};
27
28#if IS_ENABLED(CONFIG_AFE_HWDEP)
29int q6afe_cal_create_hwdep(void *fw, int node, void *card);
30struct firmware_cal *q6afecal_get_fw_cal(struct afe_fw_info *fw_data,
31 enum q6afe_cal_type type);
32#else /* CONFIG_AFE_HWDEP */
33static inline int q6afe_cal_create_hwdep(void *fw, int node, void *card)
34{
35 return 0;
36}
37
38static inline struct firmware_cal *q6afecal_get_fw_cal(
39 struct afe_fw_info *fw_data,
40 enum q6afe_cal_type type)
41{
42 return NULL;
43}
44#endif /* CONFIG_AFE_HWDEP */
45#endif /* __Q6AFECAL_HWDEP_H__ */