~ubuntu-branches/ubuntu/precise/linux-lowlatency/precise

« back to all changes in this revision

Viewing changes to arch/avr32/include/asm/setup.h

  • Committer: Package Import Robot
  • Author(s): Alessio Igor Bogani
  • Date: 2011-10-26 11:13:05 UTC
  • Revision ID: package-import@ubuntu.com-20111026111305-tz023xykf0i6eosh
Tags: upstream-3.2.0
ImportĀ upstreamĀ versionĀ 3.2.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright (C) 2004-2006 Atmel Corporation
 
3
 *
 
4
 * Based on linux/include/asm-arm/setup.h
 
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
#ifndef __ASM_AVR32_SETUP_H__
 
12
#define __ASM_AVR32_SETUP_H__
 
13
 
 
14
#define COMMAND_LINE_SIZE 256
 
15
 
 
16
#ifdef __KERNEL__
 
17
 
 
18
/* Magic number indicating that a tag table is present */
 
19
#define ATAG_MAGIC      0xa2a25441
 
20
 
 
21
#ifndef __ASSEMBLY__
 
22
 
 
23
/*
 
24
 * Generic memory range, used by several tags.
 
25
 *
 
26
 *   addr is always physical.
 
27
 *   size is measured in bytes.
 
28
 *   next is for use by the OS, e.g. for grouping regions into
 
29
 *        linked lists.
 
30
 */
 
31
struct tag_mem_range {
 
32
        u32                     addr;
 
33
        u32                     size;
 
34
        struct tag_mem_range *  next;
 
35
};
 
36
 
 
37
/* The list ends with an ATAG_NONE node. */
 
38
#define ATAG_NONE       0x00000000
 
39
 
 
40
struct tag_header {
 
41
        u32 size;
 
42
        u32 tag;
 
43
};
 
44
 
 
45
/* The list must start with an ATAG_CORE node */
 
46
#define ATAG_CORE       0x54410001
 
47
 
 
48
struct tag_core {
 
49
        u32 flags;
 
50
        u32 pagesize;
 
51
        u32 rootdev;
 
52
};
 
53
 
 
54
/* it is allowed to have multiple ATAG_MEM nodes */
 
55
#define ATAG_MEM        0x54410002
 
56
/* ATAG_MEM uses tag_mem_range */
 
57
 
 
58
/* command line: \0 terminated string */
 
59
#define ATAG_CMDLINE    0x54410003
 
60
 
 
61
struct tag_cmdline {
 
62
        char    cmdline[1];     /* this is the minimum size */
 
63
};
 
64
 
 
65
/* Ramdisk image (may be compressed) */
 
66
#define ATAG_RDIMG      0x54410004
 
67
/* ATAG_RDIMG uses tag_mem_range */
 
68
 
 
69
/* Information about various clocks present in the system */
 
70
#define ATAG_CLOCK      0x54410005
 
71
 
 
72
struct tag_clock {
 
73
        u32     clock_id;       /* Which clock are we talking about? */
 
74
        u32     clock_flags;    /* Special features */
 
75
        u64     clock_hz;       /* Clock speed in Hz */
 
76
};
 
77
 
 
78
/* The clock types we know about */
 
79
#define CLOCK_BOOTCPU   0
 
80
 
 
81
/* Memory reserved for the system (e.g. the bootloader) */
 
82
#define ATAG_RSVD_MEM   0x54410006
 
83
/* ATAG_RSVD_MEM uses tag_mem_range */
 
84
 
 
85
/* Ethernet information */
 
86
 
 
87
#define ATAG_ETHERNET   0x54410007
 
88
 
 
89
struct tag_ethernet {
 
90
        u8      mac_index;
 
91
        u8      mii_phy_addr;
 
92
        u8      hw_address[6];
 
93
};
 
94
 
 
95
#define ETH_INVALID_PHY 0xff
 
96
 
 
97
/* board information */
 
98
#define ATAG_BOARDINFO  0x54410008
 
99
 
 
100
struct tag_boardinfo {
 
101
        u32     board_number;
 
102
};
 
103
 
 
104
struct tag {
 
105
        struct tag_header hdr;
 
106
        union {
 
107
                struct tag_core core;
 
108
                struct tag_mem_range mem_range;
 
109
                struct tag_cmdline cmdline;
 
110
                struct tag_clock clock;
 
111
                struct tag_ethernet ethernet;
 
112
                struct tag_boardinfo boardinfo;
 
113
        } u;
 
114
};
 
115
 
 
116
struct tagtable {
 
117
        u32     tag;
 
118
        int     (*parse)(struct tag *);
 
119
};
 
120
 
 
121
#define __tag __used __attribute__((__section__(".taglist.init")))
 
122
#define __tagtable(tag, fn)                                             \
 
123
        static struct tagtable __tagtable_##fn __tag = { tag, fn }
 
124
 
 
125
#define tag_member_present(tag,member)                                  \
 
126
        ((unsigned long)(&((struct tag *)0L)->member + 1)               \
 
127
         <= (tag)->hdr.size * 4)
 
128
 
 
129
#define tag_next(t)     ((struct tag *)((u32 *)(t) + (t)->hdr.size))
 
130
#define tag_size(type)  ((sizeof(struct tag_header) + sizeof(struct type)) >> 2)
 
131
 
 
132
#define for_each_tag(t,base)                                            \
 
133
        for (t = base; t->hdr.size; t = tag_next(t))
 
134
 
 
135
extern struct tag *bootloader_tags;
 
136
 
 
137
extern resource_size_t fbmem_start;
 
138
extern resource_size_t fbmem_size;
 
139
extern u32 board_number;
 
140
 
 
141
void setup_processor(void);
 
142
 
 
143
#endif /* !__ASSEMBLY__ */
 
144
 
 
145
#endif  /*  __KERNEL__  */
 
146
 
 
147
#endif /* __ASM_AVR32_SETUP_H__ */