xref: /rk3399_rockchip-uboot/include/altera.h (revision 230fe9b202ff0ca396ad9a564816cc87d42daa6e)
1c609719bSwdenk /*
2c609719bSwdenk  * (C) Copyright 2002
3c609719bSwdenk  * Rich Ireland, Enterasys Networks, rireland@enterasys.com.
4c609719bSwdenk  *
51a459660SWolfgang Denk  * SPDX-License-Identifier:	GPL-2.0+
6c609719bSwdenk  */
7c609719bSwdenk 
8c609719bSwdenk #include <fpga.h>
9c609719bSwdenk 
10c609719bSwdenk #ifndef _ALTERA_H_
11c609719bSwdenk #define _ALTERA_H_
12c609719bSwdenk 
13d44ef7ffSMarek Vasut enum altera_iface {
14d44ef7ffSMarek Vasut 	/* insert all new types after this */
15d44ef7ffSMarek Vasut 	min_altera_iface_type,
16d44ef7ffSMarek Vasut 	/* serial data and external clock */
17d44ef7ffSMarek Vasut 	passive_serial,
18d44ef7ffSMarek Vasut 	/* parallel data */
19d44ef7ffSMarek Vasut 	passive_parallel_synchronous,
20d44ef7ffSMarek Vasut 	/* parallel data */
21d44ef7ffSMarek Vasut 	passive_parallel_asynchronous,
22d44ef7ffSMarek Vasut 	/* serial data w/ internal clock (not used) */
23d44ef7ffSMarek Vasut 	passive_serial_asynchronous,
24d44ef7ffSMarek Vasut 	/* jtag/tap serial (not used ) */
25d44ef7ffSMarek Vasut 	altera_jtag_mode,
26d44ef7ffSMarek Vasut 	/* fast passive parallel (FPP) */
27d44ef7ffSMarek Vasut 	fast_passive_parallel,
28d44ef7ffSMarek Vasut 	/* fast passive parallel with security (FPPS) */
29d44ef7ffSMarek Vasut 	fast_passive_parallel_security,
30d44ef7ffSMarek Vasut 	/* insert all new types before this */
31d44ef7ffSMarek Vasut 	max_altera_iface_type,
32d44ef7ffSMarek Vasut };
33c609719bSwdenk 
34d44ef7ffSMarek Vasut enum altera_family {
35d44ef7ffSMarek Vasut 	/* insert all new types after this */
36d44ef7ffSMarek Vasut 	min_altera_type,
37d44ef7ffSMarek Vasut 	/* ACEX1K Family */
38d44ef7ffSMarek Vasut 	Altera_ACEX1K,
39d44ef7ffSMarek Vasut 	/* CYCLONII Family */
40d44ef7ffSMarek Vasut 	Altera_CYC2,
41d44ef7ffSMarek Vasut 	/* StratixII Family */
42d44ef7ffSMarek Vasut 	Altera_StratixII,
43*230fe9b2SPavel Machek 	/* SoCFPGA Family */
44*230fe9b2SPavel Machek 	Altera_SoCFPGA,
45d44ef7ffSMarek Vasut 
46c609719bSwdenk 	/* Add new models here */
47c609719bSwdenk 
48d44ef7ffSMarek Vasut 	/* insert all new types before this */
49d44ef7ffSMarek Vasut 	max_altera_type,
50d44ef7ffSMarek Vasut };
51d44ef7ffSMarek Vasut 
52d44ef7ffSMarek Vasut typedef struct {
53d44ef7ffSMarek Vasut 	/* part type */
54d44ef7ffSMarek Vasut 	enum altera_family	family;
55d44ef7ffSMarek Vasut 	/* interface type */
56d44ef7ffSMarek Vasut 	enum altera_iface	iface;
57d44ef7ffSMarek Vasut 	/* bytes of data part can accept */
58d44ef7ffSMarek Vasut 	size_t			size;
59d44ef7ffSMarek Vasut 	/* interface function table */
60d44ef7ffSMarek Vasut 	void			*iface_fns;
61d44ef7ffSMarek Vasut 	/* base interface address */
62d44ef7ffSMarek Vasut 	void			*base;
63d44ef7ffSMarek Vasut 	/* implementation specific cookie */
64d44ef7ffSMarek Vasut 	int			cookie;
65d44ef7ffSMarek Vasut } Altera_desc;
66c609719bSwdenk 
675da627a4Swdenk /* Generic Altera Functions
685da627a4Swdenk  *********************************************************************/
69e6a857daSWolfgang Denk extern int altera_load(Altera_desc *desc, const void *image, size_t size);
70e6a857daSWolfgang Denk extern int altera_dump(Altera_desc *desc, const void *buf, size_t bsize);
71c609719bSwdenk extern int altera_info(Altera_desc *desc);
725da627a4Swdenk 
735da627a4Swdenk /* Board specific implementation specific function types
745da627a4Swdenk  *********************************************************************/
755da627a4Swdenk typedef int (*Altera_pre_fn)( int cookie );
765da627a4Swdenk typedef int (*Altera_config_fn)( int assert_config, int flush, int cookie );
775da627a4Swdenk typedef int (*Altera_status_fn)( int cookie );
785da627a4Swdenk typedef int (*Altera_done_fn)( int cookie );
795da627a4Swdenk typedef int (*Altera_clk_fn)( int assert_clk, int flush, int cookie );
805da627a4Swdenk typedef int (*Altera_data_fn)( int assert_data, int flush, int cookie );
81e6a857daSWolfgang Denk typedef int(*Altera_write_fn)(const void *buf, size_t len, int flush, int cookie);
825da627a4Swdenk typedef int (*Altera_abort_fn)( int cookie );
835da627a4Swdenk typedef int (*Altera_post_fn)( int cookie );
84c609719bSwdenk 
853c735e74Seran liberty typedef struct {
863c735e74Seran liberty 	Altera_pre_fn pre;
873c735e74Seran liberty 	Altera_config_fn config;
883c735e74Seran liberty 	Altera_status_fn status;
893c735e74Seran liberty 	Altera_done_fn done;
903c735e74Seran liberty 	Altera_clk_fn clk;
913c735e74Seran liberty 	Altera_data_fn data;
923c735e74Seran liberty 	Altera_abort_fn abort;
933c735e74Seran liberty 	Altera_post_fn post;
943c735e74Seran liberty } altera_board_specific_func;
953c735e74Seran liberty 
96*230fe9b2SPavel Machek #ifdef CONFIG_FPGA_SOCFPGA
97*230fe9b2SPavel Machek int socfpga_load(Altera_desc *desc, const void *rbf_data, size_t rbf_size);
98*230fe9b2SPavel Machek #endif
99*230fe9b2SPavel Machek 
100c609719bSwdenk #endif /* _ALTERA_H_ */
101