Lines Matching refs:hstream

28 static inline const char *hda_hstream_direction_str(struct hdac_stream *hstream)
30 if (hstream->direction == SNDRV_PCM_STREAM_PLAYBACK)
36 static char *hda_hstream_dbg_get_stream_info_str(struct hdac_stream *hstream)
40 if (hstream->substream)
41 rtd = asoc_substream_to_rtd(hstream->substream);
42 else if (hstream->cstream)
43 rtd = hstream->cstream->private_data;
47 hda_hstream_direction_str(hstream),
48 hstream->stream_tag);
51 rtd->dai_link->name, hda_hstream_direction_str(hstream),
52 hstream->stream_tag);
60 struct hdac_stream *hstream,
71 if (hstream->frags >= HDA_DSP_MAX_BDL_ENTRIES) {
94 hstream->frags++;
108 struct hdac_stream *hstream)
115 period_bytes = hstream->period_bytes;
118 period_bytes = hstream->bufsize;
120 periods = hstream->bufsize / period_bytes;
124 remain = hstream->bufsize % period_bytes;
129 bdl = (struct sof_intel_dsp_bdl *)hstream->bdl.area;
131 hstream->frags = 0;
138 !hstream->no_period_wakeup : 0;
144 hstream, &bdl, offset,
148 hstream, &bdl, offset,
159 struct hdac_stream *hstream = &hext_stream->hstream;
167 mask = (1 << hstream->index);
172 enable << hstream->index);
175 sof_io_write(sdev, hstream->spib_addr, size);
288 static int hda_dsp_stream_reset(struct snd_sof_dev *sdev, struct hdac_stream *hstream)
290 int sd_offset = SOF_STREAM_SD_OFFSET(hstream);
330 struct hdac_stream *hstream = &hext_stream->hstream;
331 int sd_offset = SOF_STREAM_SD_OFFSET(hstream);
343 if (hstream->running)
347 1 << hstream->index,
348 1 << hstream->index);
365 hstream->running = true;
390 hstream->running = false;
393 1 << hstream->index, 0x0);
402 char *stream_name = hda_hstream_dbg_get_stream_info_str(hstream);
418 struct hdac_stream *hstream = &hext_stream->hstream;
419 int sd_offset = SOF_STREAM_SD_OFFSET(hstream);
421 u32 mask = 0x1 << hstream->index;
433 if (hstream->posbuf)
434 *hstream->posbuf = 0;
444 hstream->frags = 0;
446 ret = hda_dsp_stream_setup_bdl(sdev, dmab, hstream);
455 (u32)hstream->bdl.addr);
458 upper_32_bits(hstream->bdl.addr));
463 hstream->bufsize);
468 0xffff, (hstream->frags - 1));
496 struct hdac_stream *hstream;
512 hstream = &hext_stream->hstream;
513 sd_offset = SOF_STREAM_SD_OFFSET(hstream);
514 mask = BIT(hstream->index);
533 char *stream_name = hda_hstream_dbg_get_stream_info_str(hstream);
548 ret = hda_dsp_stream_reset(sdev, hstream);
552 if (hstream->posbuf)
553 *hstream->posbuf = 0;
575 char *stream_name = hda_hstream_dbg_get_stream_info_str(hstream);
589 hstream->frags = 0;
591 ret = hda_dsp_stream_setup_bdl(sdev, dmab, hstream);
600 hstream->stream_tag <<
606 hstream->bufsize);
629 0xffff, hstream->format_val);
639 0xffff, (hstream->frags - 1));
644 (u32)hstream->bdl.addr);
647 upper_32_bits(hstream->bdl.addr));
666 if (hstream->direction == SNDRV_PCM_STREAM_PLAYBACK) {
667 hstream->fifo_size =
671 hstream->fifo_size &= 0xffff;
672 hstream->fifo_size += 1;
674 hstream->fifo_size = 0;
683 struct hdac_stream *hstream = substream->runtime->private_data;
684 struct hdac_ext_stream *hext_stream = container_of(hstream,
686 hstream);
689 ret = hda_dsp_stream_reset(sdev, hstream);
695 u32 mask = BIT(hstream->index);
707 hstream->substream = NULL;
735 hda_dsp_compr_bytes_transferred(struct hdac_stream *hstream, int direction)
737 u64 buffer_size = hstream->bufsize;
740 div64_u64_rem(hstream->curr_pos, buffer_size, &prev_pos);
741 pos = hda_dsp_stream_get_position(hstream, direction, false);
748 hstream->curr_pos += num_bytes;
819 struct hdac_stream *hstream;
894 hstream = &hext_stream->hstream;
898 hstream->spib_addr = sdev->bar[HDA_DSP_SPIB_BAR] +
902 hstream->fifo_addr = sdev->bar[HDA_DSP_SPIB_BAR] +
907 hstream->bus = bus;
908 hstream->sd_int_sta_mask = 1 << i;
909 hstream->index = i;
910 sd_offset = SOF_STREAM_SD_OFFSET(hstream);
911 hstream->sd_addr = sdev->bar[HDA_DSP_HDA_BAR] + sd_offset;
912 hstream->opened = false;
913 hstream->running = false;
916 hstream->stream_tag = i + 1;
917 hstream->direction = SNDRV_PCM_STREAM_CAPTURE;
919 hstream->stream_tag = i - num_capture + 1;
920 hstream->direction = SNDRV_PCM_STREAM_PLAYBACK;
925 HDA_DSP_BDL_SIZE, &hstream->bdl);
931 hstream->posbuf = (__le32 *)(bus->posbuf.area +
932 (hstream->index) * 8);
934 list_add_tail(&hstream->list, &bus->stream_list);
972 snd_pcm_uframes_t hda_dsp_stream_get_position(struct hdac_stream *hstream,
975 struct hdac_ext_stream *hext_stream = stream_to_hdac_ext_stream(hstream);
1004 hstream->index));
1024 hstream->index));
1025 pos = snd_hdac_stream_get_pos_posbuf(hstream);
1035 hstream->index));
1043 pos = snd_hdac_stream_get_pos_posbuf(hstream);
1052 if (pos >= hstream->bufsize)