Lines Matching refs:sdev

33 static void cnl_ipc_host_done(struct snd_sof_dev *sdev);
34 static void cnl_ipc_dsp_done(struct snd_sof_dev *sdev);
39 struct snd_sof_dev *sdev = context; in cnl_ipc4_irq_thread() local
44 hipcida = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCIDA); in cnl_ipc4_irq_thread()
45 hipctdr = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCTDR); in cnl_ipc4_irq_thread()
48 snd_sof_dsp_update_bits(sdev, HDA_DSP_BAR, in cnl_ipc4_irq_thread()
51 cnl_ipc_dsp_done(sdev); in cnl_ipc4_irq_thread()
59 u32 hipctdd = snd_sof_dsp_read(sdev, HDA_DSP_BAR, in cnl_ipc4_irq_thread()
66 if (likely(sdev->fw_state == SOF_FW_BOOT_COMPLETE)) { in cnl_ipc4_irq_thread()
67 struct sof_ipc4_msg *data = sdev->ipc->msg.reply_data; in cnl_ipc4_irq_thread()
72 guard(spinlock_irq)(&sdev->ipc_lock); in cnl_ipc4_irq_thread()
73 snd_sof_ipc_get_reply(sdev); in cnl_ipc4_irq_thread()
74 cnl_ipc_host_done(sdev); in cnl_ipc4_irq_thread()
75 snd_sof_ipc_reply(sdev, data->primary); in cnl_ipc4_irq_thread()
77 dev_dbg_ratelimited(sdev->dev, in cnl_ipc4_irq_thread()
86 sdev->ipc->msg.rx_data = &notification_data; in cnl_ipc4_irq_thread()
87 snd_sof_ipc_msgs_rx(sdev); in cnl_ipc4_irq_thread()
88 sdev->ipc->msg.rx_data = NULL; in cnl_ipc4_irq_thread()
91 cnl_ipc_host_done(sdev); in cnl_ipc4_irq_thread()
99 dev_dbg_ratelimited(sdev->dev, "nothing to do in IPC IRQ thread\n"); in cnl_ipc4_irq_thread()
102 struct sof_intel_hda_dev *hdev = sdev->pdata->hw_pdata; in cnl_ipc4_irq_thread()
105 cnl_ipc4_send_msg(sdev, hdev->delayed_ipc_tx_msg); in cnl_ipc4_irq_thread()
114 struct snd_sof_dev *sdev = context; in cnl_ipc_irq_thread() local
123 hipcida = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCIDA); in cnl_ipc_irq_thread()
124 hipctdr = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCTDR); in cnl_ipc_irq_thread()
125 hipctdd = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCTDD); in cnl_ipc_irq_thread()
126 hipci = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCIDR); in cnl_ipc_irq_thread()
133 trace_sof_intel_ipc_firmware_response(sdev, msg, msg_ext); in cnl_ipc_irq_thread()
136 snd_sof_dsp_update_bits(sdev, HDA_DSP_BAR, in cnl_ipc_irq_thread()
140 if (likely(sdev->fw_state == SOF_FW_BOOT_COMPLETE)) { in cnl_ipc_irq_thread()
142 guard(spinlock_irq)(&sdev->ipc_lock); in cnl_ipc_irq_thread()
143 hda_dsp_ipc_get_reply(sdev); in cnl_ipc_irq_thread()
144 snd_sof_ipc_reply(sdev, msg); in cnl_ipc_irq_thread()
145 cnl_ipc_dsp_done(sdev); in cnl_ipc_irq_thread()
147 dev_dbg_ratelimited(sdev->dev, "IPC reply before FW_READY: %#x\n", in cnl_ipc_irq_thread()
159 trace_sof_intel_ipc_firmware_initiated(sdev, msg, msg_ext); in cnl_ipc_irq_thread()
163 struct sof_intel_hda_dev *hda = sdev->pdata->hw_pdata; in cnl_ipc_irq_thread()
174 if (sdev->fw_state == SOF_FW_BOOT_IN_PROGRESS && in cnl_ipc_irq_thread()
178 snd_sof_dsp_panic(sdev, HDA_DSP_PANIC_OFFSET(msg_ext), in cnl_ipc_irq_thread()
181 snd_sof_ipc_msgs_rx(sdev); in cnl_ipc_irq_thread()
184 cnl_ipc_host_done(sdev); in cnl_ipc_irq_thread()
193 dev_dbg_ratelimited(sdev->dev, in cnl_ipc_irq_thread()
201 static void cnl_ipc_host_done(struct snd_sof_dev *sdev) in cnl_ipc_host_done() argument
207 snd_sof_dsp_update_bits_forced(sdev, HDA_DSP_BAR, in cnl_ipc_host_done()
215 snd_sof_dsp_update_bits_forced(sdev, HDA_DSP_BAR, in cnl_ipc_host_done()
221 static void cnl_ipc_dsp_done(struct snd_sof_dev *sdev) in cnl_ipc_dsp_done() argument
227 snd_sof_dsp_update_bits_forced(sdev, HDA_DSP_BAR, in cnl_ipc_dsp_done()
233 snd_sof_dsp_update_bits(sdev, HDA_DSP_BAR, in cnl_ipc_dsp_done()
257 int cnl_ipc4_send_msg(struct snd_sof_dev *sdev, struct snd_sof_ipc_msg *msg) in cnl_ipc4_send_msg() argument
259 struct sof_intel_hda_dev *hdev = sdev->pdata->hw_pdata; in cnl_ipc4_send_msg()
262 if (hda_ipc4_tx_is_busy(sdev)) { in cnl_ipc4_send_msg()
271 sof_mailbox_write(sdev, sdev->host_box.offset, msg_data->data_ptr, in cnl_ipc4_send_msg()
274 snd_sof_dsp_write(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCIDD, msg_data->extension); in cnl_ipc4_send_msg()
275 snd_sof_dsp_write(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCIDR, in cnl_ipc4_send_msg()
284 int cnl_ipc_send_msg(struct snd_sof_dev *sdev, struct snd_sof_ipc_msg *msg) in cnl_ipc_send_msg() argument
286 struct sof_intel_hda_dev *hdev = sdev->pdata->hw_pdata; in cnl_ipc_send_msg()
301 snd_sof_dsp_write(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCIDD, in cnl_ipc_send_msg()
303 snd_sof_dsp_write(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCIDR, in cnl_ipc_send_msg()
309 sof_mailbox_write(sdev, sdev->host_box.offset, msg->msg_data, in cnl_ipc_send_msg()
311 snd_sof_dsp_write(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCIDR, in cnl_ipc_send_msg()
332 void cnl_ipc_dump(struct snd_sof_dev *sdev) in cnl_ipc_dump() argument
338 hda_ipc_irq_dump(sdev); in cnl_ipc_dump()
341 hipcida = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCIDA); in cnl_ipc_dump()
342 hipcctl = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCCTL); in cnl_ipc_dump()
343 hipctdr = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCTDR); in cnl_ipc_dump()
347 dev_err(sdev->dev, in cnl_ipc_dump()
353 void cnl_ipc4_dump(struct snd_sof_dev *sdev) in cnl_ipc4_dump() argument
357 hda_ipc_irq_dump(sdev); in cnl_ipc4_dump()
359 hipcidr = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCIDR); in cnl_ipc4_dump()
360 hipcidd = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCIDD); in cnl_ipc4_dump()
361 hipcida = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCIDA); in cnl_ipc4_dump()
362 hipctdr = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCTDR); in cnl_ipc4_dump()
363 hipctdd = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCTDD); in cnl_ipc4_dump()
364 hipctda = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCTDA); in cnl_ipc4_dump()
365 hipcctl = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCCTL); in cnl_ipc4_dump()
369 dev_err(sdev->dev, in cnl_ipc4_dump()
379 int sof_cnl_ops_init(struct snd_sof_dev *sdev) in sof_cnl_ops_init() argument
388 if (sdev->pdata->ipc_type == SOF_IPC_TYPE_3) { in sof_cnl_ops_init()
401 if (sdev->pdata->ipc_type == SOF_IPC_TYPE_4) { in sof_cnl_ops_init()
404 sdev->private = kzalloc_obj(*ipc4_data); in sof_cnl_ops_init()
405 if (!sdev->private) in sof_cnl_ops_init()
408 ipc4_data = sdev->private; in sof_cnl_ops_init()
429 hda_set_dai_drv_ops(sdev, &sof_cnl_ops); in sof_cnl_ops_init()