diff options
Diffstat (limited to 'include/linux/fpga/fpga-mgr.h')
| -rw-r--r-- | include/linux/fpga/fpga-mgr.h | 29 | 
1 files changed, 25 insertions, 4 deletions
diff --git a/include/linux/fpga/fpga-mgr.h b/include/linux/fpga/fpga-mgr.h index 0940bf45e2f2..16551d5eac36 100644 --- a/include/linux/fpga/fpga-mgr.h +++ b/include/linux/fpga/fpga-mgr.h @@ -65,11 +65,26 @@ enum fpga_mgr_states {  /*   * FPGA Manager flags   * FPGA_MGR_PARTIAL_RECONFIG: do partial reconfiguration if supported + * FPGA_MGR_EXTERNAL_CONFIG: FPGA has been configured prior to Linux booting   */  #define FPGA_MGR_PARTIAL_RECONFIG	BIT(0) +#define FPGA_MGR_EXTERNAL_CONFIG	BIT(1) + +/** + * struct fpga_image_info - information specific to a FPGA image + * @flags: boolean flags as defined above + * @enable_timeout_us: maximum time to enable traffic through bridge (uSec) + * @disable_timeout_us: maximum time to disable traffic through bridge (uSec) + */ +struct fpga_image_info { +	u32 flags; +	u32 enable_timeout_us; +	u32 disable_timeout_us; +};  /**   * struct fpga_manager_ops - ops for low level fpga manager drivers + * @initial_header_size: Maximum number of bytes that should be passed into write_init   * @state: returns an enum value of the FPGA's state   * @write_init: prepare the FPGA to receive confuration data   * @write: write count bytes of configuration data to the FPGA @@ -81,11 +96,14 @@ enum fpga_mgr_states {   * called, so leaving them out is fine.   */  struct fpga_manager_ops { +	size_t initial_header_size;  	enum fpga_mgr_states (*state)(struct fpga_manager *mgr); -	int (*write_init)(struct fpga_manager *mgr, u32 flags, +	int (*write_init)(struct fpga_manager *mgr, +			  struct fpga_image_info *info,  			  const char *buf, size_t count);  	int (*write)(struct fpga_manager *mgr, const char *buf, size_t count); -	int (*write_complete)(struct fpga_manager *mgr, u32 flags); +	int (*write_complete)(struct fpga_manager *mgr, +			      struct fpga_image_info *info);  	void (*fpga_remove)(struct fpga_manager *mgr);  }; @@ -109,14 +127,17 @@ struct fpga_manager {  #define to_fpga_manager(d) container_of(d, struct fpga_manager, dev) -int fpga_mgr_buf_load(struct fpga_manager *mgr, u32 flags, +int fpga_mgr_buf_load(struct fpga_manager *mgr, struct fpga_image_info *info,  		      const char *buf, size_t count); -int fpga_mgr_firmware_load(struct fpga_manager *mgr, u32 flags, +int fpga_mgr_firmware_load(struct fpga_manager *mgr, +			   struct fpga_image_info *info,  			   const char *image_name);  struct fpga_manager *of_fpga_mgr_get(struct device_node *node); +struct fpga_manager *fpga_mgr_get(struct device *dev); +  void fpga_mgr_put(struct fpga_manager *mgr);  int fpga_mgr_register(struct device *dev, const char *name,  |