Lines Matching refs:hstream
34 static inline const char *hda_hstream_direction_str(struct hdac_stream *hstream)
36 if (hstream->direction == SNDRV_PCM_STREAM_PLAYBACK)
42 static char *hda_hstream_dbg_get_stream_info_str(struct hdac_stream *hstream)
46 if (hstream->substream)
47 rtd = snd_soc_substream_to_rtd(hstream->substream);
48 else if (hstream->cstream)
49 rtd = hstream->cstream->private_data;
53 hda_hstream_direction_str(hstream),
54 hstream->stream_tag);
57 rtd->dai_link->name, hda_hstream_direction_str(hstream),
58 hstream->stream_tag);
66 struct hdac_stream *hstream,
77 if (hstream->frags >= HDA_DSP_MAX_BDL_ENTRIES) {
100 hstream->frags++;
114 struct hdac_stream *hstream)
121 period_bytes = hstream->period_bytes;
123 hstream->bufsize);
128 chunk_size = snd_sgbuf_get_chunk_size(dmab, 0, hstream->bufsize);
130 period_bytes = hstream->bufsize;
148 if (chunk_size == hstream->bufsize)
152 periods = hstream->bufsize / period_bytes;
156 remain = hstream->bufsize % period_bytes;
161 bdl = (struct sof_intel_dsp_bdl *)hstream->bdl.area;
163 hstream->frags = 0;
170 !hstream->no_period_wakeup : 0;
176 hstream, &bdl, offset,
180 hstream, &bdl, offset,
191 struct hdac_stream *hstream = &hext_stream->hstream;
199 mask = (1 << hstream->index);
204 enable << hstream->index);
207 sof_io_write(sdev, hstream->spib_addr, size);
353 static int hda_dsp_stream_reset(struct snd_sof_dev *sdev, struct hdac_stream *hstream)
355 int sd_offset = SOF_STREAM_SD_OFFSET(hstream);
395 struct hdac_stream *hstream = &hext_stream->hstream;
396 int sd_offset = SOF_STREAM_SD_OFFSET(hstream);
408 if (hstream->running)
412 1 << hstream->index,
413 1 << hstream->index);
430 hstream->running = true;
455 hstream->running = false;
458 1 << hstream->index, 0x0);
467 char *stream_name = hda_hstream_dbg_get_stream_info_str(hstream);
483 struct hdac_stream *hstream = &hext_stream->hstream;
484 int sd_offset = SOF_STREAM_SD_OFFSET(hstream);
486 u32 mask = 0x1 << hstream->index;
498 if (hstream->posbuf)
499 *hstream->posbuf = 0;
509 hstream->frags = 0;
511 ret = hda_dsp_stream_setup_bdl(sdev, dmab, hstream);
520 (u32)hstream->bdl.addr);
523 upper_32_bits(hstream->bdl.addr));
528 hstream->bufsize);
533 0xffff, (hstream->frags - 1));
561 struct hdac_stream *hstream;
577 hstream = &hext_stream->hstream;
578 sd_offset = SOF_STREAM_SD_OFFSET(hstream);
579 mask = BIT(hstream->index);
598 char *stream_name = hda_hstream_dbg_get_stream_info_str(hstream);
613 ret = hda_dsp_stream_reset(sdev, hstream);
617 if (hstream->posbuf)
618 *hstream->posbuf = 0;
640 char *stream_name = hda_hstream_dbg_get_stream_info_str(hstream);
654 hstream->frags = 0;
656 ret = hda_dsp_stream_setup_bdl(sdev, dmab, hstream);
665 hstream->stream_tag <<
671 hstream->bufsize);
694 0xffff, hstream->format_val);
704 0xffff, (hstream->frags - 1));
709 (u32)hstream->bdl.addr);
712 upper_32_bits(hstream->bdl.addr));
731 if (hstream->direction == SNDRV_PCM_STREAM_PLAYBACK) {
732 hstream->fifo_size =
736 hstream->fifo_size &= SOF_HDA_SD_FIFOSIZE_FIFOS_MASK;
737 hstream->fifo_size += 1;
739 hstream->fifo_size = 0;
748 struct hdac_stream *hstream = substream->runtime->private_data;
749 struct hdac_ext_stream *hext_stream = container_of(hstream,
751 hstream);
754 ret = hda_dsp_stream_reset(sdev, hstream);
760 u32 mask = BIT(hstream->index);
772 hstream->substream = NULL;
800 hda_dsp_compr_bytes_transferred(struct hdac_stream *hstream, int direction)
802 u64 buffer_size = hstream->bufsize;
805 div64_u64_rem(hstream->curr_pos, buffer_size, &prev_pos);
806 pos = hda_dsp_stream_get_position(hstream, direction, false);
813 hstream->curr_pos += num_bytes;
899 struct hdac_stream *hstream;
975 hstream = &hext_stream->hstream;
979 hstream->spib_addr = sdev->bar[HDA_DSP_SPIB_BAR] +
983 hstream->fifo_addr = sdev->bar[HDA_DSP_SPIB_BAR] +
988 hstream->bus = bus;
989 hstream->sd_int_sta_mask = 1 << i;
990 hstream->index = i;
991 sd_offset = SOF_STREAM_SD_OFFSET(hstream);
992 hstream->sd_addr = sdev->bar[HDA_DSP_HDA_BAR] + sd_offset;
993 hstream->opened = false;
994 hstream->running = false;
997 hstream->stream_tag = i + 1;
998 hstream->direction = SNDRV_PCM_STREAM_CAPTURE;
1000 hstream->stream_tag = i - num_capture + 1;
1001 hstream->direction = SNDRV_PCM_STREAM_PLAYBACK;
1006 HDA_DSP_BDL_SIZE, &hstream->bdl);
1012 hstream->posbuf = (__le32 *)(bus->posbuf.area +
1013 (hstream->index) * 8);
1015 list_add_tail(&hstream->list, &bus->stream_list);
1063 snd_pcm_uframes_t hda_dsp_stream_get_position(struct hdac_stream *hstream,
1066 struct hdac_ext_stream *hext_stream = stream_to_hdac_ext_stream(hstream);
1095 hstream->index));
1115 hstream->index));
1116 pos = snd_hdac_stream_get_pos_posbuf(hstream);
1126 hstream->index));
1134 pos = snd_hdac_stream_get_pos_posbuf(hstream);
1143 if (pos >= hstream->bufsize)
1227 struct hdac_stream *hstream = substream->runtime->private_data;
1228 struct hdac_ext_stream *hext_stream = stream_to_hdac_ext_stream(hstream);
1254 struct hdac_stream *hstream;
1266 hstream = &hext_stream->hstream;
1267 hstream->substream = NULL;
1284 hstream->period_bytes = 0; /* initialize period_bytes */
1285 hstream->format_val = format;
1286 hstream->bufsize = size;
1310 hstream->bufsize = 0;
1311 hstream->format_val = 0;
1314 hda_dsp_stream_pair_put(sdev, direction, hstream->stream_tag);
1316 hda_dsp_stream_put(sdev, direction, hstream->stream_tag);
1325 struct hdac_stream *hstream = hdac_stream(hext_stream);
1326 int sd_offset = SOF_STREAM_SD_OFFSET(hstream);
1329 if (hstream->direction == SNDRV_PCM_STREAM_PLAYBACK)
1336 hda_dsp_stream_pair_put(sdev, hstream->direction, hstream->stream_tag);
1338 hda_dsp_stream_put(sdev, hstream->direction, hstream->stream_tag);
1340 hstream->running = 0;
1341 hstream->substream = NULL;
1355 hstream->bufsize = 0;
1356 hstream->format_val = 0;