1
2
3
4
5
6
7#include <fpga.h>
8
9#ifndef _XILINX_H_
10#define _XILINX_H_
11
12
13
14typedef enum {
15 min_xilinx_iface_type,
16 slave_serial,
17 master_serial,
18 slave_parallel,
19 jtag_mode,
20 master_selectmap,
21 slave_selectmap,
22 devcfg,
23 csu_dma,
24 cfi,
25 max_xilinx_iface_type
26} xilinx_iface;
27
28typedef enum {
29 min_xilinx_type,
30 xilinx_spartan2,
31 xilinx_virtexE,
32 xilinx_virtex2,
33 xilinx_spartan3,
34 xilinx_zynq,
35 xilinx_zynqmp,
36 xilinx_versal,
37 max_xilinx_type
38} xilinx_family;
39
40typedef struct {
41 xilinx_family family;
42 xilinx_iface iface;
43 size_t size;
44 void *iface_fns;
45 int cookie;
46 struct xilinx_fpga_op *operations;
47 char *name;
48} xilinx_desc;
49
50struct xilinx_fpga_op {
51 int (*load)(xilinx_desc *, const void *, size_t, bitstream_type);
52 int (*loadfs)(xilinx_desc *, const void *, size_t, fpga_fs_info *);
53 int (*loads)(xilinx_desc *desc, const void *buf, size_t bsize,
54 struct fpga_secure_info *fpga_sec_info);
55 int (*dump)(xilinx_desc *, const void *, size_t);
56 int (*info)(xilinx_desc *);
57};
58
59
60
61int xilinx_load(xilinx_desc *desc, const void *image, size_t size,
62 bitstream_type bstype);
63int xilinx_dump(xilinx_desc *desc, const void *buf, size_t bsize);
64int xilinx_info(xilinx_desc *desc);
65int xilinx_loadfs(xilinx_desc *desc, const void *buf, size_t bsize,
66 fpga_fs_info *fpga_fsinfo);
67int xilinx_loads(xilinx_desc *desc, const void *buf, size_t bsize,
68 struct fpga_secure_info *fpga_sec_info);
69
70
71
72typedef int (*xilinx_pgm_fn)(int assert_pgm, int flush, int cookie);
73typedef int (*xilinx_init_fn)(int cookie);
74typedef int (*xilinx_err_fn)(int cookie);
75typedef int (*xilinx_done_fn)(int cookie);
76typedef int (*xilinx_clk_fn)(int assert_clk, int flush, int cookie);
77typedef int (*xilinx_cs_fn)(int assert_cs, int flush, int cookie);
78typedef int (*xilinx_wr_fn)(int assert_write, int flush, int cookie);
79typedef int (*xilinx_rdata_fn)(unsigned char *data, int cookie);
80typedef int (*xilinx_wdata_fn)(unsigned char data, int flush, int cookie);
81typedef int (*xilinx_busy_fn)(int cookie);
82typedef int (*xilinx_abort_fn)(int cookie);
83typedef int (*xilinx_pre_fn)(int cookie);
84typedef int (*xilinx_post_fn)(int cookie);
85typedef int (*xilinx_bwr_fn)(void *buf, size_t len, int flush, int cookie);
86
87#endif
88