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 spin_lock_irq(&sdev->ipc_lock); in cnl_ipc4_irq_thread()
74 snd_sof_ipc_get_reply(sdev); in cnl_ipc4_irq_thread()
75 cnl_ipc_host_done(sdev); in cnl_ipc4_irq_thread()
76 snd_sof_ipc_reply(sdev, data->primary); in cnl_ipc4_irq_thread()
78 spin_unlock_irq(&sdev->ipc_lock); in cnl_ipc4_irq_thread()
80 dev_dbg_ratelimited(sdev->dev, in cnl_ipc4_irq_thread()
89 sdev->ipc->msg.rx_data = &notification_data; in cnl_ipc4_irq_thread()
90 snd_sof_ipc_msgs_rx(sdev); in cnl_ipc4_irq_thread()
91 sdev->ipc->msg.rx_data = NULL; in cnl_ipc4_irq_thread()
94 cnl_ipc_host_done(sdev); in cnl_ipc4_irq_thread()
102 dev_dbg_ratelimited(sdev->dev, "nothing to do in IPC IRQ thread\n"); in cnl_ipc4_irq_thread()
105 struct sof_intel_hda_dev *hdev = sdev->pdata->hw_pdata; in cnl_ipc4_irq_thread()
108 cnl_ipc4_send_msg(sdev, hdev->delayed_ipc_tx_msg); in cnl_ipc4_irq_thread()
117 struct snd_sof_dev *sdev = context; in cnl_ipc_irq_thread() local
126 hipcida = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCIDA); in cnl_ipc_irq_thread()
127 hipctdr = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCTDR); in cnl_ipc_irq_thread()
128 hipctdd = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCTDD); in cnl_ipc_irq_thread()
129 hipci = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCIDR); in cnl_ipc_irq_thread()
136 trace_sof_intel_ipc_firmware_response(sdev, msg, msg_ext); in cnl_ipc_irq_thread()
139 snd_sof_dsp_update_bits(sdev, HDA_DSP_BAR, in cnl_ipc_irq_thread()
143 if (likely(sdev->fw_state == SOF_FW_BOOT_COMPLETE)) { in cnl_ipc_irq_thread()
144 spin_lock_irq(&sdev->ipc_lock); in cnl_ipc_irq_thread()
147 hda_dsp_ipc_get_reply(sdev); in cnl_ipc_irq_thread()
148 snd_sof_ipc_reply(sdev, msg); in cnl_ipc_irq_thread()
150 cnl_ipc_dsp_done(sdev); in cnl_ipc_irq_thread()
152 spin_unlock_irq(&sdev->ipc_lock); in cnl_ipc_irq_thread()
154 dev_dbg_ratelimited(sdev->dev, "IPC reply before FW_READY: %#x\n", in cnl_ipc_irq_thread()
166 trace_sof_intel_ipc_firmware_initiated(sdev, msg, msg_ext); in cnl_ipc_irq_thread()
170 struct sof_intel_hda_dev *hda = sdev->pdata->hw_pdata; in cnl_ipc_irq_thread()
181 if (sdev->fw_state == SOF_FW_BOOT_IN_PROGRESS && in cnl_ipc_irq_thread()
185 snd_sof_dsp_panic(sdev, HDA_DSP_PANIC_OFFSET(msg_ext), in cnl_ipc_irq_thread()
188 snd_sof_ipc_msgs_rx(sdev); in cnl_ipc_irq_thread()
191 cnl_ipc_host_done(sdev); in cnl_ipc_irq_thread()
200 dev_dbg_ratelimited(sdev->dev, in cnl_ipc_irq_thread()
208 static void cnl_ipc_host_done(struct snd_sof_dev *sdev) in cnl_ipc_host_done() argument
214 snd_sof_dsp_update_bits_forced(sdev, HDA_DSP_BAR, in cnl_ipc_host_done()
222 snd_sof_dsp_update_bits_forced(sdev, HDA_DSP_BAR, in cnl_ipc_host_done()
228 static void cnl_ipc_dsp_done(struct snd_sof_dev *sdev) in cnl_ipc_dsp_done() argument
234 snd_sof_dsp_update_bits_forced(sdev, HDA_DSP_BAR, in cnl_ipc_dsp_done()
240 snd_sof_dsp_update_bits(sdev, HDA_DSP_BAR, in cnl_ipc_dsp_done()
264 int cnl_ipc4_send_msg(struct snd_sof_dev *sdev, struct snd_sof_ipc_msg *msg) in cnl_ipc4_send_msg() argument
266 struct sof_intel_hda_dev *hdev = sdev->pdata->hw_pdata; in cnl_ipc4_send_msg()
269 if (hda_ipc4_tx_is_busy(sdev)) { in cnl_ipc4_send_msg()
278 sof_mailbox_write(sdev, sdev->host_box.offset, msg_data->data_ptr, in cnl_ipc4_send_msg()
281 snd_sof_dsp_write(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCIDD, msg_data->extension); in cnl_ipc4_send_msg()
282 snd_sof_dsp_write(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCIDR, in cnl_ipc4_send_msg()
291 int cnl_ipc_send_msg(struct snd_sof_dev *sdev, struct snd_sof_ipc_msg *msg) in cnl_ipc_send_msg() argument
293 struct sof_intel_hda_dev *hdev = sdev->pdata->hw_pdata; in cnl_ipc_send_msg()
308 snd_sof_dsp_write(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCIDD, in cnl_ipc_send_msg()
310 snd_sof_dsp_write(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCIDR, in cnl_ipc_send_msg()
316 sof_mailbox_write(sdev, sdev->host_box.offset, msg->msg_data, in cnl_ipc_send_msg()
318 snd_sof_dsp_write(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCIDR, in cnl_ipc_send_msg()
339 void cnl_ipc_dump(struct snd_sof_dev *sdev) in cnl_ipc_dump() argument
345 hda_ipc_irq_dump(sdev); in cnl_ipc_dump()
348 hipcida = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCIDA); in cnl_ipc_dump()
349 hipcctl = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCCTL); in cnl_ipc_dump()
350 hipctdr = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCTDR); in cnl_ipc_dump()
354 dev_err(sdev->dev, in cnl_ipc_dump()
360 void cnl_ipc4_dump(struct snd_sof_dev *sdev) in cnl_ipc4_dump() argument
364 hda_ipc_irq_dump(sdev); in cnl_ipc4_dump()
366 hipcidr = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCIDR); in cnl_ipc4_dump()
367 hipcidd = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCIDD); in cnl_ipc4_dump()
368 hipcida = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCIDA); in cnl_ipc4_dump()
369 hipctdr = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCTDR); in cnl_ipc4_dump()
370 hipctdd = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCTDD); in cnl_ipc4_dump()
371 hipctda = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCTDA); in cnl_ipc4_dump()
372 hipcctl = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCCTL); in cnl_ipc4_dump()
376 dev_err(sdev->dev, in cnl_ipc4_dump()
386 int sof_cnl_ops_init(struct snd_sof_dev *sdev) in sof_cnl_ops_init() argument
395 if (sdev->pdata->ipc_type == SOF_IPC_TYPE_3) { in sof_cnl_ops_init()
408 if (sdev->pdata->ipc_type == SOF_IPC_TYPE_4) { in sof_cnl_ops_init()
411 sdev->private = kzalloc(sizeof(*ipc4_data), GFP_KERNEL); in sof_cnl_ops_init()
412 if (!sdev->private) in sof_cnl_ops_init()
415 ipc4_data = sdev->private; in sof_cnl_ops_init()
436 hda_set_dai_drv_ops(sdev, &sof_cnl_ops); in sof_cnl_ops_init()