Lines Matching refs:sdev
30 int hda_dsp_ctrl_link_reset(struct snd_sof_dev *sdev, bool reset)
40 snd_sof_dsp_update_bits(sdev, HDA_DSP_HDA_BAR, SOF_HDA_GCTL,
46 gctl = snd_sof_dsp_read(sdev, HDA_DSP_HDA_BAR, SOF_HDA_GCTL);
53 dev_err(sdev->dev, "error: failed to %s HDA controller gctl 0x%x\n",
58 int hda_dsp_ctrl_get_caps(struct snd_sof_dev *sdev)
60 struct hdac_bus *bus = sof_to_bus(sdev);
69 ret = hda_dsp_ctrl_link_reset(sdev, true);
72 ret = hda_dsp_ctrl_link_reset(sdev, false);
76 offset = snd_sof_dsp_read(sdev, HDA_DSP_HDA_BAR, SOF_HDA_LLCH);
79 dev_dbg(sdev->dev, "checking for capabilities at offset 0x%x\n",
82 cap = snd_sof_dsp_read(sdev, HDA_DSP_HDA_BAR, offset);
93 dev_dbg(sdev->dev, "found DSP capability at 0x%x\n",
96 sdev->bar[HDA_DSP_PP_BAR] = bus->ppcap;
99 dev_dbg(sdev->dev, "found SPIB capability at 0x%x\n",
102 sdev->bar[HDA_DSP_SPIB_BAR] = bus->spbcap;
105 dev_dbg(sdev->dev, "found DRSM capability at 0x%x\n",
108 sdev->bar[HDA_DSP_DRSM_BAR] = bus->drsmcap;
111 dev_dbg(sdev->dev, "found GTS capability at 0x%x\n",
116 dev_dbg(sdev->dev, "found ML capability at 0x%x\n",
121 dev_dbg(sdev->dev, "found capability %d at 0x%x\n",
132 void hda_dsp_ctrl_ppcap_enable(struct snd_sof_dev *sdev, bool enable)
136 snd_sof_dsp_update_bits(sdev, HDA_DSP_PP_BAR, SOF_HDA_REG_PP_PPCTL,
140 void hda_dsp_ctrl_ppcap_int_enable(struct snd_sof_dev *sdev, bool enable)
144 snd_sof_dsp_update_bits(sdev, HDA_DSP_PP_BAR, SOF_HDA_REG_PP_PPCTL,
148 void hda_dsp_ctrl_misc_clock_gating(struct snd_sof_dev *sdev, bool enable)
152 snd_sof_pci_update_bits(sdev, PCI_CGCTL, PCI_CGCTL_MISCBDCGE_MASK, val);
160 int hda_dsp_ctrl_clock_power_gating(struct snd_sof_dev *sdev, bool enable)
162 struct sof_intel_hda_dev *hda = sdev->pdata->hw_pdata;
167 snd_sof_pci_update_bits(sdev, PCI_CGCTL, PCI_CGCTL_ADSPDCGE, val);
172 snd_sof_dsp_update_bits(sdev, HDA_DSP_HDA_BAR, HDA_VS_INTEL_EM2,
177 snd_sof_pci_update_bits(sdev, PCI_PGCTL, PCI_PGCTL_ADSPPGD, val);
182 int hda_dsp_ctrl_init_chip(struct snd_sof_dev *sdev)
184 struct hdac_bus *bus = sof_to_bus(sdev);
191 hda_codec_set_codec_wakeup(sdev, true);
193 hda_dsp_ctrl_misc_clock_gating(sdev, false);
196 ret = hda_dsp_ctrl_link_reset(sdev, true);
198 dev_err(sdev->dev, "error: failed to reset HDA controller\n");
205 ret = hda_dsp_ctrl_link_reset(sdev, false);
207 dev_err(sdev->dev, "error: failed to exit HDA controller reset\n");
212 hda_codec_detect_mask(sdev);
217 snd_sof_dsp_write(sdev, HDA_DSP_HDA_BAR,
223 snd_sof_dsp_write(sdev, HDA_DSP_HDA_BAR, SOF_HDA_WAKESTS,
226 hda_codec_rirb_status_clear(sdev);
229 snd_sof_dsp_write(sdev, HDA_DSP_HDA_BAR, SOF_HDA_INTSTS,
232 hda_codec_init_cmd_io(sdev);
235 snd_sof_dsp_update_bits(sdev, HDA_DSP_HDA_BAR, SOF_HDA_INTCTL,
241 snd_sof_dsp_write(sdev, HDA_DSP_HDA_BAR, SOF_HDA_ADSP_DPLBASE,
243 snd_sof_dsp_write(sdev, HDA_DSP_HDA_BAR, SOF_HDA_ADSP_DPUBASE,
252 hda_dsp_ctrl_misc_clock_gating(sdev, true);
254 hda_codec_set_codec_wakeup(sdev, false);
259 void hda_dsp_ctrl_stop_chip(struct snd_sof_dev *sdev)
261 struct hdac_bus *bus = sof_to_bus(sdev);
271 snd_sof_dsp_update_bits(sdev, HDA_DSP_HDA_BAR,
279 snd_sof_dsp_update_bits(sdev, HDA_DSP_HDA_BAR, SOF_HDA_INTCTL,
283 snd_sof_dsp_update_bits(sdev, HDA_DSP_HDA_BAR, SOF_HDA_INTCTL,
290 snd_sof_dsp_write(sdev, HDA_DSP_HDA_BAR,
296 snd_sof_dsp_write(sdev, HDA_DSP_HDA_BAR, SOF_HDA_WAKESTS,
299 hda_codec_rirb_status_clear(sdev);
302 snd_sof_dsp_write(sdev, HDA_DSP_HDA_BAR, SOF_HDA_INTSTS,
305 hda_codec_stop_cmd_io(sdev);
309 snd_sof_dsp_write(sdev, HDA_DSP_HDA_BAR,
311 snd_sof_dsp_write(sdev, HDA_DSP_HDA_BAR,