setup.h (4043B)
1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2/* 3 * linux/include/asm/setup.h 4 * 5 * Copyright (C) 1997-1999 Russell King 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License version 2 as 9 * published by the Free Software Foundation. 10 * 11 * Structure passed to kernel to tell it about the 12 * hardware it's running on. See Documentation/arm/setup.rst 13 * for more info. 14 */ 15#ifndef _UAPI__ASMARM_SETUP_H 16#define _UAPI__ASMARM_SETUP_H 17 18#include <linux/types.h> 19 20#define COMMAND_LINE_SIZE 1024 21 22/* The list ends with an ATAG_NONE node. */ 23#define ATAG_NONE 0x00000000 24 25struct tag_header { 26 __u32 size; 27 __u32 tag; 28}; 29 30/* The list must start with an ATAG_CORE node */ 31#define ATAG_CORE 0x54410001 32 33struct tag_core { 34 __u32 flags; /* bit 0 = read-only */ 35 __u32 pagesize; 36 __u32 rootdev; 37}; 38 39/* it is allowed to have multiple ATAG_MEM nodes */ 40#define ATAG_MEM 0x54410002 41 42struct tag_mem32 { 43 __u32 size; 44 __u32 start; /* physical start address */ 45}; 46 47/* VGA text type displays */ 48#define ATAG_VIDEOTEXT 0x54410003 49 50struct tag_videotext { 51 __u8 x; 52 __u8 y; 53 __u16 video_page; 54 __u8 video_mode; 55 __u8 video_cols; 56 __u16 video_ega_bx; 57 __u8 video_lines; 58 __u8 video_isvga; 59 __u16 video_points; 60}; 61 62/* describes how the ramdisk will be used in kernel */ 63#define ATAG_RAMDISK 0x54410004 64 65struct tag_ramdisk { 66 __u32 flags; /* bit 0 = load, bit 1 = prompt */ 67 __u32 size; /* decompressed ramdisk size in _kilo_ bytes */ 68 __u32 start; /* starting block of floppy-based RAM disk image */ 69}; 70 71/* describes where the compressed ramdisk image lives (virtual address) */ 72/* 73 * this one accidentally used virtual addresses - as such, 74 * it's deprecated. 75 */ 76#define ATAG_INITRD 0x54410005 77 78/* describes where the compressed ramdisk image lives (physical address) */ 79#define ATAG_INITRD2 0x54420005 80 81struct tag_initrd { 82 __u32 start; /* physical start address */ 83 __u32 size; /* size of compressed ramdisk image in bytes */ 84}; 85 86/* board serial number. "64 bits should be enough for everybody" */ 87#define ATAG_SERIAL 0x54410006 88 89struct tag_serialnr { 90 __u32 low; 91 __u32 high; 92}; 93 94/* board revision */ 95#define ATAG_REVISION 0x54410007 96 97struct tag_revision { 98 __u32 rev; 99}; 100 101/* initial values for vesafb-type framebuffers. see struct screen_info 102 * in include/linux/tty.h 103 */ 104#define ATAG_VIDEOLFB 0x54410008 105 106struct tag_videolfb { 107 __u16 lfb_width; 108 __u16 lfb_height; 109 __u16 lfb_depth; 110 __u16 lfb_linelength; 111 __u32 lfb_base; 112 __u32 lfb_size; 113 __u8 red_size; 114 __u8 red_pos; 115 __u8 green_size; 116 __u8 green_pos; 117 __u8 blue_size; 118 __u8 blue_pos; 119 __u8 rsvd_size; 120 __u8 rsvd_pos; 121}; 122 123/* command line: \0 terminated string */ 124#define ATAG_CMDLINE 0x54410009 125 126struct tag_cmdline { 127 char cmdline[1]; /* this is the minimum size */ 128}; 129 130/* acorn RiscPC specific information */ 131#define ATAG_ACORN 0x41000101 132 133struct tag_acorn { 134 __u32 memc_control_reg; 135 __u32 vram_pages; 136 __u8 sounddefault; 137 __u8 adfsdrives; 138}; 139 140/* footbridge memory clock, see arch/arm/mach-footbridge/arch.c */ 141#define ATAG_MEMCLK 0x41000402 142 143struct tag_memclk { 144 __u32 fmemclk; 145}; 146 147struct tag { 148 struct tag_header hdr; 149 union { 150 struct tag_core core; 151 struct tag_mem32 mem; 152 struct tag_videotext videotext; 153 struct tag_ramdisk ramdisk; 154 struct tag_initrd initrd; 155 struct tag_serialnr serialnr; 156 struct tag_revision revision; 157 struct tag_videolfb videolfb; 158 struct tag_cmdline cmdline; 159 160 /* 161 * Acorn specific 162 */ 163 struct tag_acorn acorn; 164 165 /* 166 * DC21285 specific 167 */ 168 struct tag_memclk memclk; 169 } u; 170}; 171 172struct tagtable { 173 __u32 tag; 174 int (*parse)(const struct tag *); 175}; 176 177#define tag_member_present(tag,member) \ 178 ((unsigned long)(&((struct tag *)0L)->member + 1) \ 179 <= (tag)->hdr.size * 4) 180 181#define tag_next(t) ((struct tag *)((__u32 *)(t) + (t)->hdr.size)) 182#define tag_size(type) ((sizeof(struct tag_header) + sizeof(struct type)) >> 2) 183 184#define for_each_tag(t,base) \ 185 for (t = base; t->hdr.size; t = tag_next(t)) 186 187 188#endif /* _UAPI__ASMARM_SETUP_H */