• Home
  • Raw
  • Download

Lines Matching full:region

3  * FPGA Region - Device Tree support for FPGA programming under Linux
10 #include <linux/fpga/fpga-region.h>
20 { .compatible = "fpga-region", },
31 * of_fpga_region_find - find FPGA region
32 * @np: device node of FPGA Region
34 * Caller will need to put_device(&region->dev) when done.
36 * Returns FPGA Region struct or NULL
45 * @np: device node of FPGA region
47 * Get FPGA Manager from "fpga-mgr" property or from ancestor region.
60 if (of_device_is_compatible(np, "fpga-region")) { in of_fpga_region_get_mgr()
78 * @region: FPGA region
85 * Caller should call fpga_bridges_put(&region->bridge_list) when
91 static int of_fpga_region_get_bridges(struct fpga_region *region) in of_fpga_region_get_bridges() argument
93 struct device *dev = &region->dev; in of_fpga_region_get_bridges()
95 struct fpga_image_info *info = region->info; in of_fpga_region_get_bridges()
101 &region->bridge_list); in of_fpga_region_get_bridges()
133 &region->bridge_list); in of_fpga_region_get_bridges()
138 fpga_bridges_put(&region->bridge_list); in of_fpga_region_get_bridges()
153 * Return 0 for OK or -EINVAL if child FPGA region adds firmware-name.
177 pr_err("firmware-name not allowed in child FPGA region: %pOF", in child_regions_with_firmware()
184 * of_fpga_region_parse_ov - parse and check overlay applied to region
186 * @region: FPGA region
187 * @overlay: overlay applied to the FPGA region
189 * Given an overlay applied to a FPGA region, parse the FPGA image specific
198 struct fpga_region *region, in of_fpga_region_parse_ov() argument
201 struct device *dev = &region->dev; in of_fpga_region_parse_ov()
206 if (region->info) { in of_fpga_region_parse_ov()
207 dev_err(dev, "Region already has overlay applied.\n"); in of_fpga_region_parse_ov()
213 * firmware-name property (would mean that an FPGA region that has in of_fpga_region_parse_ov()
226 /* Read FPGA region properties from the overlay */ in of_fpga_region_parse_ov()
244 of_property_read_u32(overlay, "region-unfreeze-timeout-us", in of_fpga_region_parse_ov()
247 of_property_read_u32(overlay, "region-freeze-timeout-us", in of_fpga_region_parse_ov()
278 * @region: FPGA region that the overlay was applied to
281 * Called when an overlay targeted to a FPGA Region is about to be applied.
289 static int of_fpga_region_notify_pre_apply(struct fpga_region *region, in of_fpga_region_notify_pre_apply() argument
292 struct device *dev = &region->dev; in of_fpga_region_notify_pre_apply()
296 info = of_fpga_region_parse_ov(region, nd->overlay); in of_fpga_region_notify_pre_apply()
304 if (region->info) { in of_fpga_region_notify_pre_apply()
305 dev_err(dev, "Region already has overlay applied.\n"); in of_fpga_region_notify_pre_apply()
309 region->info = info; in of_fpga_region_notify_pre_apply()
310 ret = fpga_region_program_fpga(region); in of_fpga_region_notify_pre_apply()
314 region->info = NULL; in of_fpga_region_notify_pre_apply()
323 * @region: FPGA region that was targeted by the overlay that was removed
327 * FPGA region.
329 static void of_fpga_region_notify_post_remove(struct fpga_region *region, in of_fpga_region_notify_post_remove() argument
332 fpga_bridges_disable(&region->bridge_list); in of_fpga_region_notify_post_remove()
333 fpga_bridges_put(&region->bridge_list); in of_fpga_region_notify_post_remove()
334 fpga_image_info_free(region->info); in of_fpga_region_notify_post_remove()
335 region->info = NULL; in of_fpga_region_notify_post_remove()
345 * added to a fpga-region.
353 struct fpga_region *region; in of_fpga_region_notify() local
373 region = of_fpga_region_find(nd->target); in of_fpga_region_notify()
374 if (!region) in of_fpga_region_notify()
380 ret = of_fpga_region_notify_pre_apply(region, nd); in of_fpga_region_notify()
384 of_fpga_region_notify_post_remove(region, nd); in of_fpga_region_notify()
388 put_device(&region->dev); in of_fpga_region_notify()
404 struct fpga_region *region; in of_fpga_region_probe() local
408 /* Find the FPGA mgr specified by region or parent region. */ in of_fpga_region_probe()
413 region = fpga_region_create(dev, mgr, of_fpga_region_get_bridges); in of_fpga_region_probe()
414 if (!region) { in of_fpga_region_probe()
419 ret = fpga_region_register(region); in of_fpga_region_probe()
423 of_platform_populate(np, fpga_region_of_match, NULL, &region->dev); in of_fpga_region_probe()
424 dev_set_drvdata(dev, region); in of_fpga_region_probe()
426 dev_info(dev, "FPGA Region probed\n"); in of_fpga_region_probe()
431 fpga_region_free(region); in of_fpga_region_probe()
439 struct fpga_region *region = platform_get_drvdata(pdev); in of_fpga_region_remove() local
440 struct fpga_manager *mgr = region->mgr; in of_fpga_region_remove()
442 fpga_region_unregister(region); in of_fpga_region_remove()
452 .name = "of-fpga-region",
489 MODULE_DESCRIPTION("FPGA Region");