xref: /rk3399_rockchip-uboot/include/altera.h (revision d44ef7ffbfef26f71d5811006f00fc82e941fe98)
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 
13*d44ef7ffSMarek Vasut enum altera_iface {
14*d44ef7ffSMarek Vasut 	/* insert all new types after this */
15*d44ef7ffSMarek Vasut 	min_altera_iface_type,
16*d44ef7ffSMarek Vasut 	/* serial data and external clock */
17*d44ef7ffSMarek Vasut 	passive_serial,
18*d44ef7ffSMarek Vasut 	/* parallel data */
19*d44ef7ffSMarek Vasut 	passive_parallel_synchronous,
20*d44ef7ffSMarek Vasut 	/* parallel data */
21*d44ef7ffSMarek Vasut 	passive_parallel_asynchronous,
22*d44ef7ffSMarek Vasut 	/* serial data w/ internal clock (not used) */
23*d44ef7ffSMarek Vasut 	passive_serial_asynchronous,
24*d44ef7ffSMarek Vasut 	/* jtag/tap serial (not used ) */
25*d44ef7ffSMarek Vasut 	altera_jtag_mode,
26*d44ef7ffSMarek Vasut 	/* fast passive parallel (FPP) */
27*d44ef7ffSMarek Vasut 	fast_passive_parallel,
28*d44ef7ffSMarek Vasut 	/* fast passive parallel with security (FPPS) */
29*d44ef7ffSMarek Vasut 	fast_passive_parallel_security,
30*d44ef7ffSMarek Vasut 	/* insert all new types before this */
31*d44ef7ffSMarek Vasut 	max_altera_iface_type,
32*d44ef7ffSMarek Vasut };
33c609719bSwdenk 
34*d44ef7ffSMarek Vasut enum altera_family {
35*d44ef7ffSMarek Vasut 	/* insert all new types after this */
36*d44ef7ffSMarek Vasut 	min_altera_type,
37*d44ef7ffSMarek Vasut 	/* ACEX1K Family */
38*d44ef7ffSMarek Vasut 	Altera_ACEX1K,
39*d44ef7ffSMarek Vasut 	/* CYCLONII Family */
40*d44ef7ffSMarek Vasut 	Altera_CYC2,
41*d44ef7ffSMarek Vasut 	/* StratixII Family */
42*d44ef7ffSMarek Vasut 	Altera_StratixII,
43*d44ef7ffSMarek Vasut 
44c609719bSwdenk 	/* Add new models here */
45c609719bSwdenk 
46*d44ef7ffSMarek Vasut 	/* insert all new types before this */
47*d44ef7ffSMarek Vasut 	max_altera_type,
48*d44ef7ffSMarek Vasut };
49*d44ef7ffSMarek Vasut 
50*d44ef7ffSMarek Vasut typedef struct {
51*d44ef7ffSMarek Vasut 	/* part type */
52*d44ef7ffSMarek Vasut 	enum altera_family	family;
53*d44ef7ffSMarek Vasut 	/* interface type */
54*d44ef7ffSMarek Vasut 	enum altera_iface	iface;
55*d44ef7ffSMarek Vasut 	/* bytes of data part can accept */
56*d44ef7ffSMarek Vasut 	size_t			size;
57*d44ef7ffSMarek Vasut 	/* interface function table */
58*d44ef7ffSMarek Vasut 	void			*iface_fns;
59*d44ef7ffSMarek Vasut 	/* base interface address */
60*d44ef7ffSMarek Vasut 	void			*base;
61*d44ef7ffSMarek Vasut 	/* implementation specific cookie */
62*d44ef7ffSMarek Vasut 	int			cookie;
63*d44ef7ffSMarek Vasut } Altera_desc;
64c609719bSwdenk 
655da627a4Swdenk /* Generic Altera Functions
665da627a4Swdenk  *********************************************************************/
67e6a857daSWolfgang Denk extern int altera_load(Altera_desc *desc, const void *image, size_t size);
68e6a857daSWolfgang Denk extern int altera_dump(Altera_desc *desc, const void *buf, size_t bsize);
69c609719bSwdenk extern int altera_info(Altera_desc *desc);
705da627a4Swdenk 
715da627a4Swdenk /* Board specific implementation specific function types
725da627a4Swdenk  *********************************************************************/
735da627a4Swdenk typedef int (*Altera_pre_fn)( int cookie );
745da627a4Swdenk typedef int (*Altera_config_fn)( int assert_config, int flush, int cookie );
755da627a4Swdenk typedef int (*Altera_status_fn)( int cookie );
765da627a4Swdenk typedef int (*Altera_done_fn)( int cookie );
775da627a4Swdenk typedef int (*Altera_clk_fn)( int assert_clk, int flush, int cookie );
785da627a4Swdenk typedef int (*Altera_data_fn)( int assert_data, int flush, int cookie );
79e6a857daSWolfgang Denk typedef int(*Altera_write_fn)(const void *buf, size_t len, int flush, int cookie);
805da627a4Swdenk typedef int (*Altera_abort_fn)( int cookie );
815da627a4Swdenk typedef int (*Altera_post_fn)( int cookie );
82c609719bSwdenk 
833c735e74Seran liberty typedef struct {
843c735e74Seran liberty 	Altera_pre_fn pre;
853c735e74Seran liberty 	Altera_config_fn config;
863c735e74Seran liberty 	Altera_status_fn status;
873c735e74Seran liberty 	Altera_done_fn done;
883c735e74Seran liberty 	Altera_clk_fn clk;
893c735e74Seran liberty 	Altera_data_fn data;
903c735e74Seran liberty 	Altera_abort_fn abort;
913c735e74Seran liberty 	Altera_post_fn post;
923c735e74Seran liberty } altera_board_specific_func;
933c735e74Seran liberty 
94c609719bSwdenk #endif /* _ALTERA_H_ */
95