ARM: imx: Add core definitions for MX53
[firefly-linux-kernel-4.4.55.git] / arch / arm / plat-mxc / include / mach / mxc.h
1 /*
2  * Copyright 2004-2007, 2010 Freescale Semiconductor, Inc. All Rights Reserved.
3  * Copyright (C) 2008 Juergen Beisert (kernel@pengutronix.de)
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU General Public License
7  * as published by the Free Software Foundation; either version 2
8  * of the License, or (at your option) any later version.
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
17  * MA 02110-1301, USA.
18  */
19
20 #ifndef __ASM_ARCH_MXC_H__
21 #define __ASM_ARCH_MXC_H__
22
23 #include <linux/types.h>
24
25 #ifndef __ASM_ARCH_MXC_HARDWARE_H__
26 #error "Do not include directly."
27 #endif
28
29 #define MXC_CPU_MX1             1
30 #define MXC_CPU_MX21            21
31 #define MXC_CPU_MX25            25
32 #define MXC_CPU_MX27            27
33 #define MXC_CPU_MX31            31
34 #define MXC_CPU_MX35            35
35 #define MXC_CPU_MX51            51
36 #define MXC_CPU_MX53            53
37 #define MXC_CPU_MXC91231        91231
38
39 #ifndef __ASSEMBLY__
40 extern unsigned int __mxc_cpu_type;
41 #endif
42
43 #ifdef CONFIG_ARCH_MX1
44 # ifdef mxc_cpu_type
45 #  undef mxc_cpu_type
46 #  define mxc_cpu_type __mxc_cpu_type
47 # else
48 #  define mxc_cpu_type MXC_CPU_MX1
49 # endif
50 # define cpu_is_mx1()           (mxc_cpu_type == MXC_CPU_MX1)
51 #else
52 # define cpu_is_mx1()           (0)
53 #endif
54
55 #ifdef CONFIG_MACH_MX21
56 # ifdef mxc_cpu_type
57 #  undef mxc_cpu_type
58 #  define mxc_cpu_type __mxc_cpu_type
59 # else
60 #  define mxc_cpu_type MXC_CPU_MX21
61 # endif
62 # define cpu_is_mx21()          (mxc_cpu_type == MXC_CPU_MX21)
63 #else
64 # define cpu_is_mx21()          (0)
65 #endif
66
67 #ifdef CONFIG_ARCH_MX25
68 # ifdef mxc_cpu_type
69 #  undef mxc_cpu_type
70 #  define mxc_cpu_type __mxc_cpu_type
71 # else
72 #  define mxc_cpu_type MXC_CPU_MX25
73 # endif
74 # define cpu_is_mx25()          (mxc_cpu_type == MXC_CPU_MX25)
75 #else
76 # define cpu_is_mx25()          (0)
77 #endif
78
79 #ifdef CONFIG_MACH_MX27
80 # ifdef mxc_cpu_type
81 #  undef mxc_cpu_type
82 #  define mxc_cpu_type __mxc_cpu_type
83 # else
84 #  define mxc_cpu_type MXC_CPU_MX27
85 # endif
86 # define cpu_is_mx27()          (mxc_cpu_type == MXC_CPU_MX27)
87 #else
88 # define cpu_is_mx27()          (0)
89 #endif
90
91 #ifdef CONFIG_ARCH_MX31
92 # ifdef mxc_cpu_type
93 #  undef mxc_cpu_type
94 #  define mxc_cpu_type __mxc_cpu_type
95 # else
96 #  define mxc_cpu_type MXC_CPU_MX31
97 # endif
98 # define cpu_is_mx31()          (mxc_cpu_type == MXC_CPU_MX31)
99 #else
100 # define cpu_is_mx31()          (0)
101 #endif
102
103 #ifdef CONFIG_ARCH_MX35
104 # ifdef mxc_cpu_type
105 #  undef mxc_cpu_type
106 #  define mxc_cpu_type __mxc_cpu_type
107 # else
108 #  define mxc_cpu_type MXC_CPU_MX35
109 # endif
110 # define cpu_is_mx35()          (mxc_cpu_type == MXC_CPU_MX35)
111 #else
112 # define cpu_is_mx35()          (0)
113 #endif
114
115 #ifdef CONFIG_ARCH_MX5
116 # ifdef mxc_cpu_type
117 #  undef mxc_cpu_type
118 #  define mxc_cpu_type __mxc_cpu_type
119 # else
120 #  define mxc_cpu_type MXC_CPU_MX51
121 # endif
122 # define cpu_is_mx51()          (mxc_cpu_type == MXC_CPU_MX51)
123 # define cpu_is_mx53()          (mxc_cpu_type == MXC_CPU_MX53)
124 #else
125 # define cpu_is_mx51()          (0)
126 #endif
127
128 #ifdef CONFIG_ARCH_MXC91231
129 # ifdef mxc_cpu_type
130 #  undef mxc_cpu_type
131 #  define mxc_cpu_type __mxc_cpu_type
132 # else
133 #  define mxc_cpu_type MXC_CPU_MXC91231
134 # endif
135 # define cpu_is_mxc91231()      (mxc_cpu_type == MXC_CPU_MXC91231)
136 #else
137 # define cpu_is_mxc91231()      (0)
138 #endif
139
140 #ifndef __ASSEMBLY__
141
142 struct cpu_op {
143         u32 cpu_rate;
144 };
145
146 extern struct cpu_op *(*get_cpu_op)(int *op);
147 #endif
148
149 #if defined(CONFIG_ARCH_MX3) || defined(CONFIG_ARCH_MX2)
150 /* These are deprecated, use mx[23][157]_setup_weimcs instead. */
151 #define CSCR_U(n) (IO_ADDRESS(WEIM_BASE_ADDR + n * 0x10))
152 #define CSCR_L(n) (IO_ADDRESS(WEIM_BASE_ADDR + n * 0x10 + 0x4))
153 #define CSCR_A(n) (IO_ADDRESS(WEIM_BASE_ADDR + n * 0x10 + 0x8))
154 #endif
155
156 #define cpu_is_mx3()    (cpu_is_mx31() || cpu_is_mx35() || cpu_is_mxc91231())
157 #define cpu_is_mx2()    (cpu_is_mx21() || cpu_is_mx27())
158
159 #endif /*  __ASM_ARCH_MXC_H__ */