xref: /rk3399_rockchip-uboot/include/api_public.h (revision 500856eb1707ed17d9204baa61dd59948d3b2899)
1*500856ebSRafal Jaworowski #ifndef _API_PUBLIC_H_
2*500856ebSRafal Jaworowski #define _API_PUBLIC_H_
3*500856ebSRafal Jaworowski 
4*500856ebSRafal Jaworowski #define API_EINVAL		1	/* invalid argument(s)	*/
5*500856ebSRafal Jaworowski #define API_ENODEV		2	/* no device		*/
6*500856ebSRafal Jaworowski #define API_ENOMEM		3	/* no memory		*/
7*500856ebSRafal Jaworowski #define API_EBUSY		4	/* busy, occupied etc.	*/
8*500856ebSRafal Jaworowski #define API_EIO			5	/* I/O error		*/
9*500856ebSRafal Jaworowski 
10*500856ebSRafal Jaworowski typedef	int (*scp_t)(int, int *, ...);
11*500856ebSRafal Jaworowski 
12*500856ebSRafal Jaworowski #define API_SIG_VERSION	1
13*500856ebSRafal Jaworowski #define API_SIG_MAGIC	"UBootAPI"
14*500856ebSRafal Jaworowski #define API_SIG_MAGLEN	8
15*500856ebSRafal Jaworowski 
16*500856ebSRafal Jaworowski struct api_signature {
17*500856ebSRafal Jaworowski 	char		magic[API_SIG_MAGLEN];	/* magic string */
18*500856ebSRafal Jaworowski 	uint16_t	version;		/* API version */
19*500856ebSRafal Jaworowski 	uint32_t	checksum;		/* checksum of this sig struct */
20*500856ebSRafal Jaworowski 	scp_t		syscall;		/* entry point to the API */
21*500856ebSRafal Jaworowski };
22*500856ebSRafal Jaworowski 
23*500856ebSRafal Jaworowski enum {
24*500856ebSRafal Jaworowski 	API_RSVD = 0,
25*500856ebSRafal Jaworowski 	API_GETC,
26*500856ebSRafal Jaworowski 	API_PUTC,
27*500856ebSRafal Jaworowski 	API_TSTC,
28*500856ebSRafal Jaworowski 	API_PUTS,
29*500856ebSRafal Jaworowski 	API_RESET,
30*500856ebSRafal Jaworowski 	API_GET_SYS_INFO,
31*500856ebSRafal Jaworowski 	API_UDELAY,
32*500856ebSRafal Jaworowski 	API_GET_TIMER,
33*500856ebSRafal Jaworowski 	API_DEV_ENUM,
34*500856ebSRafal Jaworowski 	API_DEV_OPEN,
35*500856ebSRafal Jaworowski 	API_DEV_CLOSE,
36*500856ebSRafal Jaworowski 	API_DEV_READ,
37*500856ebSRafal Jaworowski 	API_DEV_WRITE,
38*500856ebSRafal Jaworowski 	API_ENV_ENUM,
39*500856ebSRafal Jaworowski 	API_ENV_GET,
40*500856ebSRafal Jaworowski 	API_ENV_SET,
41*500856ebSRafal Jaworowski 	API_MAXCALL
42*500856ebSRafal Jaworowski };
43*500856ebSRafal Jaworowski 
44*500856ebSRafal Jaworowski #define MR_ATTR_FLASH	0x0001
45*500856ebSRafal Jaworowski #define MR_ATTR_DRAM	0x0002
46*500856ebSRafal Jaworowski #define MR_ATTR_SRAM	0x0003
47*500856ebSRafal Jaworowski 
48*500856ebSRafal Jaworowski struct mem_region {
49*500856ebSRafal Jaworowski 	unsigned long	start;
50*500856ebSRafal Jaworowski 	unsigned long	size;
51*500856ebSRafal Jaworowski 	int		flags;
52*500856ebSRafal Jaworowski };
53*500856ebSRafal Jaworowski 
54*500856ebSRafal Jaworowski struct sys_info {
55*500856ebSRafal Jaworowski 	unsigned long		clk_bus;
56*500856ebSRafal Jaworowski 	unsigned long		clk_cpu;
57*500856ebSRafal Jaworowski 	unsigned long		bar;
58*500856ebSRafal Jaworowski 	struct mem_region	*mr;
59*500856ebSRafal Jaworowski 	int			mr_no;	/* number of memory regions */
60*500856ebSRafal Jaworowski };
61*500856ebSRafal Jaworowski 
62*500856ebSRafal Jaworowski #undef CFG_64BIT_LBA
63*500856ebSRafal Jaworowski #ifdef CFG_64BIT_LBA
64*500856ebSRafal Jaworowski typedef	u_int64_t lbasize_t;
65*500856ebSRafal Jaworowski #else
66*500856ebSRafal Jaworowski typedef unsigned long lbasize_t;
67*500856ebSRafal Jaworowski #endif
68*500856ebSRafal Jaworowski typedef unsigned long lbastart_t;
69*500856ebSRafal Jaworowski 
70*500856ebSRafal Jaworowski #define DEV_TYP_NONE	0x0000
71*500856ebSRafal Jaworowski #define DEV_TYP_NET	0x0001
72*500856ebSRafal Jaworowski 
73*500856ebSRafal Jaworowski #define DEV_TYP_STOR	0x0002
74*500856ebSRafal Jaworowski #define DT_STOR_IDE	0x0010
75*500856ebSRafal Jaworowski #define DT_STOR_SCSI	0x0020
76*500856ebSRafal Jaworowski #define DT_STOR_USB	0x0040
77*500856ebSRafal Jaworowski #define DT_STOR_MMC	0x0080
78*500856ebSRafal Jaworowski 
79*500856ebSRafal Jaworowski #define DEV_STA_CLOSED	0x0000		/* invalid, closed */
80*500856ebSRafal Jaworowski #define DEV_STA_OPEN	0x0001		/* open i.e. active */
81*500856ebSRafal Jaworowski 
82*500856ebSRafal Jaworowski struct device_info {
83*500856ebSRafal Jaworowski 	int	type;
84*500856ebSRafal Jaworowski 	void	*cookie;
85*500856ebSRafal Jaworowski 
86*500856ebSRafal Jaworowski 	union {
87*500856ebSRafal Jaworowski 		struct {
88*500856ebSRafal Jaworowski 			lbasize_t	block_count;	/* no of blocks */
89*500856ebSRafal Jaworowski 			unsigned long	block_size;	/* size of one block */
90*500856ebSRafal Jaworowski 		} storage;
91*500856ebSRafal Jaworowski 
92*500856ebSRafal Jaworowski 		struct {
93*500856ebSRafal Jaworowski 			unsigned char	hwaddr[6];
94*500856ebSRafal Jaworowski 		} net;
95*500856ebSRafal Jaworowski 	} info;
96*500856ebSRafal Jaworowski #define di_stor info.storage
97*500856ebSRafal Jaworowski #define di_net info.net
98*500856ebSRafal Jaworowski 
99*500856ebSRafal Jaworowski 	int	state;
100*500856ebSRafal Jaworowski };
101*500856ebSRafal Jaworowski 
102*500856ebSRafal Jaworowski #endif /* _API_PUBLIC_H_ */
103