diff options
Diffstat (limited to 'drivers/fpga/altera-pr-ip-core.c')
-rw-r--r-- | drivers/fpga/altera-pr-ip-core.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/drivers/fpga/altera-pr-ip-core.c b/drivers/fpga/altera-pr-ip-core.c index a7b31f9797ce..eea521774cf6 100644 --- a/drivers/fpga/altera-pr-ip-core.c +++ b/drivers/fpga/altera-pr-ip-core.c | |||
@@ -187,6 +187,8 @@ static const struct fpga_manager_ops alt_pr_ops = { | |||
187 | int alt_pr_register(struct device *dev, void __iomem *reg_base) | 187 | int alt_pr_register(struct device *dev, void __iomem *reg_base) |
188 | { | 188 | { |
189 | struct alt_pr_priv *priv; | 189 | struct alt_pr_priv *priv; |
190 | struct fpga_manager *mgr; | ||
191 | int ret; | ||
190 | u32 val; | 192 | u32 val; |
191 | 193 | ||
192 | priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); | 194 | priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); |
@@ -201,15 +203,27 @@ int alt_pr_register(struct device *dev, void __iomem *reg_base) | |||
201 | (val & ALT_PR_CSR_STATUS_MSK) >> ALT_PR_CSR_STATUS_SFT, | 203 | (val & ALT_PR_CSR_STATUS_MSK) >> ALT_PR_CSR_STATUS_SFT, |
202 | (int)(val & ALT_PR_CSR_PR_START)); | 204 | (int)(val & ALT_PR_CSR_PR_START)); |
203 | 205 | ||
204 | return fpga_mgr_register(dev, dev_name(dev), &alt_pr_ops, priv); | 206 | mgr = fpga_mgr_create(dev, dev_name(dev), &alt_pr_ops, priv); |
207 | if (!mgr) | ||
208 | return -ENOMEM; | ||
209 | |||
210 | dev_set_drvdata(dev, mgr); | ||
211 | |||
212 | ret = fpga_mgr_register(mgr); | ||
213 | if (ret) | ||
214 | fpga_mgr_free(mgr); | ||
215 | |||
216 | return ret; | ||
205 | } | 217 | } |
206 | EXPORT_SYMBOL_GPL(alt_pr_register); | 218 | EXPORT_SYMBOL_GPL(alt_pr_register); |
207 | 219 | ||
208 | int alt_pr_unregister(struct device *dev) | 220 | int alt_pr_unregister(struct device *dev) |
209 | { | 221 | { |
222 | struct fpga_manager *mgr = dev_get_drvdata(dev); | ||
223 | |||
210 | dev_dbg(dev, "%s\n", __func__); | 224 | dev_dbg(dev, "%s\n", __func__); |
211 | 225 | ||
212 | fpga_mgr_unregister(dev); | 226 | fpga_mgr_unregister(mgr); |
213 | 227 | ||
214 | return 0; | 228 | return 0; |
215 | } | 229 | } |