include/linux/fpga/fpga-mgr.h
Source file repositories/reference/linux-study-clean/include/linux/fpga/fpga-mgr.h
File Facts
- System
- Linux kernel
- Corpus path
include/linux/fpga/fpga-mgr.h- Extension
.h- Size
- 9143 bytes
- Lines
- 262
- Domain
- Core OS
- Bucket
- Core Kernel Interface
- Inferred role
- Core OS: implementation source
- Status
- source implementation candidate
Why This File Exists
Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/mutex.hlinux/platform_device.h
Detected Declarations
struct fpga_managerstruct sg_tablestruct fpga_image_infostruct fpga_compat_idstruct fpga_manager_infostruct fpga_manager_opsstruct fpga_managerenum fpga_mgr_states
Annotated Snippet
struct fpga_image_info {
u32 flags;
u32 enable_timeout_us;
u32 disable_timeout_us;
u32 config_complete_timeout_us;
char *firmware_name;
struct sg_table *sgt;
const char *buf;
size_t count;
size_t header_size;
size_t data_size;
int region_id;
struct device *dev;
#ifdef CONFIG_OF
struct device_node *overlay;
#endif
};
/**
* struct fpga_compat_id - id for compatibility check
*
* @id_h: high 64bit of the compat_id
* @id_l: low 64bit of the compat_id
*/
struct fpga_compat_id {
u64 id_h;
u64 id_l;
};
/**
* struct fpga_manager_info - collection of parameters for an FPGA Manager
* @name: fpga manager name
* @compat_id: FPGA manager id for compatibility check.
* @mops: pointer to structure of fpga manager ops
* @priv: fpga manager private data
*
* fpga_manager_info contains parameters for the register_full function.
* These are separated into an info structure because they some are optional
* others could be added to in the future. The info structure facilitates
* maintaining a stable API.
*/
struct fpga_manager_info {
const char *name;
struct fpga_compat_id *compat_id;
const struct fpga_manager_ops *mops;
void *priv;
};
/**
* struct fpga_manager_ops - ops for low level fpga manager drivers
* @initial_header_size: minimum number of bytes that should be passed into
* parse_header and write_init.
* @skip_header: bool flag to tell fpga-mgr core whether it should skip
* info->header_size part at the beginning of the image when invoking
* write callback.
* @state: returns an enum value of the FPGA's state
* @status: returns status of the FPGA, including reconfiguration error code
* @parse_header: parse FPGA image header to set info->header_size and
* info->data_size. In case the input buffer is not large enough, set
* required size to info->header_size and return -EAGAIN.
* @write_init: prepare the FPGA to receive configuration data
* @write: write count bytes of configuration data to the FPGA
* @write_sg: write the scatter list of configuration data to the FPGA
* @write_complete: set FPGA to operating state after writing is done
* @fpga_remove: optional: Set FPGA into a specific state during driver remove
* @groups: optional attribute groups.
*
* fpga_manager_ops are the low level functions implemented by a specific
* fpga manager driver. The optional ones are tested for NULL before being
* called, so leaving them out is fine.
*/
struct fpga_manager_ops {
size_t initial_header_size;
bool skip_header;
enum fpga_mgr_states (*state)(struct fpga_manager *mgr);
u64 (*status)(struct fpga_manager *mgr);
int (*parse_header)(struct fpga_manager *mgr,
struct fpga_image_info *info,
const char *buf, size_t count);
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_sg)(struct fpga_manager *mgr, struct sg_table *sgt);
int (*write_complete)(struct fpga_manager *mgr,
struct fpga_image_info *info);
void (*fpga_remove)(struct fpga_manager *mgr);
const struct attribute_group **groups;
};
Annotation
- Immediate include surface: `linux/mutex.h`, `linux/platform_device.h`.
- Detected declarations: `struct fpga_manager`, `struct sg_table`, `struct fpga_image_info`, `struct fpga_compat_id`, `struct fpga_manager_info`, `struct fpga_manager_ops`, `struct fpga_manager`, `enum fpga_mgr_states`.
- Atlas domain: Core OS / Core Kernel Interface.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.