Lines Matching full:arb

12 #include <dt-bindings/reset/amlogic,meson-axg-audio-arb.h>
63 struct meson_audio_arb_data *arb = in meson_audio_arb_update() local
66 spin_lock(&arb->lock); in meson_audio_arb_update()
67 val = readl(arb->regs); in meson_audio_arb_update()
70 val &= ~BIT(arb->reset_bits[id]); in meson_audio_arb_update()
72 val |= BIT(arb->reset_bits[id]); in meson_audio_arb_update()
74 writel(val, arb->regs); in meson_audio_arb_update()
75 spin_unlock(&arb->lock); in meson_audio_arb_update()
84 struct meson_audio_arb_data *arb = in meson_audio_arb_status() local
87 val = readl(arb->regs); in meson_audio_arb_status()
89 return !(val & BIT(arb->reset_bits[id])); in meson_audio_arb_status()
112 .compatible = "amlogic,meson-axg-audio-arb",
115 .compatible = "amlogic,meson-sm1-audio-arb",
124 struct meson_audio_arb_data *arb = platform_get_drvdata(pdev); in meson_audio_arb_remove() local
127 spin_lock(&arb->lock); in meson_audio_arb_remove()
128 writel(0, arb->regs); in meson_audio_arb_remove()
129 spin_unlock(&arb->lock); in meson_audio_arb_remove()
131 clk_disable_unprepare(arb->clk); in meson_audio_arb_remove()
140 struct meson_audio_arb_data *arb; in meson_audio_arb_probe() local
148 arb = devm_kzalloc(dev, sizeof(*arb), GFP_KERNEL); in meson_audio_arb_probe()
149 if (!arb) in meson_audio_arb_probe()
151 platform_set_drvdata(pdev, arb); in meson_audio_arb_probe()
153 arb->clk = devm_clk_get(dev, NULL); in meson_audio_arb_probe()
154 if (IS_ERR(arb->clk)) { in meson_audio_arb_probe()
155 if (PTR_ERR(arb->clk) != -EPROBE_DEFER) in meson_audio_arb_probe()
157 return PTR_ERR(arb->clk); in meson_audio_arb_probe()
161 arb->regs = devm_ioremap_resource(dev, res); in meson_audio_arb_probe()
162 if (IS_ERR(arb->regs)) in meson_audio_arb_probe()
163 return PTR_ERR(arb->regs); in meson_audio_arb_probe()
165 spin_lock_init(&arb->lock); in meson_audio_arb_probe()
166 arb->reset_bits = data->reset_bits; in meson_audio_arb_probe()
167 arb->rstc.nr_resets = data->reset_num; in meson_audio_arb_probe()
168 arb->rstc.ops = &meson_audio_arb_rstc_ops; in meson_audio_arb_probe()
169 arb->rstc.of_node = dev->of_node; in meson_audio_arb_probe()
170 arb->rstc.owner = THIS_MODULE; in meson_audio_arb_probe()
177 ret = clk_prepare_enable(arb->clk); in meson_audio_arb_probe()
179 dev_err(dev, "failed to enable arb clock\n"); in meson_audio_arb_probe()
182 writel(BIT(ARB_GENERAL_BIT), arb->regs); in meson_audio_arb_probe()
185 ret = devm_reset_controller_register(dev, &arb->rstc); in meson_audio_arb_probe()
187 dev_err(dev, "failed to register arb reset controller\n"); in meson_audio_arb_probe()
198 .name = "meson-audio-arb-reset",