mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git/
synced 2026-05-02 18:15:03 -04:00
Create debugfs files that can be used to perform factory calibration. During manufacture, the production line must perform a factory calibration of the amps. This commit adds this functionality via debugfs files. As this is only needed during manufacture, there is no need for this to be available in a normal system so a Kconfig item has been added to enable this. The new Kconfig option is inside a sub-menu because items do not group and indent if the parent is invisible or there are multiple parent dependencies. Anyway the sub-menu reduces the clutter. cs35l56_hda_apply_calibration() has been changed to return an error code that can be reported back through the debugfs write. The original call to this function doesn't check the return code because in normal use it doesn't matter whether this fails - the firmware will default to a safe calibration for the platform. But tooling using the debugfs files might want to know if there was an error. Signed-off-by: Richard Fitzgerald <rf@opensource.cirrus.com> Reviewed-by: Takashi Iwai <tiwai@suse.de> Link: https://patch.msgid.link/20251021105022.1013685-6-rf@opensource.cirrus.com Signed-off-by: Mark Brown <broonie@kernel.org>
57 lines
1.3 KiB
C
57 lines
1.3 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/container_of.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
|
|
};
|
|
|
|
static inline struct cs35l56_hda *cs35l56_hda_from_base(struct cs35l56_base *cs35l56_base)
|
|
{
|
|
return container_of(cs35l56_base, struct cs35l56_hda, base);
|
|
}
|
|
|
|
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__*/
|