Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
e653034e
Commit
e653034e
authored
Mar 20, 2009
by
Kevin Hilman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
davinci: add runtime CPU detection support
Signed-off-by:
Kevin Hilman
<
khilman@deeprootsystems.com
>
parent
9232fcc9
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
75 additions
and
3 deletions
+75
-3
arch/arm/mach-davinci/id.c
arch/arm/mach-davinci/id.c
+26
-3
arch/arm/mach-davinci/include/mach/cputype.h
arch/arm/mach-davinci/include/mach/cputype.h
+49
-0
No files found.
arch/arm/mach-davinci/id.c
View file @
e653034e
...
@@ -17,6 +17,8 @@
...
@@ -17,6 +17,8 @@
#define JTAG_ID_BASE 0x01c40028
#define JTAG_ID_BASE 0x01c40028
static
unsigned
int
davinci_revision
;
struct
davinci_id
{
struct
davinci_id
{
u8
variant
;
/* JTAG ID bits 31:28 */
u8
variant
;
/* JTAG ID bits 31:28 */
u16
part_no
;
/* JTAG ID bits 27:12 */
u16
part_no
;
/* JTAG ID bits 27:12 */
...
@@ -33,6 +35,20 @@ static struct davinci_id davinci_ids[] __initdata = {
...
@@ -33,6 +35,20 @@ static struct davinci_id davinci_ids[] __initdata = {
.
manufacturer
=
0x017
,
.
manufacturer
=
0x017
,
.
type
=
0x64460000
,
.
type
=
0x64460000
,
},
},
{
/* DM646X */
.
part_no
=
0xb770
,
.
variant
=
0x0
,
.
manufacturer
=
0x017
,
.
type
=
0x64670000
,
},
{
/* DM355 */
.
part_no
=
0xb73b
,
.
variant
=
0x0
,
.
manufacturer
=
0x00f
,
.
type
=
0x03550000
,
},
};
};
/*
/*
...
@@ -63,6 +79,12 @@ static u8 __init davinci_get_variant(void)
...
@@ -63,6 +79,12 @@ static u8 __init davinci_get_variant(void)
return
variant
;
return
variant
;
}
}
unsigned
int
davinci_rev
(
void
)
{
return
davinci_revision
>>
16
;
}
EXPORT_SYMBOL
(
davinci_rev
);
void
__init
davinci_check_revision
(
void
)
void
__init
davinci_check_revision
(
void
)
{
{
int
i
;
int
i
;
...
@@ -75,7 +97,7 @@ void __init davinci_check_revision(void)
...
@@ -75,7 +97,7 @@ void __init davinci_check_revision(void)
/* First check only the major version in a safe way */
/* First check only the major version in a safe way */
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
davinci_ids
);
i
++
)
{
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
davinci_ids
);
i
++
)
{
if
(
part_no
==
(
davinci_ids
[
i
].
part_no
))
{
if
(
part_no
==
(
davinci_ids
[
i
].
part_no
))
{
system_rev
=
davinci_ids
[
i
].
type
;
davinci_revision
=
davinci_ids
[
i
].
type
;
break
;
break
;
}
}
}
}
...
@@ -84,10 +106,11 @@ void __init davinci_check_revision(void)
...
@@ -84,10 +106,11 @@ void __init davinci_check_revision(void)
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
davinci_ids
);
i
++
)
{
for
(
i
=
0
;
i
<
ARRAY_SIZE
(
davinci_ids
);
i
++
)
{
if
(
part_no
==
davinci_ids
[
i
].
part_no
&&
if
(
part_no
==
davinci_ids
[
i
].
part_no
&&
variant
==
davinci_ids
[
i
].
variant
)
{
variant
==
davinci_ids
[
i
].
variant
)
{
system_rev
=
davinci_ids
[
i
].
type
;
davinci_revision
=
davinci_ids
[
i
].
type
;
break
;
break
;
}
}
}
}
printk
(
"DaVinci DM%04x variant 0x%x
\n
"
,
system_rev
>>
16
,
variant
);
printk
(
KERN_INFO
"DaVinci DM%04x variant 0x%x
\n
"
,
davinci_rev
(),
variant
);
}
}
arch/arm/mach-davinci/include/mach/cputype.h
0 → 100644
View file @
e653034e
/*
* DaVinci CPU type detection
*
* Author: Kevin Hilman, Deep Root Systems, LLC
*
* Defines the cpu_is_*() macros for runtime detection of DaVinci
* device type. In addtion, if support for a given device is not
* compiled in to the kernel, the macros return 0 so that
* resulting code can be optimized out.
*
* 2009 (c) Deep Root Systems, LLC. This file is licensed under
* the terms of the GNU General Public License version 2. This program
* is licensed "as is" without any warranty of any kind, whether express
* or implied.
*/
#ifndef _ASM_ARCH_CPU_H
#define _ASM_ARCH_CPU_H
extern
unsigned
int
davinci_rev
(
void
);
#define IS_DAVINCI_CPU(type, id) \
static inline int is_davinci_dm ##type(void) \
{ \
return (davinci_rev() == (id)) ? 1 : 0; \
}
IS_DAVINCI_CPU
(
644
x
,
0x6446
)
IS_DAVINCI_CPU
(
646
x
,
0x6467
)
IS_DAVINCI_CPU
(
355
,
0x355
)
#ifdef CONFIG_ARCH_DAVINCI_DM644x
#define cpu_is_davinci_dm644x() is_davinci_dm644x()
#else
#define cpu_is_davinci_dm644x() 0
#endif
#ifdef CONFIG_ARCH_DAVINCI_DM646x
#define cpu_is_davinci_dm646x() is_davinci_dm646x()
#else
#define cpu_is_davinci_dm646x() 0
#endif
#ifdef CONFIG_ARCH_DAVINCI_DM355
#define cpu_is_davinci_dm355() is_davinci_dm355()
#else
#define cpu_is_davinci_dm355() 0
#endif
#endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment