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