blob: e00d6260c3dfb96c25b7a5ab337bec1e108c8e1f [file] [log] [blame]
Quinn Jensen52c543f2007-07-09 22:06:53 +01001/*
Anson Huang5739b912015-05-08 01:35:55 +08002 * Copyright 2004-2007, 2010-2015 Freescale Semiconductor, Inc.
Juergen Beisertd0f349f2008-07-05 10:02:50 +02003 * 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.
Quinn Jensen52c543f2007-07-09 22:06:53 +010018 */
19
20#ifndef __ASM_ARCH_MXC_H__
21#define __ASM_ARCH_MXC_H__
22
Yong Shen64f102b2010-10-21 21:18:59 +080023#include <linux/types.h>
24
Quinn Jensen52c543f2007-07-09 22:06:53 +010025#ifndef __ASM_ARCH_MXC_HARDWARE_H__
26#error "Do not include directly."
27#endif
28
Sascha Hauer198016e2009-02-06 15:38:22 +010029#define MXC_CPU_MX1 1
30#define MXC_CPU_MX21 21
Sascha Hauer8c25c362009-06-04 11:32:12 +020031#define MXC_CPU_MX25 25
Sascha Hauer198016e2009-02-06 15:38:22 +010032#define MXC_CPU_MX27 27
33#define MXC_CPU_MX31 31
34#define MXC_CPU_MX35 35
Amit Kucheria438caa32010-02-04 12:09:40 -080035#define MXC_CPU_MX51 51
Dinh Nguyenc0abefd2010-11-15 11:29:59 -060036#define MXC_CPU_MX53 53
Shawn Guoa2887542013-08-13 16:59:28 +080037#define MXC_CPU_IMX6SL 0x60
Shawn Guo3c03a2f2013-04-01 22:13:32 +080038#define MXC_CPU_IMX6DL 0x61
Shawn Guod9654dc2014-05-13 21:46:16 +080039#define MXC_CPU_IMX6SX 0x62
Shawn Guo3c03a2f2013-04-01 22:13:32 +080040#define MXC_CPU_IMX6Q 0x63
Frank Li022d0712015-07-10 02:09:41 +080041#define MXC_CPU_IMX6UL 0x64
Leonard Crestez72da86a2017-06-06 20:50:42 +030042#define MXC_CPU_IMX6ULL 0x65
Anson Huang5739b912015-05-08 01:35:55 +080043#define MXC_CPU_IMX7D 0x72
Sascha Hauer198016e2009-02-06 15:38:22 +010044
Anson Huangec336b22014-09-17 11:11:45 +080045#define IMX_DDR_TYPE_LPDDR2 1
46
Sascha Hauer198016e2009-02-06 15:38:22 +010047#ifndef __ASSEMBLY__
48extern unsigned int __mxc_cpu_type;
Robert Schwebeld2db9aa2008-04-02 10:29:30 +010049
Arnd Bergmanna82eb092014-07-03 16:22:54 +020050#ifdef CONFIG_SOC_IMX6SL
Shawn Guo9ba64fe2013-10-17 10:07:09 +080051static inline bool cpu_is_imx6sl(void)
52{
53 return __mxc_cpu_type == MXC_CPU_IMX6SL;
54}
Arnd Bergmanna82eb092014-07-03 16:22:54 +020055#else
56static inline bool cpu_is_imx6sl(void)
57{
58 return false;
59}
60#endif
Shawn Guo9ba64fe2013-10-17 10:07:09 +080061
Shawn Guo3c03a2f2013-04-01 22:13:32 +080062static inline bool cpu_is_imx6dl(void)
63{
64 return __mxc_cpu_type == MXC_CPU_IMX6DL;
65}
66
Shawn Guod9654dc2014-05-13 21:46:16 +080067static inline bool cpu_is_imx6sx(void)
68{
69 return __mxc_cpu_type == MXC_CPU_IMX6SX;
70}
71
Frank Li022d0712015-07-10 02:09:41 +080072static inline bool cpu_is_imx6ul(void)
73{
74 return __mxc_cpu_type == MXC_CPU_IMX6UL;
75}
76
Leonard Crestez72da86a2017-06-06 20:50:42 +030077static inline bool cpu_is_imx6ull(void)
78{
79 return __mxc_cpu_type == MXC_CPU_IMX6ULL;
80}
81
Shawn Guo3c03a2f2013-04-01 22:13:32 +080082static inline bool cpu_is_imx6q(void)
83{
84 return __mxc_cpu_type == MXC_CPU_IMX6Q;
85}
Yong Shen64f102b2010-10-21 21:18:59 +080086
Anson Huang5739b912015-05-08 01:35:55 +080087static inline bool cpu_is_imx7d(void)
88{
89 return __mxc_cpu_type == MXC_CPU_IMX7D;
90}
91
Yong Shen64f102b2010-10-21 21:18:59 +080092struct cpu_op {
93 u32 cpu_rate;
94};
95
Hui Wang010dc8a2011-10-09 17:42:15 +080096int tzic_enable_wake(void);
Dinh Nguyen0adf8822011-03-21 16:30:37 -050097
Yong Shen64f102b2010-10-21 21:18:59 +080098extern struct cpu_op *(*get_cpu_op)(int *op);
99#endif
100
Johannes Bergc5531382016-01-27 17:59:35 +0100101#define imx_readl readl_relaxed
102#define imx_readw readw_relaxed
103#define imx_writel writel_relaxed
104#define imx_writew writew_relaxed
105
Robert Schwebelf304fc42008-03-28 10:59:08 +0100106#endif /* __ASM_ARCH_MXC_H__ */