Lines Matching defs:sdev
31 static int hda_setup_bdle(struct snd_sof_dev *sdev,
37 struct hdac_bus *bus = sof_to_bus(sdev);
45 dev_err(sdev->dev, "error: stream frags exceeded\n");
70 dev_vdbg(sdev->dev, "bdl, frags:%d, chunk size:0x%x;\n",
82 int hda_dsp_stream_setup_bdl(struct snd_sof_dev *sdev,
86 struct sof_intel_hda_dev *hda = sdev->pdata->hw_pdata;
92 dev_dbg(sdev->dev, "period_bytes:0x%x\n", period_bytes);
98 dev_dbg(sdev->dev, "periods:%d\n", periods);
119 offset = hda_setup_bdle(sdev, dmab,
123 offset = hda_setup_bdle(sdev, dmab,
131 int hda_dsp_stream_spib_config(struct snd_sof_dev *sdev,
138 if (!sdev->bar[HDA_DSP_SPIB_BAR]) {
139 dev_err(sdev->dev, "error: address of spib capability is NULL\n");
146 snd_sof_dsp_update_bits(sdev, HDA_DSP_SPIB_BAR,
151 sof_io_write(sdev, stream->spib_addr, size);
158 hda_dsp_stream_get(struct snd_sof_dev *sdev, int direction)
160 struct hdac_bus *bus = sof_to_bus(sdev);
187 dev_err(sdev->dev, "error: no free %s streams\n",
198 snd_sof_dsp_update_bits(sdev, HDA_DSP_HDA_BAR,
206 int hda_dsp_stream_put(struct snd_sof_dev *sdev, int direction, int stream_tag)
208 struct hdac_bus *bus = sof_to_bus(sdev);
236 snd_sof_dsp_update_bits(sdev, HDA_DSP_HDA_BAR,
242 dev_dbg(sdev->dev, "stream_tag %d not opened!\n", stream_tag);
249 int hda_dsp_stream_trigger(struct snd_sof_dev *sdev,
263 snd_sof_dsp_update_bits(sdev, HDA_DSP_HDA_BAR, SOF_HDA_INTCTL,
267 snd_sof_dsp_update_bits(sdev, HDA_DSP_HDA_BAR,
274 ret = snd_sof_dsp_read_poll_timeout(sdev,
282 dev_err(sdev->dev,
293 snd_sof_dsp_update_bits(sdev, HDA_DSP_HDA_BAR,
298 ret = snd_sof_dsp_read_poll_timeout(sdev, HDA_DSP_HDA_BAR,
305 dev_err(sdev->dev,
311 snd_sof_dsp_write(sdev, HDA_DSP_HDA_BAR, sd_offset +
316 snd_sof_dsp_update_bits(sdev, HDA_DSP_HDA_BAR, SOF_HDA_INTCTL,
320 dev_err(sdev->dev, "error: unknown command: %d\n", cmd);
328 int hda_dsp_iccmax_stream_hw_params(struct snd_sof_dev *sdev, struct hdac_ext_stream *stream,
332 struct hdac_bus *bus = sof_to_bus(sdev);
339 dev_err(sdev->dev, "error: no stream available\n");
347 snd_sof_dsp_write(sdev, HDA_DSP_HDA_BAR,
350 snd_sof_dsp_write(sdev, HDA_DSP_HDA_BAR,
356 ret = hda_dsp_stream_setup_bdl(sdev, dmab, hstream);
358 dev_err(sdev->dev, "error: set up of BDL failed\n");
363 snd_sof_dsp_write(sdev, HDA_DSP_HDA_BAR,
366 snd_sof_dsp_write(sdev, HDA_DSP_HDA_BAR,
371 snd_sof_dsp_write(sdev, HDA_DSP_HDA_BAR,
376 snd_sof_dsp_update_bits(sdev, HDA_DSP_HDA_BAR,
381 snd_sof_dsp_update_bits(sdev, HDA_DSP_PP_BAR, SOF_HDA_REG_PP_PPCTL,
388 snd_sof_dsp_update_bits(sdev, HDA_DSP_HDA_BAR, sd_offset,
398 int hda_dsp_stream_hw_params(struct snd_sof_dev *sdev,
403 struct hdac_bus *bus = sof_to_bus(sdev);
412 dev_err(sdev->dev, "error: no stream available\n");
418 snd_sof_dsp_update_bits(sdev, HDA_DSP_PP_BAR, SOF_HDA_REG_PP_PPCTL,
422 dev_err(sdev->dev, "error: no dma buffer allocated!\n");
427 snd_sof_dsp_update_bits(sdev, HDA_DSP_HDA_BAR, sd_offset,
431 ret = snd_sof_dsp_read_poll_timeout(sdev, HDA_DSP_HDA_BAR,
438 dev_err(sdev->dev,
444 snd_sof_dsp_update_bits(sdev, HDA_DSP_HDA_BAR,
450 snd_sof_dsp_update_bits(sdev, HDA_DSP_HDA_BAR, sd_offset, 0x1,
454 val = snd_sof_dsp_read(sdev, HDA_DSP_HDA_BAR,
460 dev_err(sdev->dev, "error: stream reset failed\n");
465 snd_sof_dsp_update_bits(sdev, HDA_DSP_HDA_BAR, sd_offset, 0x1,
471 val = snd_sof_dsp_read(sdev, HDA_DSP_HDA_BAR,
477 dev_err(sdev->dev, "error: timeout waiting for stream reset\n");
485 snd_sof_dsp_write(sdev, HDA_DSP_HDA_BAR,
488 snd_sof_dsp_write(sdev, HDA_DSP_HDA_BAR,
493 snd_sof_dsp_update_bits(sdev, HDA_DSP_HDA_BAR, sd_offset,
497 ret = snd_sof_dsp_read_poll_timeout(sdev, HDA_DSP_HDA_BAR,
504 dev_err(sdev->dev,
510 snd_sof_dsp_update_bits(sdev, HDA_DSP_HDA_BAR,
517 ret = hda_dsp_stream_setup_bdl(sdev, dmab, hstream);
519 dev_err(sdev->dev, "error: set up of BDL failed\n");
524 snd_sof_dsp_update_bits(sdev, HDA_DSP_HDA_BAR, sd_offset,
530 snd_sof_dsp_write(sdev, HDA_DSP_HDA_BAR,
546 snd_sof_dsp_update_bits(sdev, HDA_DSP_PP_BAR, SOF_HDA_REG_PP_PPCTL,
550 snd_sof_dsp_update_bits(sdev, HDA_DSP_HDA_BAR,
556 snd_sof_dsp_update_bits(sdev, HDA_DSP_PP_BAR, SOF_HDA_REG_PP_PPCTL,
560 snd_sof_dsp_update_bits(sdev, HDA_DSP_HDA_BAR,
565 snd_sof_dsp_write(sdev, HDA_DSP_HDA_BAR,
568 snd_sof_dsp_write(sdev, HDA_DSP_HDA_BAR,
573 if (!(snd_sof_dsp_read(sdev, HDA_DSP_HDA_BAR, SOF_HDA_ADSP_DPLBASE)
575 snd_sof_dsp_write(sdev, HDA_DSP_HDA_BAR, SOF_HDA_ADSP_DPUBASE,
577 snd_sof_dsp_write(sdev, HDA_DSP_HDA_BAR, SOF_HDA_ADSP_DPLBASE,
583 snd_sof_dsp_update_bits(sdev, HDA_DSP_HDA_BAR, sd_offset,
590 snd_sof_dsp_read(sdev, HDA_DSP_HDA_BAR,
602 int hda_dsp_stream_hw_free(struct snd_sof_dev *sdev,
609 struct hdac_bus *bus = sof_to_bus(sdev);
615 snd_sof_dsp_update_bits(sdev, HDA_DSP_PP_BAR,
624 bool hda_dsp_check_stream_irq(struct snd_sof_dev *sdev)
626 struct hdac_bus *bus = sof_to_bus(sdev);
699 struct snd_sof_dev *sdev = context;
700 struct hdac_bus *bus = sof_to_bus(sdev);
744 int hda_dsp_stream_init(struct snd_sof_dev *sdev)
746 struct hdac_bus *bus = sof_to_bus(sdev);
749 struct pci_dev *pci = to_pci_dev(sdev->dev);
755 gcap = snd_sof_dsp_read(sdev, HDA_DSP_HDA_BAR, SOF_HDA_GCAP);
756 dev_dbg(sdev->dev, "hda global caps = 0x%x\n", gcap);
763 dev_dbg(sdev->dev, "detected %d playback and %d capture streams\n",
767 dev_err(sdev->dev, "error: too many playback streams %d\n",
773 dev_err(sdev->dev, "error: too many capture streams %d\n",
786 dev_err(sdev->dev, "error: posbuffer dma alloc failed\n");
795 dev_err(sdev->dev, "error: RB alloc failed\n");
804 hda_stream = devm_kzalloc(sdev->dev, sizeof(*hda_stream),
809 hda_stream->sdev = sdev;
813 stream->pphc_addr = sdev->bar[HDA_DSP_PP_BAR] +
816 stream->pplc_addr = sdev->bar[HDA_DSP_PP_BAR] +
821 if (sdev->bar[HDA_DSP_SPIB_BAR]) {
822 stream->spib_addr = sdev->bar[HDA_DSP_SPIB_BAR] +
826 stream->fifo_addr = sdev->bar[HDA_DSP_SPIB_BAR] +
836 hstream->sd_addr = sdev->bar[HDA_DSP_HDA_BAR] + sd_offset;
846 dev_err(sdev->dev, "error: stream bdl dma alloc failed\n");
859 hda_stream = devm_kzalloc(sdev->dev, sizeof(*hda_stream),
864 hda_stream->sdev = sdev;
869 stream->pphc_addr = sdev->bar[HDA_DSP_PP_BAR] +
872 stream->pplc_addr = sdev->bar[HDA_DSP_PP_BAR] +
877 if (sdev->bar[HDA_DSP_SPIB_BAR]) {
878 stream->spib_addr = sdev->bar[HDA_DSP_SPIB_BAR] +
882 stream->fifo_addr = sdev->bar[HDA_DSP_SPIB_BAR] +
892 hstream->sd_addr = sdev->bar[HDA_DSP_HDA_BAR] + sd_offset;
902 dev_err(sdev->dev, "error: stream bdl dma alloc failed\n");
918 void hda_dsp_stream_free(struct snd_sof_dev *sdev)
920 struct hdac_bus *bus = sof_to_bus(sdev);
945 devm_kfree(sdev->dev, hda_stream);