Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/stand/uboot/api_public.h
34677 views
1
/*
2
* (C) Copyright 2007-2008 Semihalf
3
*
4
* Written by: Rafal Jaworowski <[email protected]>
5
*
6
* This file is dual licensed; you can use it under the terms of
7
* either the GPL, or the BSD license, at your option.
8
*
9
* I. GPL:
10
*
11
* This file is free software; you can redistribute it and/or
12
* modify it under the terms of the GNU General Public License as
13
* published by the Free Software Foundation; either version 2 of
14
* the License, or (at your option) any later version.
15
*
16
* This file is distributed in the hope that it will be useful,
17
* but WITHOUT ANY WARRANTY; without even the implied warranty of
18
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
* GNU General Public License for more details.
20
*
21
* You should have received a copy of the GNU General Public License
22
* along with this program; if not, write to the Free Software
23
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
24
* MA 02111-1307 USA
25
*
26
* Alternatively,
27
*
28
* II. BSD license:
29
*
30
* Redistribution and use in source and binary forms, with or without
31
* modification, are permitted provided that the following conditions
32
* are met:
33
* 1. Redistributions of source code must retain the above copyright
34
* notice, this list of conditions and the following disclaimer.
35
* 2. Redistributions in binary form must reproduce the above copyright
36
* notice, this list of conditions and the following disclaimer in the
37
* documentation and/or other materials provided with the distribution.
38
*
39
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
40
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
41
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
42
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
43
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
44
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
45
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
46
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
47
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
48
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
49
* SUCH DAMAGE.
50
*
51
* This file needs to be kept in sync with U-Boot reference:
52
* http://www.denx.de/cgi-bin/gitweb.cgi?p=u-boot.git;a=blob;f=include/api_public.h
53
*/
54
55
#ifndef _API_PUBLIC_H_
56
#define _API_PUBLIC_H_
57
58
#define API_EINVAL 1 /* invalid argument(s) */
59
#define API_ENODEV 2 /* no device */
60
#define API_ENOMEM 3 /* no memory */
61
#define API_EBUSY 4 /* busy, occupied etc. */
62
#define API_EIO 5 /* I/O error */
63
#define API_ESYSC 6 /* syscall error */
64
65
typedef int (*scp_t)(int, int *, ...);
66
67
#define API_SIG_VERSION 1
68
#define API_SIG_MAGIC "UBootAPI"
69
#define API_SIG_MAGLEN 8
70
71
struct api_signature {
72
char magic[API_SIG_MAGLEN]; /* magic string */
73
uint16_t version; /* API version */
74
uint32_t checksum; /* checksum of this sig struct */
75
scp_t syscall; /* entry point to the API */
76
};
77
78
enum {
79
API_RSVD = 0,
80
API_GETC,
81
API_PUTC,
82
API_TSTC,
83
API_PUTS,
84
API_RESET,
85
API_GET_SYS_INFO,
86
API_UDELAY,
87
API_GET_TIMER,
88
API_DEV_ENUM,
89
API_DEV_OPEN,
90
API_DEV_CLOSE,
91
API_DEV_READ,
92
API_DEV_WRITE,
93
API_ENV_ENUM,
94
API_ENV_GET,
95
API_ENV_SET,
96
API_MAXCALL
97
};
98
99
#define MR_ATTR_FLASH 0x0001
100
#define MR_ATTR_DRAM 0x0002
101
#define MR_ATTR_SRAM 0x0003
102
103
struct mem_region {
104
unsigned long start;
105
unsigned long size;
106
int flags;
107
};
108
109
struct sys_info {
110
unsigned long clk_bus;
111
unsigned long clk_cpu;
112
unsigned long bar;
113
struct mem_region *mr;
114
int mr_no; /* number of memory regions */
115
};
116
117
#undef CFG_64BIT_LBA
118
#ifdef CFG_64BIT_LBA
119
typedef uint64_t lbasize_t;
120
#else
121
typedef unsigned long lbasize_t;
122
#endif
123
typedef unsigned long lbastart_t;
124
125
#define DEV_TYP_NONE 0x0000
126
#define DEV_TYP_NET 0x0001
127
128
#define DEV_TYP_STOR 0x0002
129
#define DT_STOR_IDE 0x0010
130
#define DT_STOR_SCSI 0x0020
131
#define DT_STOR_USB 0x0040
132
#define DT_STOR_MMC 0x0080
133
#define DT_STOR_SATA 0x0100
134
135
#define DEV_STA_CLOSED 0x0000 /* invalid, closed */
136
#define DEV_STA_OPEN 0x0001 /* open i.e. active */
137
138
struct device_info {
139
int type;
140
void *cookie;
141
142
union {
143
struct {
144
lbasize_t block_count; /* no of blocks */
145
unsigned long block_size; /* size of one block */
146
} storage;
147
148
struct {
149
unsigned char hwaddr[6];
150
} net;
151
} info;
152
#define di_stor info.storage
153
#define di_net info.net
154
155
int state;
156
};
157
158
#endif /* _API_PUBLIC_H_ */
159
160