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-imx31.c
Go to the documentation of this file.
1
/*
2
* MX31 CPU type detection
3
*
4
* Copyright (c) 2009 Daniel Mack <daniel@caiaq.de>
5
*
6
* This program is free software; you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License as published by
8
* the Free Software Foundation; either version 2 of the License, or
9
* (at your option) any later version.
10
*/
11
12
#include <linux/module.h>
13
#include <
linux/io.h
>
14
#include <mach/hardware.h>
15
#include <
mach/iim.h
>
16
#include <mach/common.h>
17
18
static
int
mx31_cpu_rev = -1;
19
20
static
struct
{
21
u8
srev
;
22
const
char
*
name
;
23
unsigned
int
rev
;
24
} mx31_cpu_type[] = {
25
{ .srev = 0x00, .name =
"i.MX31(L)"
, .rev =
IMX_CHIP_REVISION_1_0
},
26
{ .srev = 0x10, .name =
"i.MX31"
, .rev =
IMX_CHIP_REVISION_1_1
},
27
{ .srev = 0x11, .name =
"i.MX31L"
, .rev =
IMX_CHIP_REVISION_1_1
},
28
{ .srev = 0x12, .name =
"i.MX31"
, .rev =
IMX_CHIP_REVISION_1_1
},
29
{ .srev = 0x13, .name =
"i.MX31L"
, .rev =
IMX_CHIP_REVISION_1_1
},
30
{ .srev = 0x14, .name =
"i.MX31"
, .rev =
IMX_CHIP_REVISION_1_2
},
31
{ .srev = 0x15, .name =
"i.MX31L"
, .rev =
IMX_CHIP_REVISION_1_2
},
32
{ .srev = 0x28, .name =
"i.MX31"
, .rev =
IMX_CHIP_REVISION_2_0
},
33
{ .srev = 0x29, .name =
"i.MX31L"
, .rev =
IMX_CHIP_REVISION_2_0
},
34
};
35
36
static
int
mx31_read_cpu_rev(
void
)
37
{
38
u32
i
,
srev
;
39
40
/* read SREV register from IIM module */
41
srev =
__raw_readl
(
MX31_IO_ADDRESS
(
MX31_IIM_BASE_ADDR
+
MXC_IIMSREV
));
42
srev &= 0xff;
43
44
for
(i = 0; i <
ARRAY_SIZE
(mx31_cpu_type); i++)
45
if
(srev == mx31_cpu_type[i].srev) {
46
imx_print_silicon_rev
(mx31_cpu_type[i].
name
,
47
mx31_cpu_type[i].
rev
);
48
return
mx31_cpu_type[
i
].rev;
49
}
50
51
imx_print_silicon_rev
(
"i.MX31"
,
IMX_CHIP_REVISION_UNKNOWN
);
52
return
IMX_CHIP_REVISION_UNKNOWN
;
53
}
54
55
int
mx31_revision
(
void
)
56
{
57
if
(mx31_cpu_rev == -1)
58
mx31_cpu_rev = mx31_read_cpu_rev();
59
60
return
mx31_cpu_rev;
61
}
62
EXPORT_SYMBOL
(
mx31_revision
);
Generated on Thu Jan 10 2013 12:59:13 for Linux Kernel by
1.8.2