1e7a85f26SRafal Jaworowski /* 2e7a85f26SRafal Jaworowski * (C) Copyright 2007-2008 Semihalf 3e7a85f26SRafal Jaworowski * 4e7a85f26SRafal Jaworowski * Written by: Rafal Jaworowski <raj@semihalf.com> 5e7a85f26SRafal Jaworowski * 6e7a85f26SRafal Jaworowski * This file is dual licensed; you can use it under the terms of 7e7a85f26SRafal Jaworowski * either the GPL, or the BSD license, at your option. 8e7a85f26SRafal Jaworowski * 9e7a85f26SRafal Jaworowski * I. GPL: 10e7a85f26SRafal Jaworowski * 11e7a85f26SRafal Jaworowski * This file is free software; you can redistribute it and/or 12e7a85f26SRafal Jaworowski * modify it under the terms of the GNU General Public License as 13e7a85f26SRafal Jaworowski * published by the Free Software Foundation; either version 2 of 14e7a85f26SRafal Jaworowski * the License, or (at your option) any later version. 15e7a85f26SRafal Jaworowski * 16e7a85f26SRafal Jaworowski * This file is distributed in the hope that it will be useful, 17e7a85f26SRafal Jaworowski * but WITHOUT ANY WARRANTY; without even the implied warranty of 18e7a85f26SRafal Jaworowski * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19e7a85f26SRafal Jaworowski * GNU General Public License for more details. 20e7a85f26SRafal Jaworowski * 21e7a85f26SRafal Jaworowski * You should have received a copy of the GNU General Public License 22e7a85f26SRafal Jaworowski * along with this program; if not, write to the Free Software 23e7a85f26SRafal Jaworowski * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 24e7a85f26SRafal Jaworowski * MA 02111-1307 USA 25e7a85f26SRafal Jaworowski * 26e7a85f26SRafal Jaworowski * Alternatively, 27e7a85f26SRafal Jaworowski * 28e7a85f26SRafal Jaworowski * II. BSD license: 29e7a85f26SRafal Jaworowski * 30e7a85f26SRafal Jaworowski * Redistribution and use in source and binary forms, with or without 31e7a85f26SRafal Jaworowski * modification, are permitted provided that the following conditions 32e7a85f26SRafal Jaworowski * are met: 33e7a85f26SRafal Jaworowski * 1. Redistributions of source code must retain the above copyright 34e7a85f26SRafal Jaworowski * notice, this list of conditions and the following disclaimer. 35e7a85f26SRafal Jaworowski * 2. Redistributions in binary form must reproduce the above copyright 36e7a85f26SRafal Jaworowski * notice, this list of conditions and the following disclaimer in the 37e7a85f26SRafal Jaworowski * documentation and/or other materials provided with the distribution. 38e7a85f26SRafal Jaworowski * 39e7a85f26SRafal Jaworowski * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 40e7a85f26SRafal Jaworowski * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 41e7a85f26SRafal Jaworowski * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 42e7a85f26SRafal Jaworowski * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 43e7a85f26SRafal Jaworowski * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 44e7a85f26SRafal Jaworowski * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 45e7a85f26SRafal Jaworowski * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 46e7a85f26SRafal Jaworowski * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 47e7a85f26SRafal Jaworowski * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 48e7a85f26SRafal Jaworowski * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 49e7a85f26SRafal Jaworowski * SUCH DAMAGE. 50e7a85f26SRafal Jaworowski */ 51e7a85f26SRafal Jaworowski 52500856ebSRafal Jaworowski #ifndef _API_PUBLIC_H_ 53500856ebSRafal Jaworowski #define _API_PUBLIC_H_ 54500856ebSRafal Jaworowski 55500856ebSRafal Jaworowski #define API_EINVAL 1 /* invalid argument(s) */ 56500856ebSRafal Jaworowski #define API_ENODEV 2 /* no device */ 57500856ebSRafal Jaworowski #define API_ENOMEM 3 /* no memory */ 58500856ebSRafal Jaworowski #define API_EBUSY 4 /* busy, occupied etc. */ 59500856ebSRafal Jaworowski #define API_EIO 5 /* I/O error */ 60923aa481SRafal Jaworowski #define API_ESYSC 6 /* syscall error */ 61500856ebSRafal Jaworowski 62500856ebSRafal Jaworowski typedef int (*scp_t)(int, int *, ...); 63500856ebSRafal Jaworowski 64500856ebSRafal Jaworowski #define API_SIG_VERSION 1 65500856ebSRafal Jaworowski #define API_SIG_MAGIC "UBootAPI" 66500856ebSRafal Jaworowski #define API_SIG_MAGLEN 8 67500856ebSRafal Jaworowski 68500856ebSRafal Jaworowski struct api_signature { 69500856ebSRafal Jaworowski char magic[API_SIG_MAGLEN]; /* magic string */ 70500856ebSRafal Jaworowski uint16_t version; /* API version */ 71500856ebSRafal Jaworowski uint32_t checksum; /* checksum of this sig struct */ 72500856ebSRafal Jaworowski scp_t syscall; /* entry point to the API */ 73500856ebSRafal Jaworowski }; 74500856ebSRafal Jaworowski 75500856ebSRafal Jaworowski enum { 76500856ebSRafal Jaworowski API_RSVD = 0, 77500856ebSRafal Jaworowski API_GETC, 78500856ebSRafal Jaworowski API_PUTC, 79500856ebSRafal Jaworowski API_TSTC, 80500856ebSRafal Jaworowski API_PUTS, 81500856ebSRafal Jaworowski API_RESET, 82500856ebSRafal Jaworowski API_GET_SYS_INFO, 83500856ebSRafal Jaworowski API_UDELAY, 84500856ebSRafal Jaworowski API_GET_TIMER, 85500856ebSRafal Jaworowski API_DEV_ENUM, 86500856ebSRafal Jaworowski API_DEV_OPEN, 87500856ebSRafal Jaworowski API_DEV_CLOSE, 88500856ebSRafal Jaworowski API_DEV_READ, 89500856ebSRafal Jaworowski API_DEV_WRITE, 90500856ebSRafal Jaworowski API_ENV_ENUM, 91500856ebSRafal Jaworowski API_ENV_GET, 92500856ebSRafal Jaworowski API_ENV_SET, 93*a2a5729fSChe-Liang Chiou API_DISPLAY_GET_INFO, 94*a2a5729fSChe-Liang Chiou API_DISPLAY_DRAW_BITMAP, 95*a2a5729fSChe-Liang Chiou API_DISPLAY_CLEAR, 96500856ebSRafal Jaworowski API_MAXCALL 97500856ebSRafal Jaworowski }; 98500856ebSRafal Jaworowski 99500856ebSRafal Jaworowski #define MR_ATTR_FLASH 0x0001 100500856ebSRafal Jaworowski #define MR_ATTR_DRAM 0x0002 101500856ebSRafal Jaworowski #define MR_ATTR_SRAM 0x0003 102500856ebSRafal Jaworowski 103500856ebSRafal Jaworowski struct mem_region { 104500856ebSRafal Jaworowski unsigned long start; 105500856ebSRafal Jaworowski unsigned long size; 106500856ebSRafal Jaworowski int flags; 107500856ebSRafal Jaworowski }; 108500856ebSRafal Jaworowski 109500856ebSRafal Jaworowski struct sys_info { 110500856ebSRafal Jaworowski unsigned long clk_bus; 111500856ebSRafal Jaworowski unsigned long clk_cpu; 112500856ebSRafal Jaworowski unsigned long bar; 113500856ebSRafal Jaworowski struct mem_region *mr; 114500856ebSRafal Jaworowski int mr_no; /* number of memory regions */ 115500856ebSRafal Jaworowski }; 116500856ebSRafal Jaworowski 1176d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #undef CONFIG_SYS_64BIT_LBA 1186d0f6bcfSJean-Christophe PLAGNIOL-VILLARD #ifdef CONFIG_SYS_64BIT_LBA 119500856ebSRafal Jaworowski typedef u_int64_t lbasize_t; 120500856ebSRafal Jaworowski #else 121500856ebSRafal Jaworowski typedef unsigned long lbasize_t; 122500856ebSRafal Jaworowski #endif 123500856ebSRafal Jaworowski typedef unsigned long lbastart_t; 124500856ebSRafal Jaworowski 125500856ebSRafal Jaworowski #define DEV_TYP_NONE 0x0000 126500856ebSRafal Jaworowski #define DEV_TYP_NET 0x0001 127500856ebSRafal Jaworowski 128500856ebSRafal Jaworowski #define DEV_TYP_STOR 0x0002 129500856ebSRafal Jaworowski #define DT_STOR_IDE 0x0010 130500856ebSRafal Jaworowski #define DT_STOR_SCSI 0x0020 131500856ebSRafal Jaworowski #define DT_STOR_USB 0x0040 132500856ebSRafal Jaworowski #define DT_STOR_MMC 0x0080 133f2302d44SStefan Roese #define DT_STOR_SATA 0x0100 134500856ebSRafal Jaworowski 135500856ebSRafal Jaworowski #define DEV_STA_CLOSED 0x0000 /* invalid, closed */ 136500856ebSRafal Jaworowski #define DEV_STA_OPEN 0x0001 /* open i.e. active */ 137500856ebSRafal Jaworowski 138500856ebSRafal Jaworowski struct device_info { 139500856ebSRafal Jaworowski int type; 140500856ebSRafal Jaworowski void *cookie; 141500856ebSRafal Jaworowski 142500856ebSRafal Jaworowski union { 143500856ebSRafal Jaworowski struct { 144500856ebSRafal Jaworowski lbasize_t block_count; /* no of blocks */ 145500856ebSRafal Jaworowski unsigned long block_size; /* size of one block */ 146500856ebSRafal Jaworowski } storage; 147500856ebSRafal Jaworowski 148500856ebSRafal Jaworowski struct { 149500856ebSRafal Jaworowski unsigned char hwaddr[6]; 150500856ebSRafal Jaworowski } net; 151500856ebSRafal Jaworowski } info; 152500856ebSRafal Jaworowski #define di_stor info.storage 153500856ebSRafal Jaworowski #define di_net info.net 154500856ebSRafal Jaworowski 155500856ebSRafal Jaworowski int state; 156500856ebSRafal Jaworowski }; 157500856ebSRafal Jaworowski 158*a2a5729fSChe-Liang Chiou #define DISPLAY_TYPE_LCD 0x0001 159*a2a5729fSChe-Liang Chiou #define DISPLAY_TYPE_VIDEO 0x0002 160*a2a5729fSChe-Liang Chiou 161*a2a5729fSChe-Liang Chiou struct display_info { 162*a2a5729fSChe-Liang Chiou int type; 163*a2a5729fSChe-Liang Chiou /* screen size in pixels */ 164*a2a5729fSChe-Liang Chiou int pixel_width; 165*a2a5729fSChe-Liang Chiou int pixel_height; 166*a2a5729fSChe-Liang Chiou /* screen size in rows and columns of text */ 167*a2a5729fSChe-Liang Chiou int screen_rows; 168*a2a5729fSChe-Liang Chiou int screen_cols; 169*a2a5729fSChe-Liang Chiou }; 170*a2a5729fSChe-Liang Chiou 171500856ebSRafal Jaworowski #endif /* _API_PUBLIC_H_ */ 172