Lines Matching +full:pr +full:- +full:decoupler
1 // SPDX-License-Identifier: GPL-2.0-only
7 * Decoupler IP Core.
15 #include <linux/fpga/fpga-bridge.h>
29 writel(val, d->io_base + offset); in xlnx_pr_decoupler_write()
35 return readl(d->io_base + offset); in xlnx_pr_decouple_read()
41 struct xlnx_pr_decoupler_data *priv = bridge->priv; in xlnx_pr_decoupler_enable_set()
43 err = clk_enable(priv->clk); in xlnx_pr_decoupler_enable_set()
52 clk_disable(priv->clk); in xlnx_pr_decoupler_enable_set()
59 const struct xlnx_pr_decoupler_data *priv = bridge->priv; in xlnx_pr_decoupler_enable_show()
63 err = clk_enable(priv->clk); in xlnx_pr_decoupler_enable_show()
67 status = readl(priv->io_base); in xlnx_pr_decoupler_enable_show()
69 clk_disable(priv->clk); in xlnx_pr_decoupler_enable_show()
80 { .compatible = "xlnx,pr-decoupler-1.00", },
81 { .compatible = "xlnx,pr-decoupler", },
93 priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); in xlnx_pr_decoupler_probe()
95 return -ENOMEM; in xlnx_pr_decoupler_probe()
98 priv->io_base = devm_ioremap_resource(&pdev->dev, res); in xlnx_pr_decoupler_probe()
99 if (IS_ERR(priv->io_base)) in xlnx_pr_decoupler_probe()
100 return PTR_ERR(priv->io_base); in xlnx_pr_decoupler_probe()
102 priv->clk = devm_clk_get(&pdev->dev, "aclk"); in xlnx_pr_decoupler_probe()
103 if (IS_ERR(priv->clk)) { in xlnx_pr_decoupler_probe()
104 if (PTR_ERR(priv->clk) != -EPROBE_DEFER) in xlnx_pr_decoupler_probe()
105 dev_err(&pdev->dev, "input clock not found\n"); in xlnx_pr_decoupler_probe()
106 return PTR_ERR(priv->clk); in xlnx_pr_decoupler_probe()
109 err = clk_prepare_enable(priv->clk); in xlnx_pr_decoupler_probe()
111 dev_err(&pdev->dev, "unable to enable clock\n"); in xlnx_pr_decoupler_probe()
115 clk_disable(priv->clk); in xlnx_pr_decoupler_probe()
117 br = devm_fpga_bridge_create(&pdev->dev, "Xilinx PR Decoupler", in xlnx_pr_decoupler_probe()
120 err = -ENOMEM; in xlnx_pr_decoupler_probe()
128 dev_err(&pdev->dev, "unable to register Xilinx PR Decoupler"); in xlnx_pr_decoupler_probe()
135 clk_unprepare(priv->clk); in xlnx_pr_decoupler_probe()
143 struct xlnx_pr_decoupler_data *p = bridge->priv; in xlnx_pr_decoupler_remove()
147 clk_unprepare(p->clk); in xlnx_pr_decoupler_remove()
163 MODULE_DESCRIPTION("Xilinx Partial Reconfiguration Decoupler");