summaryrefslogtreecommitdiffstats
path: root/include/grub/uboot
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 16:29:51 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 16:29:51 +0000
commit6e7a315eb67cb6c113cf37e1d66c4f11a51a2b3e (patch)
tree32451fa3cdd9321fb2591fada9891b2cb70a9cd1 /include/grub/uboot
parentInitial commit. (diff)
downloadgrub2-6e7a315eb67cb6c113cf37e1d66c4f11a51a2b3e.tar.xz
grub2-6e7a315eb67cb6c113cf37e1d66c4f11a51a2b3e.zip
Adding upstream version 2.06.upstream/2.06upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'include/grub/uboot')
-rw-r--r--include/grub/uboot/api_public.h181
-rw-r--r--include/grub/uboot/console.h29
-rw-r--r--include/grub/uboot/disk.h43
-rw-r--r--include/grub/uboot/image.h175
-rw-r--r--include/grub/uboot/uboot.h87
5 files changed, 515 insertions, 0 deletions
diff --git a/include/grub/uboot/api_public.h b/include/grub/uboot/api_public.h
new file mode 100644
index 0000000..0707f5c
--- /dev/null
+++ b/include/grub/uboot/api_public.h
@@ -0,0 +1,181 @@
+/*
+ * (C) Copyright 2007-2008 Semihalf
+ *
+ * Written by: Rafal Jaworowski <raj@semihalf.com>
+ *
+ * This file is dual licensed; you can use it under the terms of
+ * either the GPL, or the BSD license, at your option.
+ *
+ * I. GPL:
+ *
+ * This file is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This file is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ * Alternatively,
+ *
+ * II. BSD license:
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef _API_PUBLIC_H_
+#define _API_PUBLIC_H_
+
+#define API_EINVAL 1 /* invalid argument(s) */
+#define API_ENODEV 2 /* no device */
+#define API_ENOMEM 3 /* no memory */
+#define API_EBUSY 4 /* busy, occupied etc. */
+#define API_EIO 5 /* I/O error */
+#define API_ESYSC 6 /* syscall error */
+
+typedef int (*scp_t) (int, int *, ...);
+
+#define API_SIG_VERSION 1
+#define API_SIG_MAGIC "UBootAPI"
+#define API_SIG_MAGLEN 8
+
+struct api_signature
+{
+ char magic[API_SIG_MAGLEN]; /* magic string */
+ grub_uint16_t version; /* API version */
+ grub_uint32_t checksum; /* checksum of this sig struct */
+ scp_t syscall; /* entry point to the API */
+};
+
+enum
+{
+ API_RSVD = 0,
+ API_GETC,
+ API_PUTC,
+ API_TSTC,
+ API_PUTS,
+ API_RESET,
+ API_GET_SYS_INFO,
+ API_UDELAY,
+ API_GET_TIMER,
+ API_DEV_ENUM,
+ API_DEV_OPEN,
+ API_DEV_CLOSE,
+ API_DEV_READ,
+ API_DEV_WRITE,
+ API_ENV_ENUM,
+ API_ENV_GET,
+ API_ENV_SET,
+ API_DISPLAY_GET_INFO,
+ API_DISPLAY_DRAW_BITMAP,
+ API_DISPLAY_CLEAR,
+ API_MAXCALL
+};
+
+#define MR_ATTR_FLASH 0x0001
+#define MR_ATTR_DRAM 0x0002
+#define MR_ATTR_SRAM 0x0003
+#define MR_ATTR_MASK 0x000f
+
+struct mem_region
+{
+ unsigned long start;
+ unsigned long size;
+ int flags;
+};
+
+struct sys_info
+{
+ unsigned long clk_bus;
+ unsigned long clk_cpu;
+ unsigned long bar;
+ struct mem_region *mr;
+ int mr_no; /* number of memory regions */
+};
+
+#undef CONFIG_SYS_64BIT_LBA
+#ifdef CONFIG_SYS_64BIT_LBA
+typedef u_int64_t lbasize_t;
+#else
+typedef unsigned long lbasize_t;
+#endif
+typedef unsigned long lbastart_t;
+
+#define DEV_TYP_NONE 0x0000
+#define DEV_TYP_NET 0x0001
+
+#define DEV_TYP_STOR 0x0002
+#define DT_STOR_IDE 0x0010
+#define DT_STOR_SCSI 0x0020
+#define DT_STOR_USB 0x0040
+#define DT_STOR_MMC 0x0080
+#define DT_STOR_SATA 0x0100
+
+#define DEV_STA_CLOSED 0x0000 /* invalid, closed */
+#define DEV_STA_OPEN 0x0001 /* open i.e. active */
+
+struct device_info
+{
+ int type;
+ void *cookie;
+
+ union
+ {
+ struct
+ {
+ lbasize_t block_count; /* no of blocks */
+ unsigned long block_size; /* size of one block */
+ } storage;
+
+ struct
+ {
+ unsigned char hwaddr[6];
+ } net;
+ } info;
+#define di_stor info.storage
+#define di_net info.net
+
+ int state;
+};
+
+#define DISPLAY_TYPE_LCD 0x0001
+#define DISPLAY_TYPE_VIDEO 0x0002
+
+struct display_info
+{
+ int type;
+ /* screen size in pixels */
+ int pixel_width;
+ int pixel_height;
+ /* screen size in rows and columns of text */
+ int screen_rows;
+ int screen_cols;
+};
+
+#endif /* _API_PUBLIC_H_ */
diff --git a/include/grub/uboot/console.h b/include/grub/uboot/console.h
new file mode 100644
index 0000000..993a538
--- /dev/null
+++ b/include/grub/uboot/console.h
@@ -0,0 +1,29 @@
+/*
+ * GRUB -- GRand Unified Bootloader
+ * Copyright (C) 2013 Free Software Foundation, Inc.
+ *
+ * GRUB is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * GRUB is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef GRUB_CONSOLE_MACHINE_HEADER
+#define GRUB_CONSOLE_MACHINE_HEADER 1
+
+/* Initialize the console system. */
+void grub_console_init_early (void);
+void grub_console_init_lately (void);
+
+/* Exit the console system. */
+void grub_console_fini (void);
+
+#endif /* ! GRUB_CONSOLE_MACHINE_HEADER */
diff --git a/include/grub/uboot/disk.h b/include/grub/uboot/disk.h
new file mode 100644
index 0000000..e380b4c
--- /dev/null
+++ b/include/grub/uboot/disk.h
@@ -0,0 +1,43 @@
+/*
+ * GRUB -- GRand Unified Bootloader
+ * Copyright (C) 2013 Free Software Foundation, Inc.
+ *
+ * GRUB is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * GRUB is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef GRUB_UBOOT_DISK_HEADER
+#define GRUB_UBOOT_DISK_HEADER 1
+
+#include <grub/symbol.h>
+#include <grub/disk.h>
+#include <grub/uboot/uboot.h>
+
+void grub_ubootdisk_init (void);
+void grub_ubootdisk_fini (void);
+
+enum disktype
+{ cd, fd, hd };
+
+struct ubootdisk_data
+{
+ void *cookie;
+ struct device_info *dev;
+ int opencount;
+ enum disktype type;
+ grub_uint32_t block_size;
+};
+
+grub_err_t grub_ubootdisk_register (struct device_info *newdev);
+
+#endif /* ! GRUB_UBOOT_DISK_HEADER */
diff --git a/include/grub/uboot/image.h b/include/grub/uboot/image.h
new file mode 100644
index 0000000..3e3f034
--- /dev/null
+++ b/include/grub/uboot/image.h
@@ -0,0 +1,175 @@
+/*
+ * (C) Copyright 2008 Semihalf
+ *
+ * (C) Copyright 2000-2005
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ *
+ * See file CREDITS for list of people who contributed to this
+ * project.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ********************************************************************
+ * NOTE: This header file defines an interface to U-Boot. Including
+ * this (unmodified) header file in another file is considered normal
+ * use of U-Boot, and does *not* fall under the heading of "derived
+ * work".
+ ********************************************************************
+ */
+
+#ifndef __GRUB_UBOOT_IMAGE_H__
+#define __GRUB_UBOOT_IMAGE_H__
+
+/*
+ * Operating System Codes
+ */
+#define GRUB_UBOOT_IH_OS_INVALID 0 /* Invalid OS */
+#define GRUB_UBOOT_IH_OS_OPENBSD 1 /* OpenBSD */
+#define GRUB_UBOOT_IH_OS_NETBSD 2 /* NetBSD */
+#define GRUB_UBOOT_IH_OS_FREEBSD 3 /* FreeBSD */
+#define GRUB_UBOOT_IH_OS_4_4BSD 4 /* 4.4BSD */
+#define GRUB_UBOOT_IH_OS_LINUX 5 /* Linux */
+#define GRUB_UBOOT_IH_OS_SVR4 6 /* SVR4 */
+#define GRUB_UBOOT_IH_OS_ESIX 7 /* Esix */
+#define GRUB_UBOOT_IH_OS_SOLARIS 8 /* Solaris */
+#define GRUB_UBOOT_IH_OS_IRIX 9 /* Irix */
+#define GRUB_UBOOT_IH_OS_SCO 10 /* SCO */
+#define GRUB_UBOOT_IH_OS_DELL 11 /* Dell */
+#define GRUB_UBOOT_IH_OS_NCR 12 /* NCR */
+#define GRUB_UBOOT_IH_OS_LYNXOS 13 /* LynxOS */
+#define GRUB_UBOOT_IH_OS_VXWORKS 14 /* VxWorks */
+#define GRUB_UBOOT_IH_OS_PSOS 15 /* pSOS */
+#define GRUB_UBOOT_IH_OS_QNX 16 /* QNX */
+#define GRUB_UBOOT_IH_OS_U_BOOT 17 /* Firmware */
+#define GRUB_UBOOT_IH_OS_RTEMS 18 /* RTEMS */
+#define GRUB_UBOOT_IH_OS_ARTOS 19 /* ARTOS */
+#define GRUB_UBOOT_IH_OS_UNITY 20 /* Unity OS */
+#define GRUB_UBOOT_IH_OS_INTEGRITY 21 /* INTEGRITY */
+#define GRUB_UBOOT_IH_OS_OSE 22 /* OSE */
+
+/*
+ * CPU Architecture Codes (supported by Linux)
+ */
+#define GRUB_UBOOT_IH_ARCH_INVALID 0 /* Invalid CPU */
+#define GRUB_UBOOT_IH_ARCH_ALPHA 1 /* Alpha */
+#define GRUB_UBOOT_IH_ARCH_ARM 2 /* ARM */
+#define GRUB_UBOOT_IH_ARCH_I386 3 /* Intel x86 */
+#define GRUB_UBOOT_IH_ARCH_IA64 4 /* IA64 */
+#define GRUB_UBOOT_IH_ARCH_MIPS 5 /* MIPS */
+#define GRUB_UBOOT_IH_ARCH_MIPS64 6 /* MIPS 64 Bit */
+#define GRUB_UBOOT_IH_ARCH_PPC 7 /* PowerPC */
+#define GRUB_UBOOT_IH_ARCH_S390 8 /* IBM S390 */
+#define GRUB_UBOOT_IH_ARCH_SH 9 /* SuperH */
+#define GRUB_UBOOT_IH_ARCH_SPARC 10 /* Sparc */
+#define GRUB_UBOOT_IH_ARCH_SPARC64 11 /* Sparc 64 Bit */
+#define GRUB_UBOOT_IH_ARCH_M68K 12 /* M68K */
+#define GRUB_UBOOT_IH_ARCH_MICROBLAZE 14 /* MicroBlaze */
+#define GRUB_UBOOT_IH_ARCH_NIOS2 15 /* Nios-II */
+#define GRUB_UBOOT_IH_ARCH_BLACKFIN 16 /* Blackfin */
+#define GRUB_UBOOT_IH_ARCH_AVR32 17 /* AVR32 */
+#define GRUB_UBOOT_IH_ARCH_ST200 18 /* STMicroelectronics ST200 */
+#define GRUB_UBOOT_IH_ARCH_SANDBOX 19 /* Sandbox architecture (test only) */
+#define GRUB_UBOOT_IH_ARCH_NDS32 20 /* ANDES Technology - NDS32 */
+#define GRUB_UBOOT_IH_ARCH_OPENRISC 21 /* OpenRISC 1000 */
+
+/*
+ * Image Types
+ *
+ * "Standalone Programs" are directly runnable in the environment
+ * provided by U-Boot; it is expected that (if they behave
+ * well) you can continue to work in U-Boot after return from
+ * the Standalone Program.
+ * "OS Kernel Images" are usually images of some Embedded OS which
+ * will take over control completely. Usually these programs
+ * will install their own set of exception handlers, device
+ * drivers, set up the MMU, etc. - this means, that you cannot
+ * expect to re-enter U-Boot except by resetting the CPU.
+ * "RAMDisk Images" are more or less just data blocks, and their
+ * parameters (address, size) are passed to an OS kernel that is
+ * being started.
+ * "Multi-File Images" contain several images, typically an OS
+ * (Linux) kernel image and one or more data images like
+ * RAMDisks. This construct is useful for instance when you want
+ * to boot over the network using BOOTP etc., where the boot
+ * server provides just a single image file, but you want to get
+ * for instance an OS kernel and a RAMDisk image.
+ *
+ * "Multi-File Images" start with a list of image sizes, each
+ * image size (in bytes) specified by an "uint32_t" in network
+ * byte order. This list is terminated by an "(uint32_t)0".
+ * Immediately after the terminating 0 follow the images, one by
+ * one, all aligned on "uint32_t" boundaries (size rounded up to
+ * a multiple of 4 bytes - except for the last file).
+ *
+ * "Firmware Images" are binary images containing firmware (like
+ * U-Boot or FPGA images) which usually will be programmed to
+ * flash memory.
+ *
+ * "Script files" are command sequences that will be executed by
+ * U-Boot's command interpreter; this feature is especially
+ * useful when you configure U-Boot to use a real shell (hush)
+ * as command interpreter (=> Shell Scripts).
+ */
+
+#define GRUB_UBOOT_IH_TYPE_INVALID 0 /* Invalid Image */
+#define GRUB_UBOOT_IH_TYPE_STANDALONE 1 /* Standalone Program */
+#define GRUB_UBOOT_IH_TYPE_KERNEL 2 /* OS Kernel Image */
+#define GRUB_UBOOT_IH_TYPE_RAMDISK 3 /* RAMDisk Image */
+#define GRUB_UBOOT_IH_TYPE_MULTI 4 /* Multi-File Image */
+#define GRUB_UBOOT_IH_TYPE_FIRMWARE 5 /* Firmware Image */
+#define GRUB_UBOOT_IH_TYPE_SCRIPT 6 /* Script file */
+#define GRUB_UBOOT_IH_TYPE_FILESYSTEM 7 /* Filesystem Image (any type) */
+#define GRUB_UBOOT_IH_TYPE_FLATDT 8 /* Binary Flat Device Tree Blob */
+#define GRUB_UBOOT_IH_TYPE_KWBIMAGE 9 /* Kirkwood Boot Image */
+#define GRUB_UBOOT_IH_TYPE_IMXIMAGE 10 /* Freescale IMXBoot Image */
+#define GRUB_UBOOT_IH_TYPE_UBLIMAGE 11 /* Davinci UBL Image */
+#define GRUB_UBOOT_IH_TYPE_OMAPIMAGE 12 /* TI OMAP Config Header Image */
+#define GRUB_UBOOT_IH_TYPE_AISIMAGE 13 /* TI Davinci AIS Image */
+#define GRUB_UBOOT_IH_TYPE_KERNEL_NOLOAD 14 /* OS Kernel Image, can run from any load address */
+#define GRUB_UBOOT_IH_TYPE_PBLIMAGE 15 /* Freescale PBL Boot Image */
+
+/*
+ * Compression Types
+ */
+#define GRUB_UBOOT_IH_COMP_NONE 0 /* No Compression Used */
+#define GRUB_UBOOT_IH_COMP_GZIP 1 /* gzip Compression Used */
+#define GRUB_UBOOT_IH_COMP_BZIP2 2 /* bzip2 Compression Used */
+#define GRUB_UBOOT_IH_COMP_LZMA 3 /* lzma Compression Used */
+#define GRUB_UBOOT_IH_COMP_LZO 4 /* lzo Compression Used */
+
+#define GRUB_UBOOT_IH_MAGIC 0x27051956 /* Image Magic Number */
+#define GRUB_UBOOT_IH_NMLEN 32 /* Image Name Length */
+
+/*
+ * Legacy format image header,
+ * all data in network byte order (aka natural aka bigendian).
+ */
+struct grub_uboot_image_header {
+ grub_uint32_t ih_magic; /* Image Header Magic Number */
+ grub_uint32_t ih_hcrc; /* Image Header CRC Checksum */
+ grub_uint32_t ih_time; /* Image Creation Timestamp */
+ grub_uint32_t ih_size; /* Image Data Size */
+ grub_uint32_t ih_load; /* Data Load Address */
+ grub_uint32_t ih_ep; /* Entry Point Address */
+ grub_uint32_t ih_dcrc; /* Image Data CRC Checksum */
+ grub_uint8_t ih_os; /* Operating System */
+ grub_uint8_t ih_arch; /* CPU architecture */
+ grub_uint8_t ih_type; /* Image Type */
+ grub_uint8_t ih_comp; /* Compression Type */
+ grub_uint8_t ih_name[GRUB_UBOOT_IH_NMLEN]; /* Image Name */
+};
+
+#endif /* __IMAGE_H__ */
diff --git a/include/grub/uboot/uboot.h b/include/grub/uboot/uboot.h
new file mode 100644
index 0000000..1941303
--- /dev/null
+++ b/include/grub/uboot/uboot.h
@@ -0,0 +1,87 @@
+/* uboot.h - declare variables and functions for U-Boot support */
+/*
+ * GRUB -- GRand Unified Bootloader
+ * Copyright (C) 2013 Free Software Foundation, Inc.
+ *
+ * GRUB is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * GRUB is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef GRUB_UBOOT_UBOOT_HEADER
+#define GRUB_UBOOT_UBOOT_HEADER 1
+
+#include <grub/types.h>
+#include <grub/dl.h>
+
+/* Functions. */
+void grub_uboot_mm_init (void);
+void grub_uboot_init (void);
+void grub_uboot_fini (void);
+
+void grub_uboot_return (int) __attribute__ ((noreturn));
+
+grub_addr_t grub_uboot_get_real_bss_start (void);
+
+grub_err_t grub_uboot_probe_hardware (void);
+
+extern grub_addr_t EXPORT_VAR (start_of_ram);
+
+grub_uint32_t EXPORT_FUNC (grub_uboot_get_machine_type) (void);
+grub_addr_t EXPORT_FUNC (grub_uboot_get_boot_data) (void);
+
+
+/*
+ * The U-Boot API operates through a "syscall" interface, consisting of an
+ * entry point address and a set of syscall numbers. The location of this
+ * entry point is described in a structure allocated on the U-Boot heap.
+ * We scan through a defined region around the hint address passed to us
+ * from U-Boot.
+ */
+
+#define UBOOT_API_SEARCH_LEN (3 * 1024 * 1024)
+int grub_uboot_api_init (void);
+
+/*
+ * All functions below are wrappers around the uboot_syscall() function,
+ * implemented in grub-core/kern/uboot/uboot.c
+*/
+
+int grub_uboot_getc (void);
+int grub_uboot_tstc (void);
+void grub_uboot_putc (int c);
+void grub_uboot_puts (const char *s);
+
+void EXPORT_FUNC (grub_uboot_reset) (void);
+
+struct sys_info *grub_uboot_get_sys_info (void);
+
+void grub_uboot_udelay (grub_uint32_t usec);
+grub_uint32_t grub_uboot_get_timer (grub_uint32_t base);
+
+int EXPORT_FUNC (grub_uboot_dev_enum) (void);
+struct device_info * EXPORT_FUNC (grub_uboot_dev_get) (int index);
+int EXPORT_FUNC (grub_uboot_dev_open) (struct device_info *dev);
+int EXPORT_FUNC (grub_uboot_dev_close) (struct device_info *dev);
+int grub_uboot_dev_write (struct device_info *dev, const void *buf,
+ grub_size_t blocks, grub_uint32_t start);
+int grub_uboot_dev_read (struct device_info *dev, void *buf, grub_size_t blocks,
+ grub_uint32_t start, grub_size_t * real_blocks);
+int EXPORT_FUNC (grub_uboot_dev_recv) (struct device_info *dev, void *buf,
+ int size, int *real_size);
+int EXPORT_FUNC (grub_uboot_dev_send) (struct device_info *dev, void *buf,
+ int size);
+
+char *grub_uboot_env_get (const char *name);
+void grub_uboot_env_set (const char *name, const char *value);
+
+#endif /* ! GRUB_UBOOT_UBOOT_HEADER */