1 /* 2 * This header was generated from the Linux kernel headers by update_headers.py, 3 * to provide necessary information from kernel to userspace, such as constants, 4 * structures, and macros, and thus, contains no copyrightable information. 5 */ 6 #ifndef __ASMARM_SETUP_H 7 #define __ASMARM_SETUP_H 8 #include <linux/types.h> 9 #define COMMAND_LINE_SIZE 1024 10 #define ATAG_NONE 0x00000000 11 struct tag_header { 12 __u32 size; 13 __u32 tag; 14 }; 15 #define ATAG_CORE 0x54410001 16 struct tag_core { 17 __u32 flags; 18 __u32 pagesize; 19 __u32 rootdev; 20 }; 21 #define ATAG_MEM 0x54410002 22 struct tag_mem32 { 23 __u32 size; 24 __u32 start; 25 }; 26 #define ATAG_VIDEOTEXT 0x54410003 27 struct tag_videotext { 28 __u8 x; 29 __u8 y; 30 __u16 video_page; 31 __u8 video_mode; 32 __u8 video_cols; 33 __u16 video_ega_bx; 34 __u8 video_lines; 35 __u8 video_isvga; 36 __u16 video_points; 37 }; 38 #define ATAG_RAMDISK 0x54410004 39 struct tag_ramdisk { 40 __u32 flags; 41 __u32 size; 42 __u32 start; 43 }; 44 #define ATAG_INITRD 0x54410005 45 #define ATAG_INITRD2 0x54420005 46 struct tag_initrd { 47 __u32 start; 48 __u32 size; 49 }; 50 #define ATAG_SERIAL 0x54410006 51 struct tag_serialnr { 52 __u32 low; 53 __u32 high; 54 }; 55 #define ATAG_REVISION 0x54410007 56 struct tag_revision { 57 __u32 rev; 58 }; 59 #define ATAG_VIDEOLFB 0x54410008 60 struct tag_videolfb { 61 __u16 lfb_width; 62 __u16 lfb_height; 63 __u16 lfb_depth; 64 __u16 lfb_linelength; 65 __u32 lfb_base; 66 __u32 lfb_size; 67 __u8 red_size; 68 __u8 red_pos; 69 __u8 green_size; 70 __u8 green_pos; 71 __u8 blue_size; 72 __u8 blue_pos; 73 __u8 rsvd_size; 74 __u8 rsvd_pos; 75 }; 76 #define ATAG_CMDLINE 0x54410009 77 struct tag_cmdline { 78 char cmdline[1]; 79 }; 80 #define ATAG_ACORN 0x41000101 81 struct tag_acorn { 82 __u32 memc_control_reg; 83 __u32 vram_pages; 84 __u8 sounddefault; 85 __u8 adfsdrives; 86 }; 87 #define ATAG_MEMCLK 0x41000402 88 struct tag_memclk { 89 __u32 fmemclk; 90 }; 91 struct tag { 92 struct tag_header hdr; 93 union { 94 struct tag_core core; 95 struct tag_mem32 mem; 96 struct tag_videotext videotext; 97 struct tag_ramdisk ramdisk; 98 struct tag_initrd initrd; 99 struct tag_serialnr serialnr; 100 struct tag_revision revision; 101 struct tag_videolfb videolfb; 102 struct tag_cmdline cmdline; 103 104 struct tag_acorn acorn; 105 106 struct tag_memclk memclk; 107 } u; 108 }; 109 struct tagtable { 110 __u32 tag; 111 int (*parse)(const struct tag *); 112 }; 113 #define tag_member_present(tag,member) \ 114 ((unsigned long)(&((struct tag *)0L)->member + 1) \ 115 <= (tag)->hdr.size * 4) 116 #define tag_next(t) ((struct tag *)((__u32 *)(t) + (t)->hdr.size)) 117 #define tag_size(type) ((sizeof(struct tag_header) + sizeof(struct type)) >> 2) 118 #define for_each_tag(t,base) \ 119 for (t = base; t->hdr.size; t = tag_next(t)) 120 #endif 121