1*73cfbfa9SSimon Trimmer /* SPDX-License-Identifier: GPL-2.0-only 2*73cfbfa9SSimon Trimmer * 3*73cfbfa9SSimon Trimmer * HDA audio driver for Cirrus Logic CS35L56 smart amp 4*73cfbfa9SSimon Trimmer * 5*73cfbfa9SSimon Trimmer * Copyright (C) 2023 Cirrus Logic, Inc. and 6*73cfbfa9SSimon Trimmer * Cirrus Logic International Semiconductor Ltd. 7*73cfbfa9SSimon Trimmer */ 8*73cfbfa9SSimon Trimmer 9*73cfbfa9SSimon Trimmer #ifndef __CS35L56_HDA_H__ 10*73cfbfa9SSimon Trimmer #define __CS35L56_HDA_H__ 11*73cfbfa9SSimon Trimmer 12*73cfbfa9SSimon Trimmer #include <linux/device.h> 13*73cfbfa9SSimon Trimmer #include <linux/gpio/consumer.h> 14*73cfbfa9SSimon Trimmer #include <linux/firmware/cirrus/cs_dsp.h> 15*73cfbfa9SSimon Trimmer #include <linux/firmware/cirrus/wmfw.h> 16*73cfbfa9SSimon Trimmer #include <linux/regulator/consumer.h> 17*73cfbfa9SSimon Trimmer #include <sound/cs35l56.h> 18*73cfbfa9SSimon Trimmer 19*73cfbfa9SSimon Trimmer struct dentry; 20*73cfbfa9SSimon Trimmer 21*73cfbfa9SSimon Trimmer struct cs35l56_hda { 22*73cfbfa9SSimon Trimmer struct cs35l56_base base; 23*73cfbfa9SSimon Trimmer struct hda_codec *codec; 24*73cfbfa9SSimon Trimmer 25*73cfbfa9SSimon Trimmer int index; 26*73cfbfa9SSimon Trimmer const char *system_name; 27*73cfbfa9SSimon Trimmer const char *amp_name; 28*73cfbfa9SSimon Trimmer 29*73cfbfa9SSimon Trimmer struct cs_dsp cs_dsp; 30*73cfbfa9SSimon Trimmer bool playing; 31*73cfbfa9SSimon Trimmer bool suspended; 32*73cfbfa9SSimon Trimmer u8 asp_tx_mask; 33*73cfbfa9SSimon Trimmer 34*73cfbfa9SSimon Trimmer struct snd_kcontrol *posture_ctl; 35*73cfbfa9SSimon Trimmer struct snd_kcontrol *volume_ctl; 36*73cfbfa9SSimon Trimmer struct snd_kcontrol *mixer_ctl[4]; 37*73cfbfa9SSimon Trimmer 38*73cfbfa9SSimon Trimmer #if IS_ENABLED(CONFIG_SND_DEBUG) 39*73cfbfa9SSimon Trimmer struct dentry *debugfs_root; 40*73cfbfa9SSimon Trimmer #endif 41*73cfbfa9SSimon Trimmer }; 42*73cfbfa9SSimon Trimmer 43*73cfbfa9SSimon Trimmer extern const struct dev_pm_ops cs35l56_hda_pm_ops; 44*73cfbfa9SSimon Trimmer 45*73cfbfa9SSimon Trimmer int cs35l56_hda_common_probe(struct cs35l56_hda *cs35l56, int id); 46*73cfbfa9SSimon Trimmer void cs35l56_hda_remove(struct device *dev); 47*73cfbfa9SSimon Trimmer 48*73cfbfa9SSimon Trimmer #endif /*__CS35L56_HDA_H__*/ 49