Lines Matching defs:sdev
31 static int mt8186_get_mailbox_offset(struct snd_sof_dev *sdev)
36 static int mt8186_get_window_offset(struct snd_sof_dev *sdev, u32 id)
41 static int mt8186_send_msg(struct snd_sof_dev *sdev,
44 struct adsp_priv *priv = sdev->pdata->hw_pdata;
46 sof_mailbox_write(sdev, sdev->host_box.offset, msg->msg_data,
57 spin_lock_irqsave(&priv->sdev->ipc_lock, flags);
58 snd_sof_ipc_process_reply(priv->sdev, 0);
59 spin_unlock_irqrestore(&priv->sdev->ipc_lock, flags);
69 sof_mailbox_read(priv->sdev, priv->sdev->debug_box.offset + 4,
74 snd_sof_dsp_panic(priv->sdev, p, true);
76 snd_sof_ipc_msgs_rx(priv->sdev);
216 static void adsp_sram_power_on(struct snd_sof_dev *sdev)
218 snd_sof_dsp_update_bits(sdev, DSP_BUSREG_BAR, ADSP_SRAM_POOL_CON,
222 static void adsp_sram_power_off(struct snd_sof_dev *sdev)
224 snd_sof_dsp_update_bits(sdev, DSP_BUSREG_BAR, ADSP_SRAM_POOL_CON,
229 static int adsp_memory_remap_init(struct snd_sof_dev *sdev, struct mtk_adsp_chip_info *adsp)
237 dev_dbg(sdev->dev, "adsp->pa_dram %pa, offset %#x\n", &adsp->pa_dram, offset);
239 snd_sof_dsp_write(sdev, DSP_BUSREG_BAR, DSP_C0_EMI_MAP_ADDR, offset);
240 snd_sof_dsp_write(sdev, DSP_BUSREG_BAR, DSP_C0_DMAEMI_MAP_ADDR, offset);
242 if (offset != snd_sof_dsp_read(sdev, DSP_BUSREG_BAR, DSP_C0_EMI_MAP_ADDR) ||
243 offset != snd_sof_dsp_read(sdev, DSP_BUSREG_BAR, DSP_C0_DMAEMI_MAP_ADDR)) {
244 dev_err(sdev->dev, "emi remap fail\n");
271 static int mt8186_run(struct snd_sof_dev *sdev)
276 dev_dbg(sdev->dev, "HIFIxDSP boot from base : 0x%08X\n", adsp_bootup_addr);
277 mt8186_sof_hifixdsp_boot_sequence(sdev, adsp_bootup_addr);
282 static int mt8186_dsp_probe(struct snd_sof_dev *sdev)
284 struct platform_device *pdev = container_of(sdev->dev, struct platform_device, dev);
292 sdev->pdata->hw_pdata = priv;
293 priv->dev = sdev->dev;
294 priv->sdev = sdev;
304 sdev->bar[SOF_FW_BLK_TYPE_IRAM] = devm_ioremap(sdev->dev,
307 if (!sdev->bar[SOF_FW_BLK_TYPE_IRAM]) {
308 dev_err(sdev->dev, "failed to ioremap base %pa size %#x\n",
313 priv->adsp->va_sram = sdev->bar[SOF_FW_BLK_TYPE_IRAM];
315 sdev->bar[SOF_FW_BLK_TYPE_SRAM] = devm_ioremap(sdev->dev,
319 if (!sdev->bar[SOF_FW_BLK_TYPE_SRAM]) {
320 dev_err(sdev->dev, "failed to ioremap base %pa size %#x\n",
325 priv->adsp->va_dram = sdev->bar[SOF_FW_BLK_TYPE_SRAM];
329 dev_err(sdev->dev, "adsp_shared_base_ioremap fail!\n");
333 sdev->bar[DSP_REG_BAR] = priv->adsp->va_cfgreg;
334 sdev->bar[DSP_SECREG_BAR] = priv->adsp->va_secreg;
335 sdev->bar[DSP_BUSREG_BAR] = priv->adsp->va_busreg;
337 sdev->mmio_bar = SOF_FW_BLK_TYPE_SRAM;
338 sdev->mailbox_bar = SOF_FW_BLK_TYPE_SRAM;
341 sdev->dsp_box.offset = mt8186_get_mailbox_offset(sdev);
343 ret = adsp_memory_remap_init(sdev, priv->adsp);
345 dev_err(sdev->dev, "adsp_memory_remap_init fail!\n");
350 ret = mt8186_adsp_init_clock(sdev);
352 dev_err(sdev->dev, "mt8186_adsp_init_clock failed\n");
356 ret = mt8186_adsp_clock_on(sdev);
358 dev_err(sdev->dev, "mt8186_adsp_clock_on fail!\n");
362 adsp_sram_power_on(sdev);
369 dev_err(sdev->dev, "failed to create mtk-adsp-ipc device\n");
376 dev_err(sdev->dev, "failed to get drvdata\n");
388 adsp_sram_power_off(sdev);
389 mt8186_adsp_clock_off(sdev);
394 static int mt8186_dsp_remove(struct snd_sof_dev *sdev)
396 struct adsp_priv *priv = sdev->pdata->hw_pdata;
399 mt8186_sof_hifixdsp_shutdown(sdev);
400 adsp_sram_power_off(sdev);
401 mt8186_adsp_clock_off(sdev);
406 static int mt8186_dsp_shutdown(struct snd_sof_dev *sdev)
408 return snd_sof_suspend(sdev->dev);
411 static int mt8186_dsp_suspend(struct snd_sof_dev *sdev, u32 target_state)
413 mt8186_sof_hifixdsp_shutdown(sdev);
414 adsp_sram_power_off(sdev);
415 mt8186_adsp_clock_off(sdev);
420 static int mt8186_dsp_resume(struct snd_sof_dev *sdev)
424 ret = mt8186_adsp_clock_on(sdev);
426 dev_err(sdev->dev, "mt8186_adsp_clock_on fail!\n");
430 adsp_sram_power_on(sdev);
436 static int mt8186_get_bar_index(struct snd_sof_dev *sdev, u32 type)
441 static int mt8186_pcm_hw_params(struct snd_sof_dev *sdev,
451 static snd_pcm_uframes_t mt8186_pcm_pointer(struct snd_sof_dev *sdev,
459 struct snd_soc_component *scomp = sdev->component;
464 dev_warn_ratelimited(sdev->dev, "warn: can't find PCM with DAI ID %d\n",
470 ret = snd_sof_ipc_msg_data(sdev, stream, &posn, sizeof(posn));
472 dev_warn(sdev->dev, "failed to read stream position: %d\n", ret);
483 static void mt8186_adsp_dump(struct snd_sof_dev *sdev, u32 flags)
488 dbg_pc = snd_sof_dsp_read(sdev, DSP_REG_BAR, DSP_PDEBUGPC);
489 dbg_data = snd_sof_dsp_read(sdev, DSP_REG_BAR, DSP_PDEBUGDATA);
490 dbg_inst = snd_sof_dsp_read(sdev, DSP_REG_BAR, DSP_PDEBUGINST);
491 dbg_ls0stat = snd_sof_dsp_read(sdev, DSP_REG_BAR, DSP_PDEBUGLS0STAT);
492 dbg_status = snd_sof_dsp_read(sdev, DSP_REG_BAR, DSP_PDEBUGSTATUS);
493 faultinfo = snd_sof_dsp_read(sdev, DSP_REG_BAR, DSP_PFAULTINFO);
495 dev_info(sdev->dev, "adsp dump : pc %#x, data %#x, dbg_inst %#x,",
497 dev_info(sdev->dev, "ls0stat %#x, status %#x, faultinfo %#x",
500 mtk_adsp_dump(sdev, flags);
663 static int sof_mt8188_ops_init(struct snd_sof_dev *sdev)