blob: 52458ef01e684cc2f3122a66c783fe91bfe65319 [file] [log] [blame]
Soumya Managoli7a258f02018-02-23 12:57:32 +05301/* Copyright (c) 2015, 2018, The Linux Foundation. All rights reserved.
2 *
3 * This program is free software; you can redistribute it and/or modify
4 * it under the terms of the GNU General Public License version 2 and
5 * only version 2 as published by the Free Software Foundation
6 *
7 * This program is distributed in the hope that it will be useful,
8 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10 * GNU General Public License for more details.
11 */
12
13#ifndef _WSA881X_H
14#define _WSA881X_H
15
16#include <linux/regmap.h>
17#include "wsa881x-registers-analog.h"
18#include <sound/soc.h>
19
20#define WSA881X_I2C_SPK0_SLAVE0_ADDR 0x0E
21#define WSA881X_I2C_SPK0_SLAVE1_ADDR 0x44
22#define WSA881X_I2C_SPK1_SLAVE0_ADDR 0x0F
23#define WSA881X_I2C_SPK1_SLAVE1_ADDR 0x45
24
25#define WSA881X_I2C_SPK0_SLAVE0 0
26#define WSA881X_I2C_SPK1_SLAVE0 1
27#define MAX_WSA881X_DEVICE 2
28#define WSA881X_DIGITAL_SLAVE 0
29#define WSA881X_ANALOG_SLAVE 1
30
31enum {
32 WSA881X_1_X = 0,
33 WSA881X_2_0,
34};
35
36#define WSA881X_IS_2_0(ver) \
37 ((ver == WSA881X_2_0) ? 1 : 0)
38
39extern const u8 wsa881x_ana_reg_readable[WSA881X_CACHE_SIZE];
40extern struct reg_default wsa881x_ana_reg_defaults[WSA881X_CACHE_SIZE];
41extern struct regmap_config wsa881x_ana_regmap_config[2];
42int wsa881x_get_client_index(void);
43int wsa881x_get_probing_count(void);
44int wsa881x_get_presence_count(void);
45int wsa881x_set_mclk_callback(
46 int (*enable_mclk_callback)(struct snd_soc_card *, bool));
47void wsa881x_update_reg_defaults_2_0(void);
48void wsa881x_update_regmap_2_0(struct regmap *regmap, int flag);
49
50#endif /* _WSA881X_H */