Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * DaVinci CPU type detection
0004  *
0005  * Author: Kevin Hilman, Deep Root Systems, LLC
0006  *
0007  * Defines the cpu_is_*() macros for runtime detection of DaVinci
0008  * device type.  In addition, if support for a given device is not
0009  * compiled in to the kernel, the macros return 0 so that
0010  * resulting code can be optimized out.
0011  *
0012  * 2009 (c) Deep Root Systems, LLC.
0013  */
0014 #ifndef _ASM_ARCH_CPU_H
0015 #define _ASM_ARCH_CPU_H
0016 
0017 #include "common.h"
0018 
0019 struct davinci_id {
0020     u8  variant;    /* JTAG ID bits 31:28 */
0021     u16 part_no;    /* JTAG ID bits 27:12 */
0022     u16 manufacturer;   /* JTAG ID bits 11:1 */
0023     u32 cpu_id;
0024     char    *name;
0025 };
0026 
0027 /* Can use lower 16 bits of cpu id  for a variant when required */
0028 #define DAVINCI_CPU_ID_DM6446       0x64460000
0029 #define DAVINCI_CPU_ID_DM6467       0x64670000
0030 #define DAVINCI_CPU_ID_DM355        0x03550000
0031 #define DAVINCI_CPU_ID_DM365        0x03650000
0032 #define DAVINCI_CPU_ID_DA830        0x08300000
0033 #define DAVINCI_CPU_ID_DA850        0x08500000
0034 
0035 #define IS_DAVINCI_CPU(type, id)                    \
0036 static inline int is_davinci_ ##type(void)              \
0037 {                                   \
0038     return (davinci_soc_info.cpu_id == (id));           \
0039 }
0040 
0041 IS_DAVINCI_CPU(dm644x, DAVINCI_CPU_ID_DM6446)
0042 IS_DAVINCI_CPU(dm646x, DAVINCI_CPU_ID_DM6467)
0043 IS_DAVINCI_CPU(dm355, DAVINCI_CPU_ID_DM355)
0044 IS_DAVINCI_CPU(dm365, DAVINCI_CPU_ID_DM365)
0045 IS_DAVINCI_CPU(da830, DAVINCI_CPU_ID_DA830)
0046 IS_DAVINCI_CPU(da850, DAVINCI_CPU_ID_DA850)
0047 
0048 #ifdef CONFIG_ARCH_DAVINCI_DM644x
0049 #define cpu_is_davinci_dm644x() is_davinci_dm644x()
0050 #else
0051 #define cpu_is_davinci_dm644x() 0
0052 #endif
0053 
0054 #ifdef CONFIG_ARCH_DAVINCI_DM646x
0055 #define cpu_is_davinci_dm646x() is_davinci_dm646x()
0056 #else
0057 #define cpu_is_davinci_dm646x() 0
0058 #endif
0059 
0060 #ifdef CONFIG_ARCH_DAVINCI_DM355
0061 #define cpu_is_davinci_dm355() is_davinci_dm355()
0062 #else
0063 #define cpu_is_davinci_dm355() 0
0064 #endif
0065 
0066 #ifdef CONFIG_ARCH_DAVINCI_DM365
0067 #define cpu_is_davinci_dm365() is_davinci_dm365()
0068 #else
0069 #define cpu_is_davinci_dm365() 0
0070 #endif
0071 
0072 #ifdef CONFIG_ARCH_DAVINCI_DA830
0073 #define cpu_is_davinci_da830() is_davinci_da830()
0074 #else
0075 #define cpu_is_davinci_da830() 0
0076 #endif
0077 
0078 #ifdef CONFIG_ARCH_DAVINCI_DA850
0079 #define cpu_is_davinci_da850() is_davinci_da850()
0080 #else
0081 #define cpu_is_davinci_da850() 0
0082 #endif
0083 
0084 #endif