Loading Documentation/devicetree/bindings/sound/mt8195-afe-pcm.yaml +10 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,12 @@ properties: interrupts: maxItems: 1 resets: maxItems: 1 reset-names: const: audiosys memory-region: maxItems: 1 description: | Loading Loading @@ -127,6 +133,8 @@ required: - compatible - reg - interrupts - resets - reset-names - mediatek,topckgen - power-domains - clocks Loading @@ -144,6 +152,8 @@ examples: compatible = "mediatek,mt8195-audio"; reg = <0x10890000 0x10000>; interrupts = <GIC_SPI 822 IRQ_TYPE_LEVEL_HIGH 0>; resets = <&watchdog 14>; reset-names = "audiosys"; mediatek,topckgen = <&topckgen>; power-domains = <&spm 7>; //MT8195_POWER_DOMAIN_AUDIO memory-region = <&snd_dma_mem_reserved>; Loading sound/soc/mediatek/mt8195/mt8195-afe-pcm.c +16 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ #include <linux/of_platform.h> #include <linux/of_reserved_mem.h> #include <linux/pm_runtime.h> #include <linux/reset.h> #include "mt8195-afe-common.h" #include "mt8195-afe-clk.h" #include "mt8195-reg.h" Loading Loading @@ -3056,6 +3057,7 @@ static int mt8195_afe_pcm_dev_probe(struct platform_device *pdev) struct mtk_base_afe *afe; struct mt8195_afe_private *afe_priv; struct device *dev = &pdev->dev; struct reset_control *rstc; int i, irq_id, ret; struct snd_soc_component *component; Loading Loading @@ -3092,6 +3094,20 @@ static int mt8195_afe_pcm_dev_probe(struct platform_device *pdev) return ret; } /* reset controller to reset audio regs before regmap cache */ rstc = devm_reset_control_get_exclusive(dev, "audiosys"); if (IS_ERR(rstc)) { ret = PTR_ERR(rstc); dev_err(dev, "could not get audiosys reset:%d\n", ret); return ret; } ret = reset_control_reset(rstc); if (ret) { dev_err(dev, "failed to trigger audio reset:%d\n", ret); return ret; } spin_lock_init(&afe_priv->afe_ctrl_lock); mutex_init(&afe->irq_alloc_lock); Loading Loading
Documentation/devicetree/bindings/sound/mt8195-afe-pcm.yaml +10 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,12 @@ properties: interrupts: maxItems: 1 resets: maxItems: 1 reset-names: const: audiosys memory-region: maxItems: 1 description: | Loading Loading @@ -127,6 +133,8 @@ required: - compatible - reg - interrupts - resets - reset-names - mediatek,topckgen - power-domains - clocks Loading @@ -144,6 +152,8 @@ examples: compatible = "mediatek,mt8195-audio"; reg = <0x10890000 0x10000>; interrupts = <GIC_SPI 822 IRQ_TYPE_LEVEL_HIGH 0>; resets = <&watchdog 14>; reset-names = "audiosys"; mediatek,topckgen = <&topckgen>; power-domains = <&spm 7>; //MT8195_POWER_DOMAIN_AUDIO memory-region = <&snd_dma_mem_reserved>; Loading
sound/soc/mediatek/mt8195/mt8195-afe-pcm.c +16 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ #include <linux/of_platform.h> #include <linux/of_reserved_mem.h> #include <linux/pm_runtime.h> #include <linux/reset.h> #include "mt8195-afe-common.h" #include "mt8195-afe-clk.h" #include "mt8195-reg.h" Loading Loading @@ -3056,6 +3057,7 @@ static int mt8195_afe_pcm_dev_probe(struct platform_device *pdev) struct mtk_base_afe *afe; struct mt8195_afe_private *afe_priv; struct device *dev = &pdev->dev; struct reset_control *rstc; int i, irq_id, ret; struct snd_soc_component *component; Loading Loading @@ -3092,6 +3094,20 @@ static int mt8195_afe_pcm_dev_probe(struct platform_device *pdev) return ret; } /* reset controller to reset audio regs before regmap cache */ rstc = devm_reset_control_get_exclusive(dev, "audiosys"); if (IS_ERR(rstc)) { ret = PTR_ERR(rstc); dev_err(dev, "could not get audiosys reset:%d\n", ret); return ret; } ret = reset_control_reset(rstc); if (ret) { dev_err(dev, "failed to trigger audio reset:%d\n", ret); return ret; } spin_lock_init(&afe_priv->afe_ctrl_lock); mutex_init(&afe->irq_alloc_lock); Loading