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