aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/fpga/fpga-region.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/fpga/fpga-region.c')
-rw-r--r--drivers/fpga/fpga-region.c10
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 = &region->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;