/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * linux/sound/cs35l35.h -- Platform data for CS35l35
 *
 * Copyright (c) 2016 Cirrus Logic Inc.
 */

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