Home | History | Annotate | Line # | Download | only in include
      1 /*	$NetBSD: bootinfo.h,v 1.9 2015/09/30 14:14:32 phx Exp $	*/
      2 
      3 /*
      4  * Copyright (c) 1997
      5  *	Matthias Drochner.  All rights reserved.
      6  *
      7  * Redistribution and use in source and binary forms, with or without
      8  * modification, are permitted provided that the following conditions
      9  * are met:
     10  * 1. Redistributions of source code must retain the above copyright
     11  *    notice, this list of conditions and the following disclaimer.
     12  * 2. Redistributions in binary form must reproduce the above copyright
     13  *    notice, this list of conditions and the following disclaimer in the
     14  *    documentation and/or other materials provided with the distribution.
     15  *
     16  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
     17  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     18  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     19  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
     20  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
     21  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     22  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     23  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
     25  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     26  *
     27  */
     28 
     29 #ifndef	_MACHINE_BOOTINFO_H_
     30 #define _MACHINE_BOOTINFO_H_
     31 
     32 #define BOOTINFO_MAGIC	0xb007babe
     33 
     34 struct btinfo_common {
     35 	int next;		/* offset of next item, or zero */
     36 	int type;
     37 };
     38 
     39 #define BTINFO_MAGIC		1
     40 #define BTINFO_MEMORY		2
     41 #define BTINFO_CONSOLE		3
     42 #define BTINFO_CLOCK		4
     43 #define BTINFO_BOOTPATH		5
     44 #define BTINFO_ROOTDEVICE	6
     45 #define BTINFO_NET		7
     46 #define BTINFO_PRODFAMILY	8
     47 #define BTINFO_MODULELIST	9
     48 #define BTINFO_MODEL		10
     49 
     50 struct btinfo_magic {
     51 	struct btinfo_common common;
     52 	unsigned magic;
     53 };
     54 
     55 struct btinfo_memory {
     56 	struct btinfo_common common;
     57 	int memsize;
     58 };
     59 
     60 struct btinfo_console {
     61 	struct btinfo_common common;
     62 	char devname[8];
     63 	int addr;
     64 	int speed;
     65 };
     66 
     67 struct btinfo_clock {
     68 	struct btinfo_common common;
     69 	int ticks_per_sec;
     70 };
     71 
     72 struct btinfo_bootpath {
     73 	struct btinfo_common common;
     74 	char bootpath[80];
     75 };
     76 
     77 struct btinfo_rootdevice {
     78 	struct btinfo_common common;
     79 	char devname[16];
     80 	unsigned cookie;
     81 };
     82 
     83 struct btinfo_net {
     84 	struct btinfo_common common;
     85 	char devname[16];
     86 	unsigned cookie;
     87 	uint8_t mac_address[6];
     88 };
     89 
     90 struct btinfo_prodfamily {
     91 	struct btinfo_common common;
     92 	char name[24];
     93 };
     94 
     95 struct btinfo_model {
     96 	struct btinfo_common common;
     97 	char name[28];
     98 	unsigned flags;			/* model specific flags */
     99 /* Synology flags: */
    100 #define BI_MODEL_CPLDVER_MASK	0x07
    101 #define BI_MODEL_CPLD207	0x08
    102 #define BI_MODEL_CPLD209	0x10
    103 #define BI_MODEL_CPLD406	0x18
    104 #define BI_MODEL_CPLD407	0x20
    105 #define BI_MODEL_CPLD_MASK	0x38
    106 #define BI_MODEL_THERMAL	0x40
    107 };
    108 
    109 struct btinfo_modulelist {
    110 	struct btinfo_common common;
    111 	int num;
    112 	uint32_t endpa;
    113 	/* bi_modulelist_entry follows as an array */
    114 };
    115 
    116 struct bi_modulelist_entry {
    117 	char kmod[80];
    118 	int type;
    119 #define BI_MODULE_NONE		0x00
    120 #define BI_MODULE_ELF		0x01
    121 	int len;
    122 	uint32_t base;
    123 };
    124 
    125 #define BOOTINFO_MAXSIZE 4096
    126 
    127 #ifdef _KERNEL
    128 void *lookup_bootinfo(int);
    129 #endif
    130 
    131 #endif	/* _MACHINE_BOOTINFO_H_ */
    132