| /* |
| * 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 |
| |
| #include <mach/common.h> |
| |
| struct davinci_id { |
| u8 variant; /* JTAG ID bits 31:28 */ |
| u16 part_no; /* JTAG ID bits 27:12 */ |
| u16 manufacturer; /* JTAG ID bits 11:1 */ |
| u32 cpu_id; |
| char *name; |
| }; |
| |
| /* Can use lower 16 bits of cpu id for a variant when required */ |
| #define DAVINCI_CPU_ID_DM6446 0x64460000 |
| #define DAVINCI_CPU_ID_DM6467 0x64670000 |
| #define DAVINCI_CPU_ID_DM355 0x03550000 |
| #define DAVINCI_CPU_ID_DM365 0x03650000 |
| #define DAVINCI_CPU_ID_DA830 0x08300000 |
| #define DAVINCI_CPU_ID_DA850 0x08500000 |
| #define DAVINCI_CPU_ID_TNETV107X 0x0b8a0000 |
| |
| #define IS_DAVINCI_CPU(type, id) \ |
| static inline int is_davinci_ ##type(void) \ |
| { \ |
| return (davinci_soc_info.cpu_id == (id)); \ |
| } |
| |
| IS_DAVINCI_CPU(dm644x, DAVINCI_CPU_ID_DM6446) |
| IS_DAVINCI_CPU(dm646x, DAVINCI_CPU_ID_DM6467) |
| IS_DAVINCI_CPU(dm355, DAVINCI_CPU_ID_DM355) |
| IS_DAVINCI_CPU(dm365, DAVINCI_CPU_ID_DM365) |
| IS_DAVINCI_CPU(da830, DAVINCI_CPU_ID_DA830) |
| IS_DAVINCI_CPU(da850, DAVINCI_CPU_ID_DA850) |
| IS_DAVINCI_CPU(tnetv107x, DAVINCI_CPU_ID_TNETV107X) |
| |
| #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 |
| |
| #ifdef CONFIG_ARCH_DAVINCI_DM365 |
| #define cpu_is_davinci_dm365() is_davinci_dm365() |
| #else |
| #define cpu_is_davinci_dm365() 0 |
| #endif |
| |
| #ifdef CONFIG_ARCH_DAVINCI_DA830 |
| #define cpu_is_davinci_da830() is_davinci_da830() |
| #else |
| #define cpu_is_davinci_da830() 0 |
| #endif |
| |
| #ifdef CONFIG_ARCH_DAVINCI_DA850 |
| #define cpu_is_davinci_da850() is_davinci_da850() |
| #else |
| #define cpu_is_davinci_da850() 0 |
| #endif |
| |
| #ifdef CONFIG_ARCH_DAVINCI_TNETV107X |
| #define cpu_is_davinci_tnetv107x() is_davinci_tnetv107x() |
| #else |
| #define cpu_is_davinci_tnetv107x() 0 |
| #endif |
| |
| #endif |