| /* SPDX-License-Identifier: GPL-2.0-only */ |
| /* |
| * linux/sound/cs35l35.h -- Platform data for CS35l35 |
| * |
| * Copyright (c) 2016 Cirrus Logic Inc. |
| */ |
| |
| #ifndef __CS35L35_H |
| #define __CS35L35_H |
| |
| struct classh_cfg { |
| /* |
| * Class H Algorithm Control Variables |
| * You can either have it done |
| * automatically or you can adjust |
| * these variables for tuning |
| * |
| * if you do not enable the internal algorithm |
| * you will get a set of mixer controls for |
| * Class H tuning |
| * |
| * Section 4.3 of the datasheet |
| */ |
| bool classh_bst_override; |
| bool classh_algo_enable; |
| int classh_bst_max_limit; |
| int classh_mem_depth; |
| int classh_release_rate; |
| int classh_headroom; |
| int classh_wk_fet_disable; |
| int classh_wk_fet_delay; |
| int classh_wk_fet_thld; |
| int classh_vpch_auto; |
| int classh_vpch_rate; |
| int classh_vpch_man; |
| }; |
| |
| struct monitor_cfg { |
| /* |
| * Signal Monitor Data |
| * highly configurable signal monitoring |
| * data positioning and different types of |
| * monitoring data. |
| * |
| * Section 4.8.2 - 4.8.4 of the datasheet |
| */ |
| bool is_present; |
| bool imon_specs; |
| bool vmon_specs; |
| bool vpmon_specs; |
| bool vbstmon_specs; |
| bool vpbrstat_specs; |
| bool zerofill_specs; |
| u8 imon_dpth; |
| u8 imon_loc; |
| u8 imon_frm; |
| u8 imon_scale; |
| u8 vmon_dpth; |
| u8 vmon_loc; |
| u8 vmon_frm; |
| u8 vpmon_dpth; |
| u8 vpmon_loc; |
| u8 vpmon_frm; |
| u8 vbstmon_dpth; |
| u8 vbstmon_loc; |
| u8 vbstmon_frm; |
| u8 vpbrstat_dpth; |
| u8 vpbrstat_loc; |
| u8 vpbrstat_frm; |
| u8 zerofill_dpth; |
| u8 zerofill_loc; |
| u8 zerofill_frm; |
| }; |
| |
| struct cs35l35_platform_data { |
| |
| /* Stereo (2 Device) */ |
| bool stereo; |
| /* serial port drive strength */ |
| int sp_drv_str; |
| /* serial port drive in unused slots */ |
| int sp_drv_unused; |
| /* Boost Power Down with FET */ |
| bool bst_pdn_fet_on; |
| /* Boost Voltage : used if ClassH Algo Enabled */ |
| int bst_vctl; |
| /* Boost Converter Peak Current CTRL */ |
| int bst_ipk; |
| /* Amp Gain Zero Cross */ |
| bool gain_zc; |
| /* Audio Input Location */ |
| int aud_channel; |
| /* Advisory Input Location */ |
| int adv_channel; |
| /* Shared Boost for stereo */ |
| bool shared_bst; |
| /* Specifies this amp is using an external boost supply */ |
| bool ext_bst; |
| /* Inductor Value */ |
| int boost_ind; |
| /* ClassH Algorithm */ |
| struct classh_cfg classh_algo; |
| /* Monitor Config */ |
| struct monitor_cfg mon_cfg; |
| }; |
| |
| #endif /* __CS35L35_H */ |