blob: 2bfd2d59b4a66b9998e4bdcb04293180429c7ab8 [file] [log] [blame]
Thomas Gleixner16216332019-05-19 15:51:31 +02001/* SPDX-License-Identifier: GPL-2.0-or-later */
Quinn Jensen52c543f2007-07-09 22:06:53 +01002/*
Anson Huang5739b912015-05-08 01:35:55 +08003 * Copyright 2004-2007, 2010-2015 Freescale Semiconductor, Inc.
Juergen Beisertd0f349f2008-07-05 10:02:50 +02004 * Copyright (C) 2008 Juergen Beisert (kernel@pengutronix.de)
Quinn Jensen52c543f2007-07-09 22:06:53 +01005 */
6
7#ifndef __ASM_ARCH_MXC_H__
8#define __ASM_ARCH_MXC_H__
9
Yong Shen64f102b2010-10-21 21:18:59 +080010#include <linux/types.h>
11
Quinn Jensen52c543f2007-07-09 22:06:53 +010012#ifndef __ASM_ARCH_MXC_HARDWARE_H__
13#error "Do not include directly."
14#endif
15
Sascha Hauer198016e2009-02-06 15:38:22 +010016#define MXC_CPU_MX1 1
17#define MXC_CPU_MX21 21
Sascha Hauer8c25c362009-06-04 11:32:12 +020018#define MXC_CPU_MX25 25
Sascha Hauer198016e2009-02-06 15:38:22 +010019#define MXC_CPU_MX27 27
20#define MXC_CPU_MX31 31
21#define MXC_CPU_MX35 35
Amit Kucheria438caa32010-02-04 12:09:40 -080022#define MXC_CPU_MX51 51
Dinh Nguyenc0abefd2010-11-15 11:29:59 -060023#define MXC_CPU_MX53 53
Shawn Guoa2887542013-08-13 16:59:28 +080024#define MXC_CPU_IMX6SL 0x60
Shawn Guo3c03a2f2013-04-01 22:13:32 +080025#define MXC_CPU_IMX6DL 0x61
Shawn Guod9654dc2014-05-13 21:46:16 +080026#define MXC_CPU_IMX6SX 0x62
Shawn Guo3c03a2f2013-04-01 22:13:32 +080027#define MXC_CPU_IMX6Q 0x63
Frank Li022d0712015-07-10 02:09:41 +080028#define MXC_CPU_IMX6UL 0x64
Leonard Crestezb3ea5752017-06-06 20:50:42 +030029#define MXC_CPU_IMX6ULL 0x65
Anson Huangc90dec02018-09-30 11:32:26 +080030/* virtual cpu id for i.mx6ulz */
31#define MXC_CPU_IMX6ULZ 0x6b
Bai Pingdee5dee2018-03-08 17:34:55 +080032#define MXC_CPU_IMX6SLL 0x67
Anson Huang5739b912015-05-08 01:35:55 +080033#define MXC_CPU_IMX7D 0x72
A.s. Dongde70d0e2018-11-10 15:13:04 +000034#define MXC_CPU_IMX7ULP 0xff
Sascha Hauer198016e2009-02-06 15:38:22 +010035
Anson Huangec336b22014-09-17 11:11:45 +080036#define IMX_DDR_TYPE_LPDDR2 1
37
Sascha Hauer198016e2009-02-06 15:38:22 +010038#ifndef __ASSEMBLY__
39extern unsigned int __mxc_cpu_type;
Robert Schwebeld2db9aa2008-04-02 10:29:30 +010040
Arnd Bergmanna82eb092014-07-03 16:22:54 +020041#ifdef CONFIG_SOC_IMX6SL
Shawn Guo9ba64fe2013-10-17 10:07:09 +080042static inline bool cpu_is_imx6sl(void)
43{
44 return __mxc_cpu_type == MXC_CPU_IMX6SL;
45}
Arnd Bergmanna82eb092014-07-03 16:22:54 +020046#else
47static inline bool cpu_is_imx6sl(void)
48{
49 return false;
50}
51#endif
Shawn Guo9ba64fe2013-10-17 10:07:09 +080052
Shawn Guo3c03a2f2013-04-01 22:13:32 +080053static inline bool cpu_is_imx6dl(void)
54{
55 return __mxc_cpu_type == MXC_CPU_IMX6DL;
56}
57
Shawn Guod9654dc2014-05-13 21:46:16 +080058static inline bool cpu_is_imx6sx(void)
59{
60 return __mxc_cpu_type == MXC_CPU_IMX6SX;
61}
62
Frank Li022d0712015-07-10 02:09:41 +080063static inline bool cpu_is_imx6ul(void)
64{
65 return __mxc_cpu_type == MXC_CPU_IMX6UL;
66}
67
Leonard Crestezb3ea5752017-06-06 20:50:42 +030068static inline bool cpu_is_imx6ull(void)
69{
70 return __mxc_cpu_type == MXC_CPU_IMX6ULL;
71}
72
Anson Huangc90dec02018-09-30 11:32:26 +080073static inline bool cpu_is_imx6ulz(void)
74{
75 return __mxc_cpu_type == MXC_CPU_IMX6ULZ;
76}
77
Bai Pingdee5dee2018-03-08 17:34:55 +080078static inline bool cpu_is_imx6sll(void)
79{
80 return __mxc_cpu_type == MXC_CPU_IMX6SLL;
81}
82
Shawn Guo3c03a2f2013-04-01 22:13:32 +080083static inline bool cpu_is_imx6q(void)
84{
85 return __mxc_cpu_type == MXC_CPU_IMX6Q;
86}
Yong Shen64f102b2010-10-21 21:18:59 +080087
Anson Huang5739b912015-05-08 01:35:55 +080088static inline bool cpu_is_imx7d(void)
89{
90 return __mxc_cpu_type == MXC_CPU_IMX7D;
91}
92
Yong Shen64f102b2010-10-21 21:18:59 +080093struct cpu_op {
94 u32 cpu_rate;
95};
96
Hui Wang010dc8a2011-10-09 17:42:15 +080097int tzic_enable_wake(void);
Dinh Nguyen0adf8822011-03-21 16:30:37 -050098
Yong Shen64f102b2010-10-21 21:18:59 +080099extern struct cpu_op *(*get_cpu_op)(int *op);
100#endif
101
Johannes Bergc5531382016-01-27 17:59:35 +0100102#define imx_readl readl_relaxed
103#define imx_readw readw_relaxed
104#define imx_writel writel_relaxed
105#define imx_writew writew_relaxed
106
Robert Schwebelf304fc42008-03-28 10:59:08 +0100107#endif /* __ASM_ARCH_MXC_H__ */