Message ID | 1569580317-21181-5-git-send-email-jiaxin.yu@mediatek.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | ASoC: mt8183: fix audio playback slowly after playback | expand |
On Fri, 2019-09-27 at 18:31 +0800, Jiaxin Yu wrote: > Before regmap_reinit_cache we must reset audio regs as default values. > So we use reset controller unit(toprgu) to reset audio hw. > > Signed-off-by: Jiaxin Yu <jiaxin.yu@mediatek.com> This one looks good to me. You could add this if you want Reviewed-by: Yingjoe Chen <yingjoe.chen@mediatek.com> Joe.C > --- > sound/soc/mediatek/mt8183/mt8183-afe-pcm.c | 15 +++++++++++++++ > 1 file changed, 15 insertions(+) > > diff --git a/sound/soc/mediatek/mt8183/mt8183-afe-pcm.c b/sound/soc/mediatek/mt8183/mt8183-afe-pcm.c > index 4a31106d3471..721632386a50 100644 > --- a/sound/soc/mediatek/mt8183/mt8183-afe-pcm.c > +++ b/sound/soc/mediatek/mt8183/mt8183-afe-pcm.c > @@ -11,6 +11,7 @@ > #include <linux/of.h> > #include <linux/of_address.h> > #include <linux/pm_runtime.h> > +#include <linux/reset.h> > > #include "mt8183-afe-common.h" > #include "mt8183-afe-clk.h" > @@ -1089,6 +1090,7 @@ static int mt8183_afe_pcm_dev_probe(struct platform_device *pdev) > struct mtk_base_afe *afe; > struct mt8183_afe_private *afe_priv; > struct device *dev; > + struct reset_control *rstc; > int i, irq_id, ret; > > afe = devm_kzalloc(&pdev->dev, sizeof(*afe), GFP_KERNEL); > @@ -1126,6 +1128,19 @@ static int mt8183_afe_pcm_dev_probe(struct platform_device *pdev) > return ret; > } > > + rstc = devm_reset_control_get(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; > + } > + > /* enable clock for regcache get default value from hw */ > afe_priv->pm_runtime_bypass_reg_ctl = true; > pm_runtime_get_sync(&pdev->dev);
On Fri, Sep 27, 2019 at 06:31:57PM +0800, Jiaxin Yu wrote: > + rstc = devm_reset_control_get(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; > + } This means that we're going to be incompatible with old DT bindings that don't specify a reset controller. I don't know how widely used these bindings are so we may be able to get away with this and I'll apply but we shouldn't be doing it, the code might need to be fixed to make this optional if people complain.
diff --git a/sound/soc/mediatek/mt8183/mt8183-afe-pcm.c b/sound/soc/mediatek/mt8183/mt8183-afe-pcm.c index 4a31106d3471..721632386a50 100644 --- a/sound/soc/mediatek/mt8183/mt8183-afe-pcm.c +++ b/sound/soc/mediatek/mt8183/mt8183-afe-pcm.c @@ -11,6 +11,7 @@ #include <linux/of.h> #include <linux/of_address.h> #include <linux/pm_runtime.h> +#include <linux/reset.h> #include "mt8183-afe-common.h" #include "mt8183-afe-clk.h" @@ -1089,6 +1090,7 @@ static int mt8183_afe_pcm_dev_probe(struct platform_device *pdev) struct mtk_base_afe *afe; struct mt8183_afe_private *afe_priv; struct device *dev; + struct reset_control *rstc; int i, irq_id, ret; afe = devm_kzalloc(&pdev->dev, sizeof(*afe), GFP_KERNEL); @@ -1126,6 +1128,19 @@ static int mt8183_afe_pcm_dev_probe(struct platform_device *pdev) return ret; } + rstc = devm_reset_control_get(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; + } + /* enable clock for regcache get default value from hw */ afe_priv->pm_runtime_bypass_reg_ctl = true; pm_runtime_get_sync(&pdev->dev);
Before regmap_reinit_cache we must reset audio regs as default values. So we use reset controller unit(toprgu) to reset audio hw. Signed-off-by: Jiaxin Yu <jiaxin.yu@mediatek.com> --- sound/soc/mediatek/mt8183/mt8183-afe-pcm.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+)