| /* | |
| * linux/sound/cs35l35.h -- Platform data for CS35l35 | |
| * | |
| * Copyright (c) 2016 Cirrus Logic Inc. | |
| * | |
| * This program is free software; you can redistribute it and/or modify | |
| * it under the terms of the GNU General Public License version 2 as | |
| * published by the Free Software Foundation. | |
| */ | |
| #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 */ |