glue.h revision 283409
1/*-
2 * Copyright (c) 2008 Semihalf, Rafal Jaworowski <raj@semihalf.com>
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 *    notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 *    notice, this list of conditions and the following disclaimer in the
12 *    documentation and/or other materials provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 *
26 * $FreeBSD: stable/10/sys/boot/uboot/lib/glue.h 283409 2015-05-24 15:29:56Z ian $
27 */
28
29/*
30 * This is the header file for conveniency wrapper routines (API glue)
31 */
32
33#ifndef _API_GLUE_H_
34#define _API_GLUE_H_
35
36#include "api_public.h"
37
38int syscall(int, int *, ...);
39void *syscall_ptr;
40
41int api_search_sig(struct api_signature **sig);
42
43#define	UB_MAX_MR	16		/* max mem regions number */
44#define	UB_MAX_DEV	6		/* max devices number */
45
46/*
47 * The ub_ library calls are part of the application, not U-Boot code!  They
48 * are front-end wrappers that are used by the consumer application: they
49 * prepare arguments for particular syscall and jump to the low level
50 * syscall()
51 */
52
53/* console */
54int ub_getc(void);
55int ub_tstc(void);
56void ub_putc(char);
57void ub_puts(const char *);
58
59/* system */
60void ub_reset(void);
61struct sys_info *ub_get_sys_info(void);
62
63/* time */
64void ub_udelay(unsigned long);
65unsigned long ub_get_timer(unsigned long);
66
67/* env vars */
68char *ub_env_get(const char *);
69void ub_env_set(const char *, char *);
70const char *ub_env_enum(const char *);
71
72/* devices */
73int ub_dev_enum(void);
74int ub_dev_open(int);
75int ub_dev_close(int);
76int ub_dev_read(int, void *, lbasize_t, lbastart_t, lbasize_t *);
77int ub_dev_send(int, void *, int);
78int ub_dev_recv(int, void *, int, int *);
79struct device_info *ub_dev_get(int);
80
81void ub_dump_di(int);
82void ub_dump_si(struct sys_info *);
83char *ub_mem_type(int);
84char *ub_stor_type(int);
85
86#endif /* _API_GLUE_H_ */
87