diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-06 19:24:34 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-06 19:24:34 -0400 |
commit | 3cf8ad3394b8675e92a35c438f22341197535531 (patch) | |
tree | 39c9c5b9465e4f63f6cdf9b767d8046eaf0f3ac7 /arch/x86/include/asm | |
parent | 66cd55d2b903643cbd019ef97a5305d9428d3865 (diff) | |
parent | 54e5bc020ce1c959eaa7be18cedb734b6b13745e (diff) |
Merge branch 'x86-olpc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'x86-olpc-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
x86, olpc: Constify an olpc_ofw() arg
x86, olpc: Use pr_debug() for EC commands
x86, olpc: Add comment about implicit optimization barrier
x86, olpc: Add support for calling into OpenFirmware
Diffstat (limited to 'arch/x86/include/asm')
-rw-r--r-- | arch/x86/include/asm/bootparam.h | 11 | ||||
-rw-r--r-- | arch/x86/include/asm/olpc_ofw.h | 31 |
2 files changed, 41 insertions, 1 deletions
diff --git a/arch/x86/include/asm/bootparam.h b/arch/x86/include/asm/bootparam.h index 6be33d83c716..8e6218550e77 100644 --- a/arch/x86/include/asm/bootparam.h +++ b/arch/x86/include/asm/bootparam.h | |||
@@ -70,6 +70,14 @@ struct sys_desc_table { | |||
70 | __u8 table[14]; | 70 | __u8 table[14]; |
71 | }; | 71 | }; |
72 | 72 | ||
73 | /* Gleaned from OFW's set-parameters in cpu/x86/pc/linux.fth */ | ||
74 | struct olpc_ofw_header { | ||
75 | __u32 ofw_magic; /* OFW signature */ | ||
76 | __u32 ofw_version; | ||
77 | __u32 cif_handler; /* callback into OFW */ | ||
78 | __u32 irq_desc_table; | ||
79 | } __attribute__((packed)); | ||
80 | |||
73 | struct efi_info { | 81 | struct efi_info { |
74 | __u32 efi_loader_signature; | 82 | __u32 efi_loader_signature; |
75 | __u32 efi_systab; | 83 | __u32 efi_systab; |
@@ -92,7 +100,8 @@ struct boot_params { | |||
92 | __u8 hd0_info[16]; /* obsolete! */ /* 0x080 */ | 100 | __u8 hd0_info[16]; /* obsolete! */ /* 0x080 */ |
93 | __u8 hd1_info[16]; /* obsolete! */ /* 0x090 */ | 101 | __u8 hd1_info[16]; /* obsolete! */ /* 0x090 */ |
94 | struct sys_desc_table sys_desc_table; /* 0x0a0 */ | 102 | struct sys_desc_table sys_desc_table; /* 0x0a0 */ |
95 | __u8 _pad4[144]; /* 0x0b0 */ | 103 | struct olpc_ofw_header olpc_ofw_header; /* 0x0b0 */ |
104 | __u8 _pad4[128]; /* 0x0c0 */ | ||
96 | struct edid_info edid_info; /* 0x140 */ | 105 | struct edid_info edid_info; /* 0x140 */ |
97 | struct efi_info efi_info; /* 0x1c0 */ | 106 | struct efi_info efi_info; /* 0x1c0 */ |
98 | __u32 alt_mem_k; /* 0x1e0 */ | 107 | __u32 alt_mem_k; /* 0x1e0 */ |
diff --git a/arch/x86/include/asm/olpc_ofw.h b/arch/x86/include/asm/olpc_ofw.h new file mode 100644 index 000000000000..08fde475cb3b --- /dev/null +++ b/arch/x86/include/asm/olpc_ofw.h | |||
@@ -0,0 +1,31 @@ | |||
1 | #ifndef _ASM_X86_OLPC_OFW_H | ||
2 | #define _ASM_X86_OLPC_OFW_H | ||
3 | |||
4 | /* index into the page table containing the entry OFW occupies */ | ||
5 | #define OLPC_OFW_PDE_NR 1022 | ||
6 | |||
7 | #define OLPC_OFW_SIG 0x2057464F /* aka "OFW " */ | ||
8 | |||
9 | #ifdef CONFIG_OLPC_OPENFIRMWARE | ||
10 | |||
11 | /* run an OFW command by calling into the firmware */ | ||
12 | #define olpc_ofw(name, args, res) \ | ||
13 | __olpc_ofw((name), ARRAY_SIZE(args), args, ARRAY_SIZE(res), res) | ||
14 | |||
15 | extern int __olpc_ofw(const char *name, int nr_args, const void **args, int nr_res, | ||
16 | void **res); | ||
17 | |||
18 | /* determine whether OFW is available and lives in the proper memory */ | ||
19 | extern void olpc_ofw_detect(void); | ||
20 | |||
21 | /* install OFW's pde permanently into the kernel's pgtable */ | ||
22 | extern void setup_olpc_ofw_pgd(void); | ||
23 | |||
24 | #else /* !CONFIG_OLPC_OPENFIRMWARE */ | ||
25 | |||
26 | static inline void olpc_ofw_detect(void) { } | ||
27 | static inline void setup_olpc_ofw_pgd(void) { } | ||
28 | |||
29 | #endif /* !CONFIG_OLPC_OPENFIRMWARE */ | ||
30 | |||
31 | #endif /* _ASM_X86_OLPC_OFW_H */ | ||