ASoC: SOF: Intel: hda: set position buffer in init chip
authorZhu Yingjiang <yingjiang.zhu@linux.intel.com>
Mon, 22 Jul 2019 14:13:54 +0000 (09:13 -0500)
committerMark Brown <broonie@kernel.org>
Tue, 23 Jul 2019 11:21:20 +0000 (12:21 +0100)
Set the HDA stream position buffer during init chip. The position buffer
needs to be set in both HDA codec and nocodec cases. Using SOF defined
function and move it to common code.

Signed-off-by: Zhu Yingjiang <yingjiang.zhu@linux.intel.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://lore.kernel.org/r/20190722141402.7194-14-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/sof/intel/hda-ctrl.c

index ea63f83a509bb5f681f1ce702e9d2384161543e2..015760284969b1f47be92c5d73389a63338abe4b 100644 (file)
@@ -245,14 +245,13 @@ int hda_dsp_ctrl_init_chip(struct snd_sof_dev *sdev, bool full_reset)
                                SOF_HDA_INT_CTRL_EN | SOF_HDA_INT_GLOBAL_EN,
                                SOF_HDA_INT_CTRL_EN | SOF_HDA_INT_GLOBAL_EN);
 
-#if IS_ENABLED(CONFIG_SND_SOC_SOF_HDA)
        /* program the position buffer */
        if (bus->use_posbuf && bus->posbuf.addr) {
-               snd_hdac_chip_writel(bus, DPLBASE, (u32)bus->posbuf.addr);
-               snd_hdac_chip_writel(bus, DPUBASE,
-                                    upper_32_bits(bus->posbuf.addr));
+               snd_sof_dsp_write(sdev, HDA_DSP_HDA_BAR, SOF_HDA_ADSP_DPLBASE,
+                                 (u32)bus->posbuf.addr);
+               snd_sof_dsp_write(sdev, HDA_DSP_HDA_BAR, SOF_HDA_ADSP_DPUBASE,
+                                 upper_32_bits(bus->posbuf.addr));
        }
-#endif
 
        bus->chip_init = true;