xref: /openbmc/u-boot/include/altera.h (revision ed09a554)
1 /*
2  * (C) Copyright 2002
3  * Rich Ireland, Enterasys Networks, rireland@enterasys.com.
4  *
5  * SPDX-License-Identifier:	GPL-2.0+
6  */
7 
8 #include <fpga.h>
9 
10 #ifndef _ALTERA_H_
11 #define _ALTERA_H_
12 
13 enum altera_iface {
14 	/* insert all new types after this */
15 	min_altera_iface_type,
16 	/* serial data and external clock */
17 	passive_serial,
18 	/* parallel data */
19 	passive_parallel_synchronous,
20 	/* parallel data */
21 	passive_parallel_asynchronous,
22 	/* serial data w/ internal clock (not used) */
23 	passive_serial_asynchronous,
24 	/* jtag/tap serial (not used ) */
25 	altera_jtag_mode,
26 	/* fast passive parallel (FPP) */
27 	fast_passive_parallel,
28 	/* fast passive parallel with security (FPPS) */
29 	fast_passive_parallel_security,
30 	/* insert all new types before this */
31 	max_altera_iface_type,
32 };
33 
34 enum altera_family {
35 	/* insert all new types after this */
36 	min_altera_type,
37 	/* ACEX1K Family */
38 	Altera_ACEX1K,
39 	/* CYCLONII Family */
40 	Altera_CYC2,
41 	/* StratixII Family */
42 	Altera_StratixII,
43 	/* SoCFPGA Family */
44 	Altera_SoCFPGA,
45 
46 	/* Add new models here */
47 
48 	/* insert all new types before this */
49 	max_altera_type,
50 };
51 
52 typedef struct {
53 	/* part type */
54 	enum altera_family	family;
55 	/* interface type */
56 	enum altera_iface	iface;
57 	/* bytes of data part can accept */
58 	size_t			size;
59 	/* interface function table */
60 	void			*iface_fns;
61 	/* base interface address */
62 	void			*base;
63 	/* implementation specific cookie */
64 	int			cookie;
65 } Altera_desc;
66 
67 /* Generic Altera Functions
68  *********************************************************************/
69 extern int altera_load(Altera_desc *desc, const void *image, size_t size);
70 extern int altera_dump(Altera_desc *desc, const void *buf, size_t bsize);
71 extern int altera_info(Altera_desc *desc);
72 
73 /* Board specific implementation specific function types
74  *********************************************************************/
75 typedef int (*Altera_pre_fn)( int cookie );
76 typedef int (*Altera_config_fn)( int assert_config, int flush, int cookie );
77 typedef int (*Altera_status_fn)( int cookie );
78 typedef int (*Altera_done_fn)( int cookie );
79 typedef int (*Altera_clk_fn)( int assert_clk, int flush, int cookie );
80 typedef int (*Altera_data_fn)( int assert_data, int flush, int cookie );
81 typedef int(*Altera_write_fn)(const void *buf, size_t len, int flush, int cookie);
82 typedef int (*Altera_abort_fn)( int cookie );
83 typedef int (*Altera_post_fn)( int cookie );
84 
85 typedef struct {
86 	Altera_pre_fn pre;
87 	Altera_config_fn config;
88 	Altera_status_fn status;
89 	Altera_done_fn done;
90 	Altera_clk_fn clk;
91 	Altera_data_fn data;
92 	Altera_abort_fn abort;
93 	Altera_post_fn post;
94 } altera_board_specific_func;
95 
96 #ifdef CONFIG_FPGA_SOCFPGA
97 int socfpga_load(Altera_desc *desc, const void *rbf_data, size_t rbf_size);
98 #endif
99 
100 #endif /* _ALTERA_H_ */
101