linux/arch/arm/mach-davinci/include/mach/cputype.h
<<
>>
Prefs
   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
   7 * device type.  In addition, if support for a given device is not
   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
  19#include <mach/common.h>
  20
  21struct 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
  33#define DAVINCI_CPU_ID_DM365            0x03650000
  34#define DAVINCI_CPU_ID_DA830            0x08300000
  35#define DAVINCI_CPU_ID_DA850            0x08500000
  36#define DAVINCI_CPU_ID_TNETV107X        0x0b8a0000
  37
  38#define IS_DAVINCI_CPU(type, id)                                        \
  39static inline int is_davinci_ ##type(void)                              \
  40{                                                                       \
  41        return (davinci_soc_info.cpu_id == (id));                       \
  42}
  43
  44IS_DAVINCI_CPU(dm644x, DAVINCI_CPU_ID_DM6446)
  45IS_DAVINCI_CPU(dm646x, DAVINCI_CPU_ID_DM6467)
  46IS_DAVINCI_CPU(dm355, DAVINCI_CPU_ID_DM355)
  47IS_DAVINCI_CPU(dm365, DAVINCI_CPU_ID_DM365)
  48IS_DAVINCI_CPU(da830, DAVINCI_CPU_ID_DA830)
  49IS_DAVINCI_CPU(da850, DAVINCI_CPU_ID_DA850)
  50IS_DAVINCI_CPU(tnetv107x, DAVINCI_CPU_ID_TNETV107X)
  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
  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
  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
  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
  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
  94#endif
  95