root/arch/arm/mach-omap1/include/mach/soc.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0-or-later */
   2 /*
   3  * OMAP cpu type detection
   4  *
   5  * Copyright (C) 2004, 2008 Nokia Corporation
   6  *
   7  * Copyright (C) 2009-11 Texas Instruments.
   8  *
   9  * Written by Tony Lindgren <tony.lindgren@nokia.com>
  10  *
  11  * Added OMAP4/5 specific defines - Santosh Shilimkar<santosh.shilimkar@ti.com>
  12  */
  13 
  14 #ifndef __ASM_ARCH_OMAP_CPU_H
  15 #define __ASM_ARCH_OMAP_CPU_H
  16 
  17 #include <asm/irq.h>
  18 #include <mach/hardware.h>
  19 #include <mach/irqs.h>
  20 
  21 #ifndef __ASSEMBLY__
  22 
  23 #include <linux/bitops.h>
  24 
  25 /*
  26  * Test if multicore OMAP support is needed
  27  */
  28 #undef MULTI_OMAP1
  29 #undef OMAP_NAME
  30 
  31 #ifdef CONFIG_ARCH_OMAP730
  32 # ifdef OMAP_NAME
  33 #  undef  MULTI_OMAP1
  34 #  define MULTI_OMAP1
  35 # else
  36 #  define OMAP_NAME omap730
  37 # endif
  38 #endif
  39 #ifdef CONFIG_ARCH_OMAP850
  40 # ifdef OMAP_NAME
  41 #  undef  MULTI_OMAP1
  42 #  define MULTI_OMAP1
  43 # else
  44 #  define OMAP_NAME omap850
  45 # endif
  46 #endif
  47 #ifdef CONFIG_ARCH_OMAP15XX
  48 # ifdef OMAP_NAME
  49 #  undef  MULTI_OMAP1
  50 #  define MULTI_OMAP1
  51 # else
  52 #  define OMAP_NAME omap1510
  53 # endif
  54 #endif
  55 #ifdef CONFIG_ARCH_OMAP16XX
  56 # ifdef OMAP_NAME
  57 #  undef  MULTI_OMAP1
  58 #  define MULTI_OMAP1
  59 # else
  60 #  define OMAP_NAME omap16xx
  61 # endif
  62 #endif
  63 
  64 /*
  65  * omap_rev bits:
  66  * CPU id bits  (0730, 1510, 1710, 2422...)     [31:16]
  67  * CPU revision (See _REV_ defined in cpu.h)    [15:08]
  68  * CPU class bits (15xx, 16xx, 24xx, 34xx...)   [07:00]
  69  */
  70 unsigned int omap_rev(void);
  71 
  72 /*
  73  * Get the CPU revision for OMAP devices
  74  */
  75 #define GET_OMAP_REVISION()     ((omap_rev() >> 8) & 0xff)
  76 
  77 /*
  78  * Macros to group OMAP into cpu classes.
  79  * These can be used in most places.
  80  * cpu_is_omap7xx():    True for OMAP730, OMAP850
  81  * cpu_is_omap15xx():   True for OMAP1510, OMAP5910 and OMAP310
  82  * cpu_is_omap16xx():   True for OMAP1610, OMAP5912 and OMAP1710
  83  */
  84 #define GET_OMAP_CLASS  (omap_rev() & 0xff)
  85 
  86 #define IS_OMAP_CLASS(class, id)                        \
  87 static inline int is_omap ##class (void)                \
  88 {                                                       \
  89         return (GET_OMAP_CLASS == (id)) ? 1 : 0;        \
  90 }
  91 
  92 #define GET_OMAP_SUBCLASS       ((omap_rev() >> 20) & 0x0fff)
  93 
  94 #define IS_OMAP_SUBCLASS(subclass, id)                  \
  95 static inline int is_omap ##subclass (void)             \
  96 {                                                       \
  97         return (GET_OMAP_SUBCLASS == (id)) ? 1 : 0;     \
  98 }
  99 
 100 IS_OMAP_CLASS(7xx, 0x07)
 101 IS_OMAP_CLASS(15xx, 0x15)
 102 IS_OMAP_CLASS(16xx, 0x16)
 103 
 104 #define cpu_is_omap7xx()                0
 105 #define cpu_is_omap15xx()               0
 106 #define cpu_is_omap16xx()               0
 107 
 108 #if defined(MULTI_OMAP1)
 109 # if defined(CONFIG_ARCH_OMAP730)
 110 #  undef  cpu_is_omap7xx
 111 #  define cpu_is_omap7xx()              is_omap7xx()
 112 # endif
 113 # if defined(CONFIG_ARCH_OMAP850)
 114 #  undef  cpu_is_omap7xx
 115 #  define cpu_is_omap7xx()              is_omap7xx()
 116 # endif
 117 # if defined(CONFIG_ARCH_OMAP15XX)
 118 #  undef  cpu_is_omap15xx
 119 #  define cpu_is_omap15xx()             is_omap15xx()
 120 # endif
 121 # if defined(CONFIG_ARCH_OMAP16XX)
 122 #  undef  cpu_is_omap16xx
 123 #  define cpu_is_omap16xx()             is_omap16xx()
 124 # endif
 125 #else
 126 # if defined(CONFIG_ARCH_OMAP730)
 127 #  undef  cpu_is_omap7xx
 128 #  define cpu_is_omap7xx()              1
 129 # endif
 130 # if defined(CONFIG_ARCH_OMAP850)
 131 #  undef  cpu_is_omap7xx
 132 #  define cpu_is_omap7xx()              1
 133 # endif
 134 # if defined(CONFIG_ARCH_OMAP15XX)
 135 #  undef  cpu_is_omap15xx
 136 #  define cpu_is_omap15xx()             1
 137 # endif
 138 # if defined(CONFIG_ARCH_OMAP16XX)
 139 #  undef  cpu_is_omap16xx
 140 #  define cpu_is_omap16xx()             1
 141 # endif
 142 #endif
 143 
 144 /*
 145  * Macros to detect individual cpu types.
 146  * These are only rarely needed.
 147  * cpu_is_omap310():    True for OMAP310
 148  * cpu_is_omap1510():   True for OMAP1510
 149  * cpu_is_omap1610():   True for OMAP1610
 150  * cpu_is_omap1611():   True for OMAP1611
 151  * cpu_is_omap5912():   True for OMAP5912
 152  * cpu_is_omap1621():   True for OMAP1621
 153  * cpu_is_omap1710():   True for OMAP1710
 154  */
 155 #define GET_OMAP_TYPE   ((omap_rev() >> 16) & 0xffff)
 156 
 157 #define IS_OMAP_TYPE(type, id)                          \
 158 static inline int is_omap ##type (void)                 \
 159 {                                                       \
 160         return (GET_OMAP_TYPE == (id)) ? 1 : 0;         \
 161 }
 162 
 163 IS_OMAP_TYPE(310, 0x0310)
 164 IS_OMAP_TYPE(1510, 0x1510)
 165 IS_OMAP_TYPE(1610, 0x1610)
 166 IS_OMAP_TYPE(1611, 0x1611)
 167 IS_OMAP_TYPE(5912, 0x1611)
 168 IS_OMAP_TYPE(1621, 0x1621)
 169 IS_OMAP_TYPE(1710, 0x1710)
 170 
 171 #define cpu_is_omap310()                0
 172 #define cpu_is_omap1510()               0
 173 #define cpu_is_omap1610()               0
 174 #define cpu_is_omap5912()               0
 175 #define cpu_is_omap1611()               0
 176 #define cpu_is_omap1621()               0
 177 #define cpu_is_omap1710()               0
 178 
 179 /* These are needed to compile common code */
 180 #ifdef CONFIG_ARCH_OMAP1
 181 #define cpu_is_omap242x()               0
 182 #define cpu_is_omap2430()               0
 183 #define cpu_is_omap243x()               0
 184 #define cpu_is_omap24xx()               0
 185 #define cpu_is_omap34xx()               0
 186 #define cpu_is_omap44xx()               0
 187 #define soc_is_omap54xx()               0
 188 #define soc_is_dra7xx()                 0
 189 #define soc_is_am33xx()                 0
 190 #define cpu_class_is_omap1()            1
 191 #define cpu_class_is_omap2()            0
 192 #endif
 193 
 194 /*
 195  * Whether we have MULTI_OMAP1 or not, we still need to distinguish
 196  * between 310 vs. 1510 and 1611B/5912 vs. 1710.
 197  */
 198 
 199 #if defined(CONFIG_ARCH_OMAP15XX)
 200 # undef  cpu_is_omap310
 201 # undef  cpu_is_omap1510
 202 # define cpu_is_omap310()               is_omap310()
 203 # define cpu_is_omap1510()              is_omap1510()
 204 #endif
 205 
 206 #if defined(CONFIG_ARCH_OMAP16XX)
 207 # undef  cpu_is_omap1610
 208 # undef  cpu_is_omap1611
 209 # undef  cpu_is_omap5912
 210 # undef  cpu_is_omap1621
 211 # undef  cpu_is_omap1710
 212 # define cpu_is_omap1610()              is_omap1610()
 213 # define cpu_is_omap1611()              is_omap1611()
 214 # define cpu_is_omap5912()              is_omap5912()
 215 # define cpu_is_omap1621()              is_omap1621()
 216 # define cpu_is_omap1710()              is_omap1710()
 217 #endif
 218 
 219 #endif  /* __ASSEMBLY__ */
 220 #endif

/* [<][>][^][v][top][bottom][index][help] */