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
43 hipcida = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCIDA); in cnl_ipc4_irq_thread()
46 snd_sof_dsp_update_bits(sdev, HDA_DSP_BAR, in cnl_ipc4_irq_thread()
49 cnl_ipc_dsp_done(sdev); in cnl_ipc4_irq_thread()
54 hipctdr = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCTDR); in cnl_ipc4_irq_thread()
57 u32 hipctdd = snd_sof_dsp_read(sdev, HDA_DSP_BAR, in cnl_ipc4_irq_thread()
64 if (likely(sdev->fw_state == SOF_FW_BOOT_COMPLETE)) { in cnl_ipc4_irq_thread()
65 struct sof_ipc4_msg *data = sdev->ipc->msg.reply_data; in cnl_ipc4_irq_thread()
70 spin_lock_irq(&sdev->ipc_lock); in cnl_ipc4_irq_thread()
72 snd_sof_ipc_get_reply(sdev); in cnl_ipc4_irq_thread()
73 snd_sof_ipc_reply(sdev, data->primary); in cnl_ipc4_irq_thread()
75 spin_unlock_irq(&sdev->ipc_lock); 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()
92 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()
106 struct snd_sof_dev *sdev = context; in cnl_ipc_irq_thread() local
115 hipcida = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCIDA); in cnl_ipc_irq_thread()
116 hipctdr = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCTDR); in cnl_ipc_irq_thread()
117 hipctdd = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCTDD); in cnl_ipc_irq_thread()
118 hipci = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCIDR); in cnl_ipc_irq_thread()
125 trace_sof_intel_ipc_firmware_response(sdev, msg, msg_ext); in cnl_ipc_irq_thread()
128 snd_sof_dsp_update_bits(sdev, HDA_DSP_BAR, in cnl_ipc_irq_thread()
132 if (likely(sdev->fw_state == SOF_FW_BOOT_COMPLETE)) { in cnl_ipc_irq_thread()
133 spin_lock_irq(&sdev->ipc_lock); in cnl_ipc_irq_thread()
136 hda_dsp_ipc_get_reply(sdev); in cnl_ipc_irq_thread()
137 snd_sof_ipc_reply(sdev, msg); in cnl_ipc_irq_thread()
139 cnl_ipc_dsp_done(sdev); in cnl_ipc_irq_thread()
141 spin_unlock_irq(&sdev->ipc_lock); in cnl_ipc_irq_thread()
143 dev_dbg_ratelimited(sdev->dev, "IPC reply before FW_READY: %#x\n", in cnl_ipc_irq_thread()
155 trace_sof_intel_ipc_firmware_initiated(sdev, msg, msg_ext); in cnl_ipc_irq_thread()
159 struct sof_intel_hda_dev *hda = sdev->pdata->hw_pdata; in cnl_ipc_irq_thread()
170 if (sdev->fw_state == SOF_FW_BOOT_IN_PROGRESS && in cnl_ipc_irq_thread()
174 snd_sof_dsp_panic(sdev, HDA_DSP_PANIC_OFFSET(msg_ext), in cnl_ipc_irq_thread()
177 snd_sof_ipc_msgs_rx(sdev); in cnl_ipc_irq_thread()
180 cnl_ipc_host_done(sdev); in cnl_ipc_irq_thread()
189 dev_dbg_ratelimited(sdev->dev, in cnl_ipc_irq_thread()
196 static void cnl_ipc_host_done(struct snd_sof_dev *sdev) in cnl_ipc_host_done() argument
202 snd_sof_dsp_update_bits_forced(sdev, HDA_DSP_BAR, in cnl_ipc_host_done()
210 snd_sof_dsp_update_bits_forced(sdev, HDA_DSP_BAR, in cnl_ipc_host_done()
216 static void cnl_ipc_dsp_done(struct snd_sof_dev *sdev) in cnl_ipc_dsp_done() argument
222 snd_sof_dsp_update_bits_forced(sdev, HDA_DSP_BAR, in cnl_ipc_dsp_done()
228 snd_sof_dsp_update_bits(sdev, HDA_DSP_BAR, in cnl_ipc_dsp_done()
252 int cnl_ipc4_send_msg(struct snd_sof_dev *sdev, struct snd_sof_ipc_msg *msg) in cnl_ipc4_send_msg() argument
258 sof_mailbox_write(sdev, sdev->host_box.offset, msg_data->data_ptr, in cnl_ipc4_send_msg()
261 snd_sof_dsp_write(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCIDD, msg_data->extension); in cnl_ipc4_send_msg()
262 snd_sof_dsp_write(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCIDR, in cnl_ipc4_send_msg()
268 int cnl_ipc_send_msg(struct snd_sof_dev *sdev, struct snd_sof_ipc_msg *msg) in cnl_ipc_send_msg() argument
270 struct sof_intel_hda_dev *hdev = sdev->pdata->hw_pdata; in cnl_ipc_send_msg()
285 snd_sof_dsp_write(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCIDD, in cnl_ipc_send_msg()
287 snd_sof_dsp_write(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCIDR, in cnl_ipc_send_msg()
293 sof_mailbox_write(sdev, sdev->host_box.offset, msg->msg_data, in cnl_ipc_send_msg()
295 snd_sof_dsp_write(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCIDR, in cnl_ipc_send_msg()
315 void cnl_ipc_dump(struct snd_sof_dev *sdev) in cnl_ipc_dump() argument
321 hda_ipc_irq_dump(sdev); in cnl_ipc_dump()
324 hipcida = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCIDA); in cnl_ipc_dump()
325 hipcctl = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCCTL); in cnl_ipc_dump()
326 hipctdr = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCTDR); in cnl_ipc_dump()
330 dev_err(sdev->dev, in cnl_ipc_dump()
335 void cnl_ipc4_dump(struct snd_sof_dev *sdev) in cnl_ipc4_dump() argument
339 hda_ipc_irq_dump(sdev); in cnl_ipc4_dump()
341 hipcidr = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCIDR); in cnl_ipc4_dump()
342 hipcidd = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCIDD); in cnl_ipc4_dump()
343 hipcida = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCIDA); in cnl_ipc4_dump()
344 hipctdr = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCTDR); in cnl_ipc4_dump()
345 hipctdd = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCTDD); in cnl_ipc4_dump()
346 hipctda = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCTDA); in cnl_ipc4_dump()
347 hipcctl = snd_sof_dsp_read(sdev, HDA_DSP_BAR, CNL_DSP_REG_HIPCCTL); in cnl_ipc4_dump()
351 dev_err(sdev->dev, in cnl_ipc4_dump()
360 int sof_cnl_ops_init(struct snd_sof_dev *sdev) in sof_cnl_ops_init() argument
369 if (sdev->pdata->ipc_type == SOF_IPC) { in sof_cnl_ops_init()
380 if (sdev->pdata->ipc_type == SOF_INTEL_IPC4) { in sof_cnl_ops_init()
383 sdev->private = devm_kzalloc(sdev->dev, sizeof(*ipc4_data), GFP_KERNEL); in sof_cnl_ops_init()
384 if (!sdev->private) in sof_cnl_ops_init()
387 ipc4_data = sdev->private; in sof_cnl_ops_init()
403 hda_set_dai_drv_ops(sdev, &sof_cnl_ops); in sof_cnl_ops_init()