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
arm
mach-imx
cpu-imx27.c
Go to the documentation of this file.
1
/*
2
* Copyright 2007 Freescale Semiconductor, Inc. All Rights Reserved.
3
* Copyright 2008 Juergen Beisert,
[email protected]
4
*
5
* This program is free software; you can redistribute it and/or
6
* modify it under the terms of the GNU General Public License
7
* as published by the Free Software Foundation; either version 2
8
* of the License, or (at your option) any later version.
9
* This program is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details.
13
*
14
* You should have received a copy of the GNU General Public License
15
* along with this program; if not, write to the Free Software
16
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
17
* MA 02110-1301, USA.
18
*/
19
20
/*
21
* i.MX27 specific CPU detection code
22
*/
23
24
#include <
linux/io.h
>
25
#include <linux/module.h>
26
27
#include <mach/hardware.h>
28
29
static
int
mx27_cpu_rev = -1;
30
static
int
mx27_cpu_partnumber;
31
32
#define SYS_CHIP_ID 0x00
/* The offset of CHIP ID register */
33
34
static
int
mx27_read_cpu_rev(
void
)
35
{
36
u32
val
;
37
/*
38
* now we have access to the IO registers. As we need
39
* the silicon revision very early we read it here to
40
* avoid any further hooks
41
*/
42
val =
__raw_readl
(
MX27_IO_ADDRESS
(
MX27_SYSCTRL_BASE_ADDR
43
+
SYS_CHIP_ID
));
44
45
mx27_cpu_partnumber = (
int
)((val >> 12) & 0xFFFF);
46
47
switch
(val >> 28) {
48
case
0:
49
return
IMX_CHIP_REVISION_1_0
;
50
case
1:
51
return
IMX_CHIP_REVISION_2_0
;
52
case
2:
53
return
IMX_CHIP_REVISION_2_1
;
54
default
:
55
return
IMX_CHIP_REVISION_UNKNOWN
;
56
}
57
}
58
59
/*
60
* Returns:
61
* the silicon revision of the cpu
62
* -EINVAL - not a mx27
63
*/
64
int
mx27_revision
(
void
)
65
{
66
if
(mx27_cpu_rev == -1)
67
mx27_cpu_rev = mx27_read_cpu_rev();
68
69
if
(mx27_cpu_partnumber != 0x8821)
70
return
-
EINVAL
;
71
72
return
mx27_cpu_rev;
73
}
74
EXPORT_SYMBOL
(
mx27_revision
);
Generated on Thu Jan 10 2013 12:59:13 for Linux Kernel by
1.8.2