uboot/include/api_public.h
<<
>>
Prefs
   1/*
   2 * (C) Copyright 2007-2008 Semihalf
   3 *
   4 * Written by: Rafal Jaworowski <raj@semihalf.com>
   5 *
   6 * This file is dual licensed; you can use it under the terms of
   7 * either the GPL, or the BSD license, at your option.
   8 *
   9 * I. GPL:
  10 *
  11 * This file is free software; you can redistribute it and/or
  12 * modify it under the terms of the GNU General Public License as
  13 * published by the Free Software Foundation; either version 2 of
  14 * the License, or (at your option) any later version.
  15 *
  16 * This file is distributed in the hope that it will be useful,
  17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  19 * GNU General Public License for more details.
  20 *
  21 * You should have received a copy of the GNU General Public License
  22 * along with this program; if not, write to the Free Software
  23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
  24 * MA 02111-1307 USA
  25 *
  26 * Alternatively,
  27 *
  28 * II. BSD license:
  29 *
  30 * Redistribution and use in source and binary forms, with or without
  31 * modification, are permitted provided that the following conditions
  32 * are met:
  33 * 1. Redistributions of source code must retain the above copyright
  34 *    notice, this list of conditions and the following disclaimer.
  35 * 2. Redistributions in binary form must reproduce the above copyright
  36 *    notice, this list of conditions and the following disclaimer in the
  37 *    documentation and/or other materials provided with the distribution.
  38 *
  39 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  40 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  41 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  42 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  43 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  44 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  45 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  46 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  47 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  48 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  49 * SUCH DAMAGE.
  50 */
  51
  52#ifndef _API_PUBLIC_H_
  53#define _API_PUBLIC_H_
  54
  55#define API_EINVAL              1       /* invalid argument(s)  */
  56#define API_ENODEV              2       /* no device            */
  57#define API_ENOMEM              3       /* no memory            */
  58#define API_EBUSY               4       /* busy, occupied etc.  */
  59#define API_EIO                 5       /* I/O error            */
  60#define API_ESYSC               6       /* syscall error        */
  61
  62typedef int (*scp_t)(int, int *, ...);
  63
  64#define API_SIG_VERSION 1
  65#define API_SIG_MAGIC   "UBootAPI"
  66#define API_SIG_MAGLEN  8
  67
  68struct api_signature {
  69        char            magic[API_SIG_MAGLEN];  /* magic string */
  70        uint16_t        version;                /* API version */
  71        uint32_t        checksum;               /* checksum of this sig struct */
  72        scp_t           syscall;                /* entry point to the API */
  73};
  74
  75enum {
  76        API_RSVD = 0,
  77        API_GETC,
  78        API_PUTC,
  79        API_TSTC,
  80        API_PUTS,
  81        API_RESET,
  82        API_GET_SYS_INFO,
  83        API_UDELAY,
  84        API_GET_TIMER,
  85        API_DEV_ENUM,
  86        API_DEV_OPEN,
  87        API_DEV_CLOSE,
  88        API_DEV_READ,
  89        API_DEV_WRITE,
  90        API_ENV_ENUM,
  91        API_ENV_GET,
  92        API_ENV_SET,
  93        API_MAXCALL
  94};
  95
  96#define MR_ATTR_FLASH   0x0001
  97#define MR_ATTR_DRAM    0x0002
  98#define MR_ATTR_SRAM    0x0003
  99
 100struct mem_region {
 101        unsigned long   start;
 102        unsigned long   size;
 103        int             flags;
 104};
 105
 106struct sys_info {
 107        unsigned long           clk_bus;
 108        unsigned long           clk_cpu;
 109        unsigned long           bar;
 110        struct mem_region       *mr;
 111        int                     mr_no;  /* number of memory regions */
 112};
 113
 114#undef CONFIG_SYS_64BIT_LBA
 115#ifdef CONFIG_SYS_64BIT_LBA
 116typedef u_int64_t lbasize_t;
 117#else
 118typedef unsigned long lbasize_t;
 119#endif
 120typedef unsigned long lbastart_t;
 121
 122#define DEV_TYP_NONE    0x0000
 123#define DEV_TYP_NET     0x0001
 124
 125#define DEV_TYP_STOR    0x0002
 126#define DT_STOR_IDE     0x0010
 127#define DT_STOR_SCSI    0x0020
 128#define DT_STOR_USB     0x0040
 129#define DT_STOR_MMC     0x0080
 130#define DT_STOR_SATA    0x0100
 131
 132#define DEV_STA_CLOSED  0x0000          /* invalid, closed */
 133#define DEV_STA_OPEN    0x0001          /* open i.e. active */
 134
 135struct device_info {
 136        int     type;
 137        void    *cookie;
 138
 139        union {
 140                struct {
 141                        lbasize_t       block_count;    /* no of blocks */
 142                        unsigned long   block_size;     /* size of one block */
 143                } storage;
 144
 145                struct {
 146                        unsigned char   hwaddr[6];
 147                } net;
 148        } info;
 149#define di_stor info.storage
 150#define di_net info.net
 151
 152        int     state;
 153};
 154
 155#endif /* _API_PUBLIC_H_ */
 156