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 */
|
---|