Commit 6b43538f authored by Tinghan Shen's avatar Tinghan Shen Committed by Mark Brown

ASoC: SOF: mediatek: Support mt8188 platform

Add support of SOF on MediaTek MT8188 SoC.
MT8188 ADSP integrates with a single core Cadence HiFi-5 DSP.
The IPC communication between AP and DSP is based on shared DRAM and
mailbox interrupt.

The change in the mt8186.h is compatible on both mt8186 and
mt8188. The register controls booting the DSP core with the
default address or the user specified address. Both mt8186
and mt8188 should boot with the user specified boot in the driver.
The usage of the register is the same on both SoC, but the
control bit is different on mt8186 and mt8188, which is bit 1 on mt8186
and bit 0 on mt8188. Configure the redundant bit has noside effect
on both SoCs.
Signed-off-by: default avatarTinghan Shen <tinghan.shen@mediatek.com>
Reviewed-by: default avatarPéter Ujfalusi <peter.ujfalusi@linux.intel.com>
Reviewed-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: default avatarRanjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: default avatarAngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
Link: https://lore.kernel.org/r/20230110084312.12953-3-tinghan.shen@mediatek.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent e15ec689
...@@ -625,8 +625,25 @@ static const struct sof_dev_desc sof_of_mt8186_desc = { ...@@ -625,8 +625,25 @@ static const struct sof_dev_desc sof_of_mt8186_desc = {
.ops = &sof_mt8186_ops, .ops = &sof_mt8186_ops,
}; };
static const struct sof_dev_desc sof_of_mt8188_desc = {
.ipc_supported_mask = BIT(SOF_IPC),
.ipc_default = SOF_IPC,
.default_fw_path = {
[SOF_IPC] = "mediatek/sof",
},
.default_tplg_path = {
[SOF_IPC] = "mediatek/sof-tplg",
},
.default_fw_filename = {
[SOF_IPC] = "sof-mt8188.ri",
},
.nocodec_tplg_filename = "sof-mt8188-nocodec.tplg",
.ops = &sof_mt8186_ops,
};
static const struct of_device_id sof_of_mt8186_ids[] = { static const struct of_device_id sof_of_mt8186_ids[] = {
{ .compatible = "mediatek,mt8186-dsp", .data = &sof_of_mt8186_desc}, { .compatible = "mediatek,mt8186-dsp", .data = &sof_of_mt8186_desc},
{ .compatible = "mediatek,mt8188-dsp", .data = &sof_of_mt8188_desc},
{ } { }
}; };
MODULE_DEVICE_TABLE(of, sof_of_mt8186_ids); MODULE_DEVICE_TABLE(of, sof_of_mt8186_ids);
......
...@@ -52,7 +52,15 @@ struct snd_sof_dev; ...@@ -52,7 +52,15 @@ struct snd_sof_dev;
#define ADSP_PRID 0x0 #define ADSP_PRID 0x0
#define ADSP_ALTVEC_C0 0x04 #define ADSP_ALTVEC_C0 0x04
#define ADSP_ALTVECSEL 0x0C #define ADSP_ALTVECSEL 0x0C
#define ADSP_ALTVECSEL_C0 BIT(1) #define MT8188_ADSP_ALTVECSEL_C0 BIT(0)
#define MT8186_ADSP_ALTVECSEL_C0 BIT(1)
/*
* On MT8188, BIT(1) is not evaluated and on MT8186 BIT(0) is not evaluated:
* We can simplify the driver by safely setting both bits regardless of the SoC.
*/
#define ADSP_ALTVECSEL_C0 (MT8188_ADSP_ALTVECSEL_C0 | \
MT8186_ADSP_ALTVECSEL_C0)
/* dsp bus */ /* dsp bus */
#define ADSP_SRAM_POOL_CON 0x190 #define ADSP_SRAM_POOL_CON 0x190
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment