kernel_samsung_a34x-permissive/include/sound/cs35l41.h
2024-04-28 15:49:01 +02:00

109 lines
2.3 KiB
C
Executable file

/*
* linux/sound/cs35l41.h -- Platform data for CS35L41
*
* 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 __CS35L41_H
#define __CS35L41_H
#include <sound/soc.h>
struct classh_cfg {
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_delay;
int classh_wk_fet_thld;
};
struct cs35l41_irq_cfg {
bool is_present;
bool irq_pol_inv;
bool irq_out_en;
int irq_src_sel;
};
struct cs35l41_platform_data {
bool sclk_frc;
bool lrclk_frc;
bool right_channel;
bool amp_gain_zc;
bool dsp_ng_enable;
bool inv_pcm;
bool use_fsync_errata;
int bst_ind;
int bst_vctrl;
int bst_ipk;
int temp_warn_thld;
int algo_frame_delay;
int dsp_ng_pcm_thld;
int dsp_ng_delay;
int dout_hiz;
unsigned int hw_ng_sel;
unsigned int hw_ng_delay;
unsigned int hw_ng_thld;
unsigned int fixed_rate;
unsigned int fixed_width;
unsigned int fixed_wl;
bool fixed_params;
const char *dsp_part_name;
const char *mfd_suffix;
struct cs35l41_irq_cfg irq_config1;
struct cs35l41_irq_cfg irq_config2;
struct classh_cfg classh_config;
};
struct cs35l41_private {
struct wm_adsp dsp; /* needs to be first member */
struct snd_soc_codec *codec;
struct cs35l41_platform_data pdata;
struct device *dev;
struct regmap *regmap;
struct regulator_bulk_data supplies[2];
int num_supplies;
int irq;
int clksrc;
int extclk_freq;
int extclk_cfg;
int sclk;
int amp_mute;
int pcm_vol;
int pcm_active;
int dsprx2_src;
int lrclk_fmt;
int sclk_fmt;
int pcm_source_last;
int pll_freq_last;
unsigned int spk_3_trim;
unsigned int spk_4_trim;
bool dspa_mode;
bool i2s_mode;
bool swire_mode;
bool halo_booted;
bool halo_routed;
bool halo_played;
/* GPIO for /RST */
struct gpio_desc *reset_gpio;
struct completion global_pup_done;
struct completion global_pdn_done;
struct completion mbox_cmd;
struct mutex rate_lock;
};
int cs35l41_reinit(struct snd_soc_component *component);
int cs35l41_probe(struct cs35l41_private *cs35l41);
int cs35l41_remove(struct cs35l41_private *cs35l41);
int cs35l41_set_surface_temp(const char *suffix, int temperature);
#endif /* __CS35L41_H */