提交 6852215a 编写于 作者: R R Sricharan 提交者: Rajendra Nayak

ARM: DRA7: id: Add cpu detection support for DRA7xx based SoCs'

The DRA7xx is a high-performance, infotainment application device,
based on enhanced OMAP architecture integrated on a 28-nm technology.

Since DRA7 is a platform supported only using DT, the cpu detection
is based on the compatibles passed from DT blobs as suggested here
http://lists.infradead.org/pipermail/linux-arm-kernel/2013-July/187712.htmlSuggested-by: NFelipe Balbi <balbi@ti.com>
Signed-off-by: NR Sricharan <r.sricharan@ti.com>
Signed-off-by: NRajendra Nayak <rnayak@ti.com>
上级 6d0fc190
...@@ -195,6 +195,7 @@ IS_OMAP_TYPE(1710, 0x1710) ...@@ -195,6 +195,7 @@ IS_OMAP_TYPE(1710, 0x1710)
#define cpu_is_omap34xx() 0 #define cpu_is_omap34xx() 0
#define cpu_is_omap44xx() 0 #define cpu_is_omap44xx() 0
#define soc_is_omap54xx() 0 #define soc_is_omap54xx() 0
#define soc_is_dra7xx() 0
#define soc_is_am33xx() 0 #define soc_is_am33xx() 0
#define cpu_class_is_omap1() 1 #define cpu_class_is_omap1() 1
#define cpu_class_is_omap2() 0 #define cpu_class_is_omap2() 0
......
...@@ -61,7 +61,7 @@ int omap_type(void) ...@@ -61,7 +61,7 @@ int omap_type(void)
val = omap_ctrl_readl(OMAP343X_CONTROL_STATUS); val = omap_ctrl_readl(OMAP343X_CONTROL_STATUS);
} else if (cpu_is_omap44xx()) { } else if (cpu_is_omap44xx()) {
val = omap_ctrl_readl(OMAP4_CTRL_MODULE_CORE_STATUS); val = omap_ctrl_readl(OMAP4_CTRL_MODULE_CORE_STATUS);
} else if (soc_is_omap54xx()) { } else if (soc_is_omap54xx() || soc_is_dra7xx()) {
val = omap_ctrl_readl(OMAP5XXX_CONTROL_STATUS); val = omap_ctrl_readl(OMAP5XXX_CONTROL_STATUS);
val &= OMAP5_DEVICETYPE_MASK; val &= OMAP5_DEVICETYPE_MASK;
val >>= 6; val >>= 6;
...@@ -116,7 +116,7 @@ static u16 tap_prod_id; ...@@ -116,7 +116,7 @@ static u16 tap_prod_id;
void omap_get_die_id(struct omap_die_id *odi) void omap_get_die_id(struct omap_die_id *odi)
{ {
if (cpu_is_omap44xx() || soc_is_omap54xx()) { if (cpu_is_omap44xx() || soc_is_omap54xx() || soc_is_dra7xx()) {
odi->id_0 = read_tap_reg(OMAP_TAP_DIE_ID_44XX_0); odi->id_0 = read_tap_reg(OMAP_TAP_DIE_ID_44XX_0);
odi->id_1 = read_tap_reg(OMAP_TAP_DIE_ID_44XX_1); odi->id_1 = read_tap_reg(OMAP_TAP_DIE_ID_44XX_1);
odi->id_2 = read_tap_reg(OMAP_TAP_DIE_ID_44XX_2); odi->id_2 = read_tap_reg(OMAP_TAP_DIE_ID_44XX_2);
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
* Written by Tony Lindgren <tony.lindgren@nokia.com> * Written by Tony Lindgren <tony.lindgren@nokia.com>
* *
* Added OMAP4/5 specific defines - Santosh Shilimkar<santosh.shilimkar@ti.com> * Added OMAP4/5 specific defines - Santosh Shilimkar<santosh.shilimkar@ti.com>
* Added DRA7xxx specific defines - Sricharan R<r.sricharan@ti.com>
* *
* This program is free software; you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License as published by
...@@ -35,6 +36,7 @@ ...@@ -35,6 +36,7 @@
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
#include <linux/bitops.h> #include <linux/bitops.h>
#include <linux/of.h>
/* /*
* Test if multicore OMAP support is needed * Test if multicore OMAP support is needed
...@@ -105,6 +107,15 @@ ...@@ -105,6 +107,15 @@
# endif # endif
#endif #endif
#ifdef CONFIG_SOC_DRA7XX
# ifdef OMAP_NAME
# undef MULTI_OMAP2
# define MULTI_OMAP2
# else
# define OMAP_NAME DRA7XX
# endif
#endif
/* /*
* Omap device type i.e. EMU/HS/TST/GP/BAD * Omap device type i.e. EMU/HS/TST/GP/BAD
*/ */
...@@ -233,6 +244,7 @@ IS_AM_SUBCLASS(437x, 0x437) ...@@ -233,6 +244,7 @@ IS_AM_SUBCLASS(437x, 0x437)
#define cpu_is_omap447x() 0 #define cpu_is_omap447x() 0
#define soc_is_omap54xx() 0 #define soc_is_omap54xx() 0
#define soc_is_omap543x() 0 #define soc_is_omap543x() 0
#define soc_is_dra7xx() 0
#if defined(MULTI_OMAP2) #if defined(MULTI_OMAP2)
# if defined(CONFIG_ARCH_OMAP2) # if defined(CONFIG_ARCH_OMAP2)
...@@ -379,6 +391,11 @@ IS_OMAP_TYPE(3430, 0x3430) ...@@ -379,6 +391,11 @@ IS_OMAP_TYPE(3430, 0x3430)
# define soc_is_omap543x() is_omap543x() # define soc_is_omap543x() is_omap543x()
#endif #endif
#if defined(CONFIG_SOC_DRA7XX)
#undef soc_is_dra7xx
#define soc_is_dra7xx() (of_machine_is_compatible("ti,dra7"))
#endif
/* Various silicon revisions for omap2 */ /* Various silicon revisions for omap2 */
#define OMAP242X_CLASS 0x24200024 #define OMAP242X_CLASS 0x24200024
#define OMAP2420_REV_ES1_0 OMAP242X_CLASS #define OMAP2420_REV_ES1_0 OMAP242X_CLASS
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册