Skip to content

Commit ee60f73

Browse files
committed
ASoC: mediatek: Add mt8195 reset control support
Merge series from Trevor Wu <trevor.wu@mediatek.com>: Add reset controller support for MT8195.
2 parents c1156cc + ee7f79a commit ee60f73

2 files changed

Lines changed: 26 additions & 0 deletions

File tree

Documentation/devicetree/bindings/sound/mt8195-afe-pcm.yaml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff 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>;

sound/soc/mediatek/mt8195/mt8195-afe-pcm.c

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
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);

0 commit comments

Comments
 (0)