xref: /rk3399_rockchip-uboot/examples/api/libgenwrap.c (revision 1a4596601fd395f3afb8f82f3f840c5e00bdd57a)
1d4abc757SPeter Tyser /*
2d4abc757SPeter Tyser  * (C) Copyright 2007 Semihalf
3d4abc757SPeter Tyser  *
4d4abc757SPeter Tyser  * Written by: Rafal Jaworowski <raj@semihalf.com>
5d4abc757SPeter Tyser  *
6*1a459660SWolfgang Denk  * SPDX-License-Identifier:	GPL-2.0+
7d4abc757SPeter Tyser  *
8d4abc757SPeter Tyser  * This is is a set of wrappers/stubs that allow to use certain routines from
978acc472SPeter Tyser  * U-Boot's lib in the standalone app. This way way we can re-use
10d4abc757SPeter Tyser  * existing code e.g. operations on strings and similar.
11d4abc757SPeter Tyser  */
12d4abc757SPeter Tyser 
13d4abc757SPeter Tyser #include <common.h>
14d4abc757SPeter Tyser #include <linux/types.h>
15d4abc757SPeter Tyser #include <api_public.h>
16d4abc757SPeter Tyser 
17d4abc757SPeter Tyser #include "glue.h"
18d4abc757SPeter Tyser 
19d4abc757SPeter Tyser /*
20d4abc757SPeter Tyser  * printf() and vprintf() are stolen from u-boot/common/console.c
21d4abc757SPeter Tyser  */
22d9c27253SWolfgang Denk int printf (const char *fmt, ...)
23d4abc757SPeter Tyser {
24d4abc757SPeter Tyser 	va_list args;
25d4abc757SPeter Tyser 	uint i;
26d4abc757SPeter Tyser 	char printbuffer[256];
27d4abc757SPeter Tyser 
28d4abc757SPeter Tyser 	va_start (args, fmt);
29d4abc757SPeter Tyser 
30d4abc757SPeter Tyser 	/* For this to work, printbuffer must be larger than
31d4abc757SPeter Tyser 	 * anything we ever want to print.
32d4abc757SPeter Tyser 	 */
33d4abc757SPeter Tyser 	i = vsprintf (printbuffer, fmt, args);
34d4abc757SPeter Tyser 	va_end (args);
35d4abc757SPeter Tyser 
36d4abc757SPeter Tyser 	/* Print the string */
37d4abc757SPeter Tyser 	ub_puts (printbuffer);
38d9c27253SWolfgang Denk 	return i;
39d4abc757SPeter Tyser }
40d4abc757SPeter Tyser 
41d9c27253SWolfgang Denk int vprintf (const char *fmt, va_list args)
42d4abc757SPeter Tyser {
43d4abc757SPeter Tyser 	uint i;
44d4abc757SPeter Tyser 	char printbuffer[256];
45d4abc757SPeter Tyser 
46d4abc757SPeter Tyser 	/* For this to work, printbuffer must be larger than
47d4abc757SPeter Tyser 	 * anything we ever want to print.
48d4abc757SPeter Tyser 	 */
49d4abc757SPeter Tyser 	i = vsprintf (printbuffer, fmt, args);
50d4abc757SPeter Tyser 
51d4abc757SPeter Tyser 	/* Print the string */
52d4abc757SPeter Tyser 	ub_puts (printbuffer);
53d9c27253SWolfgang Denk 	return i;
54d4abc757SPeter Tyser }
55d4abc757SPeter Tyser 
56d4abc757SPeter Tyser void putc (const char c)
57d4abc757SPeter Tyser {
58d4abc757SPeter Tyser 	ub_putc(c);
59d4abc757SPeter Tyser }
60d4abc757SPeter Tyser 
613eb90badSIngo van Lil void __udelay(unsigned long usec)
62d4abc757SPeter Tyser {
63d4abc757SPeter Tyser 	ub_udelay(usec);
64d4abc757SPeter Tyser }
65d4abc757SPeter Tyser 
66e0306cabSMike Frysinger int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
67d4abc757SPeter Tyser {
68d4abc757SPeter Tyser 	ub_reset();
69e0306cabSMike Frysinger 	return 0;
70d4abc757SPeter Tyser }
71d4abc757SPeter Tyser 
72d4abc757SPeter Tyser void *malloc (size_t len)
73d4abc757SPeter Tyser {
74d4abc757SPeter Tyser 	return NULL;
75d4abc757SPeter Tyser }
76d4abc757SPeter Tyser 
77d4abc757SPeter Tyser void hang (void)
78d4abc757SPeter Tyser {
79d4abc757SPeter Tyser 	while (1) ;
80d4abc757SPeter Tyser }
81