18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * linux/sound/cs35l35.h -- Platform data for CS35l35 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Copyright (c) 2016 Cirrus Logic Inc. 68c2ecf20Sopenharmony_ci */ 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ci#ifndef __CS35L35_H 98c2ecf20Sopenharmony_ci#define __CS35L35_H 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_cistruct classh_cfg { 128c2ecf20Sopenharmony_ci /* 138c2ecf20Sopenharmony_ci * Class H Algorithm Control Variables 148c2ecf20Sopenharmony_ci * You can either have it done 158c2ecf20Sopenharmony_ci * automatically or you can adjust 168c2ecf20Sopenharmony_ci * these variables for tuning 178c2ecf20Sopenharmony_ci * 188c2ecf20Sopenharmony_ci * if you do not enable the internal algorithm 198c2ecf20Sopenharmony_ci * you will get a set of mixer controls for 208c2ecf20Sopenharmony_ci * Class H tuning 218c2ecf20Sopenharmony_ci * 228c2ecf20Sopenharmony_ci * Section 4.3 of the datasheet 238c2ecf20Sopenharmony_ci */ 248c2ecf20Sopenharmony_ci bool classh_bst_override; 258c2ecf20Sopenharmony_ci bool classh_algo_enable; 268c2ecf20Sopenharmony_ci int classh_bst_max_limit; 278c2ecf20Sopenharmony_ci int classh_mem_depth; 288c2ecf20Sopenharmony_ci int classh_release_rate; 298c2ecf20Sopenharmony_ci int classh_headroom; 308c2ecf20Sopenharmony_ci int classh_wk_fet_disable; 318c2ecf20Sopenharmony_ci int classh_wk_fet_delay; 328c2ecf20Sopenharmony_ci int classh_wk_fet_thld; 338c2ecf20Sopenharmony_ci int classh_vpch_auto; 348c2ecf20Sopenharmony_ci int classh_vpch_rate; 358c2ecf20Sopenharmony_ci int classh_vpch_man; 368c2ecf20Sopenharmony_ci}; 378c2ecf20Sopenharmony_ci 388c2ecf20Sopenharmony_cistruct monitor_cfg { 398c2ecf20Sopenharmony_ci /* 408c2ecf20Sopenharmony_ci * Signal Monitor Data 418c2ecf20Sopenharmony_ci * highly configurable signal monitoring 428c2ecf20Sopenharmony_ci * data positioning and different types of 438c2ecf20Sopenharmony_ci * monitoring data. 448c2ecf20Sopenharmony_ci * 458c2ecf20Sopenharmony_ci * Section 4.8.2 - 4.8.4 of the datasheet 468c2ecf20Sopenharmony_ci */ 478c2ecf20Sopenharmony_ci bool is_present; 488c2ecf20Sopenharmony_ci bool imon_specs; 498c2ecf20Sopenharmony_ci bool vmon_specs; 508c2ecf20Sopenharmony_ci bool vpmon_specs; 518c2ecf20Sopenharmony_ci bool vbstmon_specs; 528c2ecf20Sopenharmony_ci bool vpbrstat_specs; 538c2ecf20Sopenharmony_ci bool zerofill_specs; 548c2ecf20Sopenharmony_ci u8 imon_dpth; 558c2ecf20Sopenharmony_ci u8 imon_loc; 568c2ecf20Sopenharmony_ci u8 imon_frm; 578c2ecf20Sopenharmony_ci u8 imon_scale; 588c2ecf20Sopenharmony_ci u8 vmon_dpth; 598c2ecf20Sopenharmony_ci u8 vmon_loc; 608c2ecf20Sopenharmony_ci u8 vmon_frm; 618c2ecf20Sopenharmony_ci u8 vpmon_dpth; 628c2ecf20Sopenharmony_ci u8 vpmon_loc; 638c2ecf20Sopenharmony_ci u8 vpmon_frm; 648c2ecf20Sopenharmony_ci u8 vbstmon_dpth; 658c2ecf20Sopenharmony_ci u8 vbstmon_loc; 668c2ecf20Sopenharmony_ci u8 vbstmon_frm; 678c2ecf20Sopenharmony_ci u8 vpbrstat_dpth; 688c2ecf20Sopenharmony_ci u8 vpbrstat_loc; 698c2ecf20Sopenharmony_ci u8 vpbrstat_frm; 708c2ecf20Sopenharmony_ci u8 zerofill_dpth; 718c2ecf20Sopenharmony_ci u8 zerofill_loc; 728c2ecf20Sopenharmony_ci u8 zerofill_frm; 738c2ecf20Sopenharmony_ci}; 748c2ecf20Sopenharmony_ci 758c2ecf20Sopenharmony_cistruct cs35l35_platform_data { 768c2ecf20Sopenharmony_ci 778c2ecf20Sopenharmony_ci /* Stereo (2 Device) */ 788c2ecf20Sopenharmony_ci bool stereo; 798c2ecf20Sopenharmony_ci /* serial port drive strength */ 808c2ecf20Sopenharmony_ci int sp_drv_str; 818c2ecf20Sopenharmony_ci /* serial port drive in unused slots */ 828c2ecf20Sopenharmony_ci int sp_drv_unused; 838c2ecf20Sopenharmony_ci /* Boost Power Down with FET */ 848c2ecf20Sopenharmony_ci bool bst_pdn_fet_on; 858c2ecf20Sopenharmony_ci /* Boost Voltage : used if ClassH Algo Enabled */ 868c2ecf20Sopenharmony_ci int bst_vctl; 878c2ecf20Sopenharmony_ci /* Boost Converter Peak Current CTRL */ 888c2ecf20Sopenharmony_ci int bst_ipk; 898c2ecf20Sopenharmony_ci /* Amp Gain Zero Cross */ 908c2ecf20Sopenharmony_ci bool gain_zc; 918c2ecf20Sopenharmony_ci /* Audio Input Location */ 928c2ecf20Sopenharmony_ci int aud_channel; 938c2ecf20Sopenharmony_ci /* Advisory Input Location */ 948c2ecf20Sopenharmony_ci int adv_channel; 958c2ecf20Sopenharmony_ci /* Shared Boost for stereo */ 968c2ecf20Sopenharmony_ci bool shared_bst; 978c2ecf20Sopenharmony_ci /* Specifies this amp is using an external boost supply */ 988c2ecf20Sopenharmony_ci bool ext_bst; 998c2ecf20Sopenharmony_ci /* Inductor Value */ 1008c2ecf20Sopenharmony_ci int boost_ind; 1018c2ecf20Sopenharmony_ci /* ClassH Algorithm */ 1028c2ecf20Sopenharmony_ci struct classh_cfg classh_algo; 1038c2ecf20Sopenharmony_ci /* Monitor Config */ 1048c2ecf20Sopenharmony_ci struct monitor_cfg mon_cfg; 1058c2ecf20Sopenharmony_ci}; 1068c2ecf20Sopenharmony_ci 1078c2ecf20Sopenharmony_ci#endif /* __CS35L35_H */ 108