| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 | 
							- /*
 
-  * linux/arch/arm/mach-omap2/id.c
 
-  *
 
-  * OMAP2 CPU identification code
 
-  *
 
-  * Copyright (C) 2005 Nokia Corporation
 
-  * Written by Tony Lindgren <tony@atomide.com>
 
-  *
 
-  * Copyright (C) 2009-11 Texas Instruments
 
-  * Added OMAP4 support - Santosh Shilimkar <santosh.shilimkar@ti.com>
 
-  *
 
-  * This program is free software; you can redistribute it and/or modify
 
-  * it under the terms of the GNU General Public License version 2 as
 
-  * published by the Free Software Foundation.
 
-  */
 
- #include <linux/module.h>
 
- #include <linux/kernel.h>
 
- #include <linux/init.h>
 
- #include <linux/io.h>
 
- #include <asm/cputype.h>
 
- #include "common.h"
 
- #include "id.h"
 
- #include "soc.h"
 
- #include "control.h"
 
- #define OMAP4_SILICON_TYPE_STANDARD		0x01
 
- #define OMAP4_SILICON_TYPE_PERFORMANCE		0x02
 
- static unsigned int omap_revision;
 
- static const char *cpu_rev;
 
- u32 omap_features;
 
- unsigned int omap_rev(void)
 
- {
 
- 	return omap_revision;
 
- }
 
- EXPORT_SYMBOL(omap_rev);
 
- int omap_type(void)
 
- {
 
- 	u32 val = 0;
 
- 	if (cpu_is_omap24xx()) {
 
- 		val = omap_ctrl_readl(OMAP24XX_CONTROL_STATUS);
 
- 	} else if (soc_is_am33xx()) {
 
- 		val = omap_ctrl_readl(AM33XX_CONTROL_STATUS);
 
- 	} else if (cpu_is_omap34xx()) {
 
- 		val = omap_ctrl_readl(OMAP343X_CONTROL_STATUS);
 
- 	} else if (cpu_is_omap44xx()) {
 
- 		val = omap_ctrl_readl(OMAP4_CTRL_MODULE_CORE_STATUS);
 
- 	} else if (soc_is_omap54xx()) {
 
- 		val = omap_ctrl_readl(OMAP5XXX_CONTROL_STATUS);
 
- 		val &= OMAP5_DEVICETYPE_MASK;
 
- 		val >>= 6;
 
- 		goto out;
 
- 	} else {
 
- 		pr_err("Cannot detect omap type!\n");
 
- 		goto out;
 
- 	}
 
- 	val &= OMAP2_DEVICETYPE_MASK;
 
- 	val >>= 8;
 
- out:
 
- 	return val;
 
- }
 
- EXPORT_SYMBOL(omap_type);
 
- /*----------------------------------------------------------------------------*/
 
- #define OMAP_TAP_IDCODE		0x0204
 
- #define OMAP_TAP_DIE_ID_0	0x0218
 
- #define OMAP_TAP_DIE_ID_1	0x021C
 
- #define OMAP_TAP_DIE_ID_2	0x0220
 
- #define OMAP_TAP_DIE_ID_3	0x0224
 
- #define OMAP_TAP_DIE_ID_44XX_0	0x0200
 
- #define OMAP_TAP_DIE_ID_44XX_1	0x0208
 
- #define OMAP_TAP_DIE_ID_44XX_2	0x020c
 
- #define OMAP_TAP_DIE_ID_44XX_3	0x0210
 
- #define read_tap_reg(reg)	__raw_readl(tap_base  + (reg))
 
- struct omap_id {
 
- 	u16	hawkeye;	/* Silicon type (Hawkeye id) */
 
- 	u8	dev;		/* Device type from production_id reg */
 
- 	u32	type;		/* Combined type id copied to omap_revision */
 
- };
 
- /* Register values to detect the OMAP version */
 
 
  |