122851890Sopenharmony_ci/*
222851890Sopenharmony_ci * This header was generated from the Linux kernel headers by update_headers.py,
322851890Sopenharmony_ci * to provide necessary information from kernel to userspace, such as constants,
422851890Sopenharmony_ci * structures, and macros, and thus, contains no copyrightable information.
522851890Sopenharmony_ci */
622851890Sopenharmony_ci#ifndef __ASMARM_SETUP_H
722851890Sopenharmony_ci#define __ASMARM_SETUP_H
822851890Sopenharmony_ci#include <linux/types.h>
922851890Sopenharmony_ci#define COMMAND_LINE_SIZE 1024
1022851890Sopenharmony_ci#define ATAG_NONE	0x00000000
1122851890Sopenharmony_cistruct tag_header {
1222851890Sopenharmony_ci	__u32 size;
1322851890Sopenharmony_ci	__u32 tag;
1422851890Sopenharmony_ci};
1522851890Sopenharmony_ci#define ATAG_CORE	0x54410001
1622851890Sopenharmony_cistruct tag_core {
1722851890Sopenharmony_ci	__u32 flags;
1822851890Sopenharmony_ci	__u32 pagesize;
1922851890Sopenharmony_ci	__u32 rootdev;
2022851890Sopenharmony_ci};
2122851890Sopenharmony_ci#define ATAG_MEM	0x54410002
2222851890Sopenharmony_cistruct tag_mem32 {
2322851890Sopenharmony_ci	__u32	size;
2422851890Sopenharmony_ci	__u32	start;
2522851890Sopenharmony_ci};
2622851890Sopenharmony_ci#define ATAG_VIDEOTEXT	0x54410003
2722851890Sopenharmony_cistruct tag_videotext {
2822851890Sopenharmony_ci	__u8		x;
2922851890Sopenharmony_ci	__u8		y;
3022851890Sopenharmony_ci	__u16		video_page;
3122851890Sopenharmony_ci	__u8		video_mode;
3222851890Sopenharmony_ci	__u8		video_cols;
3322851890Sopenharmony_ci	__u16		video_ega_bx;
3422851890Sopenharmony_ci	__u8		video_lines;
3522851890Sopenharmony_ci	__u8		video_isvga;
3622851890Sopenharmony_ci	__u16		video_points;
3722851890Sopenharmony_ci};
3822851890Sopenharmony_ci#define ATAG_RAMDISK	0x54410004
3922851890Sopenharmony_cistruct tag_ramdisk {
4022851890Sopenharmony_ci	__u32 flags;
4122851890Sopenharmony_ci	__u32 size;
4222851890Sopenharmony_ci	__u32 start;
4322851890Sopenharmony_ci};
4422851890Sopenharmony_ci#define ATAG_INITRD	0x54410005
4522851890Sopenharmony_ci#define ATAG_INITRD2	0x54420005
4622851890Sopenharmony_cistruct tag_initrd {
4722851890Sopenharmony_ci	__u32 start;
4822851890Sopenharmony_ci	__u32 size;
4922851890Sopenharmony_ci};
5022851890Sopenharmony_ci#define ATAG_SERIAL	0x54410006
5122851890Sopenharmony_cistruct tag_serialnr {
5222851890Sopenharmony_ci	__u32 low;
5322851890Sopenharmony_ci	__u32 high;
5422851890Sopenharmony_ci};
5522851890Sopenharmony_ci#define ATAG_REVISION	0x54410007
5622851890Sopenharmony_cistruct tag_revision {
5722851890Sopenharmony_ci	__u32 rev;
5822851890Sopenharmony_ci};
5922851890Sopenharmony_ci#define ATAG_VIDEOLFB	0x54410008
6022851890Sopenharmony_cistruct tag_videolfb {
6122851890Sopenharmony_ci	__u16		lfb_width;
6222851890Sopenharmony_ci	__u16		lfb_height;
6322851890Sopenharmony_ci	__u16		lfb_depth;
6422851890Sopenharmony_ci	__u16		lfb_linelength;
6522851890Sopenharmony_ci	__u32		lfb_base;
6622851890Sopenharmony_ci	__u32		lfb_size;
6722851890Sopenharmony_ci	__u8		red_size;
6822851890Sopenharmony_ci	__u8		red_pos;
6922851890Sopenharmony_ci	__u8		green_size;
7022851890Sopenharmony_ci	__u8		green_pos;
7122851890Sopenharmony_ci	__u8		blue_size;
7222851890Sopenharmony_ci	__u8		blue_pos;
7322851890Sopenharmony_ci	__u8		rsvd_size;
7422851890Sopenharmony_ci	__u8		rsvd_pos;
7522851890Sopenharmony_ci};
7622851890Sopenharmony_ci#define ATAG_CMDLINE	0x54410009
7722851890Sopenharmony_cistruct tag_cmdline {
7822851890Sopenharmony_ci	char	cmdline[1];
7922851890Sopenharmony_ci};
8022851890Sopenharmony_ci#define ATAG_ACORN	0x41000101
8122851890Sopenharmony_cistruct tag_acorn {
8222851890Sopenharmony_ci	__u32 memc_control_reg;
8322851890Sopenharmony_ci	__u32 vram_pages;
8422851890Sopenharmony_ci	__u8 sounddefault;
8522851890Sopenharmony_ci	__u8 adfsdrives;
8622851890Sopenharmony_ci};
8722851890Sopenharmony_ci#define ATAG_MEMCLK	0x41000402
8822851890Sopenharmony_cistruct tag_memclk {
8922851890Sopenharmony_ci	__u32 fmemclk;
9022851890Sopenharmony_ci};
9122851890Sopenharmony_cistruct tag {
9222851890Sopenharmony_ci	struct tag_header hdr;
9322851890Sopenharmony_ci	union {
9422851890Sopenharmony_ci		struct tag_core		core;
9522851890Sopenharmony_ci		struct tag_mem32	mem;
9622851890Sopenharmony_ci		struct tag_videotext	videotext;
9722851890Sopenharmony_ci		struct tag_ramdisk	ramdisk;
9822851890Sopenharmony_ci		struct tag_initrd	initrd;
9922851890Sopenharmony_ci		struct tag_serialnr	serialnr;
10022851890Sopenharmony_ci		struct tag_revision	revision;
10122851890Sopenharmony_ci		struct tag_videolfb	videolfb;
10222851890Sopenharmony_ci		struct tag_cmdline	cmdline;
10322851890Sopenharmony_ci
10422851890Sopenharmony_ci		struct tag_acorn	acorn;
10522851890Sopenharmony_ci
10622851890Sopenharmony_ci		struct tag_memclk	memclk;
10722851890Sopenharmony_ci	} u;
10822851890Sopenharmony_ci};
10922851890Sopenharmony_cistruct tagtable {
11022851890Sopenharmony_ci	__u32 tag;
11122851890Sopenharmony_ci	int (*parse)(const struct tag *);
11222851890Sopenharmony_ci};
11322851890Sopenharmony_ci#define tag_member_present(tag,member)				\
11422851890Sopenharmony_ci	((unsigned long)(&((struct tag *)0L)->member + 1)	\
11522851890Sopenharmony_ci		<= (tag)->hdr.size * 4)
11622851890Sopenharmony_ci#define tag_next(t)	((struct tag *)((__u32 *)(t) + (t)->hdr.size))
11722851890Sopenharmony_ci#define tag_size(type)	((sizeof(struct tag_header) + sizeof(struct type)) >> 2)
11822851890Sopenharmony_ci#define for_each_tag(t,base)		\
11922851890Sopenharmony_ci	for (t = base; t->hdr.size; t = tag_next(t))
12022851890Sopenharmony_ci#endif
121