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
microblaze
kernel
cpu
cpuinfo.c
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2007-2009 Michal Simek <
[email protected]
>
3
* Copyright (C) 2007-2009 PetaLogix
4
* Copyright (C) 2007 John Williams <
[email protected]
>
5
*
6
* This file is subject to the terms and conditions of the GNU General Public
7
* License. See the file "COPYING" in the main directory of this archive
8
* for more details.
9
*/
10
11
#include <
linux/init.h
>
12
#include <asm/cpuinfo.h>
13
#include <
asm/pvr.h
>
14
15
const
struct
cpu_ver_key
cpu_ver_lookup
[] = {
16
/* These key value are as per MBV field in PVR0 */
17
{
"5.00.a"
, 0x01},
18
{
"5.00.b"
, 0x02},
19
{
"5.00.c"
, 0x03},
20
{
"6.00.a"
, 0x04},
21
{
"6.00.b"
, 0x06},
22
{
"7.00.a"
, 0x05},
23
{
"7.00.b"
, 0x07},
24
{
"7.10.a"
, 0x08},
25
{
"7.10.b"
, 0x09},
26
{
"7.10.c"
, 0x0a},
27
{
"7.10.d"
, 0x0b},
28
{
"7.20.a"
, 0x0c},
29
{
"7.20.b"
, 0x0d},
30
{
"7.20.c"
, 0x0e},
31
{
"7.20.d"
, 0x0f},
32
{
"7.30.a"
, 0x10},
33
{
"7.30.b"
, 0x11},
34
{
"8.00.a"
, 0x12},
35
{
"8.00.b"
, 0x13},
36
{
"8.10.a"
, 0x14},
37
{
"8.20.a"
, 0x15},
38
{
"8.20.b"
, 0x16},
39
{
"8.30.a"
, 0x17},
40
{
NULL
, 0},
41
};
42
43
/*
44
* FIXME Not sure if the actual key is defined by Xilinx in the PVR
45
*/
46
const
struct
family_string_key
family_string_lookup
[] = {
47
{
"virtex2"
, 0x4},
48
{
"virtex2pro"
, 0x5},
49
{
"spartan3"
, 0x6},
50
{
"virtex4"
, 0x7},
51
{
"virtex5"
, 0x8},
52
{
"spartan3e"
, 0x9},
53
{
"spartan3a"
, 0xa},
54
{
"spartan3an"
, 0xb},
55
{
"spartan3adsp"
, 0xc},
56
{
"spartan6"
, 0xd},
57
{
"virtex6"
, 0xe},
58
/* FIXME There is no key code defined for spartan2 */
59
{
"spartan2"
, 0xf0},
60
{
NULL
, 0},
61
};
62
63
struct
cpuinfo
cpuinfo
;
64
65
void
__init
setup_cpuinfo
(
void
)
66
{
67
struct
device_node
*
cpu
=
NULL
;
68
69
cpu = (
struct
device_node
*)
of_find_node_by_type
(
NULL
,
"cpu"
);
70
if
(!cpu)
71
printk
(
KERN_ERR
"You don't have cpu!!!\n"
);
72
73
printk
(
KERN_INFO
"%s: initialising\n"
, __func__);
74
75
switch
(
cpu_has_pvr
()) {
76
case
0:
77
printk
(
KERN_WARNING
78
"%s: No PVR support. Using static CPU info from FDT\n"
,
79
__func__);
80
set_cpuinfo_static
(&
cpuinfo
, cpu);
81
break
;
82
/* FIXME I found weird behavior with MB 7.00.a/b 7.10.a
83
* please do not use FULL PVR with MMU */
84
case
1:
85
printk
(
KERN_INFO
"%s: Using full CPU PVR support\n"
,
86
__func__);
87
set_cpuinfo_static
(&
cpuinfo
, cpu);
88
set_cpuinfo_pvr_full
(&
cpuinfo
, cpu);
89
break
;
90
default
:
91
printk
(
KERN_WARNING
"%s: Unsupported PVR setting\n"
, __func__);
92
set_cpuinfo_static
(&
cpuinfo
, cpu);
93
}
94
95
if
(
cpuinfo
.
mmu_privins
)
96
printk
(
KERN_WARNING
"%s: Stream instructions enabled"
97
" - USERSPACE CAN LOCK THIS KERNEL!\n"
, __func__);
98
}
Generated on Thu Jan 10 2013 13:08:34 for Linux Kernel by
1.8.2