2017-03-06 14:07:59 +00:00
|
|
|
/*
|
|
|
|
* 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 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;
|
2017-03-08 16:42:49 +00:00
|
|
|
/* serial port drive in unused slots */
|
|
|
|
int sp_drv_unused;
|
2017-03-06 14:07:59 +00:00
|
|
|
/* 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;
|
|
|
|
/* ClassH Algorithm */
|
|
|
|
struct classh_cfg classh_algo;
|
|
|
|
/* Monitor Config */
|
|
|
|
struct monitor_cfg mon_cfg;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif /* __CS35L35_H */
|