File tree Expand file tree Collapse file tree
Documentation/devicetree/bindings/sound
sound/soc/mediatek/mt8195 Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -19,6 +19,12 @@ properties:
1919 interrupts :
2020 maxItems : 1
2121
22+ resets :
23+ maxItems : 1
24+
25+ reset-names :
26+ const : audiosys
27+
2228 memory-region :
2329 maxItems : 1
2430 description : |
@@ -127,6 +133,8 @@ required:
127133 - compatible
128134 - reg
129135 - interrupts
136+ - resets
137+ - reset-names
130138 - mediatek,topckgen
131139 - power-domains
132140 - clocks
@@ -144,6 +152,8 @@ examples:
144152 compatible = "mediatek,mt8195-audio";
145153 reg = <0x10890000 0x10000>;
146154 interrupts = <GIC_SPI 822 IRQ_TYPE_LEVEL_HIGH 0>;
155+ resets = <&watchdog 14>;
156+ reset-names = "audiosys";
147157 mediatek,topckgen = <&topckgen>;
148158 power-domains = <&spm 7>; //MT8195_POWER_DOMAIN_AUDIO
149159 memory-region = <&snd_dma_mem_reserved>;
Original file line number Diff line number Diff line change 1616#include <linux/of_platform.h>
1717#include <linux/of_reserved_mem.h>
1818#include <linux/pm_runtime.h>
19+ #include <linux/reset.h>
1920#include "mt8195-afe-common.h"
2021#include "mt8195-afe-clk.h"
2122#include "mt8195-reg.h"
@@ -3056,6 +3057,7 @@ static int mt8195_afe_pcm_dev_probe(struct platform_device *pdev)
30563057 struct mtk_base_afe * afe ;
30573058 struct mt8195_afe_private * afe_priv ;
30583059 struct device * dev = & pdev -> dev ;
3060+ struct reset_control * rstc ;
30593061 int i , irq_id , ret ;
30603062 struct snd_soc_component * component ;
30613063
@@ -3092,6 +3094,20 @@ static int mt8195_afe_pcm_dev_probe(struct platform_device *pdev)
30923094 return ret ;
30933095 }
30943096
3097+ /* reset controller to reset audio regs before regmap cache */
3098+ rstc = devm_reset_control_get_exclusive (dev , "audiosys" );
3099+ if (IS_ERR (rstc )) {
3100+ ret = PTR_ERR (rstc );
3101+ dev_err (dev , "could not get audiosys reset:%d\n" , ret );
3102+ return ret ;
3103+ }
3104+
3105+ ret = reset_control_reset (rstc );
3106+ if (ret ) {
3107+ dev_err (dev , "failed to trigger audio reset:%d\n" , ret );
3108+ return ret ;
3109+ }
3110+
30953111 spin_lock_init (& afe_priv -> afe_ctrl_lock );
30963112
30973113 mutex_init (& afe -> irq_alloc_lock );
You can’t perform that action at this time.
0 commit comments