| Ben Cheng | a6b53f0 | 2013-11-06 15:51:05 -0800 | [diff] [blame] | 1 | /**************************************************************************** | 
 | 2 |  **************************************************************************** | 
 | 3 |  *** | 
 | 4 |  ***   This header was automatically generated from a Linux kernel header | 
 | 5 |  ***   of the same name, to make information necessary for userspace to | 
 | 6 |  ***   call into the kernel available to libc.  It contains only constants, | 
 | 7 |  ***   structures, and macros generated from the original header, and thus, | 
 | 8 |  ***   contains no copyrightable information. | 
 | 9 |  *** | 
 | 10 |  ***   To edit the content of this header, modify the corresponding | 
 | 11 |  ***   source file (e.g. under external/kernel-headers/original/) then | 
 | 12 |  ***   run bionic/libc/kernel/tools/update_all.py | 
 | 13 |  *** | 
 | 14 |  ***   Any manual change here will be lost the next time this script will | 
 | 15 |  ***   be run. You've been warned! | 
 | 16 |  *** | 
 | 17 |  **************************************************************************** | 
 | 18 |  ****************************************************************************/ | 
 | 19 | #ifndef _UAPI__ASMARM_SETUP_H | 
 | 20 | #define _UAPI__ASMARM_SETUP_H | 
 | 21 | #include <linux/types.h> | 
 | 22 | #define COMMAND_LINE_SIZE 1024 | 
| Ben Cheng | a6b53f0 | 2013-11-06 15:51:05 -0800 | [diff] [blame] | 23 | #define ATAG_NONE 0x00000000 | 
 | 24 | struct tag_header { | 
| Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 25 |   __u32 size; | 
 | 26 |   __u32 tag; | 
| Ben Cheng | a6b53f0 | 2013-11-06 15:51:05 -0800 | [diff] [blame] | 27 | }; | 
 | 28 | #define ATAG_CORE 0x54410001 | 
 | 29 | struct tag_core { | 
| Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 30 |   __u32 flags; | 
| Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 31 |   __u32 pagesize; | 
 | 32 |   __u32 rootdev; | 
| Ben Cheng | a6b53f0 | 2013-11-06 15:51:05 -0800 | [diff] [blame] | 33 | }; | 
 | 34 | #define ATAG_MEM 0x54410002 | 
| Ben Cheng | a6b53f0 | 2013-11-06 15:51:05 -0800 | [diff] [blame] | 35 | struct tag_mem32 { | 
| Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 36 |   __u32 size; | 
 | 37 |   __u32 start; | 
| Ben Cheng | a6b53f0 | 2013-11-06 15:51:05 -0800 | [diff] [blame] | 38 | }; | 
| Ben Cheng | a6b53f0 | 2013-11-06 15:51:05 -0800 | [diff] [blame] | 39 | #define ATAG_VIDEOTEXT 0x54410003 | 
 | 40 | struct tag_videotext { | 
| Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 41 |   __u8 x; | 
 | 42 |   __u8 y; | 
| Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 43 |   __u16 video_page; | 
 | 44 |   __u8 video_mode; | 
 | 45 |   __u8 video_cols; | 
 | 46 |   __u16 video_ega_bx; | 
| Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 47 |   __u8 video_lines; | 
 | 48 |   __u8 video_isvga; | 
 | 49 |   __u16 video_points; | 
| Ben Cheng | a6b53f0 | 2013-11-06 15:51:05 -0800 | [diff] [blame] | 50 | }; | 
| Ben Cheng | a6b53f0 | 2013-11-06 15:51:05 -0800 | [diff] [blame] | 51 | #define ATAG_RAMDISK 0x54410004 | 
 | 52 | struct tag_ramdisk { | 
| Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 53 |   __u32 flags; | 
 | 54 |   __u32 size; | 
| Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 55 |   __u32 start; | 
| Ben Cheng | a6b53f0 | 2013-11-06 15:51:05 -0800 | [diff] [blame] | 56 | }; | 
 | 57 | #define ATAG_INITRD 0x54410005 | 
 | 58 | #define ATAG_INITRD2 0x54420005 | 
| Ben Cheng | a6b53f0 | 2013-11-06 15:51:05 -0800 | [diff] [blame] | 59 | struct tag_initrd { | 
| Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 60 |   __u32 start; | 
 | 61 |   __u32 size; | 
| Ben Cheng | a6b53f0 | 2013-11-06 15:51:05 -0800 | [diff] [blame] | 62 | }; | 
| Ben Cheng | a6b53f0 | 2013-11-06 15:51:05 -0800 | [diff] [blame] | 63 | #define ATAG_SERIAL 0x54410006 | 
 | 64 | struct tag_serialnr { | 
| Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 65 |   __u32 low; | 
 | 66 |   __u32 high; | 
| Ben Cheng | a6b53f0 | 2013-11-06 15:51:05 -0800 | [diff] [blame] | 67 | }; | 
 | 68 | #define ATAG_REVISION 0x54410007 | 
 | 69 | struct tag_revision { | 
| Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 70 |   __u32 rev; | 
| Ben Cheng | a6b53f0 | 2013-11-06 15:51:05 -0800 | [diff] [blame] | 71 | }; | 
 | 72 | #define ATAG_VIDEOLFB 0x54410008 | 
 | 73 | struct tag_videolfb { | 
| Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 74 |   __u16 lfb_width; | 
| Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 75 |   __u16 lfb_height; | 
 | 76 |   __u16 lfb_depth; | 
 | 77 |   __u16 lfb_linelength; | 
 | 78 |   __u32 lfb_base; | 
| Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 79 |   __u32 lfb_size; | 
 | 80 |   __u8 red_size; | 
 | 81 |   __u8 red_pos; | 
 | 82 |   __u8 green_size; | 
| Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 83 |   __u8 green_pos; | 
 | 84 |   __u8 blue_size; | 
 | 85 |   __u8 blue_pos; | 
 | 86 |   __u8 rsvd_size; | 
| Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 87 |   __u8 rsvd_pos; | 
| Ben Cheng | a6b53f0 | 2013-11-06 15:51:05 -0800 | [diff] [blame] | 88 | }; | 
 | 89 | #define ATAG_CMDLINE 0x54410009 | 
 | 90 | struct tag_cmdline { | 
| Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 91 |   char cmdline[1]; | 
| Ben Cheng | a6b53f0 | 2013-11-06 15:51:05 -0800 | [diff] [blame] | 92 | }; | 
 | 93 | #define ATAG_ACORN 0x41000101 | 
 | 94 | struct tag_acorn { | 
| Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 95 |   __u32 memc_control_reg; | 
 | 96 |   __u32 vram_pages; | 
 | 97 |   __u8 sounddefault; | 
 | 98 |   __u8 adfsdrives; | 
| Ben Cheng | a6b53f0 | 2013-11-06 15:51:05 -0800 | [diff] [blame] | 99 | }; | 
 | 100 | #define ATAG_MEMCLK 0x41000402 | 
 | 101 | struct tag_memclk { | 
| Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 102 |   __u32 fmemclk; | 
| Ben Cheng | a6b53f0 | 2013-11-06 15:51:05 -0800 | [diff] [blame] | 103 | }; | 
 | 104 | struct tag { | 
| Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 105 |   struct tag_header hdr; | 
 | 106 |   union { | 
| Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 107 |     struct tag_core core; | 
 | 108 |     struct tag_mem32 mem; | 
 | 109 |     struct tag_videotext videotext; | 
 | 110 |     struct tag_ramdisk ramdisk; | 
| Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 111 |     struct tag_initrd initrd; | 
 | 112 |     struct tag_serialnr serialnr; | 
 | 113 |     struct tag_revision revision; | 
 | 114 |     struct tag_videolfb videolfb; | 
| Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 115 |     struct tag_cmdline cmdline; | 
 | 116 |     struct tag_acorn acorn; | 
 | 117 |     struct tag_memclk memclk; | 
 | 118 |   } u; | 
| Ben Cheng | a6b53f0 | 2013-11-06 15:51:05 -0800 | [diff] [blame] | 119 | }; | 
 | 120 | struct tagtable { | 
| Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 121 |   __u32 tag; | 
 | 122 |   int(* parse) (const struct tag *); | 
| Ben Cheng | a6b53f0 | 2013-11-06 15:51:05 -0800 | [diff] [blame] | 123 | }; | 
| Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 124 | #define tag_member_present(tag,member) ((unsigned long) (& ((struct tag *) 0L)->member + 1) <= (tag)->hdr.size * 4) | 
 | 125 | #define tag_next(t) ((struct tag *) ((__u32 *) (t) + (t)->hdr.size)) | 
| Ben Cheng | a6b53f0 | 2013-11-06 15:51:05 -0800 | [diff] [blame] | 126 | #define tag_size(type) ((sizeof(struct tag_header) + sizeof(struct type)) >> 2) | 
| Tao Bao | d7db594 | 2015-01-28 10:07:51 -0800 | [diff] [blame] | 127 | #define for_each_tag(t,base) for(t = base; t->hdr.size; t = tag_next(t)) | 
| Ben Cheng | a6b53f0 | 2013-11-06 15:51:05 -0800 | [diff] [blame] | 128 | #endif |