2007-07-10 01:06:53 +04:00
/*
2010-10-21 17:18:59 +04:00
* Copyright 2004 - 2007 , 2010 Freescale Semiconductor , Inc . All Rights Reserved .
2008-07-05 12:02:50 +04:00
* 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 .
2007-07-10 01:06:53 +04:00
*/
# ifndef __ASM_ARCH_MXC_H__
# define __ASM_ARCH_MXC_H__
2010-10-21 17:18:59 +04:00
# include <linux/types.h>
2007-07-10 01:06:53 +04:00
# ifndef __ASM_ARCH_MXC_HARDWARE_H__
# error "Do not include directly."
# endif
2009-02-06 17:38:22 +03:00
# define MXC_CPU_MX1 1
# define MXC_CPU_MX21 21
2009-06-04 13:32:12 +04:00
# define MXC_CPU_MX25 25
2009-02-06 17:38:22 +03:00
# define MXC_CPU_MX27 27
# define MXC_CPU_MX31 31
# define MXC_CPU_MX35 35
2010-02-04 23:09:40 +03:00
# define MXC_CPU_MX51 51
2010-11-15 20:29:59 +03:00
# define MXC_CPU_MX53 53
2013-04-01 18:13:32 +04:00
# define MXC_CPU_IMX6DL 0x61
# define MXC_CPU_IMX6Q 0x63
2009-02-06 17:38:22 +03:00
2010-11-15 20:30:01 +03:00
# 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
2009-02-06 17:38:22 +03:00
# ifndef __ASSEMBLY__
extern unsigned int __mxc_cpu_type ;
# endif
2011-05-19 19:23:44 +04:00
# ifdef CONFIG_SOC_IMX1
2009-02-06 17:38:22 +03:00
# 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)
2008-04-02 13:29:30 +04:00
# endif
2011-05-19 19:23:44 +04:00
# ifdef CONFIG_SOC_IMX21
2009-02-06 17:38:22 +03:00
# 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)
2009-01-26 18:34:52 +03:00
# endif
2011-05-19 19:23:44 +04:00
# ifdef CONFIG_SOC_IMX25
2009-06-04 13:32:12 +04:00
# 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
2011-05-19 19:23:44 +04:00
# ifdef CONFIG_SOC_IMX27
2009-02-06 17:38:22 +03:00
# 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)
2008-07-05 12:02:59 +04:00
# endif
2011-03-03 11:40:03 +03:00
# ifdef CONFIG_SOC_IMX31
2009-02-06 17:38:22 +03:00
# 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
2011-03-03 11:40:03 +03:00
# ifdef CONFIG_SOC_IMX35
2009-02-06 17:38:22 +03:00
# 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)
2009-01-26 18:34:53 +03:00
# endif
2011-03-03 11:40:02 +03:00
# ifdef CONFIG_SOC_IMX51
2010-02-04 23:09:40 +03:00
# 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
2011-03-03 11:40:02 +03:00
# ifdef CONFIG_SOC_IMX53
2010-12-30 14:25:03 +03:00
# 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
2010-10-21 17:18:59 +04:00
# ifndef __ASSEMBLY__
2013-04-01 18:13:32 +04:00
static inline bool cpu_is_imx6dl ( void )
{
return __mxc_cpu_type = = MXC_CPU_IMX6DL ;
}
static inline bool cpu_is_imx6q ( void )
{
return __mxc_cpu_type = = MXC_CPU_IMX6Q ;
}
2010-10-21 17:18:59 +04:00
struct cpu_op {
u32 cpu_rate ;
} ;
2011-10-09 13:42:15 +04:00
int tzic_enable_wake ( void ) ;
2011-03-22 00:30:37 +03:00
2010-10-21 17:18:59 +04:00
extern struct cpu_op * ( * get_cpu_op ) ( int * op ) ;
# endif
2011-04-07 13:13:25 +04:00
# define cpu_is_mx3() (cpu_is_mx31() || cpu_is_mx35())
2009-02-06 17:38:22 +03:00
# define cpu_is_mx2() (cpu_is_mx21() || cpu_is_mx27())
2008-03-28 12:59:08 +03:00
# endif /* __ASM_ARCH_MXC_H__ */