File Index
Files and directories
Sign in
FILE

omap1-soc.h

File preview with syntax highlighting.

linux-6.19.14/include/linux/soc/ti/omap1-soc.h C
  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/*
 18 * Test if multicore OMAP support is needed
 19 */
 20#undef MULTI_OMAP1
 21#undef OMAP_NAME
 22
 23#ifdef CONFIG_ARCH_OMAP15XX
 24# ifdef OMAP_NAME
 25#  undef  MULTI_OMAP1
 26#  define MULTI_OMAP1
 27# else
 28#  define OMAP_NAME omap1510
 29# endif
 30#endif
 31#ifdef CONFIG_ARCH_OMAP16XX
 32# ifdef OMAP_NAME
 33#  undef  MULTI_OMAP1
 34#  define MULTI_OMAP1
 35# else
 36#  define OMAP_NAME omap16xx
 37# endif
 38#endif
 39
 40/*
 41 * omap_rev bits:
 42 * CPU id bits	(0730, 1510, 1710, 2422...)	[31:16]
 43 * CPU revision	(See _REV_ defined in cpu.h)	[15:08]
 44 * CPU class bits (15xx, 16xx, 24xx, 34xx...)	[07:00]
 45 */
 46unsigned int omap_rev(void);
 47
 48/*
 49 * Get the CPU revision for OMAP devices
 50 */
 51#define GET_OMAP_REVISION()	((omap_rev() >> 8) & 0xff)
 52
 53/*
 54 * Macros to group OMAP into cpu classes.
 55 * These can be used in most places.
 56 * cpu_is_omap15xx():	True for OMAP1510, OMAP5910 and OMAP310
 57 * cpu_is_omap16xx():	True for OMAP1610, OMAP5912 and OMAP1710
 58 */
 59#define GET_OMAP_CLASS	(omap_rev() & 0xff)
 60
 61#define IS_OMAP_CLASS(class, id)			\
 62static inline int is_omap ##class (void)		\
 63{							\
 64	return (GET_OMAP_CLASS == (id)) ? 1 : 0;	\
 65}
 66
 67#define GET_OMAP_SUBCLASS	((omap_rev() >> 20) & 0x0fff)
 68
 69#define IS_OMAP_SUBCLASS(subclass, id)			\
 70static inline int is_omap ##subclass (void)		\
 71{							\
 72	return (GET_OMAP_SUBCLASS == (id)) ? 1 : 0;	\
 73}
 74
 75IS_OMAP_CLASS(15xx, 0x15)
 76IS_OMAP_CLASS(16xx, 0x16)
 77
 78#define cpu_is_omap15xx()		0
 79#define cpu_is_omap16xx()		0
 80
 81#if defined(MULTI_OMAP1)
 82# if defined(CONFIG_ARCH_OMAP15XX)
 83#  undef  cpu_is_omap15xx
 84#  define cpu_is_omap15xx()		is_omap15xx()
 85# endif
 86# if defined(CONFIG_ARCH_OMAP16XX)
 87#  undef  cpu_is_omap16xx
 88#  define cpu_is_omap16xx()		is_omap16xx()
 89# endif
 90#else
 91# if defined(CONFIG_ARCH_OMAP15XX)
 92#  undef  cpu_is_omap15xx
 93#  define cpu_is_omap15xx()		1
 94# endif
 95# if defined(CONFIG_ARCH_OMAP16XX)
 96#  undef  cpu_is_omap16xx
 97#  define cpu_is_omap16xx()		1
 98# endif
 99#endif
100
101/*
102 * Macros to detect individual cpu types.
103 * These are only rarely needed.
104 * cpu_is_omap310():	True for OMAP310
105 * cpu_is_omap1510():	True for OMAP1510
106 * cpu_is_omap1610():	True for OMAP1610
107 * cpu_is_omap1611():	True for OMAP1611
108 * cpu_is_omap5912():	True for OMAP5912
109 * cpu_is_omap1621():	True for OMAP1621
110 * cpu_is_omap1710():	True for OMAP1710
111 */
112#define GET_OMAP_TYPE	((omap_rev() >> 16) & 0xffff)
113
114#define IS_OMAP_TYPE(type, id)				\
115static inline int is_omap ##type (void)			\
116{							\
117	return (GET_OMAP_TYPE == (id)) ? 1 : 0;		\
118}
119
120IS_OMAP_TYPE(310, 0x0310)
121IS_OMAP_TYPE(1510, 0x1510)
122IS_OMAP_TYPE(1610, 0x1610)
123IS_OMAP_TYPE(1611, 0x1611)
124IS_OMAP_TYPE(5912, 0x1611)
125IS_OMAP_TYPE(1621, 0x1621)
126IS_OMAP_TYPE(1710, 0x1710)
127
128#define cpu_is_omap310()		0
129#define cpu_is_omap1510()		0
130#define cpu_is_omap1610()		0
131#define cpu_is_omap5912()		0
132#define cpu_is_omap1611()		0
133#define cpu_is_omap1621()		0
134#define cpu_is_omap1710()		0
135
136#define cpu_class_is_omap1()		1
137
138/*
139 * Whether we have MULTI_OMAP1 or not, we still need to distinguish
140 * between 310 vs. 1510 and 1611B/5912 vs. 1710.
141 */
142
143#if defined(CONFIG_ARCH_OMAP15XX)
144# undef  cpu_is_omap310
145# undef  cpu_is_omap1510
146# define cpu_is_omap310()		is_omap310()
147# define cpu_is_omap1510()		is_omap1510()
148#endif
149
150#if defined(CONFIG_ARCH_OMAP16XX)
151# undef  cpu_is_omap1610
152# undef  cpu_is_omap1611
153# undef  cpu_is_omap5912
154# undef  cpu_is_omap1621
155# undef  cpu_is_omap1710
156# define cpu_is_omap1610()		is_omap1610()
157# define cpu_is_omap1611()		is_omap1611()
158# define cpu_is_omap5912()		is_omap5912()
159# define cpu_is_omap1621()		is_omap1621()
160# define cpu_is_omap1710()		is_omap1710()
161#endif
162
163#endif
~/ Read-only file preview.