Merge tag 'char-misc-5.15-rc1-2' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6-microblaze.git] / include / sound / cs35l35.h
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * linux/sound/cs35l35.h -- Platform data for CS35l35
4  *
5  * Copyright (c) 2016 Cirrus Logic Inc.
6  */
7
8 #ifndef __CS35L35_H
9 #define __CS35L35_H
10
11 struct classh_cfg {
12         /*
13          * Class H Algorithm Control Variables
14          * You can either have it done
15          * automatically or you can adjust
16          * these variables for tuning
17          *
18          * if you do not enable the internal algorithm
19          * you will get a set of mixer controls for
20          * Class H tuning
21          *
22          * Section 4.3 of the datasheet
23          */
24         bool classh_bst_override;
25         bool classh_algo_enable;
26         int classh_bst_max_limit;
27         int classh_mem_depth;
28         int classh_release_rate;
29         int classh_headroom;
30         int classh_wk_fet_disable;
31         int classh_wk_fet_delay;
32         int classh_wk_fet_thld;
33         int classh_vpch_auto;
34         int classh_vpch_rate;
35         int classh_vpch_man;
36 };
37
38 struct monitor_cfg {
39         /*
40          * Signal Monitor Data
41          * highly configurable signal monitoring
42          * data positioning and different types of
43          * monitoring data.
44          *
45          * Section 4.8.2 - 4.8.4 of the datasheet
46          */
47         bool is_present;
48         bool imon_specs;
49         bool vmon_specs;
50         bool vpmon_specs;
51         bool vbstmon_specs;
52         bool vpbrstat_specs;
53         bool zerofill_specs;
54         u8 imon_dpth;
55         u8 imon_loc;
56         u8 imon_frm;
57         u8 imon_scale;
58         u8 vmon_dpth;
59         u8 vmon_loc;
60         u8 vmon_frm;
61         u8 vpmon_dpth;
62         u8 vpmon_loc;
63         u8 vpmon_frm;
64         u8 vbstmon_dpth;
65         u8 vbstmon_loc;
66         u8 vbstmon_frm;
67         u8 vpbrstat_dpth;
68         u8 vpbrstat_loc;
69         u8 vpbrstat_frm;
70         u8 zerofill_dpth;
71         u8 zerofill_loc;
72         u8 zerofill_frm;
73 };
74
75 struct cs35l35_platform_data {
76
77         /* Stereo (2 Device) */
78         bool stereo;
79         /* serial port drive strength */
80         int sp_drv_str;
81         /* serial port drive in unused slots */
82         int sp_drv_unused;
83         /* Boost Power Down with FET */
84         bool bst_pdn_fet_on;
85         /* Boost Voltage : used if ClassH Algo Enabled */
86         int bst_vctl;
87         /* Boost Converter Peak Current CTRL */
88         int bst_ipk;
89         /* Amp Gain Zero Cross */
90         bool gain_zc;
91         /* Audio Input Location */
92         int aud_channel;
93         /* Advisory Input Location */
94         int adv_channel;
95         /* Shared Boost for stereo */
96         bool shared_bst;
97         /* Specifies this amp is using an external boost supply */
98         bool ext_bst;
99         /* Inductor Value */
100         int boost_ind;
101         /* ClassH Algorithm */
102         struct classh_cfg classh_algo;
103         /* Monitor Config */
104         struct monitor_cfg mon_cfg;
105 };
106
107 #endif /* __CS35L35_H */