···223223 struct device_driver driver;224224 int type;225225 const struct hda_device_id *id_table;226226- int (*match)(struct hdac_device *dev, struct hdac_driver *drv);226226+ int (*match)(struct hdac_device *dev, const struct hdac_driver *drv);227227 void (*unsol_event)(struct hdac_device *dev, unsigned int event);228228229229 /* fields used by ext bus APIs */···235235#define drv_to_hdac_driver(_drv) container_of(_drv, struct hdac_driver, driver)236236237237const struct hda_device_id *238238-hdac_get_device_id(struct hdac_device *hdev, struct hdac_driver *drv);238238+hdac_get_device_id(struct hdac_device *hdev, const struct hdac_driver *drv);239239240240/*241241 * Bus verb operators
+2
include/sound/pcm.h
···14021402#define snd_pcm_lib_mmap_iomem NULL14031403#endif1404140414051405+void snd_pcm_runtime_buffer_set_silence(struct snd_pcm_runtime *runtime);14061406+14051407/**14061408 * snd_pcm_limit_isa_dma_size - Get the max size fitting with ISA DMA transfer14071409 * @dma: DMA number
···723723 atomic_inc(&runtime->buffer_accessing);724724}725725726726+/* fill the PCM buffer with the current silence format; called from pcm_oss.c */727727+void snd_pcm_runtime_buffer_set_silence(struct snd_pcm_runtime *runtime)728728+{729729+ snd_pcm_buffer_access_lock(runtime);730730+ if (runtime->dma_area)731731+ snd_pcm_format_set_silence(runtime->format, runtime->dma_area,732732+ bytes_to_samples(runtime, runtime->dma_bytes));733733+ snd_pcm_buffer_access_unlock(runtime);734734+}735735+EXPORT_SYMBOL_GPL(snd_pcm_runtime_buffer_set_silence);736736+726737#if IS_ENABLED(CONFIG_SND_PCM_OSS)727738#define is_oss_stream(substream) ((substream)->oss.oss)728739#else
···464464 return -EINVAL;465465}466466467467+static int mca_fe_startup(struct snd_pcm_substream *substream,468468+ struct snd_soc_dai *dai)469469+{470470+ struct mca_cluster *cl = mca_dai_to_cluster(dai);471471+ unsigned int mask, nchannels;472472+473473+ if (cl->tdm_slots) {474474+ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)475475+ mask = cl->tdm_tx_mask;476476+ else477477+ mask = cl->tdm_rx_mask;478478+479479+ nchannels = hweight32(mask);480480+ } else {481481+ nchannels = 2;482482+ }483483+484484+ return snd_pcm_hw_constraint_minmax(substream->runtime,485485+ SNDRV_PCM_HW_PARAM_CHANNELS,486486+ 1, nchannels);487487+}488488+467489static int mca_fe_set_tdm_slot(struct snd_soc_dai *dai, unsigned int tx_mask,468490 unsigned int rx_mask, int slots, int slot_width)469491{···702680}703681704682static const struct snd_soc_dai_ops mca_fe_ops = {683683+ .startup = mca_fe_startup,705684 .set_fmt = mca_fe_set_fmt,706685 .set_bclk_ratio = mca_set_bclk_ratio,707686 .set_tdm_slot = mca_fe_set_tdm_slot,
+1
sound/soc/mediatek/Kconfig
···228228config SND_SOC_MT8188_MT6359229229 tristate "ASoC Audio driver for MT8188 with MT6359 and I2S codecs"230230 depends on SND_SOC_MT8188 && MTK_PMIC_WRAP231231+ depends on SND_SOC_MT6359_ACCDET || !SND_SOC_MT6359_ACCDET231232 depends on I2C232233 select SND_SOC_MT6359233234 select SND_SOC_HDMI_CODEC
+4
sound/soc/qcom/sdm845.c
···9191 else9292 ret = snd_soc_dai_set_channel_map(cpu_dai, tx_ch_cnt,9393 tx_ch, 0, NULL);9494+ if (ret != 0 && ret != -ENOTSUPP) {9595+ dev_err(rtd->dev, "failed to set cpu chan map, err:%d\n", ret);9696+ return ret;9797+ }9498 }959996100 return 0;
···10491049 if (!*mach && codec_num <= 2) {10501050 bool tplg_fixup = false;1051105110521052- hda_mach = snd_soc_acpi_intel_hda_machines;10521052+ /*10531053+ * make a local copy of the match array since we might10541054+ * be modifying it10551055+ */10561056+ hda_mach = devm_kmemdup_array(sdev->dev,10571057+ snd_soc_acpi_intel_hda_machines,10581058+ 2, /* we have one entry + sentinel in the array */10591059+ sizeof(snd_soc_acpi_intel_hda_machines[0]),10601060+ GFP_KERNEL);10611061+ if (!hda_mach) {10621062+ dev_err(bus->dev,10631063+ "%s: failed to duplicate the HDA match table\n",10641064+ __func__);10651065+ return;10661066+ }1053106710541068 dev_info(bus->dev, "using HDA machine driver %s now\n",10551069 hda_mach->drv_name);
+10-1
sound/soc/sof/ipc4-control.c
···531531 return -EINVAL;532532 }533533534534+ /* Check header id */535535+ if (header.numid != SOF_CTRL_CMD_BINARY) {536536+ dev_err_ratelimited(scomp->dev,537537+ "Incorrect numid for bytes put %d\n",538538+ header.numid);539539+ return -EINVAL;540540+ }541541+534542 /* Verify the ABI header first */535543 if (copy_from_user(&abi_hdr, tlvd->tlv, sizeof(abi_hdr)))536544 return -EFAULT;···621613 if (data_size > size)622614 return -ENOSPC;623615624624- header.numid = scontrol->comp_id;616616+ /* Set header id and length */617617+ header.numid = SOF_CTRL_CMD_BINARY;625618 header.length = data_size;626619627620 if (copy_to_user(tlvd, &header, sizeof(struct snd_ctl_tlv)))
+2-1
sound/soc/sof/ipc4-pcm.c
···799799800800 spcm->stream[stream].private = stream_priv;801801802802- if (!support_info)802802+ /* Delay reporting is only supported on playback */803803+ if (!support_info || stream == SNDRV_PCM_STREAM_CAPTURE)803804 continue;804805805806 time_info = kzalloc(sizeof(*time_info), GFP_KERNEL);
+14-4
sound/soc/sof/topology.c
···10711071 struct snd_sof_dai *dai)10721072{10731073 struct snd_soc_card *card = scomp->card;10741074- struct snd_soc_pcm_runtime *rtd;10741074+ struct snd_soc_pcm_runtime *rtd, *full, *partial;10751075 struct snd_soc_dai *cpu_dai;10761076 int stream;10771077 int i;···10881088 else10891089 goto end;1090109010911091+ full = NULL;10921092+ partial = NULL;10911093 list_for_each_entry(rtd, &card->rtd_list, list) {10921094 /* does stream match DAI link ? */10931093- if (!rtd->dai_link->stream_name ||10941094- !strstr(rtd->dai_link->stream_name, w->sname))10951095- continue;10951095+ if (rtd->dai_link->stream_name) {10961096+ if (!strcmp(rtd->dai_link->stream_name, w->sname)) {10971097+ full = rtd;10981098+ break;10991099+ } else if (strstr(rtd->dai_link->stream_name, w->sname)) {11001100+ partial = rtd;11011101+ }11021102+ }11031103+ }1096110411051105+ rtd = full ? full : partial;11061106+ if (rtd) {10971107 for_each_rtd_cpu_dais(rtd, i, cpu_dai) {10981108 /*10991109 * Please create DAI widget in the right order