mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 01:55:51 +02:00
ASoC: rsnd: Add audmapp clock and reset support for RZ/G3E
RZ/G3E requires additional audmapp clock and reset lines for Audio DMA-PP operation. Add global audmapp clock/reset management in rsnd_dma_probe() using optional APIs to remain transparent to other platforms. Signed-off-by: John Madieu <john.madieu.xa@bp.renesas.com> Acked-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://patch.msgid.link/20260525110230.4014435-7-john.madieu.xa@bp.renesas.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
948b075ebc
commit
fb859f6fc4
|
|
@ -47,6 +47,9 @@ struct rsnd_dma_ctrl {
|
|||
phys_addr_t ppres;
|
||||
int dmaen_num;
|
||||
int dmapp_num;
|
||||
/* RZ/G3E: Audio DMAC peri-peri clock and reset */
|
||||
struct clk *audmapp_clk;
|
||||
struct reset_control *audmapp_rstc;
|
||||
};
|
||||
|
||||
#define rsnd_priv_to_dmac(p) ((struct rsnd_dma_ctrl *)(p)->dma)
|
||||
|
|
@ -870,6 +873,25 @@ int rsnd_dma_probe(struct rsnd_priv *priv)
|
|||
return 0; /* it will be PIO mode */
|
||||
}
|
||||
|
||||
/*
|
||||
* Audio DMAC peri-peri clock and reset for RZ/G3E.
|
||||
* These use optional APIs, so they gracefully return NULL
|
||||
* (no error) on platforms whose DT does not provide them.
|
||||
*
|
||||
* Enable the clock first so the block sees a stable clock on
|
||||
* the way out of reset, then deassert the reset line.
|
||||
*/
|
||||
dmac->audmapp_clk = devm_clk_get_optional_enabled(dev, "audmapp");
|
||||
if (IS_ERR(dmac->audmapp_clk))
|
||||
return dev_err_probe(dev, PTR_ERR(dmac->audmapp_clk),
|
||||
"failed to get audmapp clock\n");
|
||||
|
||||
dmac->audmapp_rstc =
|
||||
devm_reset_control_get_optional_exclusive_deasserted(dev, "audmapp");
|
||||
if (IS_ERR(dmac->audmapp_rstc))
|
||||
return dev_err_probe(dev, PTR_ERR(dmac->audmapp_rstc),
|
||||
"failed to get audmapp reset\n");
|
||||
|
||||
dmac->dmapp_num = 0;
|
||||
dmac->ppres = res->start;
|
||||
dmac->ppbase = devm_ioremap_resource(dev, res);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user