diff options
Diffstat (limited to 'drivers/fpga/fpga-region.c')
-rw-r--r-- | drivers/fpga/fpga-region.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/fpga/fpga-region.c b/drivers/fpga/fpga-region.c index bde5a9d460c5..9c8593e5a4fe 100644 --- a/drivers/fpga/fpga-region.c +++ b/drivers/fpga/fpga-region.c @@ -14,6 +14,7 @@ #include <linux/module.h> #include <linux/slab.h> #include <linux/spinlock.h> +#include <linux/reset.h> static DEFINE_IDA(fpga_region_ida); static struct class *fpga_region_class; @@ -98,6 +99,7 @@ int fpga_region_program_fpga(struct fpga_region *region) struct device *dev = ®ion->dev; struct fpga_image_info *info = region->info; int ret; + struct reset_control *rstc; region = fpga_region_get(region); if (IS_ERR(region)) { @@ -141,7 +143,15 @@ int fpga_region_program_fpga(struct fpga_region *region) goto err_put_br; } + rstc = of_reset_control_array_get(info->overlay, false, true, true); + if (IS_ERR(rstc)) + goto err_put_br; + + reset_control_reset(rstc); + reset_control_put(rstc); + fpga_mgr_unlock(region->mgr); + fpga_region_put(region); return 0; |