Lines Matching +full:assigned +full:- +full:resolution +full:- +full:bits

1 // SPDX-License-Identifier: GPL-2.0-or-later
21 /* for art-tsc conversion */
51 /* release the assigned stream */
61 return &apcm->info->stream[substream->stream]; in to_hda_pcm_stream()
71 if (!hinfo->ops.get_delay) in azx_adjust_codec_delay()
74 codec_frames = hinfo->ops.get_delay(hinfo, apcm->codec, substream); in azx_adjust_codec_delay()
76 substream->runtime->rate); in azx_adjust_codec_delay()
78 if (substream->stream == SNDRV_PCM_STREAM_CAPTURE) in azx_adjust_codec_delay()
81 return (nsec > codec_nsecs) ? nsec - codec_nsecs : 0; in azx_adjust_codec_delay()
92 struct azx *chip = apcm->chip; in azx_pcm_close()
96 mutex_lock(&chip->open_mutex); in azx_pcm_close()
98 if (hinfo->ops.close) in azx_pcm_close()
99 hinfo->ops.close(hinfo, apcm->codec, substream); in azx_pcm_close()
100 snd_hda_power_down(apcm->codec); in azx_pcm_close()
101 mutex_unlock(&chip->open_mutex); in azx_pcm_close()
102 snd_hda_codec_pcm_put(apcm->info); in azx_pcm_close()
110 struct azx *chip = apcm->chip; in azx_pcm_hw_params()
118 ret = -EBUSY; in azx_pcm_hw_params()
122 /* Set up BDLEs here, return -ENOMEM if too many BDLEs are required */ in azx_pcm_hw_params()
123 hdas->bufsize = params_buffer_bytes(hw_params); in azx_pcm_hw_params()
124 hdas->period_bytes = params_period_bytes(hw_params); in azx_pcm_hw_params()
125 hdas->format_val = 0; in azx_pcm_hw_params()
126 hdas->no_period_wakeup = in azx_pcm_hw_params()
127 (hw_params->info & SNDRV_PCM_INFO_NO_PERIOD_WAKEUP) && in azx_pcm_hw_params()
128 (hw_params->flags & SNDRV_PCM_HW_PARAMS_NO_PERIOD_WAKEUP); in azx_pcm_hw_params()
130 ret = -ENOMEM; in azx_pcm_hw_params()
148 snd_hda_codec_cleanup(apcm->codec, hinfo, substream); in azx_pcm_hw_free()
150 azx_stream(azx_dev)->prepared = 0; in azx_pcm_hw_free()
158 struct azx *chip = apcm->chip; in azx_pcm_prepare()
161 struct snd_pcm_runtime *runtime = substream->runtime; in azx_pcm_prepare()
162 unsigned int format_val, stream_tag, bits; in azx_pcm_prepare() local
165 snd_hda_spdif_out_of_nid(apcm->codec, hinfo->nid); in azx_pcm_prepare()
166 unsigned short ctls = spdif ? spdif->ctls : 0; in azx_pcm_prepare()
171 err = -EBUSY; in azx_pcm_prepare()
176 bits = snd_hdac_stream_format_bits(runtime->format, SNDRV_PCM_SUBFORMAT_STD, hinfo->maxbps); in azx_pcm_prepare()
178 format_val = snd_hdac_spdif_stream_format(runtime->channels, bits, runtime->rate, ctls); in azx_pcm_prepare()
180 dev_err(chip->card->dev, in azx_pcm_prepare()
182 runtime->rate, runtime->channels, runtime->format); in azx_pcm_prepare()
183 err = -EINVAL; in azx_pcm_prepare()
193 stream_tag = azx_dev->core.stream_tag; in azx_pcm_prepare()
194 /* CA-IBG chips need the playback stream starting from 1 */ in azx_pcm_prepare()
195 if ((chip->driver_caps & AZX_DCAPS_CTX_WORKAROUND) && in azx_pcm_prepare()
196 stream_tag > chip->capture_streams) in azx_pcm_prepare()
197 stream_tag -= chip->capture_streams; in azx_pcm_prepare()
198 err = snd_hda_codec_prepare(apcm->codec, hinfo, stream_tag, in azx_pcm_prepare()
199 azx_dev->core.format_val, substream); in azx_pcm_prepare()
203 azx_stream(azx_dev)->prepared = 1; in azx_pcm_prepare()
211 struct azx *chip = apcm->chip; in azx_pcm_trigger()
224 if (chip->driver_caps & AZX_DCAPS_OLD_SSYNC) in azx_pcm_trigger()
229 if (dsp_is_locked(azx_dev) || !hstr->prepared) in azx_pcm_trigger()
230 return -EPIPE; in azx_pcm_trigger()
244 return -EINVAL; in azx_pcm_trigger()
248 if (s->pcm->card != substream->pcm->card) in azx_pcm_trigger()
251 sbits |= 1 << azx_dev->core.index; in azx_pcm_trigger()
255 spin_lock(&bus->reg_lock); in azx_pcm_trigger()
257 /* first, set SYNC bits of corresponding streams */ in azx_pcm_trigger()
261 if (s->pcm->card != substream->pcm->card) in azx_pcm_trigger()
265 azx_dev->insufficient = 1; in azx_pcm_trigger()
271 spin_unlock(&bus->reg_lock); in azx_pcm_trigger()
275 spin_lock(&bus->reg_lock); in azx_pcm_trigger()
276 /* reset SYNC bits */ in azx_pcm_trigger()
279 spin_unlock(&bus->reg_lock); in azx_pcm_trigger()
298 struct snd_pcm_substream *substream = azx_dev->core.substream; in azx_get_position()
300 int stream = substream->stream; in azx_get_position()
303 if (chip->get_position[stream]) in azx_get_position()
304 pos = chip->get_position[stream](chip, azx_dev); in azx_get_position()
308 if (pos >= azx_dev->core.bufsize) in azx_get_position()
311 if (substream->runtime) { in azx_get_position()
315 if (chip->get_delay[stream]) in azx_get_position()
316 delay += chip->get_delay[stream](chip, azx_dev, pos); in azx_get_position()
317 if (hinfo->ops.get_delay) in azx_get_position()
318 delay += hinfo->ops.get_delay(hinfo, apcm->codec, in azx_get_position()
320 substream->runtime->delay = delay; in azx_get_position()
331 struct azx *chip = apcm->chip; in azx_pcm_pointer()
333 return bytes_to_frames(substream->runtime, in azx_pcm_pointer()
351 * rem can’t overflow because both are 32-bit values
375 struct azx *chip = apcm->chip; in azx_get_sync_time()
385 runtime = substream->runtime; in azx_get_sync_time()
387 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) in azx_get_sync_time()
396 (azx_dev->core.stream_tag - 1); in azx_get_sync_time()
407 timeout--; in azx_get_sync_time()
411 dev_err(chip->card->dev, "GTSCC capture Timedout!\n"); in azx_get_sync_time()
412 return -EIO; in azx_get_sync_time()
441 if (wallclk_cycles < HDA_MAX_CYCLE_VALUE - HDA_MAX_CYCLE_OFFSET in azx_get_sync_time()
455 dev_err_ratelimited(chip->card->dev, in azx_get_sync_time()
457 return -EIO; in azx_get_sync_time()
461 NSEC_PER_SEC, runtime->rate)); in azx_get_sync_time()
463 ((HDA_MAX_CYCLE_VALUE + 1) * runtime->rate)); in azx_get_sync_time()
465 system->cycles = tsc_counter; in azx_get_sync_time()
466 system->cs_id = CSID_X86_ART; in azx_get_sync_time()
475 return -ENXIO; in azx_get_sync_time()
489 if (runtime->hw.info & SNDRV_PCM_INFO_HAS_LINK_SYNCHRONIZED_ATIME) in is_link_time_supported()
490 if (ts->type_requested == SNDRV_PCM_AUDIO_TSTAMP_TYPE_LINK_SYNCHRONIZED) in is_link_time_supported()
502 struct snd_pcm_runtime *runtime = substream->runtime; in azx_get_time_info()
507 if ((substream->runtime->hw.info & SNDRV_PCM_INFO_HAS_LINK_ATIME) && in azx_get_time_info()
508 (audio_tstamp_config->type_requested == SNDRV_PCM_AUDIO_TSTAMP_TYPE_LINK)) { in azx_get_time_info()
510 snd_pcm_gettime(substream->runtime, system_ts); in azx_get_time_info()
512 nsec = timecounter_read(&azx_dev->core.tc); in azx_get_time_info()
513 if (audio_tstamp_config->report_delay) in azx_get_time_info()
518 audio_tstamp_report->actual_type = SNDRV_PCM_AUDIO_TSTAMP_TYPE_LINK; in azx_get_time_info()
519 audio_tstamp_report->accuracy_report = 1; /* rest of structure is valid */ in azx_get_time_info()
520 audio_tstamp_report->accuracy = 42; /* 24 MHz WallClock == 42ns resolution */ in azx_get_time_info()
528 switch (runtime->tstamp_type) { in azx_get_time_info()
530 return -EINVAL; in azx_get_time_info()
544 audio_tstamp_report->actual_type = in azx_get_time_info()
546 audio_tstamp_report->accuracy_report = 1; in azx_get_time_info()
547 /* 24 MHz WallClock == 42ns resolution */ in azx_get_time_info()
548 audio_tstamp_report->accuracy = 42; in azx_get_time_info()
551 audio_tstamp_report->actual_type = SNDRV_PCM_AUDIO_TSTAMP_TYPE_DEFAULT; in azx_get_time_info()
562 /* No full-resume yet implemented */
587 struct azx *chip = apcm->chip; in azx_pcm_open()
589 struct snd_pcm_runtime *runtime = substream->runtime; in azx_pcm_open()
593 snd_hda_codec_pcm_get(apcm->info); in azx_pcm_open()
594 mutex_lock(&chip->open_mutex); in azx_pcm_open()
598 err = -EBUSY; in azx_pcm_open()
601 runtime->private_data = azx_dev; in azx_pcm_open()
603 runtime->hw = azx_pcm_hw; in azx_pcm_open()
604 if (chip->gts_present) in azx_pcm_open()
605 runtime->hw.info |= SNDRV_PCM_INFO_HAS_LINK_SYNCHRONIZED_ATIME; in azx_pcm_open()
606 runtime->hw.channels_min = hinfo->channels_min; in azx_pcm_open()
607 runtime->hw.channels_max = hinfo->channels_max; in azx_pcm_open()
608 runtime->hw.formats = hinfo->formats; in azx_pcm_open()
609 runtime->hw.rates = hinfo->rates; in azx_pcm_open()
613 /* avoid wrap-around with wall-clock */ in azx_pcm_open()
618 if (chip->align_buffer_size) in azx_pcm_open()
637 snd_hda_power_up(apcm->codec); in azx_pcm_open()
638 if (hinfo->ops.open) in azx_pcm_open()
639 err = hinfo->ops.open(hinfo, apcm->codec, substream); in azx_pcm_open()
641 err = -ENODEV; in azx_pcm_open()
648 if (snd_BUG_ON(!runtime->hw.channels_min) || in azx_pcm_open()
649 snd_BUG_ON(!runtime->hw.channels_max) || in azx_pcm_open()
650 snd_BUG_ON(!runtime->hw.formats) || in azx_pcm_open()
651 snd_BUG_ON(!runtime->hw.rates)) { in azx_pcm_open()
653 if (hinfo->ops.close) in azx_pcm_open()
654 hinfo->ops.close(hinfo, apcm->codec, substream); in azx_pcm_open()
655 err = -EINVAL; in azx_pcm_open()
661 if (substream->stream == SNDRV_PCM_STREAM_CAPTURE) { in azx_pcm_open()
662 runtime->hw.info &= ~SNDRV_PCM_INFO_HAS_WALL_CLOCK; /* legacy */ in azx_pcm_open()
663 runtime->hw.info &= ~SNDRV_PCM_INFO_HAS_LINK_ATIME; in azx_pcm_open()
667 mutex_unlock(&chip->open_mutex); in azx_pcm_open()
671 snd_hda_power_down(apcm->codec); in azx_pcm_open()
673 mutex_unlock(&chip->open_mutex); in azx_pcm_open()
674 snd_hda_codec_pcm_put(apcm->info); in azx_pcm_open()
691 struct azx_pcm *apcm = pcm->private_data; in azx_pcm_free()
693 list_del(&apcm->list); in azx_pcm_free()
694 apcm->info->pcm = NULL; in azx_pcm_free()
704 struct hdac_bus *bus = &_bus->core; in snd_hda_attach_pcm_stream()
708 int pcm_dev = cpcm->device; in snd_hda_attach_pcm_stream()
713 list_for_each_entry(apcm, &chip->pcm_list, list) { in snd_hda_attach_pcm_stream()
714 if (apcm->pcm->device == pcm_dev) { in snd_hda_attach_pcm_stream()
715 dev_err(chip->card->dev, "PCM %d already exists\n", in snd_hda_attach_pcm_stream()
717 return -EBUSY; in snd_hda_attach_pcm_stream()
720 err = snd_pcm_new(chip->card, cpcm->name, pcm_dev, in snd_hda_attach_pcm_stream()
721 cpcm->stream[SNDRV_PCM_STREAM_PLAYBACK].substreams, in snd_hda_attach_pcm_stream()
722 cpcm->stream[SNDRV_PCM_STREAM_CAPTURE].substreams, in snd_hda_attach_pcm_stream()
726 strscpy(pcm->name, cpcm->name, sizeof(pcm->name)); in snd_hda_attach_pcm_stream()
729 snd_device_free(chip->card, pcm); in snd_hda_attach_pcm_stream()
730 return -ENOMEM; in snd_hda_attach_pcm_stream()
732 apcm->chip = chip; in snd_hda_attach_pcm_stream()
733 apcm->pcm = pcm; in snd_hda_attach_pcm_stream()
734 apcm->codec = codec; in snd_hda_attach_pcm_stream()
735 apcm->info = cpcm; in snd_hda_attach_pcm_stream()
736 pcm->private_data = apcm; in snd_hda_attach_pcm_stream()
737 pcm->private_free = azx_pcm_free; in snd_hda_attach_pcm_stream()
738 if (cpcm->pcm_type == HDA_PCM_TYPE_MODEM) in snd_hda_attach_pcm_stream()
739 pcm->dev_class = SNDRV_PCM_CLASS_MODEM; in snd_hda_attach_pcm_stream()
740 list_add_tail(&apcm->list, &chip->pcm_list); in snd_hda_attach_pcm_stream()
741 cpcm->pcm = pcm; in snd_hda_attach_pcm_stream()
743 if (cpcm->stream[s].substreams) in snd_hda_attach_pcm_stream()
746 /* buffer pre-allocation */ in snd_hda_attach_pcm_stream()
750 if (chip->uc_buffer) in snd_hda_attach_pcm_stream()
752 snd_pcm_set_managed_buffer_all(pcm, type, chip->card->dev, in snd_hda_attach_pcm_stream()
774 struct hda_bus *hbus = &chip->bus; in azx_rirb_get_response()
782 if (hbus->no_response_fallback) in azx_rirb_get_response()
783 return -EIO; in azx_rirb_get_response()
785 if (!bus->polling_mode) { in azx_rirb_get_response()
786 dev_warn(chip->card->dev, in azx_rirb_get_response()
788 bus->last_cmd[addr]); in azx_rirb_get_response()
789 bus->polling_mode = 1; in azx_rirb_get_response()
793 if (chip->msi) { in azx_rirb_get_response()
794 dev_warn(chip->card->dev, in azx_rirb_get_response()
796 bus->last_cmd[addr]); in azx_rirb_get_response()
797 if (chip->ops->disable_msi_reset_irq && in azx_rirb_get_response()
798 chip->ops->disable_msi_reset_irq(chip) < 0) in azx_rirb_get_response()
799 return -EIO; in azx_rirb_get_response()
803 if (chip->probing) { in azx_rirb_get_response()
805 * phase, this is likely an access to a non-existing codec in azx_rirb_get_response()
808 return -EIO; in azx_rirb_get_response()
812 if (!chip->fallback_to_single_cmd) in azx_rirb_get_response()
813 return -EIO; in azx_rirb_get_response()
818 if (hbus->allow_bus_reset && !hbus->response_reset && !hbus->in_reset) { in azx_rirb_get_response()
819 hbus->response_reset = 1; in azx_rirb_get_response()
820 dev_err(chip->card->dev, in azx_rirb_get_response()
822 bus->last_cmd[addr]); in azx_rirb_get_response()
823 return -EAGAIN; /* give a chance to retry */ in azx_rirb_get_response()
826 dev_err(chip->card->dev, in azx_rirb_get_response()
828 bus->last_cmd[addr]); in azx_rirb_get_response()
829 chip->single_cmd = 1; in azx_rirb_get_response()
830 hbus->response_reset = 0; in azx_rirb_get_response()
832 return -EIO; in azx_rirb_get_response()
850 while (timeout--) { in azx_single_wait_for_response()
854 azx_bus(chip)->rirb.res[addr] = azx_readl(chip, IR); in azx_single_wait_for_response()
860 dev_dbg(chip->card->dev, "get_response timeout: IRS=0x%x\n", in azx_single_wait_for_response()
862 azx_bus(chip)->rirb.res[addr] = -1; in azx_single_wait_for_response()
863 return -EIO; in azx_single_wait_for_response()
873 bus->last_cmd[azx_command_addr(val)] = val; in azx_single_send_cmd()
874 while (timeout--) { in azx_single_send_cmd()
888 dev_dbg(chip->card->dev, in azx_single_send_cmd()
891 return -EIO; in azx_single_send_cmd()
899 *res = bus->rirb.res[addr]; in azx_single_get_response()
906 * They are just the skeleton to call sub-callbacks according to the
907 * current setting of chip->single_cmd.
915 if (chip->disabled) in azx_send_cmd()
917 if (chip->single_cmd || bus->use_pio_for_commands) in azx_send_cmd()
929 if (chip->disabled) in azx_get_response()
931 if (chip->single_cmd || bus->use_pio_for_commands) in azx_get_response()
954 list_for_each_entry(s, &bus->stream_list, list) in azx_get_dsp_loader_dev()
955 if (s->index == chip->playback_index_offset) in azx_get_dsp_loader_dev()
965 struct hdac_bus *bus = &codec->bus->core; in snd_hda_codec_load_dsp_prepare()
974 spin_lock_irq(&bus->reg_lock); in snd_hda_codec_load_dsp_prepare()
975 if (hstr->opened) { in snd_hda_codec_load_dsp_prepare()
976 chip->saved_azx_dev = *azx_dev; in snd_hda_codec_load_dsp_prepare()
979 spin_unlock_irq(&bus->reg_lock); in snd_hda_codec_load_dsp_prepare()
983 spin_lock_irq(&bus->reg_lock); in snd_hda_codec_load_dsp_prepare()
985 *azx_dev = chip->saved_azx_dev; in snd_hda_codec_load_dsp_prepare()
986 spin_unlock_irq(&bus->reg_lock); in snd_hda_codec_load_dsp_prepare()
990 hstr->prepared = 0; in snd_hda_codec_load_dsp_prepare()
997 struct hdac_bus *bus = &codec->bus->core; in snd_hda_codec_load_dsp_trigger()
1008 struct hdac_bus *bus = &codec->bus->core; in snd_hda_codec_load_dsp_cleanup()
1013 if (!dmab->area || !hstr->locked) in snd_hda_codec_load_dsp_cleanup()
1017 spin_lock_irq(&bus->reg_lock); in snd_hda_codec_load_dsp_cleanup()
1018 if (hstr->opened) in snd_hda_codec_load_dsp_cleanup()
1019 *azx_dev = chip->saved_azx_dev; in snd_hda_codec_load_dsp_cleanup()
1020 hstr->locked = false; in snd_hda_codec_load_dsp_cleanup()
1021 spin_unlock_irq(&bus->reg_lock); in snd_hda_codec_load_dsp_cleanup()
1033 if (chip->driver_caps & AZX_DCAPS_CTX_WORKAROUND) in azx_init_chip()
1062 if (!chip->ops->position_check || in stream_update()
1063 chip->ops->position_check(chip, azx_dev)) { in stream_update()
1064 spin_unlock(&bus->reg_lock); in stream_update()
1065 snd_pcm_period_elapsed(azx_stream(azx_dev)->substream); in stream_update()
1066 spin_lock(&bus->reg_lock); in stream_update()
1079 if (!pm_runtime_active(chip->card->dev)) in azx_interrupt()
1082 spin_lock(&bus->reg_lock); in azx_interrupt()
1084 if (chip->disabled) in azx_interrupt()
1110 if (chip->driver_caps & AZX_DCAPS_CTX_WORKAROUND) in azx_interrupt()
1118 spin_unlock(&bus->reg_lock); in azx_interrupt()
1137 unsigned int res = -1; in probe_codec()
1139 mutex_lock(&bus->cmd_mutex); in probe_codec()
1140 chip->probing = 1; in probe_codec()
1143 chip->probing = 0; in probe_codec()
1144 mutex_unlock(&bus->cmd_mutex); in probe_codec()
1145 if (err < 0 || res == -1) in probe_codec()
1146 return -EIO; in probe_codec()
1147 dev_dbg(chip->card->dev, "codec #%d probed OK\n", addr); in probe_codec()
1153 struct azx *chip = bus_to_azx(&bus->core); in snd_hda_bus_reset()
1155 bus->in_reset = 1; in snd_hda_bus_reset()
1158 if (bus->core.chip_init) in snd_hda_bus_reset()
1160 bus->in_reset = 0; in snd_hda_bus_reset()
1163 /* HD-audio bus initialization */
1166 struct hda_bus *bus = &chip->bus; in azx_bus_init()
1169 err = snd_hdac_bus_init(&bus->core, chip->card->dev, &bus_core_ops); in azx_bus_init()
1173 bus->card = chip->card; in azx_bus_init()
1174 mutex_init(&bus->prepare_mutex); in azx_bus_init()
1175 bus->pci = chip->pci; in azx_bus_init()
1176 bus->modelname = model; in azx_bus_init()
1177 bus->mixer_assigned = -1; in azx_bus_init()
1178 bus->core.snoop = azx_snoop(chip); in azx_bus_init()
1179 if (chip->get_position[0] != azx_get_pos_lpib || in azx_bus_init()
1180 chip->get_position[1] != azx_get_pos_lpib) in azx_bus_init()
1181 bus->core.use_posbuf = true; in azx_bus_init()
1182 bus->core.bdl_pos_adj = chip->bdl_pos_adj; in azx_bus_init()
1183 if (chip->driver_caps & AZX_DCAPS_CORBRP_SELF_CLEAR) in azx_bus_init()
1184 bus->core.corbrp_self_clear = true; in azx_bus_init()
1186 if (chip->driver_caps & AZX_DCAPS_4K_BDLE_BOUNDARY) in azx_bus_init()
1187 bus->core.align_bdle_4k = true; in azx_bus_init()
1189 if (chip->driver_caps & AZX_DCAPS_PIO_COMMANDS) in azx_bus_init()
1190 bus->core.use_pio_for_commands = true; in azx_bus_init()
1193 bus->core.sync_write = 1; in azx_bus_init()
1211 if ((bus->codec_mask & (1 << c)) & chip->codec_probe_mask) { in azx_probe_codecs()
1216 dev_warn(chip->card->dev, in azx_probe_codecs()
1218 bus->codec_mask &= ~(1 << c); in azx_probe_codecs()
1220 if (bus->codec_mask == 0) in azx_probe_codecs()
1222 /* More badly, accessing to a non-existing in azx_probe_codecs()
1237 if ((bus->codec_mask & (1 << c)) & chip->codec_probe_mask) { in azx_probe_codecs()
1239 err = snd_hda_codec_new(&chip->bus, chip->card, c, &codec); in azx_probe_codecs()
1242 codec->jackpoll_interval = chip->jackpoll_interval; in azx_probe_codecs()
1243 codec->beep_mode = chip->beep_mode; in azx_probe_codecs()
1244 codec->ctl_dev_id = chip->ctl_dev_id; in azx_probe_codecs()
1249 dev_err(chip->card->dev, "no codecs initialized\n"); in azx_probe_codecs()
1250 return -ENXIO; in azx_probe_codecs()
1262 list_for_each_codec(codec, &chip->bus) { in azx_codec_configure()
1269 list_for_each_codec_safe(codec, next, &chip->bus) { in azx_codec_configure()
1270 if (!codec->configured) { in azx_codec_configure()
1272 snd_hdac_device_unregister(&codec->core); in azx_codec_configure()
1277 return success ? 0 : -ENODEV; in azx_codec_configure()
1283 if (index >= chip->capture_index_offset && in stream_direction()
1284 index < chip->capture_index_offset + chip->capture_streams) in stream_direction()
1299 for (i = 0; i < chip->num_streams; i++) { in azx_init_streams()
1304 return -ENOMEM; in azx_init_streams()
1313 if (chip->driver_caps & AZX_DCAPS_SEPARATE_STREAM_TAG) in azx_init_streams()
1330 while (!list_empty(&bus->stream_list)) { in azx_free_streams()
1331 s = list_first_entry(&bus->stream_list, struct hdac_stream, list); in azx_free_streams()
1332 list_del(&s->list); in azx_free_streams()