STRUCT FPGA_IMAGE_INFO(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… struct fpga_image_info(9) β€” like, the whole Kernel API Manual, but make it make sense

okay bestie, buckle up πŸŽ€ this is a page from the Kernel API Manual and it's all about struct fpga_image_info β€” the little struct that holds every single thing anyone needs to know about one (1) FPGA image. it's giving "ID card for your bitstream" and honestly? iconic.


✨ NAME ✨

struct fpga_image_info β€” information specific to an FPGA image πŸ¦‹

like, all the info. every field. this is the whole personality of your FPGA image in one struct.


🌸 SYNOPSIS 🌸

here's the struct in all its glory, copied exactly so you can trust me:

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;
 };

no cap, that #ifdef CONFIG_OF; is literally how it's written. don't come for me, I'm just the messenger πŸ’€


πŸ‘‘ Members πŸ‘‘

okay so each of these is a field, and here's what each one is actually doing with its life:

  • flags β€” boolean flags, as defined above. yes, "above" β€” that's what it says. little booleans doing little boolean things ✨
  • enable_timeout_us β€” the maximum time to enable traffic through the bridge, in microseconds (uSec). that's your "pls turn on bestie" deadline 🌸
  • disable_timeout_us β€” the maximum time to disable traffic through the bridge, in microseconds (uSec). same vibe, but for turning it off πŸ¦‹
  • config_complete_timeout_us β€” the maximum time for the FPGA to switch to operating status, and it happens in the write_complete op. so this is the "are we there yet" timer, fr fr ⏳
  • firmware_name β€” the name of the FPGA image firmware file πŸŽ€ your file's @ handle, basically
  • sgt β€” a scatter/gather table containing the FPGA image. fancy and fragmented, we love her πŸ’…
  • buf β€” a contiguous buffer containing the FPGA image. the non-fragmented sister 🫢
  • count β€” the size of buf. literally just how big it is πŸ“
  • header_size β€” the size of the image header. yes, there's a header, it's got a size, moving on 🧚
  • data_size β€” the size of the image data to be sent to the device. if you don't specify it, the whole image gets used. and heads up: the header may be skipped in either case πŸ‘€ that's a real caveat, not me being dramatic
  • region_id β€” the id of the target region. which region? this region. you're welcome 🌈
  • dev β€” the device that owns this. every struct needs a parent, periodt πŸ’œ
  • overlay β€” the Device Tree overlay. only exists when CONFIG_OF is defined, so don't come looking for her otherwise πŸ™ˆ

πŸ”₯ SEE ALSO πŸ”₯

go read these next, bestie, they're all in the kernel file ./include/linux/fpga/fpga-mgr.h and they're all part of the same friend group:

  • enum fpga_mgr_states(9)
  • FPGA Manager flags(9)
  • struct fpga_compat_id(9)
  • struct fpga_manager_info(9)
  • struct fpga_manager_ops(9)
  • struct fpga_manager(9)

main character energy all around, honestly πŸ‘‘


⭐ lowkey reminder: this page lives at ./include/linux/fpga in the source tree, so if you need the real tea, that's where it is πŸ“

and that's the whole page!! tysm for reading, ily, go compile something πŸ’– this was struct fpga_image_info(9) from October 2026, sourced from ./include/linux/fpga β€” mwah πŸŽ€βœ¨

πŸ“¦ where this page comes from