Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
arch
x86
include
asm
uv
bios.h
Go to the documentation of this file.
1
#ifndef _ASM_X86_UV_BIOS_H
2
#define _ASM_X86_UV_BIOS_H
3
4
/*
5
* UV BIOS layer definitions.
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 as published by
9
* the Free Software Foundation; either version 2 of the License, or
10
* (at your option) any later version.
11
*
12
* This program is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
* GNU General Public License for more details.
16
*
17
* You should have received a copy of the GNU General Public License
18
* along with this program; if not, write to the Free Software
19
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20
*
21
* Copyright (c) 2008-2009 Silicon Graphics, Inc. All Rights Reserved.
22
* Copyright (c) Russ Anderson <
[email protected]
>
23
*/
24
25
#include <linux/rtc.h>
26
27
/*
28
* Values for the BIOS calls. It is passed as the first * argument in the
29
* BIOS call. Passing any other value in the first argument will result
30
* in a BIOS_STATUS_UNIMPLEMENTED return status.
31
*/
32
enum
uv_bios_cmd
{
33
UV_BIOS_COMMON
,
34
UV_BIOS_GET_SN_INFO
,
35
UV_BIOS_FREQ_BASE
,
36
UV_BIOS_WATCHLIST_ALLOC
,
37
UV_BIOS_WATCHLIST_FREE
,
38
UV_BIOS_MEMPROTECT
,
39
UV_BIOS_GET_PARTITION_ADDR
,
40
UV_BIOS_SET_LEGACY_VGA_TARGET
41
};
42
43
/*
44
* Status values returned from a BIOS call.
45
*/
46
enum
{
47
BIOS_STATUS_MORE_PASSES
= 1,
48
BIOS_STATUS_SUCCESS
= 0,
49
BIOS_STATUS_UNIMPLEMENTED
= -
ENOSYS
,
50
BIOS_STATUS_EINVAL
= -
EINVAL
,
51
BIOS_STATUS_UNAVAIL
= -
EBUSY
52
};
53
54
/*
55
* The UV system table describes specific firmware
56
* capabilities available to the Linux kernel at runtime.
57
*/
58
struct
uv_systab
{
59
char
signature
[4];
/* must be "UVST" */
60
u32
revision
;
/* distinguish different firmware revs */
61
u64
function
;
/* BIOS runtime callback function ptr */
62
};
63
64
enum
{
65
BIOS_FREQ_BASE_PLATFORM
= 0,
66
BIOS_FREQ_BASE_INTERVAL_TIMER
= 1,
67
BIOS_FREQ_BASE_REALTIME_CLOCK
= 2
68
};
69
70
union
partition_info_u
{
71
u64
val
;
72
struct
{
73
u64
hub_version
: 8,
74
partition_id
: 16,
75
coherence_id
: 16,
76
region_size
: 24;
77
};
78
};
79
80
enum
uv_memprotect
{
81
UV_MEMPROT_RESTRICT_ACCESS
,
82
UV_MEMPROT_ALLOW_AMO
,
83
UV_MEMPROT_ALLOW_RW
84
};
85
86
/*
87
* bios calls have 6 parameters
88
*/
89
extern
s64
uv_bios_call
(
enum
uv_bios_cmd
,
u64
,
u64
,
u64
,
u64
,
u64
);
90
extern
s64
uv_bios_call_irqsave
(
enum
uv_bios_cmd
,
u64
,
u64
,
u64
,
u64
,
u64
);
91
extern
s64
uv_bios_call_reentrant
(
enum
uv_bios_cmd
,
u64
,
u64
,
u64
,
u64
,
u64
);
92
93
extern
s64
uv_bios_get_sn_info
(
int
,
int
*,
long
*,
long
*,
long
*,
long
*);
94
extern
s64
uv_bios_freq_base
(
u64
,
u64
*);
95
extern
int
uv_bios_mq_watchlist_alloc
(
unsigned
long
,
unsigned
int
,
96
unsigned
long
*);
97
extern
int
uv_bios_mq_watchlist_free
(
int
,
int
);
98
extern
s64
uv_bios_change_memprotect
(
u64
,
u64
,
enum
uv_memprotect
);
99
extern
s64
uv_bios_reserved_page_pa
(
u64
,
u64
*,
u64
*,
u64
*);
100
extern
int
uv_bios_set_legacy_vga_target
(
bool
decode,
int
domain,
int
bus
);
101
102
extern
void
uv_bios_init
(
void
);
103
104
extern
unsigned
long
sn_rtc_cycles_per_second
;
105
extern
int
uv_type
;
106
extern
long
sn_partition_id
;
107
extern
long
sn_coherency_id
;
108
extern
long
sn_region_size
;
109
extern
long
system_serial_number
;
110
#define partition_coherence_id() (sn_coherency_id)
111
112
extern
struct
kobject
*
sgi_uv_kobj
;
/* /sys/firmware/sgi_uv */
113
114
#endif
/* _ASM_X86_UV_BIOS_H */
Generated on Thu Jan 10 2013 13:20:09 for Linux Kernel by
1.8.2