]> git.ipfire.org Git - people/ms/u-boot.git/blob - include/api_public.h
690975ee40d441c12e687290b0c1a9d0ae6dcfd1
[people/ms/u-boot.git] / include / api_public.h
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_ */