Lines Matching +full:jh7100 +full:- +full:audclk
1 // SPDX-License-Identifier: GPL-2.0
3 * StarFive JH7100 Audio Clock Driver
9 #include <linux/clk-provider.h>
17 #include <dt-bindings/clock/starfive-jh7100-audio.h>
19 #include "clk-starfive-jh7100.h"
91 unsigned int idx = clkspec->args[0]; in jh7100_audclk_get()
94 return &priv->reg[idx].hw; in jh7100_audclk_get()
96 return ERR_PTR(-EINVAL); in jh7100_audclk_get()
105 priv = devm_kzalloc(&pdev->dev, struct_size(priv, reg, JH7100_AUDCLK_END), GFP_KERNEL); in jh7100_audclk_probe()
107 return -ENOMEM; in jh7100_audclk_probe()
109 spin_lock_init(&priv->rmw_lock); in jh7100_audclk_probe()
110 priv->dev = &pdev->dev; in jh7100_audclk_probe()
111 priv->base = devm_platform_ioremap_resource(pdev, 0); in jh7100_audclk_probe()
112 if (IS_ERR(priv->base)) in jh7100_audclk_probe()
113 return PTR_ERR(priv->base); in jh7100_audclk_probe()
125 struct jh7100_clk *clk = &priv->reg[idx]; in jh7100_audclk_probe()
132 parents[i].hw = &priv->reg[pidx].hw; in jh7100_audclk_probe()
141 clk->hw.init = &init; in jh7100_audclk_probe()
142 clk->idx = idx; in jh7100_audclk_probe()
143 clk->max_div = max & JH7100_CLK_DIV_MASK; in jh7100_audclk_probe()
145 ret = devm_clk_hw_register(priv->dev, &clk->hw); in jh7100_audclk_probe()
150 return devm_of_clk_add_hw_provider(priv->dev, jh7100_audclk_get, priv); in jh7100_audclk_probe()
154 { .compatible = "starfive,jh7100-audclk" },
162 .name = "clk-starfive-jh7100-audio",
169 MODULE_DESCRIPTION("StarFive JH7100 audio clock driver");