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