xref: /OK3568_Linux_fs/u-boot/include/api_public.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun  * (C) Copyright 2007-2008 Semihalf
3*4882a593Smuzhiyun  *
4*4882a593Smuzhiyun  * Written by: Rafal Jaworowski <raj@semihalf.com>
5*4882a593Smuzhiyun  *
6*4882a593Smuzhiyun  * SPDX-License-Identifier:	GPL-2.0+	BSD-2-Clause
7*4882a593Smuzhiyun  */
8*4882a593Smuzhiyun 
9*4882a593Smuzhiyun #ifndef _API_PUBLIC_H_
10*4882a593Smuzhiyun #define _API_PUBLIC_H_
11*4882a593Smuzhiyun 
12*4882a593Smuzhiyun #define API_EINVAL		1	/* invalid argument(s)	*/
13*4882a593Smuzhiyun #define API_ENODEV		2	/* no device		*/
14*4882a593Smuzhiyun #define API_ENOMEM		3	/* no memory		*/
15*4882a593Smuzhiyun #define API_EBUSY		4	/* busy, occupied etc.	*/
16*4882a593Smuzhiyun #define API_EIO			5	/* I/O error		*/
17*4882a593Smuzhiyun #define API_ESYSC		6	/* syscall error	*/
18*4882a593Smuzhiyun 
19*4882a593Smuzhiyun typedef	int (*scp_t)(int, int *, ...);
20*4882a593Smuzhiyun 
21*4882a593Smuzhiyun #define API_SIG_VERSION	1
22*4882a593Smuzhiyun #define API_SIG_MAGIC	"UBootAPI"
23*4882a593Smuzhiyun #define API_SIG_MAGLEN	8
24*4882a593Smuzhiyun 
25*4882a593Smuzhiyun struct api_signature {
26*4882a593Smuzhiyun 	char		magic[API_SIG_MAGLEN];	/* magic string */
27*4882a593Smuzhiyun 	uint16_t	version;		/* API version */
28*4882a593Smuzhiyun 	uint32_t	checksum;		/* checksum of this sig struct */
29*4882a593Smuzhiyun 	scp_t		syscall;		/* entry point to the API */
30*4882a593Smuzhiyun };
31*4882a593Smuzhiyun 
32*4882a593Smuzhiyun enum {
33*4882a593Smuzhiyun 	API_RSVD = 0,
34*4882a593Smuzhiyun 	API_GETC,
35*4882a593Smuzhiyun 	API_PUTC,
36*4882a593Smuzhiyun 	API_TSTC,
37*4882a593Smuzhiyun 	API_PUTS,
38*4882a593Smuzhiyun 	API_RESET,
39*4882a593Smuzhiyun 	API_GET_SYS_INFO,
40*4882a593Smuzhiyun 	API_UDELAY,
41*4882a593Smuzhiyun 	API_GET_TIMER,
42*4882a593Smuzhiyun 	API_DEV_ENUM,
43*4882a593Smuzhiyun 	API_DEV_OPEN,
44*4882a593Smuzhiyun 	API_DEV_CLOSE,
45*4882a593Smuzhiyun 	API_DEV_READ,
46*4882a593Smuzhiyun 	API_DEV_WRITE,
47*4882a593Smuzhiyun 	API_ENV_ENUM,
48*4882a593Smuzhiyun 	API_ENV_GET,
49*4882a593Smuzhiyun 	API_ENV_SET,
50*4882a593Smuzhiyun 	API_DISPLAY_GET_INFO,
51*4882a593Smuzhiyun 	API_DISPLAY_DRAW_BITMAP,
52*4882a593Smuzhiyun 	API_DISPLAY_CLEAR,
53*4882a593Smuzhiyun 	API_MAXCALL
54*4882a593Smuzhiyun };
55*4882a593Smuzhiyun 
56*4882a593Smuzhiyun #define MR_ATTR_FLASH	0x0001
57*4882a593Smuzhiyun #define MR_ATTR_DRAM	0x0002
58*4882a593Smuzhiyun #define MR_ATTR_SRAM	0x0003
59*4882a593Smuzhiyun 
60*4882a593Smuzhiyun struct mem_region {
61*4882a593Smuzhiyun 	unsigned long	start;
62*4882a593Smuzhiyun 	unsigned long	size;
63*4882a593Smuzhiyun 	int		flags;
64*4882a593Smuzhiyun };
65*4882a593Smuzhiyun 
66*4882a593Smuzhiyun struct sys_info {
67*4882a593Smuzhiyun 	unsigned long		clk_bus;
68*4882a593Smuzhiyun 	unsigned long		clk_cpu;
69*4882a593Smuzhiyun 	unsigned long		bar;
70*4882a593Smuzhiyun 	struct mem_region	*mr;
71*4882a593Smuzhiyun 	int			mr_no;	/* number of memory regions */
72*4882a593Smuzhiyun };
73*4882a593Smuzhiyun 
74*4882a593Smuzhiyun #undef CONFIG_SYS_64BIT_LBA
75*4882a593Smuzhiyun #ifdef CONFIG_SYS_64BIT_LBA
76*4882a593Smuzhiyun typedef	u_int64_t lbasize_t;
77*4882a593Smuzhiyun #else
78*4882a593Smuzhiyun typedef unsigned long lbasize_t;
79*4882a593Smuzhiyun #endif
80*4882a593Smuzhiyun typedef unsigned long lbastart_t;
81*4882a593Smuzhiyun 
82*4882a593Smuzhiyun #define DEV_TYP_NONE	0x0000
83*4882a593Smuzhiyun #define DEV_TYP_NET	0x0001
84*4882a593Smuzhiyun 
85*4882a593Smuzhiyun #define DEV_TYP_STOR	0x0002
86*4882a593Smuzhiyun #define DT_STOR_IDE	0x0010
87*4882a593Smuzhiyun #define DT_STOR_SCSI	0x0020
88*4882a593Smuzhiyun #define DT_STOR_USB	0x0040
89*4882a593Smuzhiyun #define DT_STOR_MMC	0x0080
90*4882a593Smuzhiyun #define DT_STOR_SATA	0x0100
91*4882a593Smuzhiyun 
92*4882a593Smuzhiyun #define DEV_STA_CLOSED	0x0000		/* invalid, closed */
93*4882a593Smuzhiyun #define DEV_STA_OPEN	0x0001		/* open i.e. active */
94*4882a593Smuzhiyun 
95*4882a593Smuzhiyun struct device_info {
96*4882a593Smuzhiyun 	int	type;
97*4882a593Smuzhiyun 	void	*cookie;
98*4882a593Smuzhiyun 
99*4882a593Smuzhiyun 	union {
100*4882a593Smuzhiyun 		struct {
101*4882a593Smuzhiyun 			lbasize_t	block_count;	/* no of blocks */
102*4882a593Smuzhiyun 			unsigned long	block_size;	/* size of one block */
103*4882a593Smuzhiyun 		} storage;
104*4882a593Smuzhiyun 
105*4882a593Smuzhiyun 		struct {
106*4882a593Smuzhiyun 			unsigned char	hwaddr[6];
107*4882a593Smuzhiyun 		} net;
108*4882a593Smuzhiyun 	} info;
109*4882a593Smuzhiyun #define di_stor info.storage
110*4882a593Smuzhiyun #define di_net info.net
111*4882a593Smuzhiyun 
112*4882a593Smuzhiyun 	int	state;
113*4882a593Smuzhiyun };
114*4882a593Smuzhiyun 
115*4882a593Smuzhiyun #define DISPLAY_TYPE_LCD	0x0001
116*4882a593Smuzhiyun #define DISPLAY_TYPE_VIDEO	0x0002
117*4882a593Smuzhiyun 
118*4882a593Smuzhiyun struct display_info {
119*4882a593Smuzhiyun 	int type;
120*4882a593Smuzhiyun 	/* screen size in pixels */
121*4882a593Smuzhiyun 	int pixel_width;
122*4882a593Smuzhiyun 	int pixel_height;
123*4882a593Smuzhiyun 	/* screen size in rows and columns of text */
124*4882a593Smuzhiyun 	int screen_rows;
125*4882a593Smuzhiyun 	int screen_cols;
126*4882a593Smuzhiyun };
127*4882a593Smuzhiyun 
128*4882a593Smuzhiyun #endif /* _API_PUBLIC_H_ */
129