1*500856ebSRafal Jaworowski #ifndef _API_PUBLIC_H_ 2*500856ebSRafal Jaworowski #define _API_PUBLIC_H_ 3*500856ebSRafal Jaworowski 4*500856ebSRafal Jaworowski #define API_EINVAL 1 /* invalid argument(s) */ 5*500856ebSRafal Jaworowski #define API_ENODEV 2 /* no device */ 6*500856ebSRafal Jaworowski #define API_ENOMEM 3 /* no memory */ 7*500856ebSRafal Jaworowski #define API_EBUSY 4 /* busy, occupied etc. */ 8*500856ebSRafal Jaworowski #define API_EIO 5 /* I/O error */ 9*500856ebSRafal Jaworowski 10*500856ebSRafal Jaworowski typedef int (*scp_t)(int, int *, ...); 11*500856ebSRafal Jaworowski 12*500856ebSRafal Jaworowski #define API_SIG_VERSION 1 13*500856ebSRafal Jaworowski #define API_SIG_MAGIC "UBootAPI" 14*500856ebSRafal Jaworowski #define API_SIG_MAGLEN 8 15*500856ebSRafal Jaworowski 16*500856ebSRafal Jaworowski struct api_signature { 17*500856ebSRafal Jaworowski char magic[API_SIG_MAGLEN]; /* magic string */ 18*500856ebSRafal Jaworowski uint16_t version; /* API version */ 19*500856ebSRafal Jaworowski uint32_t checksum; /* checksum of this sig struct */ 20*500856ebSRafal Jaworowski scp_t syscall; /* entry point to the API */ 21*500856ebSRafal Jaworowski }; 22*500856ebSRafal Jaworowski 23*500856ebSRafal Jaworowski enum { 24*500856ebSRafal Jaworowski API_RSVD = 0, 25*500856ebSRafal Jaworowski API_GETC, 26*500856ebSRafal Jaworowski API_PUTC, 27*500856ebSRafal Jaworowski API_TSTC, 28*500856ebSRafal Jaworowski API_PUTS, 29*500856ebSRafal Jaworowski API_RESET, 30*500856ebSRafal Jaworowski API_GET_SYS_INFO, 31*500856ebSRafal Jaworowski API_UDELAY, 32*500856ebSRafal Jaworowski API_GET_TIMER, 33*500856ebSRafal Jaworowski API_DEV_ENUM, 34*500856ebSRafal Jaworowski API_DEV_OPEN, 35*500856ebSRafal Jaworowski API_DEV_CLOSE, 36*500856ebSRafal Jaworowski API_DEV_READ, 37*500856ebSRafal Jaworowski API_DEV_WRITE, 38*500856ebSRafal Jaworowski API_ENV_ENUM, 39*500856ebSRafal Jaworowski API_ENV_GET, 40*500856ebSRafal Jaworowski API_ENV_SET, 41*500856ebSRafal Jaworowski API_MAXCALL 42*500856ebSRafal Jaworowski }; 43*500856ebSRafal Jaworowski 44*500856ebSRafal Jaworowski #define MR_ATTR_FLASH 0x0001 45*500856ebSRafal Jaworowski #define MR_ATTR_DRAM 0x0002 46*500856ebSRafal Jaworowski #define MR_ATTR_SRAM 0x0003 47*500856ebSRafal Jaworowski 48*500856ebSRafal Jaworowski struct mem_region { 49*500856ebSRafal Jaworowski unsigned long start; 50*500856ebSRafal Jaworowski unsigned long size; 51*500856ebSRafal Jaworowski int flags; 52*500856ebSRafal Jaworowski }; 53*500856ebSRafal Jaworowski 54*500856ebSRafal Jaworowski struct sys_info { 55*500856ebSRafal Jaworowski unsigned long clk_bus; 56*500856ebSRafal Jaworowski unsigned long clk_cpu; 57*500856ebSRafal Jaworowski unsigned long bar; 58*500856ebSRafal Jaworowski struct mem_region *mr; 59*500856ebSRafal Jaworowski int mr_no; /* number of memory regions */ 60*500856ebSRafal Jaworowski }; 61*500856ebSRafal Jaworowski 62*500856ebSRafal Jaworowski #undef CFG_64BIT_LBA 63*500856ebSRafal Jaworowski #ifdef CFG_64BIT_LBA 64*500856ebSRafal Jaworowski typedef u_int64_t lbasize_t; 65*500856ebSRafal Jaworowski #else 66*500856ebSRafal Jaworowski typedef unsigned long lbasize_t; 67*500856ebSRafal Jaworowski #endif 68*500856ebSRafal Jaworowski typedef unsigned long lbastart_t; 69*500856ebSRafal Jaworowski 70*500856ebSRafal Jaworowski #define DEV_TYP_NONE 0x0000 71*500856ebSRafal Jaworowski #define DEV_TYP_NET 0x0001 72*500856ebSRafal Jaworowski 73*500856ebSRafal Jaworowski #define DEV_TYP_STOR 0x0002 74*500856ebSRafal Jaworowski #define DT_STOR_IDE 0x0010 75*500856ebSRafal Jaworowski #define DT_STOR_SCSI 0x0020 76*500856ebSRafal Jaworowski #define DT_STOR_USB 0x0040 77*500856ebSRafal Jaworowski #define DT_STOR_MMC 0x0080 78*500856ebSRafal Jaworowski 79*500856ebSRafal Jaworowski #define DEV_STA_CLOSED 0x0000 /* invalid, closed */ 80*500856ebSRafal Jaworowski #define DEV_STA_OPEN 0x0001 /* open i.e. active */ 81*500856ebSRafal Jaworowski 82*500856ebSRafal Jaworowski struct device_info { 83*500856ebSRafal Jaworowski int type; 84*500856ebSRafal Jaworowski void *cookie; 85*500856ebSRafal Jaworowski 86*500856ebSRafal Jaworowski union { 87*500856ebSRafal Jaworowski struct { 88*500856ebSRafal Jaworowski lbasize_t block_count; /* no of blocks */ 89*500856ebSRafal Jaworowski unsigned long block_size; /* size of one block */ 90*500856ebSRafal Jaworowski } storage; 91*500856ebSRafal Jaworowski 92*500856ebSRafal Jaworowski struct { 93*500856ebSRafal Jaworowski unsigned char hwaddr[6]; 94*500856ebSRafal Jaworowski } net; 95*500856ebSRafal Jaworowski } info; 96*500856ebSRafal Jaworowski #define di_stor info.storage 97*500856ebSRafal Jaworowski #define di_net info.net 98*500856ebSRafal Jaworowski 99*500856ebSRafal Jaworowski int state; 100*500856ebSRafal Jaworowski }; 101*500856ebSRafal Jaworowski 102*500856ebSRafal Jaworowski #endif /* _API_PUBLIC_H_ */ 103