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