2017-11-01 15:09:13 +01:00
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2012-10-12 13:05:52 +01:00
/*
* linux / include / asm / setup . h
*
* Copyright ( C ) 1997 - 1999 Russell King
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation .
*
* Structure passed to kernel to tell it about the
* hardware it ' s running on . See Documentation / arm / Setup
* for more info .
*/
# ifndef _UAPI__ASMARM_SETUP_H
# define _UAPI__ASMARM_SETUP_H
# include <linux/types.h>
# define COMMAND_LINE_SIZE 1024
/* The list ends with an ATAG_NONE node. */
# define ATAG_NONE 0x00000000
struct tag_header {
__u32 size ;
__u32 tag ;
} ;
/* The list must start with an ATAG_CORE node */
# define ATAG_CORE 0x54410001
struct tag_core {
__u32 flags ; /* bit 0 = read-only */
__u32 pagesize ;
__u32 rootdev ;
} ;
/* it is allowed to have multiple ATAG_MEM nodes */
# define ATAG_MEM 0x54410002
struct tag_mem32 {
__u32 size ;
__u32 start ; /* physical start address */
} ;
/* VGA text type displays */
# define ATAG_VIDEOTEXT 0x54410003
struct tag_videotext {
__u8 x ;
__u8 y ;
__u16 video_page ;
__u8 video_mode ;
__u8 video_cols ;
__u16 video_ega_bx ;
__u8 video_lines ;
__u8 video_isvga ;
__u16 video_points ;
} ;
/* describes how the ramdisk will be used in kernel */
# define ATAG_RAMDISK 0x54410004
struct tag_ramdisk {
__u32 flags ; /* bit 0 = load, bit 1 = prompt */
__u32 size ; /* decompressed ramdisk size in _kilo_ bytes */
__u32 start ; /* starting block of floppy-based RAM disk image */
} ;
/* describes where the compressed ramdisk image lives (virtual address) */
/*
* this one accidentally used virtual addresses - as such ,
* it ' s deprecated .
*/
# define ATAG_INITRD 0x54410005
/* describes where the compressed ramdisk image lives (physical address) */
# define ATAG_INITRD2 0x54420005
struct tag_initrd {
__u32 start ; /* physical start address */
__u32 size ; /* size of compressed ramdisk image in bytes */
} ;
/* board serial number. "64 bits should be enough for everybody" */
# define ATAG_SERIAL 0x54410006
struct tag_serialnr {
__u32 low ;
__u32 high ;
} ;
/* board revision */
# define ATAG_REVISION 0x54410007
struct tag_revision {
__u32 rev ;
} ;
/* initial values for vesafb-type framebuffers. see struct screen_info
* in include / linux / tty . h
*/
# define ATAG_VIDEOLFB 0x54410008
struct tag_videolfb {
__u16 lfb_width ;
__u16 lfb_height ;
__u16 lfb_depth ;
__u16 lfb_linelength ;
__u32 lfb_base ;
__u32 lfb_size ;
__u8 red_size ;
__u8 red_pos ;
__u8 green_size ;
__u8 green_pos ;
__u8 blue_size ;
__u8 blue_pos ;
__u8 rsvd_size ;
__u8 rsvd_pos ;
} ;
/* command line: \0 terminated string */
# define ATAG_CMDLINE 0x54410009
struct tag_cmdline {
char cmdline [ 1 ] ; /* this is the minimum size */
} ;
/* acorn RiscPC specific information */
# define ATAG_ACORN 0x41000101
struct tag_acorn {
__u32 memc_control_reg ;
__u32 vram_pages ;
__u8 sounddefault ;
__u8 adfsdrives ;
} ;
/* footbridge memory clock, see arch/arm/mach-footbridge/arch.c */
# define ATAG_MEMCLK 0x41000402
struct tag_memclk {
__u32 fmemclk ;
} ;
struct tag {
struct tag_header hdr ;
union {
struct tag_core core ;
struct tag_mem32 mem ;
struct tag_videotext videotext ;
struct tag_ramdisk ramdisk ;
struct tag_initrd initrd ;
struct tag_serialnr serialnr ;
struct tag_revision revision ;
struct tag_videolfb videolfb ;
struct tag_cmdline cmdline ;
/*
* Acorn specific
*/
struct tag_acorn acorn ;
/*
* DC21285 specific
*/
struct tag_memclk memclk ;
} u ;
} ;
struct tagtable {
__u32 tag ;
int ( * parse ) ( const struct tag * ) ;
} ;
# define tag_member_present(tag,member) \
( ( unsigned long ) ( & ( ( struct tag * ) 0L ) - > member + 1 ) \
< = ( tag ) - > hdr . size * 4 )
# define tag_next(t) ((struct tag *)((__u32 *)(t) + (t)->hdr.size))
# define tag_size(type) ((sizeof(struct tag_header) + sizeof(struct type)) >> 2)
# define for_each_tag(t,base) \
for ( t = base ; t - > hdr . size ; t = tag_next ( t ) )
# endif /* _UAPI__ASMARM_SETUP_H */