mxc.h 5.6 KB
Newer Older
1
/*
Y
Yong Shen 已提交
2
 * Copyright 2004-2007, 2010 Freescale Semiconductor, Inc. All Rights Reserved.
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
 * Copyright (C) 2008 Juergen Beisert (kernel@pengutronix.de)
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * as published by the Free Software Foundation; either version 2
 * of the License, or (at your option) any later version.
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 * MA 02110-1301, USA.
18 19 20 21 22
 */

#ifndef __ASM_ARCH_MXC_H__
#define __ASM_ARCH_MXC_H__

Y
Yong Shen 已提交
23 24
#include <linux/types.h>

25 26 27 28
#ifndef __ASM_ARCH_MXC_HARDWARE_H__
#error "Do not include directly."
#endif

S
Sascha Hauer 已提交
29 30
#define MXC_CPU_MX1		1
#define MXC_CPU_MX21		21
S
Sascha Hauer 已提交
31
#define MXC_CPU_MX25		25
S
Sascha Hauer 已提交
32 33 34
#define MXC_CPU_MX27		27
#define MXC_CPU_MX31		31
#define MXC_CPU_MX35		35
35
#define MXC_CPU_MX50		50
36
#define MXC_CPU_MX51		51
37
#define MXC_CPU_MX53		53
38
#define MXC_CPU_MXC91231	91231
S
Sascha Hauer 已提交
39

40 41 42 43 44 45 46 47 48 49 50 51 52 53
#define IMX_CHIP_REVISION_1_0		0x10
#define IMX_CHIP_REVISION_1_1		0x11
#define IMX_CHIP_REVISION_1_2		0x12
#define IMX_CHIP_REVISION_1_3		0x13
#define IMX_CHIP_REVISION_2_0		0x20
#define IMX_CHIP_REVISION_2_1		0x21
#define IMX_CHIP_REVISION_2_2		0x22
#define IMX_CHIP_REVISION_2_3		0x23
#define IMX_CHIP_REVISION_3_0		0x30
#define IMX_CHIP_REVISION_3_1		0x31
#define IMX_CHIP_REVISION_3_2		0x32
#define IMX_CHIP_REVISION_3_3		0x33
#define IMX_CHIP_REVISION_UNKNOWN	0xff

54 55 56 57 58 59 60 61 62 63 64 65 66 67
#define IMX_CHIP_REVISION_1_0_STRING		"1.0"
#define IMX_CHIP_REVISION_1_1_STRING		"1.1"
#define IMX_CHIP_REVISION_1_2_STRING		"1.2"
#define IMX_CHIP_REVISION_1_3_STRING		"1.3"
#define IMX_CHIP_REVISION_2_0_STRING		"2.0"
#define IMX_CHIP_REVISION_2_1_STRING		"2.1"
#define IMX_CHIP_REVISION_2_2_STRING		"2.2"
#define IMX_CHIP_REVISION_2_3_STRING		"2.3"
#define IMX_CHIP_REVISION_3_0_STRING		"3.0"
#define IMX_CHIP_REVISION_3_1_STRING		"3.1"
#define IMX_CHIP_REVISION_3_2_STRING		"3.2"
#define IMX_CHIP_REVISION_3_3_STRING		"3.3"
#define IMX_CHIP_REVISION_UNKNOWN_STRING	"unknown"

S
Sascha Hauer 已提交
68 69 70 71 72 73 74 75 76 77 78 79 80 81
#ifndef __ASSEMBLY__
extern unsigned int __mxc_cpu_type;
#endif

#ifdef CONFIG_ARCH_MX1
# ifdef mxc_cpu_type
#  undef mxc_cpu_type
#  define mxc_cpu_type __mxc_cpu_type
# else
#  define mxc_cpu_type MXC_CPU_MX1
# endif
# define cpu_is_mx1()		(mxc_cpu_type == MXC_CPU_MX1)
#else
# define cpu_is_mx1()		(0)
82 83
#endif

S
Sascha Hauer 已提交
84 85 86 87 88 89 90 91 92 93
#ifdef CONFIG_MACH_MX21
# ifdef mxc_cpu_type
#  undef mxc_cpu_type
#  define mxc_cpu_type __mxc_cpu_type
# else
#  define mxc_cpu_type MXC_CPU_MX21
# endif
# define cpu_is_mx21()		(mxc_cpu_type == MXC_CPU_MX21)
#else
# define cpu_is_mx21()		(0)
94 95
#endif

S
Sascha Hauer 已提交
96 97 98 99 100 101 102 103 104 105 106 107
#ifdef CONFIG_ARCH_MX25
# ifdef mxc_cpu_type
#  undef mxc_cpu_type
#  define mxc_cpu_type __mxc_cpu_type
# else
#  define mxc_cpu_type MXC_CPU_MX25
# endif
# define cpu_is_mx25()		(mxc_cpu_type == MXC_CPU_MX25)
#else
# define cpu_is_mx25()		(0)
#endif

S
Sascha Hauer 已提交
108 109 110 111 112 113 114 115 116 117
#ifdef CONFIG_MACH_MX27
# ifdef mxc_cpu_type
#  undef mxc_cpu_type
#  define mxc_cpu_type __mxc_cpu_type
# else
#  define mxc_cpu_type MXC_CPU_MX27
# endif
# define cpu_is_mx27()		(mxc_cpu_type == MXC_CPU_MX27)
#else
# define cpu_is_mx27()		(0)
118 119
#endif

R
Richard Zhao 已提交
120
#ifdef CONFIG_SOC_IMX31
S
Sascha Hauer 已提交
121 122 123 124 125 126 127 128 129 130 131
# ifdef mxc_cpu_type
#  undef mxc_cpu_type
#  define mxc_cpu_type __mxc_cpu_type
# else
#  define mxc_cpu_type MXC_CPU_MX31
# endif
# define cpu_is_mx31()		(mxc_cpu_type == MXC_CPU_MX31)
#else
# define cpu_is_mx31()		(0)
#endif

R
Richard Zhao 已提交
132
#ifdef CONFIG_SOC_IMX35
S
Sascha Hauer 已提交
133 134 135 136 137 138 139 140 141
# ifdef mxc_cpu_type
#  undef mxc_cpu_type
#  define mxc_cpu_type __mxc_cpu_type
# else
#  define mxc_cpu_type MXC_CPU_MX35
# endif
# define cpu_is_mx35()		(mxc_cpu_type == MXC_CPU_MX35)
#else
# define cpu_is_mx35()		(0)
142 143
#endif

R
Richard Zhao 已提交
144
#ifdef CONFIG_SOC_IMX50
145 146 147 148 149 150 151 152 153 154 155
# ifdef mxc_cpu_type
#  undef mxc_cpu_type
#  define mxc_cpu_type __mxc_cpu_type
# else
#  define mxc_cpu_type MXC_CPU_MX50
# endif
# define cpu_is_mx50()		(mxc_cpu_type == MXC_CPU_MX50)
#else
# define cpu_is_mx50()		(0)
#endif

R
Richard Zhao 已提交
156
#ifdef CONFIG_SOC_IMX51
157 158 159 160 161 162 163 164 165 166 167
# ifdef mxc_cpu_type
#  undef mxc_cpu_type
#  define mxc_cpu_type __mxc_cpu_type
# else
#  define mxc_cpu_type MXC_CPU_MX51
# endif
# define cpu_is_mx51()		(mxc_cpu_type == MXC_CPU_MX51)
#else
# define cpu_is_mx51()		(0)
#endif

R
Richard Zhao 已提交
168
#ifdef CONFIG_SOC_IMX53
169 170 171 172 173 174 175 176 177 178 179
# ifdef mxc_cpu_type
#  undef mxc_cpu_type
#  define mxc_cpu_type __mxc_cpu_type
# else
#  define mxc_cpu_type MXC_CPU_MX53
# endif
# define cpu_is_mx53()		(mxc_cpu_type == MXC_CPU_MX53)
#else
# define cpu_is_mx53()		(0)
#endif

180 181 182 183 184 185 186 187 188 189 190 191
#ifdef CONFIG_ARCH_MXC91231
# ifdef mxc_cpu_type
#  undef mxc_cpu_type
#  define mxc_cpu_type __mxc_cpu_type
# else
#  define mxc_cpu_type MXC_CPU_MXC91231
# endif
# define cpu_is_mxc91231()	(mxc_cpu_type == MXC_CPU_MXC91231)
#else
# define cpu_is_mxc91231()	(0)
#endif

Y
Yong Shen 已提交
192 193 194 195 196 197
#ifndef __ASSEMBLY__

struct cpu_op {
	u32 cpu_rate;
};

198 199 200 201 202 203 204 205 206
int tzic_enable_wake(int is_idle);
enum mxc_cpu_pwr_mode {
	WAIT_CLOCKED,		/* wfi only */
	WAIT_UNCLOCKED,		/* WAIT */
	WAIT_UNCLOCKED_POWER_OFF,	/* WAIT + SRPG */
	STOP_POWER_ON,		/* just STOP */
	STOP_POWER_OFF,		/* STOP + SRPG */
};

Y
Yong Shen 已提交
207 208 209
extern struct cpu_op *(*get_cpu_op)(int *op);
#endif

L
Luotao Fu 已提交
210
#if defined(CONFIG_ARCH_MX3) || defined(CONFIG_ARCH_MX2)
211
/* These are deprecated, use mx[23][157]_setup_weimcs instead. */
212 213 214
#define CSCR_U(n) (IO_ADDRESS(WEIM_BASE_ADDR + n * 0x10))
#define CSCR_L(n) (IO_ADDRESS(WEIM_BASE_ADDR + n * 0x10 + 0x4))
#define CSCR_A(n) (IO_ADDRESS(WEIM_BASE_ADDR + n * 0x10 + 0x8))
L
Luotao Fu 已提交
215 216
#endif

217
#define cpu_is_mx3()	(cpu_is_mx31() || cpu_is_mx35() || cpu_is_mxc91231())
S
Sascha Hauer 已提交
218 219
#define cpu_is_mx2()	(cpu_is_mx21() || cpu_is_mx27())

220
#endif /*  __ASM_ARCH_MXC_H__ */