Commit | Line | Data |
---|---|---|
d2912cb1 | 1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
6387f866 BA |
2 | /* |
3 | * linux/sound/cs35l35.h -- Platform data for CS35l35 | |
4 | * | |
5 | * Copyright (c) 2016 Cirrus Logic Inc. | |
6387f866 BA |
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; | |
06bdf385 | 57 | u8 imon_scale; |
6387f866 BA |
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; | |
8d45f2d2 CK |
81 | /* serial port drive in unused slots */ |
82 | int sp_drv_unused; | |
6387f866 BA |
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; | |
77b329d1 CK |
97 | /* Specifies this amp is using an external boost supply */ |
98 | bool ext_bst; | |
b7c752d6 BA |
99 | /* Inductor Value */ |
100 | int boost_ind; | |
6387f866 BA |
101 | /* ClassH Algorithm */ |
102 | struct classh_cfg classh_algo; | |
103 | /* Monitor Config */ | |
104 | struct monitor_cfg mon_cfg; | |
105 | }; | |
106 | ||
107 | #endif /* __CS35L35_H */ |