Loading Documentation/devicetree/bindings/dsp/mediatek,mt8186-dsp.yaml 0 → 100644 +91 −0 Original line number Diff line number Diff line # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) %YAML 1.2 --- $id: http://devicetree.org/schemas/dsp/mediatek,mt8186-dsp.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: MediaTek mt8186 DSP core maintainers: - Tinghan Shen <tinghan.shen@mediatek.com> description: | MediaTek mt8186 SoC contains a DSP core used for advanced pre- and post- audio processing. properties: compatible: const: mediatek,mt8186-dsp reg: items: - description: Address and size of the DSP config registers - description: Address and size of the DSP SRAM - description: Address and size of the DSP secure registers - description: Address and size of the DSP bus registers reg-names: items: - const: cfg - const: sram - const: sec - const: bus clocks: items: - description: mux for audio dsp clock - description: mux for audio dsp local bus clock-names: items: - const: audiodsp - const: adsp_bus power-domains: maxItems: 1 mboxes: items: - description: mailbox for receiving audio DSP requests. - description: mailbox for transmitting requests to audio DSP. mbox-names: items: - const: rx - const: tx memory-region: items: - description: dma buffer between host and DSP. - description: DSP system memory. required: - compatible - reg - reg-names - clocks - clock-names - power-domains - mbox-names - mboxes additionalProperties: false examples: - | #include <dt-bindings/clock/mt8186-clk.h> dsp@10680000 { compatible = "mediatek,mt8186-dsp"; reg = <0x10680000 0x2000>, <0x10800000 0x100000>, <0x1068b000 0x100>, <0x1068f000 0x1000>; reg-names = "cfg", "sram", "sec", "bus"; clocks = <&topckgen CLK_TOP_AUDIODSP>, <&topckgen CLK_TOP_ADSP_BUS>; clock-names = "audiodsp", "adsp_bus"; power-domains = <&spm 6>; mbox-names = "rx", "tx"; mboxes = <&adsp_mailbox0>, <&adsp_mailbox1>; }; Documentation/devicetree/bindings/dsp/mediatek,mt8195-dsp.yaml +5 −5 Original line number Diff line number Diff line Loading @@ -50,13 +50,13 @@ properties: mboxes: items: - description: ipc reply between host and audio DSP. - description: ipc request between host and audio DSP. - description: mailbox for receiving audio DSP requests. - description: mailbox for transmitting requests to audio DSP. mbox-names: items: - const: mbox0 - const: mbox1 - const: rx - const: tx memory-region: items: Loading Loading @@ -100,6 +100,6 @@ examples: memory-region = <&adsp_dma_mem_reserved>, <&adsp_mem_reserved>; power-domains = <&spm 6>; //MT8195_POWER_DOMAIN_ADSP mbox-names = "mbox0", "mbox1"; mbox-names = "rx", "tx"; mboxes = <&adsp_mailbox0>, <&adsp_mailbox1>; }; drivers/firmware/mtk-adsp-ipc.c +12 −24 Original line number Diff line number Diff line Loading @@ -12,6 +12,8 @@ #include <linux/platform_device.h> #include <linux/slab.h> static const char * const adsp_mbox_ch_names[MTK_ADSP_MBOX_NUM] = { "rx", "tx" }; /* * mtk_adsp_ipc_send - send ipc cmd to MTK ADSP * Loading Loading @@ -72,7 +74,6 @@ static int mtk_adsp_ipc_probe(struct platform_device *pdev) struct mtk_adsp_ipc *adsp_ipc; struct mtk_adsp_chan *adsp_chan; struct mbox_client *cl; char *chan_name; int ret; int i, j; Loading @@ -83,12 +84,6 @@ static int mtk_adsp_ipc_probe(struct platform_device *pdev) return -ENOMEM; for (i = 0; i < MTK_ADSP_MBOX_NUM; i++) { chan_name = kasprintf(GFP_KERNEL, "mbox%d", i); if (!chan_name) { ret = -ENOMEM; goto out; } adsp_chan = &adsp_ipc->chans[i]; cl = &adsp_chan->cl; cl->dev = dev->parent; Loading @@ -99,17 +94,20 @@ static int mtk_adsp_ipc_probe(struct platform_device *pdev) adsp_chan->ipc = adsp_ipc; adsp_chan->idx = i; adsp_chan->ch = mbox_request_channel_byname(cl, chan_name); adsp_chan->ch = mbox_request_channel_byname(cl, adsp_mbox_ch_names[i]); if (IS_ERR(adsp_chan->ch)) { ret = PTR_ERR(adsp_chan->ch); if (ret != -EPROBE_DEFER) dev_err(dev, "Failed to request mbox chan %d ret %d\n", i, ret); goto out_free; dev_err(dev, "Failed to request mbox chan %s ret %d\n", adsp_mbox_ch_names[i], ret); for (j = 0; j < i; j++) { adsp_chan = &adsp_ipc->chans[j]; mbox_free_channel(adsp_chan->ch); } dev_dbg(dev, "request mbox chan %s\n", chan_name); kfree(chan_name); return ret; } } adsp_ipc->dev = dev; Loading @@ -117,16 +115,6 @@ static int mtk_adsp_ipc_probe(struct platform_device *pdev) dev_dbg(dev, "MTK ADSP IPC initialized\n"); return 0; out_free: kfree(chan_name); out: for (j = 0; j < i; j++) { adsp_chan = &adsp_ipc->chans[j]; mbox_free_channel(adsp_chan->ch); } return ret; } static int mtk_adsp_ipc_remove(struct platform_device *pdev) Loading sound/soc/sof/mediatek/mt8186/mt8186-clk.c +2 −2 Original line number Diff line number Diff line Loading @@ -18,8 +18,8 @@ #include "mt8186-clk.h" static const char *adsp_clks[ADSP_CLK_MAX] = { [CLK_TOP_AUDIODSP] = "audiodsp_sel", [CLK_TOP_ADSP_BUS] = "adsp_bus_sel", [CLK_TOP_AUDIODSP] = "audiodsp", [CLK_TOP_ADSP_BUS] = "adsp_bus", }; int mt8186_adsp_init_clock(struct snd_sof_dev *sdev) Loading Loading
Documentation/devicetree/bindings/dsp/mediatek,mt8186-dsp.yaml 0 → 100644 +91 −0 Original line number Diff line number Diff line # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) %YAML 1.2 --- $id: http://devicetree.org/schemas/dsp/mediatek,mt8186-dsp.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: MediaTek mt8186 DSP core maintainers: - Tinghan Shen <tinghan.shen@mediatek.com> description: | MediaTek mt8186 SoC contains a DSP core used for advanced pre- and post- audio processing. properties: compatible: const: mediatek,mt8186-dsp reg: items: - description: Address and size of the DSP config registers - description: Address and size of the DSP SRAM - description: Address and size of the DSP secure registers - description: Address and size of the DSP bus registers reg-names: items: - const: cfg - const: sram - const: sec - const: bus clocks: items: - description: mux for audio dsp clock - description: mux for audio dsp local bus clock-names: items: - const: audiodsp - const: adsp_bus power-domains: maxItems: 1 mboxes: items: - description: mailbox for receiving audio DSP requests. - description: mailbox for transmitting requests to audio DSP. mbox-names: items: - const: rx - const: tx memory-region: items: - description: dma buffer between host and DSP. - description: DSP system memory. required: - compatible - reg - reg-names - clocks - clock-names - power-domains - mbox-names - mboxes additionalProperties: false examples: - | #include <dt-bindings/clock/mt8186-clk.h> dsp@10680000 { compatible = "mediatek,mt8186-dsp"; reg = <0x10680000 0x2000>, <0x10800000 0x100000>, <0x1068b000 0x100>, <0x1068f000 0x1000>; reg-names = "cfg", "sram", "sec", "bus"; clocks = <&topckgen CLK_TOP_AUDIODSP>, <&topckgen CLK_TOP_ADSP_BUS>; clock-names = "audiodsp", "adsp_bus"; power-domains = <&spm 6>; mbox-names = "rx", "tx"; mboxes = <&adsp_mailbox0>, <&adsp_mailbox1>; };
Documentation/devicetree/bindings/dsp/mediatek,mt8195-dsp.yaml +5 −5 Original line number Diff line number Diff line Loading @@ -50,13 +50,13 @@ properties: mboxes: items: - description: ipc reply between host and audio DSP. - description: ipc request between host and audio DSP. - description: mailbox for receiving audio DSP requests. - description: mailbox for transmitting requests to audio DSP. mbox-names: items: - const: mbox0 - const: mbox1 - const: rx - const: tx memory-region: items: Loading Loading @@ -100,6 +100,6 @@ examples: memory-region = <&adsp_dma_mem_reserved>, <&adsp_mem_reserved>; power-domains = <&spm 6>; //MT8195_POWER_DOMAIN_ADSP mbox-names = "mbox0", "mbox1"; mbox-names = "rx", "tx"; mboxes = <&adsp_mailbox0>, <&adsp_mailbox1>; };
drivers/firmware/mtk-adsp-ipc.c +12 −24 Original line number Diff line number Diff line Loading @@ -12,6 +12,8 @@ #include <linux/platform_device.h> #include <linux/slab.h> static const char * const adsp_mbox_ch_names[MTK_ADSP_MBOX_NUM] = { "rx", "tx" }; /* * mtk_adsp_ipc_send - send ipc cmd to MTK ADSP * Loading Loading @@ -72,7 +74,6 @@ static int mtk_adsp_ipc_probe(struct platform_device *pdev) struct mtk_adsp_ipc *adsp_ipc; struct mtk_adsp_chan *adsp_chan; struct mbox_client *cl; char *chan_name; int ret; int i, j; Loading @@ -83,12 +84,6 @@ static int mtk_adsp_ipc_probe(struct platform_device *pdev) return -ENOMEM; for (i = 0; i < MTK_ADSP_MBOX_NUM; i++) { chan_name = kasprintf(GFP_KERNEL, "mbox%d", i); if (!chan_name) { ret = -ENOMEM; goto out; } adsp_chan = &adsp_ipc->chans[i]; cl = &adsp_chan->cl; cl->dev = dev->parent; Loading @@ -99,17 +94,20 @@ static int mtk_adsp_ipc_probe(struct platform_device *pdev) adsp_chan->ipc = adsp_ipc; adsp_chan->idx = i; adsp_chan->ch = mbox_request_channel_byname(cl, chan_name); adsp_chan->ch = mbox_request_channel_byname(cl, adsp_mbox_ch_names[i]); if (IS_ERR(adsp_chan->ch)) { ret = PTR_ERR(adsp_chan->ch); if (ret != -EPROBE_DEFER) dev_err(dev, "Failed to request mbox chan %d ret %d\n", i, ret); goto out_free; dev_err(dev, "Failed to request mbox chan %s ret %d\n", adsp_mbox_ch_names[i], ret); for (j = 0; j < i; j++) { adsp_chan = &adsp_ipc->chans[j]; mbox_free_channel(adsp_chan->ch); } dev_dbg(dev, "request mbox chan %s\n", chan_name); kfree(chan_name); return ret; } } adsp_ipc->dev = dev; Loading @@ -117,16 +115,6 @@ static int mtk_adsp_ipc_probe(struct platform_device *pdev) dev_dbg(dev, "MTK ADSP IPC initialized\n"); return 0; out_free: kfree(chan_name); out: for (j = 0; j < i; j++) { adsp_chan = &adsp_ipc->chans[j]; mbox_free_channel(adsp_chan->ch); } return ret; } static int mtk_adsp_ipc_remove(struct platform_device *pdev) Loading
sound/soc/sof/mediatek/mt8186/mt8186-clk.c +2 −2 Original line number Diff line number Diff line Loading @@ -18,8 +18,8 @@ #include "mt8186-clk.h" static const char *adsp_clks[ADSP_CLK_MAX] = { [CLK_TOP_AUDIODSP] = "audiodsp_sel", [CLK_TOP_ADSP_BUS] = "adsp_bus_sel", [CLK_TOP_AUDIODSP] = "audiodsp", [CLK_TOP_ADSP_BUS] = "adsp_bus", }; int mt8186_adsp_init_clock(struct snd_sof_dev *sdev) Loading