162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * linux/sound/cs35l35.h -- Platform data for CS35l35 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (c) 2016 Cirrus Logic Inc. 662306a36Sopenharmony_ci */ 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci#ifndef __CS35L35_H 962306a36Sopenharmony_ci#define __CS35L35_H 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_cistruct classh_cfg { 1262306a36Sopenharmony_ci /* 1362306a36Sopenharmony_ci * Class H Algorithm Control Variables 1462306a36Sopenharmony_ci * You can either have it done 1562306a36Sopenharmony_ci * automatically or you can adjust 1662306a36Sopenharmony_ci * these variables for tuning 1762306a36Sopenharmony_ci * 1862306a36Sopenharmony_ci * if you do not enable the internal algorithm 1962306a36Sopenharmony_ci * you will get a set of mixer controls for 2062306a36Sopenharmony_ci * Class H tuning 2162306a36Sopenharmony_ci * 2262306a36Sopenharmony_ci * Section 4.3 of the datasheet 2362306a36Sopenharmony_ci */ 2462306a36Sopenharmony_ci bool classh_bst_override; 2562306a36Sopenharmony_ci bool classh_algo_enable; 2662306a36Sopenharmony_ci int classh_bst_max_limit; 2762306a36Sopenharmony_ci int classh_mem_depth; 2862306a36Sopenharmony_ci int classh_release_rate; 2962306a36Sopenharmony_ci int classh_headroom; 3062306a36Sopenharmony_ci int classh_wk_fet_disable; 3162306a36Sopenharmony_ci int classh_wk_fet_delay; 3262306a36Sopenharmony_ci int classh_wk_fet_thld; 3362306a36Sopenharmony_ci int classh_vpch_auto; 3462306a36Sopenharmony_ci int classh_vpch_rate; 3562306a36Sopenharmony_ci int classh_vpch_man; 3662306a36Sopenharmony_ci}; 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_cistruct monitor_cfg { 3962306a36Sopenharmony_ci /* 4062306a36Sopenharmony_ci * Signal Monitor Data 4162306a36Sopenharmony_ci * highly configurable signal monitoring 4262306a36Sopenharmony_ci * data positioning and different types of 4362306a36Sopenharmony_ci * monitoring data. 4462306a36Sopenharmony_ci * 4562306a36Sopenharmony_ci * Section 4.8.2 - 4.8.4 of the datasheet 4662306a36Sopenharmony_ci */ 4762306a36Sopenharmony_ci bool is_present; 4862306a36Sopenharmony_ci bool imon_specs; 4962306a36Sopenharmony_ci bool vmon_specs; 5062306a36Sopenharmony_ci bool vpmon_specs; 5162306a36Sopenharmony_ci bool vbstmon_specs; 5262306a36Sopenharmony_ci bool vpbrstat_specs; 5362306a36Sopenharmony_ci bool zerofill_specs; 5462306a36Sopenharmony_ci u8 imon_dpth; 5562306a36Sopenharmony_ci u8 imon_loc; 5662306a36Sopenharmony_ci u8 imon_frm; 5762306a36Sopenharmony_ci u8 imon_scale; 5862306a36Sopenharmony_ci u8 vmon_dpth; 5962306a36Sopenharmony_ci u8 vmon_loc; 6062306a36Sopenharmony_ci u8 vmon_frm; 6162306a36Sopenharmony_ci u8 vpmon_dpth; 6262306a36Sopenharmony_ci u8 vpmon_loc; 6362306a36Sopenharmony_ci u8 vpmon_frm; 6462306a36Sopenharmony_ci u8 vbstmon_dpth; 6562306a36Sopenharmony_ci u8 vbstmon_loc; 6662306a36Sopenharmony_ci u8 vbstmon_frm; 6762306a36Sopenharmony_ci u8 vpbrstat_dpth; 6862306a36Sopenharmony_ci u8 vpbrstat_loc; 6962306a36Sopenharmony_ci u8 vpbrstat_frm; 7062306a36Sopenharmony_ci u8 zerofill_dpth; 7162306a36Sopenharmony_ci u8 zerofill_loc; 7262306a36Sopenharmony_ci u8 zerofill_frm; 7362306a36Sopenharmony_ci}; 7462306a36Sopenharmony_ci 7562306a36Sopenharmony_cistruct cs35l35_platform_data { 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ci /* Stereo (2 Device) */ 7862306a36Sopenharmony_ci bool stereo; 7962306a36Sopenharmony_ci /* serial port drive strength */ 8062306a36Sopenharmony_ci int sp_drv_str; 8162306a36Sopenharmony_ci /* serial port drive in unused slots */ 8262306a36Sopenharmony_ci int sp_drv_unused; 8362306a36Sopenharmony_ci /* Boost Power Down with FET */ 8462306a36Sopenharmony_ci bool bst_pdn_fet_on; 8562306a36Sopenharmony_ci /* Boost Voltage : used if ClassH Algo Enabled */ 8662306a36Sopenharmony_ci int bst_vctl; 8762306a36Sopenharmony_ci /* Boost Converter Peak Current CTRL */ 8862306a36Sopenharmony_ci int bst_ipk; 8962306a36Sopenharmony_ci /* Amp Gain Zero Cross */ 9062306a36Sopenharmony_ci bool gain_zc; 9162306a36Sopenharmony_ci /* Audio Input Location */ 9262306a36Sopenharmony_ci int aud_channel; 9362306a36Sopenharmony_ci /* Advisory Input Location */ 9462306a36Sopenharmony_ci int adv_channel; 9562306a36Sopenharmony_ci /* Shared Boost for stereo */ 9662306a36Sopenharmony_ci bool shared_bst; 9762306a36Sopenharmony_ci /* Specifies this amp is using an external boost supply */ 9862306a36Sopenharmony_ci bool ext_bst; 9962306a36Sopenharmony_ci /* Inductor Value */ 10062306a36Sopenharmony_ci int boost_ind; 10162306a36Sopenharmony_ci /* ClassH Algorithm */ 10262306a36Sopenharmony_ci struct classh_cfg classh_algo; 10362306a36Sopenharmony_ci /* Monitor Config */ 10462306a36Sopenharmony_ci struct monitor_cfg mon_cfg; 10562306a36Sopenharmony_ci}; 10662306a36Sopenharmony_ci 10762306a36Sopenharmony_ci#endif /* __CS35L35_H */ 108