Commit | Line | Data |
---|---|---|
e653034e KH |
1 | /* |
2 | * DaVinci CPU type detection | |
3 | * | |
4 | * Author: Kevin Hilman, Deep Root Systems, LLC | |
5 | * | |
6 | * Defines the cpu_is_*() macros for runtime detection of DaVinci | |
25985edc | 7 | * device type. In addition, if support for a given device is not |
e653034e KH |
8 | * compiled in to the kernel, the macros return 0 so that |
9 | * resulting code can be optimized out. | |
10 | * | |
11 | * 2009 (c) Deep Root Systems, LLC. This file is licensed under | |
12 | * the terms of the GNU General Public License version 2. This program | |
13 | * is licensed "as is" without any warranty of any kind, whether express | |
14 | * or implied. | |
15 | */ | |
16 | #ifndef _ASM_ARCH_CPU_H | |
17 | #define _ASM_ARCH_CPU_H | |
18 | ||
b9ab1279 | 19 | #include <mach/common.h> |
e653034e | 20 | |
b9ab1279 MG |
21 | struct davinci_id { |
22 | u8 variant; /* JTAG ID bits 31:28 */ | |
23 | u16 part_no; /* JTAG ID bits 27:12 */ | |
24 | u16 manufacturer; /* JTAG ID bits 11:1 */ | |
25 | u32 cpu_id; | |
26 | char *name; | |
27 | }; | |
28 | ||
29 | /* Can use lower 16 bits of cpu id for a variant when required */ | |
30 | #define DAVINCI_CPU_ID_DM6446 0x64460000 | |
31 | #define DAVINCI_CPU_ID_DM6467 0x64670000 | |
32 | #define DAVINCI_CPU_ID_DM355 0x03550000 | |
fb8fcb89 | 33 | #define DAVINCI_CPU_ID_DM365 0x03650000 |
55c79a40 | 34 | #define DAVINCI_CPU_ID_DA830 0x08300000 |
e1a8d7e2 | 35 | #define DAVINCI_CPU_ID_DA850 0x08500000 |
ef03592a | 36 | #define DAVINCI_CPU_ID_TNETV107X 0x0b8a0000 |
b9ab1279 MG |
37 | |
38 | #define IS_DAVINCI_CPU(type, id) \ | |
39 | static inline int is_davinci_ ##type(void) \ | |
40 | { \ | |
41 | return (davinci_soc_info.cpu_id == (id)); \ | |
e653034e KH |
42 | } |
43 | ||
b9ab1279 MG |
44 | IS_DAVINCI_CPU(dm644x, DAVINCI_CPU_ID_DM6446) |
45 | IS_DAVINCI_CPU(dm646x, DAVINCI_CPU_ID_DM6467) | |
46 | IS_DAVINCI_CPU(dm355, DAVINCI_CPU_ID_DM355) | |
fb8fcb89 | 47 | IS_DAVINCI_CPU(dm365, DAVINCI_CPU_ID_DM365) |
55c79a40 | 48 | IS_DAVINCI_CPU(da830, DAVINCI_CPU_ID_DA830) |
e1a8d7e2 | 49 | IS_DAVINCI_CPU(da850, DAVINCI_CPU_ID_DA850) |
ef03592a | 50 | IS_DAVINCI_CPU(tnetv107x, DAVINCI_CPU_ID_TNETV107X) |
e653034e KH |
51 | |
52 | #ifdef CONFIG_ARCH_DAVINCI_DM644x | |
53 | #define cpu_is_davinci_dm644x() is_davinci_dm644x() | |
54 | #else | |
55 | #define cpu_is_davinci_dm644x() 0 | |
56 | #endif | |
57 | ||
58 | #ifdef CONFIG_ARCH_DAVINCI_DM646x | |
59 | #define cpu_is_davinci_dm646x() is_davinci_dm646x() | |
60 | #else | |
61 | #define cpu_is_davinci_dm646x() 0 | |
62 | #endif | |
63 | ||
64 | #ifdef CONFIG_ARCH_DAVINCI_DM355 | |
65 | #define cpu_is_davinci_dm355() is_davinci_dm355() | |
66 | #else | |
67 | #define cpu_is_davinci_dm355() 0 | |
68 | #endif | |
69 | ||
fb8fcb89 SP |
70 | #ifdef CONFIG_ARCH_DAVINCI_DM365 |
71 | #define cpu_is_davinci_dm365() is_davinci_dm365() | |
72 | #else | |
73 | #define cpu_is_davinci_dm365() 0 | |
74 | #endif | |
75 | ||
55c79a40 MG |
76 | #ifdef CONFIG_ARCH_DAVINCI_DA830 |
77 | #define cpu_is_davinci_da830() is_davinci_da830() | |
78 | #else | |
79 | #define cpu_is_davinci_da830() 0 | |
80 | #endif | |
81 | ||
e1a8d7e2 SR |
82 | #ifdef CONFIG_ARCH_DAVINCI_DA850 |
83 | #define cpu_is_davinci_da850() is_davinci_da850() | |
84 | #else | |
85 | #define cpu_is_davinci_da850() 0 | |
86 | #endif | |
87 | ||
ef03592a CC |
88 | #ifdef CONFIG_ARCH_DAVINCI_TNETV107X |
89 | #define cpu_is_davinci_tnetv107x() is_davinci_tnetv107x() | |
90 | #else | |
91 | #define cpu_is_davinci_tnetv107x() 0 | |
92 | #endif | |
93 | ||
e653034e | 94 | #endif |