|
24 | 24 | #include "../../sof-of-dev.h" |
25 | 25 | #include "../../sof-audio.h" |
26 | 26 | #include "../adsp_helper.h" |
| 27 | +#include "../mtk-adsp-common.h" |
27 | 28 | #include "mt8186.h" |
28 | 29 | #include "mt8186-clk.h" |
29 | 30 |
|
@@ -507,6 +508,26 @@ static snd_pcm_uframes_t mt8186_pcm_pointer(struct snd_sof_dev *sdev, |
507 | 508 | return pos; |
508 | 509 | } |
509 | 510 |
|
| 511 | +static void mt8186_adsp_dump(struct snd_sof_dev *sdev, u32 flags) |
| 512 | +{ |
| 513 | + u32 dbg_pc, dbg_data, dbg_inst, dbg_ls0stat, dbg_status, faultinfo; |
| 514 | + |
| 515 | + /* dump debug registers */ |
| 516 | + dbg_pc = snd_sof_dsp_read(sdev, DSP_REG_BAR, DSP_PDEBUGPC); |
| 517 | + dbg_data = snd_sof_dsp_read(sdev, DSP_REG_BAR, DSP_PDEBUGDATA); |
| 518 | + dbg_inst = snd_sof_dsp_read(sdev, DSP_REG_BAR, DSP_PDEBUGINST); |
| 519 | + dbg_ls0stat = snd_sof_dsp_read(sdev, DSP_REG_BAR, DSP_PDEBUGLS0STAT); |
| 520 | + dbg_status = snd_sof_dsp_read(sdev, DSP_REG_BAR, DSP_PDEBUGSTATUS); |
| 521 | + faultinfo = snd_sof_dsp_read(sdev, DSP_REG_BAR, DSP_PFAULTINFO); |
| 522 | + |
| 523 | + dev_info(sdev->dev, "adsp dump : pc %#x, data %#x, dbg_inst %#x,", |
| 524 | + dbg_pc, dbg_data, dbg_inst); |
| 525 | + dev_info(sdev->dev, "ls0stat %#x, status %#x, faultinfo %#x", |
| 526 | + dbg_ls0stat, dbg_status, faultinfo); |
| 527 | + |
| 528 | + mtk_adsp_dump(sdev, flags); |
| 529 | +} |
| 530 | + |
510 | 531 | static struct snd_soc_dai_driver mt8186_dai[] = { |
511 | 532 | { |
512 | 533 | .name = "SOF_DL1", |
@@ -589,6 +610,7 @@ static struct snd_sof_dsp_ops sof_mt8186_ops = { |
589 | 610 | .num_drv = ARRAY_SIZE(mt8186_dai), |
590 | 611 |
|
591 | 612 | /* Debug information */ |
| 613 | + .dbg_dump = mt8186_adsp_dump, |
592 | 614 | .debugfs_add_region_item = snd_sof_debugfs_add_region_item_iomem, |
593 | 615 |
|
594 | 616 | /* PM */ |
|
0 commit comments