mirror of
https://github.com/torvalds/linux.git
synced 2024-11-15 00:21:59 +00:00
34e1b1bb73
A number of laptops have gone to market with old firmware versions that export controls that have since been hidden, but we can't just install a newer firmware because the firmware for each product is customized and qualified by the OEM. The issue is that alsactl save and restore has no idea what controls are good to persist which can lead to misconfiguration. There is no reason that the UCM or user should need to interact with any of the ALSA controls for the firmware coefficients so they can be removed entirely, this also simplifies the driver. Signed-off-by: Simon Trimmer <simont@opensource.cirrus.com> Link: https://patch.msgid.link/20240801143139.34549-1-simont@opensource.cirrus.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
51 lines
1.1 KiB
C
51 lines
1.1 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only
|
|
*
|
|
* HDA audio driver for Cirrus Logic CS35L56 smart amp
|
|
*
|
|
* Copyright (C) 2023 Cirrus Logic, Inc. and
|
|
* Cirrus Logic International Semiconductor Ltd.
|
|
*/
|
|
|
|
#ifndef __CS35L56_HDA_H__
|
|
#define __CS35L56_HDA_H__
|
|
|
|
#include <linux/device.h>
|
|
#include <linux/gpio/consumer.h>
|
|
#include <linux/firmware/cirrus/cs_dsp.h>
|
|
#include <linux/firmware/cirrus/wmfw.h>
|
|
#include <linux/regulator/consumer.h>
|
|
#include <linux/workqueue.h>
|
|
#include <sound/cs35l56.h>
|
|
|
|
struct dentry;
|
|
|
|
struct cs35l56_hda {
|
|
struct cs35l56_base base;
|
|
struct hda_codec *codec;
|
|
struct work_struct dsp_work;
|
|
|
|
int index;
|
|
const char *system_name;
|
|
const char *amp_name;
|
|
|
|
struct cs_dsp cs_dsp;
|
|
bool playing;
|
|
bool suspended;
|
|
u8 asp_tx_mask;
|
|
|
|
struct snd_kcontrol *posture_ctl;
|
|
struct snd_kcontrol *volume_ctl;
|
|
struct snd_kcontrol *mixer_ctl[4];
|
|
|
|
#if IS_ENABLED(CONFIG_SND_DEBUG)
|
|
struct dentry *debugfs_root;
|
|
#endif
|
|
};
|
|
|
|
extern const struct dev_pm_ops cs35l56_hda_pm_ops;
|
|
|
|
int cs35l56_hda_common_probe(struct cs35l56_hda *cs35l56, int hid, int id);
|
|
void cs35l56_hda_remove(struct device *dev);
|
|
|
|
#endif /*__CS35L56_HDA_H__*/
|