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