162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci * 362306a36Sopenharmony_ci * HDA DSP ALSA Control Driver 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright 2022 Cirrus Logic, Inc. 662306a36Sopenharmony_ci * 762306a36Sopenharmony_ci * Author: Stefan Binding <sbinding@opensource.cirrus.com> 862306a36Sopenharmony_ci */ 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#ifndef __HDA_CS_DSP_CTL_H__ 1162306a36Sopenharmony_ci#define __HDA_CS_DSP_CTL_H__ 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ci#include <sound/soc.h> 1462306a36Sopenharmony_ci#include <linux/firmware/cirrus/cs_dsp.h> 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_cienum hda_cs_dsp_fw_id { 1762306a36Sopenharmony_ci HDA_CS_DSP_FW_SPK_PROT, 1862306a36Sopenharmony_ci HDA_CS_DSP_FW_SPK_CALI, 1962306a36Sopenharmony_ci HDA_CS_DSP_FW_SPK_DIAG, 2062306a36Sopenharmony_ci HDA_CS_DSP_FW_MISC, 2162306a36Sopenharmony_ci HDA_CS_DSP_NUM_FW 2262306a36Sopenharmony_ci}; 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_cistruct hda_cs_dsp_ctl_info { 2562306a36Sopenharmony_ci struct snd_card *card; 2662306a36Sopenharmony_ci enum hda_cs_dsp_fw_id fw_type; 2762306a36Sopenharmony_ci const char *device_name; 2862306a36Sopenharmony_ci}; 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ciextern const char * const hda_cs_dsp_fw_ids[HDA_CS_DSP_NUM_FW]; 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_civoid hda_cs_dsp_add_controls(struct cs_dsp *dsp, const struct hda_cs_dsp_ctl_info *info); 3362306a36Sopenharmony_civoid hda_cs_dsp_control_remove(struct cs_dsp_coeff_ctl *cs_ctl); 3462306a36Sopenharmony_ciint hda_cs_dsp_write_ctl(struct cs_dsp *dsp, const char *name, int type, 3562306a36Sopenharmony_ci unsigned int alg, const void *buf, size_t len); 3662306a36Sopenharmony_ciint hda_cs_dsp_read_ctl(struct cs_dsp *dsp, const char *name, int type, 3762306a36Sopenharmony_ci unsigned int alg, void *buf, size_t len); 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_ci#endif /*__HDA_CS_DSP_CTL_H__*/ 40