Skip to contentSkip to conversation

ARM: OMAP: remove IP checks from SoC family detection

PATCH New Kevin Hilman 6 participants 23 messages Apr 26, 2012 – Apr 30, 2012

Subsystems (6)
lore
Share & tools
lore
#0 lore raw

cover ARM: OMAP: remove IP checks from SoC family detection

This is a rebased version of this series which is ready for broader testing. I'd especially appreciate testing from those of you with AM35x platforms.

Currently, our SoC detection is based on SoC family detection (using die ID) and the presence of specific IP blocks (or feature.)

This series begins the separation of the SoC family detection and specific IP detection by completely removing IP detection from the SoC family detection (cpu_is_*.)

Applies on top of v3.4-rc4, boot tested on AM3517 EVM.

Kevin

Kevin Hilman (8):
ARM: OMAP: remove unused cpu_is macros that depend on specific IP
checks
ARM: OMAP3: clock data: replace 3503/3517 flag with AM35x flag for
UART4
ARM: OMAP3: clock data: treat all AM35x devices the same
ARM: OMAP: AM35x: remove redunant cpu_is checks for AM3505
ARM: OMAP: clock: remove unused CK_3505 flag
ARM: OMAP: remove unused cpu_is_omap3505()
ARM: OMAP: remove unused cpu_is_omap3530()
ARM: OMAP: AM35xx: convert 3517 detection/flags to AM35xx

 arch/arm/mach-omap2/clock3xxx_data.c          |   22 ++++----------
 arch/arm/mach-omap2/hsmmc.c                   |    8 ++---
 arch/arm/mach-omap2/id.c                      |    7 ++---
 arch/arm/mach-omap2/omap_hwmod_3xxx_data.c    |    2 +-
 arch/arm/mach-omap2/powerdomains3xxx_data.c   |    2 +-
 arch/arm/mach-omap2/usb-musb.c                |    2 +-
 arch/arm/mach-omap2/voltagedomains3xxx_data.c |    2 +-
 arch/arm/plat-omap/include/plat/clkdev_omap.h |    4 +--
 arch/arm/plat-omap/include/plat/cpu.h         |   39 +++++--------------------
 9 files changed, 24 insertions(+), 64 deletions(-)
Signature · 1 line
1.7.9.2
#1 lore raw

PATCH 1/8 ARM: OMAP: remove unused cpu_is macros that depend on specific IP checks

The cpu_is_omap35* macros for 3503, 3515, 3525) are unused.

Remove them in order to start removing IP detection from SoC family detection.

---
 arch/arm/plat-omap/include/plat/cpu.h |   15 ---------------
 1 file changed, 15 deletions(-)
arch/arm/plat-omap/include/plat/cpu.h +0 -15
index dc6a86b..41f3e5a 100644
@@ -291,9 +291,6 @@ IS_OMAP_TYPE(3517, 0x3517)
 #define cpu_is_omap2422()		0
 #define cpu_is_omap2423()		0
 #define cpu_is_omap2430()		0
-#define cpu_is_omap3503()		0
-#define cpu_is_omap3515()		0
-#define cpu_is_omap3525()		0
 #define cpu_is_omap3530()		0
 #define cpu_is_omap3505()		0
 #define cpu_is_omap3517()		0
@@ -348,9 +345,6 @@ IS_OMAP_TYPE(3517, 0x3517)
 
 #if defined(CONFIG_ARCH_OMAP3)
 # undef cpu_is_omap3430
-# undef cpu_is_omap3503
-# undef cpu_is_omap3515
-# undef cpu_is_omap3525
 # undef cpu_is_omap3530
 # undef cpu_is_omap3505
 # undef cpu_is_omap3517
@@ -360,15 +354,6 @@ IS_OMAP_TYPE(3517, 0x3517)
 # undef cpu_is_am33xx
 # undef cpu_is_am335x
 # define cpu_is_omap3430()		is_omap3430()
-# define cpu_is_omap3503()		(cpu_is_omap3430() &&		\
-						(!omap3_has_iva()) &&	\
-						(!omap3_has_sgx()))
-# define cpu_is_omap3515()		(cpu_is_omap3430() &&		\
-						(!omap3_has_iva()) &&	\
-						(omap3_has_sgx()))
-# define cpu_is_omap3525()		(cpu_is_omap3430() &&		\
-						(!omap3_has_sgx()) &&	\
-						(omap3_has_iva()))
 # define cpu_is_omap3530()		(cpu_is_omap3430())
 # define cpu_is_omap3517()		is_omap3517()
 # define cpu_is_omap3505()		(cpu_is_omap3517() &&		\
Signature · 1 line
1.7.9.2
#2 lore raw

PATCH 2/8 ARM: OMAP3: clock data: replace 3503/3517 flag with AM35x flag for UART4

In reply to Kevin Hilman

The AM35x UART4 is common to all AM35x devices, so use CK_AM35XX instead of (CK_3505 | CK_3517), which is equivalent.

---
 arch/arm/mach-omap2/clock3xxx_data.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
arch/arm/mach-omap2/clock3xxx_data.c +1 -1
index f4a626f..dac076a 100644
@@ -3419,7 +3419,7 @@ static struct omap_clk omap3xxx_clks[] = {
 	CLK(NULL,	"per_48m_fck",	&per_48m_fck,	CK_3XXX),
 	CLK(NULL,	"uart3_fck",	&uart3_fck,	CK_3XXX),
 	CLK(NULL,	"uart4_fck",	&uart4_fck,	CK_36XX),
-	CLK(NULL,	"uart4_fck",	&uart4_fck_am35xx, CK_3505 | CK_3517),
+	CLK(NULL,	"uart4_fck",	&uart4_fck_am35xx, CK_AM35XX),
 	CLK(NULL,	"gpt2_fck",	&gpt2_fck,	CK_3XXX),
 	CLK(NULL,	"gpt3_fck",	&gpt3_fck,	CK_3XXX),
 	CLK(NULL,	"gpt4_fck",	&gpt4_fck,	CK_3XXX),
Signature · 1 line
1.7.9.2
#3 lore raw

PATCH 3/8 ARM: OMAP3: clock data: treat all AM35x devices the same

In reply to Kevin Hilman

The init for 3505/3517 specific clocks depends on the ordering of cpu_is checks, is error prone and confusing (there are 2 separate checks for cpu_is_omap3505()).

Remove the 3505-specific checking since CK_3505 flag is not used, and treat all AM35x clocks the same.

This means that the SGX clock (the only AM35x clkdev not currently flagged for 3505) will now be registered on 3505, but that is harmless. That can be cleaned up when the clkdev nodes are removed in favor of them being registered by hwmod.

---
 arch/arm/mach-omap2/clock3xxx_data.c |   14 +-------------
 1 file changed, 1 insertion(+), 13 deletions(-)
arch/arm/mach-omap2/clock3xxx_data.c +1 -13
index dac076a..23b1e78 100644
@@ -3513,21 +3513,9 @@ int __init omap3xxx_clk_init(void)
 	struct omap_clk *c;
 	u32 cpu_clkflg = 0;
 
-	/*
-	 * 3505 must be tested before 3517, since 3517 returns true
-	 * for both AM3517 chips and AM3517 family chips, which
-	 * includes 3505.  Unfortunately there's no obvious family
-	 * test for 3517/3505 :-(
-	 */
-	if (cpu_is_omap3505()) {
-		cpu_mask = RATE_IN_34XX;
-		cpu_clkflg = CK_3505;
-	} else if (cpu_is_omap3517()) {
+	if (cpu_is_omap3517()) {
 		cpu_mask = RATE_IN_34XX;
 		cpu_clkflg = CK_3517;
-	} else if (cpu_is_omap3505()) {
-		cpu_mask = RATE_IN_34XX;
-		cpu_clkflg = CK_3505;
 	} else if (cpu_is_omap3630()) {
 		cpu_mask = (RATE_IN_34XX | RATE_IN_36XX);
 		cpu_clkflg = CK_36XX;
Signature · 1 line
1.7.9.2
#4 lore raw

PATCH 4/8 ARM: OMAP: AM35x: remove redunant cpu_is checks for AM3505

In reply to Kevin Hilman

There are several checks for AM35x devices done using

      if (cpu_is_omap3517() || cpu_is_omap3505())

However, since the 3505 is just a 3517 without an SGX, the 3505 check is redundant because cpu_is_omap3517() will always be true whenever cpu_is_omap3505() is true. From <plat/cpu.h>:

#define cpu_is_omap3505() (cpu_is_omap3517() && !omap3_has_sgx())

Therefore, remove the redunant 3505 checks. This helps move towards removal of SoC detection that depends on specific IP detection.

---
 arch/arm/mach-omap2/hsmmc.c                   |    8 ++++----
 arch/arm/mach-omap2/usb-musb.c                |    2 +-
 arch/arm/mach-omap2/voltagedomains3xxx_data.c |    2 +-
 3 files changed, 6 insertions(+), 6 deletions(-)
arch/arm/mach-omap2/hsmmc.c +4 -4
index b0268ea..a8ca655 100644
@@ -355,7 +355,7 @@ static int __init omap_hsmmc_pdata_init(struct omap2_hsmmc_info *c,
 	 *
 	 * temporary HACK: ocr_mask instead of fixed supply
 	 */
-	if (cpu_is_omap3505() || cpu_is_omap3517())
+	if (cpu_is_omap3517())
 		mmc->slots[0].ocr_mask = MMC_VDD_165_195 |
 					 MMC_VDD_26_27 |
 					 MMC_VDD_27_28 |
@@ -365,7 +365,7 @@ static int __init omap_hsmmc_pdata_init(struct omap2_hsmmc_info *c,
 	else
 		mmc->slots[0].ocr_mask = c->ocr_mask;
 
-	if (!cpu_is_omap3517() && !cpu_is_omap3505())
+	if (!cpu_is_omap3517())
 		mmc->slots[0].features |= HSMMC_HAS_PBIAS;
 
 	if (cpu_is_omap44xx() && (omap_rev() > OMAP4430_REV_ES1_0))
@@ -388,7 +388,7 @@ static int __init omap_hsmmc_pdata_init(struct omap2_hsmmc_info *c,
 			}
 		}
 
-		if (cpu_is_omap3517() || cpu_is_omap3505())
+		if (cpu_is_omap3517())
 			mmc->slots[0].set_power = nop_mmc_set_power;
 
 		/* OMAP3630 HSMMC1 supports only 4-bit */
@@ -400,7 +400,7 @@ static int __init omap_hsmmc_pdata_init(struct omap2_hsmmc_info *c,
 		}
 		break;
 	case 2:
-		if (cpu_is_omap3517() || cpu_is_omap3505())
+		if (cpu_is_omap3517())
 			mmc->slots[0].set_power = am35x_hsmmc2_set_power;
 
 		if (c->ext_clock)
arch/arm/mach-omap2/usb-musb.c +1 -1
index 8d5ed77..bf33b4d 100644
@@ -90,7 +90,7 @@ void __init usb_musb_init(struct omap_musb_board_data *musb_board_data)
 	musb_plat.mode = board_data->mode;
 	musb_plat.extvbus = board_data->extvbus;
 
-	if (cpu_is_omap3517() || cpu_is_omap3505()) {
+	if (cpu_is_omap3517()) {
 		oh_name = "am35x_otg_hs";
 		name = "musb-am35x";
 	} else if (cpu_is_ti81xx()) {
arch/arm/mach-omap2/voltagedomains3xxx_data.c +1 -1
index 57db203..98ed4d7 100644
@@ -118,7 +118,7 @@ void __init omap3xxx_voltagedomains_init(void)
 	}
 #endif
 
-	if (cpu_is_omap3517() || cpu_is_omap3505())
+	if (cpu_is_omap3517())
 		voltdms = voltagedomains_am35xx;
 	else
 		voltdms = voltagedomains_omap3;
Signature · 1 line
1.7.9.2
#5 lore raw

PATCH 5/8 ARM: OMAP: clock: remove unused CK_3505 flag

In reply to Kevin Hilman

This flag is no longer used since clock init all AM35x devices is now the same.

---
 arch/arm/plat-omap/include/plat/clkdev_omap.h |    3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
arch/arm/plat-omap/include/plat/clkdev_omap.h +1 -2
index b299b8d..45afa4d 100644
@@ -34,7 +34,6 @@ struct omap_clk {
 #define CK_243X		(1 << 5)	/* 243x, 253x */
 #define CK_3430ES1	(1 << 6)	/* 34xxES1 only */
 #define CK_3430ES2PLUS	(1 << 7)	/* 34xxES2, ES3, non-Sitara 35xx only */
-#define CK_3505		(1 << 8)
 #define CK_3517		(1 << 9)
 #define CK_36XX		(1 << 10)	/* 36xx/37xx-specific clocks */
 #define CK_443X		(1 << 11)
@@ -44,7 +43,7 @@ struct omap_clk {
 
 
 #define CK_34XX		(CK_3430ES1 | CK_3430ES2PLUS)
-#define CK_AM35XX	(CK_3505 | CK_3517)	/* all Sitara AM35xx */
+#define CK_AM35XX	CK_3517		/* all Sitara AM35xx */
 #define CK_3XXX		(CK_34XX | CK_AM35XX | CK_36XX)
 
 
Signature · 1 line
1.7.9.2
#6 lore raw

PATCH 5/8 ARM: OMAP: clock: remove unused CK_3505 flag

Hi Kevin,

Quoted 15 lines · Kevin Hilman

This flag is no longer used since clock init all AM35x devices is now the same.

---
?arch/arm/plat-omap/include/plat/clkdev_omap.h | ? ?3 +-- ?1 file changed, 1 insertion(+), 2 deletions(-)

arch/arm/plat-omap/include/plat/clkdev_omap.h +0 -0
index b299b8d..45afa4d 100644
@@ -34,7 +34,6 @@ struct omap_clk {
Quoted 5 lines

?#define CK_243X ? ? ? ? ? ? ? ?(1 << 5) ? ? ? ?/* 243x, 253x */ ?#define CK_3430ES1 ? ? (1 << 6) ? ? ? ?/* 34xxES1 only */
?#define CK_3430ES2PLUS (1 << 7) ? ? ? ?/* 34xxES2, ES3, non-Sitara 35xx only */ -#define CK_3505 ? ? ? ? ? ? ? ?(1 << 8)
?#define CK_3517 ? ? ? ? ? ? ? ?(1 << 9)

If this is the only flag remaining, should it better be renamed to CK_35XX?

arch/arm/plat-omap/include/plat/clkdev_omap.h struct omap_clk { · line 48

Quoted 10 lines

?#define CK_36XX ? ? ? ? ? ? ? ?(1 << 10) ? ? ? /* 36xx/37xx-specific clocks */ ?#define CK_443X ? ? ? ? ? ? ? ?(1 << 11)

arch/arm/plat-omap/include/plat/clkdev_omap.h +1 -1
@@ -44,7 +43,7 @@ struct omap_clk {
 
 
 ?#define CK_34XX ? ? ? ? ? ? ? ?(CK_3430ES1 | CK_3430ES2PLUS)
-#define CK_AM35XX ? ? ?(CK_3505 | CK_3517) ? ? /* all Sitara AM35xx */
+#define CK_AM35XX ? ? ?CK_3517 ? ? ? ? /* all Sitara AM35xx */
 ?#define CK_3XXX ? ? ? ? ? ? ? ?(CK_34XX | CK_AM35XX | CK_36XX)
 

Regards,
Jean

Quoted 8 lines
arch/arm/plat-omap/include/plat/clkdev_omap.h +0 -1
--

1.7.9.2

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo at vger.kernel.org
More majordomo info at ?http://vger.kernel.org/majordomo-info.html

#7 lore raw

PATCH 5/8 ARM: OMAP: clock: remove unused CK_3505 flag

Quoted 13 lines · Jean Pihet

Hi Kevin,

Quoted 10 lines · Kevin Hilman

This flag is no longer used since clock init all AM35x devices is now the same.

---
?arch/arm/plat-omap/include/plat/clkdev_omap.h | ? ?3 +-- ?1 file changed, 1 insertion(+), 2 deletions(-)

Quoted 11 lines
Quoted 10 lines
arch/arm/plat-omap/include/plat/clkdev_omap.h +0 -0
index b299b8d..45afa4d 100644
@@ -34,7 +34,6 @@ struct omap_clk {

?#define CK_243X ? ? ? ? ? ? ? ?(1 << 5) ? ? ? ?/* 243x, 253x */ ?#define CK_3430ES1 ? ? (1 << 6) ? ? ? ?/* 34xxES1 only */
?#define CK_3430ES2PLUS (1 << 7) ? ? ? ?/* 34xxES2, ES3, non-Sitara 35xx only */ -#define CK_3505 ? ? ? ? ? ? ? ?(1 << 8)
?#define CK_3517 ? ? ? ? ? ? ? ?(1 << 9)

If this is the only flag remaining, should it better be renamed to CK_35XX?

That happens later in the series.

Kevin

#8 lore raw

PATCH 6/8 ARM: OMAP: remove unused cpu_is_omap3505()

In reply to Kevin Hilman

The 3505 check is now unused and can be removed.

There are no longer any cpu_is_* checks that depend on specific IP detection.

---
 arch/arm/plat-omap/include/plat/cpu.h |    8 +-------
 1 file changed, 1 insertion(+), 7 deletions(-)
arch/arm/plat-omap/include/plat/cpu.h +1 -7
index 41f3e5a..b34bf6c 100644
@@ -250,8 +250,7 @@ IS_AM_SUBCLASS(335x, 0x335)
  * cpu_is_omap2423():	True for OMAP2423
  * cpu_is_omap2430():	True for OMAP2430
  * cpu_is_omap3430():	True for OMAP3430
- * cpu_is_omap3505():	True for OMAP3505
- * cpu_is_omap3517():	True for OMAP3517
+ * cpu_is_omap3517():	True for AM35x: OMAP3517, OMAP3505
  */
 #define GET_OMAP_TYPE	((omap_rev() >> 16) & 0xffff)
 
@@ -275,7 +274,6 @@ IS_OMAP_TYPE(2422, 0x2422)
 IS_OMAP_TYPE(2423, 0x2423)
 IS_OMAP_TYPE(2430, 0x2430)
 IS_OMAP_TYPE(3430, 0x3430)
-IS_OMAP_TYPE(3505, 0x3517)
 IS_OMAP_TYPE(3517, 0x3517)
 
 #define cpu_is_omap310()		0
@@ -292,7 +290,6 @@ IS_OMAP_TYPE(3517, 0x3517)
 #define cpu_is_omap2423()		0
 #define cpu_is_omap2430()		0
 #define cpu_is_omap3530()		0
-#define cpu_is_omap3505()		0
 #define cpu_is_omap3517()		0
 #define cpu_is_omap3430()		0
 #define cpu_is_omap3630()		0
@@ -346,7 +343,6 @@ IS_OMAP_TYPE(3517, 0x3517)
 #if defined(CONFIG_ARCH_OMAP3)
 # undef cpu_is_omap3430
 # undef cpu_is_omap3530
-# undef cpu_is_omap3505
 # undef cpu_is_omap3517
 # undef cpu_is_ti81xx
 # undef cpu_is_ti816x
@@ -356,8 +352,6 @@ IS_OMAP_TYPE(3517, 0x3517)
 # define cpu_is_omap3430()		is_omap3430()
 # define cpu_is_omap3530()		(cpu_is_omap3430())
 # define cpu_is_omap3517()		is_omap3517()
-# define cpu_is_omap3505()		(cpu_is_omap3517() &&		\
-						!omap3_has_sgx())
 # undef cpu_is_omap3630
 # define cpu_is_omap3630()		is_omap363x()
 # define cpu_is_ti81xx()		is_ti81xx()
Signature · 1 line
1.7.9.2
#9 lore raw

PATCH 6/8 ARM: OMAP: remove unused cpu_is_omap3505()

Kevin,

Quoted 17 lines · Kevin Hilman

The 3505 check is now unused and can be removed.

There are no longer any cpu_is_* checks that depend on specific IP detection.

---
?arch/arm/plat-omap/include/plat/cpu.h | ? ?8 +------- ?1 file changed, 1 insertion(+), 7 deletions(-)

arch/arm/plat-omap/include/plat/cpu.h +0 -0
index 41f3e5a..b34bf6c 100644
@@ -250,8 +250,7 @@ IS_AM_SUBCLASS(335x, 0x335)
Quoted 6 lines

?* cpu_is_omap2423(): ?True for OMAP2423
?* cpu_is_omap2430(): ?True for OMAP2430
?* cpu_is_omap3430(): ?True for OMAP3430
- * cpu_is_omap3505(): ?True for OMAP3505
- * cpu_is_omap3517(): ?True for OMAP3517
+ * cpu_is_omap3517(): ?True for AM35x: OMAP3517, OMAP3505

Is cpu_is_omap35xx() a better name for it?

Regards,
Jean

Quoted 43 lines

?*/
?#define GET_OMAP_TYPE ?((omap_rev() >> 16) & 0xffff)

arch/arm/plat-omap/include/plat/cpu.h +0 -1
@@ -275,7 +274,6 @@ IS_OMAP_TYPE(2422, 0x2422)
 ?IS_OMAP_TYPE(2423, 0x2423)
 ?IS_OMAP_TYPE(2430, 0x2430)
 ?IS_OMAP_TYPE(3430, 0x3430)
-IS_OMAP_TYPE(3505, 0x3517)
 ?IS_OMAP_TYPE(3517, 0x3517)
 

?#define cpu_is_omap310() ? ? ? ? ? ? ? 0

arch/arm/plat-omap/include/plat/cpu.h +0 -0
@@ -292,7 +290,6 @@ IS_OMAP_TYPE(3517, 0x3517)

?#define cpu_is_omap2423() ? ? ? ? ? ? ?0
?#define cpu_is_omap2430() ? ? ? ? ? ? ?0
?#define cpu_is_omap3530() ? ? ? ? ? ? ?0
-#define cpu_is_omap3505() ? ? ? ? ? ? ?0
?#define cpu_is_omap3517() ? ? ? ? ? ? ?0
?#define cpu_is_omap3430() ? ? ? ? ? ? ?0
?#define cpu_is_omap3630() ? ? ? ? ? ? ?0

arch/arm/plat-omap/include/plat/cpu.h +0 -0
@@ -346,7 +343,6 @@ IS_OMAP_TYPE(3517, 0x3517)
 ?#if defined(CONFIG_ARCH_OMAP3)

?# undef cpu_is_omap3430
?# undef cpu_is_omap3530
-# undef cpu_is_omap3505
?# undef cpu_is_omap3517
?# undef cpu_is_ti81xx
?# undef cpu_is_ti816x

arch/arm/plat-omap/include/plat/cpu.h +0 -2
@@ -356,8 +352,6 @@ IS_OMAP_TYPE(3517, 0x3517)
 ?# define cpu_is_omap3430() ? ? ? ? ? ? is_omap3430()
 ?# define cpu_is_omap3530() ? ? ? ? ? ? (cpu_is_omap3430())
 ?# define cpu_is_omap3517() ? ? ? ? ? ? is_omap3517()
-# define cpu_is_omap3505() ? ? ? ? ? ? (cpu_is_omap3517() && ? ? ? ? ? \
- ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? !omap3_has_sgx())

?# undef cpu_is_omap3630
?# define cpu_is_omap3630() ? ? ? ? ? ? is_omap363x() ?# define cpu_is_ti81xx() ? ? ? ? ? ? ? is_ti81xx() --
1.7.9.2

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo at vger.kernel.org
More majordomo info at ?http://vger.kernel.org/majordomo-info.html

#10 lore raw

PATCH 6/8 ARM: OMAP: remove unused cpu_is_omap3505()

Op 30 apr. 2012, om 11:07 heeft Jean Pihet het volgende geschreven:

Quoted 15 lines

Kevin,

Quoted 12 lines · Kevin Hilman

The 3505 check is now unused and can be removed.

There are no longer any cpu_is_* checks that depend on specific IP detection.

---
 arch/arm/plat-omap/include/plat/cpu.h |    8 +-------
 1 file changed, 1 insertion(+), 7 deletions(-)
Quoted 12 lines

arch/arm/plat-omap/include/plat/cpu.h IS_AM_SUBCLASS(335x, 0x335) · line 253

Quoted 11 lines
arch/arm/plat-omap/include/plat/cpu.h +1 -2
index 41f3e5a..b34bf6c 100644
@@ -250,8 +250,7 @@ IS_AM_SUBCLASS(335x, 0x335)
 * cpu_is_omap2423():  True for OMAP2423
 * cpu_is_omap2430():  True for OMAP2430
 * cpu_is_omap3430():  True for OMAP3430
- * cpu_is_omap3505():  True for OMAP3505
- * cpu_is_omap3517():  True for OMAP3517
+ * cpu_is_omap3517():  True for AM35x: OMAP3517, OMAP3505

Is cpu_is_omap35xx() a better name for it?

No, since 3530 is the same as 3430 :(

regards,

Koen

#11 lore raw

PATCH 6/8 ARM: OMAP: remove unused cpu_is_omap3505()

In reply to Jean Pihet
Quoted 15 lines · Jean Pihet

Kevin,

Quoted 12 lines · Kevin Hilman

The 3505 check is now unused and can be removed.

There are no longer any cpu_is_* checks that depend on specific IP detection.

---
?arch/arm/plat-omap/include/plat/cpu.h | ? ?8 +------- ?1 file changed, 1 insertion(+), 7 deletions(-)

Quoted 12 lines
Quoted 11 lines
arch/arm/plat-omap/include/plat/cpu.h +0 -0
index 41f3e5a..b34bf6c 100644
@@ -250,8 +250,7 @@ IS_AM_SUBCLASS(335x, 0x335)

?* cpu_is_omap2423(): ?True for OMAP2423
?* cpu_is_omap2430(): ?True for OMAP2430
?* cpu_is_omap3430(): ?True for OMAP3430
- * cpu_is_omap3505(): ?True for OMAP3505
- * cpu_is_omap3517(): ?True for OMAP3517
+ * cpu_is_omap3517(): ?True for AM35x: OMAP3517, OMAP3505

Is cpu_is_omap35xx() a better name for it?

Later in the series, it is renamed to cpu_is_am35xx().

Kevin

#12 lore raw

PATCH 7/8 ARM: OMAP: remove unused cpu_is_omap3530()

In reply to Kevin Hilman

The cpu_is_omap3530() macro is unused, remove.

---
 arch/arm/plat-omap/include/plat/cpu.h |    3 ---
 1 file changed, 3 deletions(-)
arch/arm/plat-omap/include/plat/cpu.h +0 -3
index b34bf6c..d584ac7 100644
@@ -289,7 +289,6 @@ IS_OMAP_TYPE(3517, 0x3517)
 #define cpu_is_omap2422()		0
 #define cpu_is_omap2423()		0
 #define cpu_is_omap2430()		0
-#define cpu_is_omap3530()		0
 #define cpu_is_omap3517()		0
 #define cpu_is_omap3430()		0
 #define cpu_is_omap3630()		0
@@ -342,7 +341,6 @@ IS_OMAP_TYPE(3517, 0x3517)
 
 #if defined(CONFIG_ARCH_OMAP3)
 # undef cpu_is_omap3430
-# undef cpu_is_omap3530
 # undef cpu_is_omap3517
 # undef cpu_is_ti81xx
 # undef cpu_is_ti816x
@@ -350,7 +348,6 @@ IS_OMAP_TYPE(3517, 0x3517)
 # undef cpu_is_am33xx
 # undef cpu_is_am335x
 # define cpu_is_omap3430()		is_omap3430()
-# define cpu_is_omap3530()		(cpu_is_omap3430())
 # define cpu_is_omap3517()		is_omap3517()
 # undef cpu_is_omap3630
 # define cpu_is_omap3630()		is_omap363x()
Signature · 1 line
1.7.9.2
#13 lore raw

PATCH 8/8 ARM: OMAP: AM35xx: convert 3517 detection/flags to AM35xx

In reply to Kevin Hilman

Currently cpu_is_omap3517() actually detects any device in the AM35x family (3517 and no-SGX version 3505.) To make it more clear what is being detected, convert the names from 3517 to AM35xx.

For the same reason, replace the CK_3517 flag used in the clock data to CK_AM35XX.

---
 arch/arm/mach-omap2/clock3xxx_data.c          |    8 ++++----
 arch/arm/mach-omap2/hsmmc.c                   |    8 ++++----
 arch/arm/mach-omap2/id.c                      |    7 +++----
 arch/arm/mach-omap2/omap_hwmod_3xxx_data.c    |    2 +-
 arch/arm/mach-omap2/powerdomains3xxx_data.c   |    2 +-
 arch/arm/mach-omap2/usb-musb.c                |    2 +-
 arch/arm/mach-omap2/voltagedomains3xxx_data.c |    2 +-
 arch/arm/plat-omap/include/plat/clkdev_omap.h |    3 +--
 arch/arm/plat-omap/include/plat/cpu.h         |   15 +++++++--------
 9 files changed, 23 insertions(+), 26 deletions(-)
arch/arm/mach-omap2/clock3xxx_data.c +4 -4
index 23b1e78..7b00240 100644
@@ -3294,8 +3294,8 @@ static struct omap_clk omap3xxx_clks[] = {
 	CLK(NULL,	"gfx_l3_ick",	&gfx_l3_ick,	CK_3430ES1),
 	CLK(NULL,	"gfx_cg1_ck",	&gfx_cg1_ck,	CK_3430ES1),
 	CLK(NULL,	"gfx_cg2_ck",	&gfx_cg2_ck,	CK_3430ES1),
-	CLK(NULL,	"sgx_fck",	&sgx_fck,	CK_3430ES2PLUS | CK_3517 | CK_36XX),
-	CLK(NULL,	"sgx_ick",	&sgx_ick,	CK_3430ES2PLUS | CK_3517 | CK_36XX),
+	CLK(NULL,	"sgx_fck",	&sgx_fck,	CK_3430ES2PLUS | CK_AM35XX | CK_36XX),
+	CLK(NULL,	"sgx_ick",	&sgx_ick,	CK_3430ES2PLUS | CK_AM35XX | CK_36XX),
 	CLK(NULL,	"d2d_26m_fck",	&d2d_26m_fck,	CK_3430ES1),
 	CLK(NULL,	"modem_fck",	&modem_fck,	CK_34XX | CK_36XX),
 	CLK(NULL,	"sad2d_ick",	&sad2d_ick,	CK_34XX | CK_36XX),
@@ -3513,9 +3513,9 @@ int __init omap3xxx_clk_init(void)
 	struct omap_clk *c;
 	u32 cpu_clkflg = 0;
 
-	if (cpu_is_omap3517()) {
+	if (cpu_is_am35xx()) {
 		cpu_mask = RATE_IN_34XX;
-		cpu_clkflg = CK_3517;
+		cpu_clkflg = CK_AM35XX;
 	} else if (cpu_is_omap3630()) {
 		cpu_mask = (RATE_IN_34XX | RATE_IN_36XX);
 		cpu_clkflg = CK_36XX;
arch/arm/mach-omap2/hsmmc.c +4 -4
index a8ca655..9454347 100644
@@ -355,7 +355,7 @@ static int __init omap_hsmmc_pdata_init(struct omap2_hsmmc_info *c,
 	 *
 	 * temporary HACK: ocr_mask instead of fixed supply
 	 */
-	if (cpu_is_omap3517())
+	if (cpu_is_am35xx())
 		mmc->slots[0].ocr_mask = MMC_VDD_165_195 |
 					 MMC_VDD_26_27 |
 					 MMC_VDD_27_28 |
@@ -365,7 +365,7 @@ static int __init omap_hsmmc_pdata_init(struct omap2_hsmmc_info *c,
 	else
 		mmc->slots[0].ocr_mask = c->ocr_mask;
 
-	if (!cpu_is_omap3517())
+	if (!cpu_is_am35xx())
 		mmc->slots[0].features |= HSMMC_HAS_PBIAS;
 
 	if (cpu_is_omap44xx() && (omap_rev() > OMAP4430_REV_ES1_0))
@@ -388,7 +388,7 @@ static int __init omap_hsmmc_pdata_init(struct omap2_hsmmc_info *c,
 			}
 		}
 
-		if (cpu_is_omap3517())
+		if (cpu_is_am35xx())
 			mmc->slots[0].set_power = nop_mmc_set_power;
 
 		/* OMAP3630 HSMMC1 supports only 4-bit */
@@ -400,7 +400,7 @@ static int __init omap_hsmmc_pdata_init(struct omap2_hsmmc_info *c,
 		}
 		break;
 	case 2:
-		if (cpu_is_omap3517())
+		if (cpu_is_am35xx())
 			mmc->slots[0].set_power = am35x_hsmmc2_set_power;
 
 		if (c->ext_clock)
arch/arm/mach-omap2/id.c +3 -4
index 0e79b7b..d2913e2 100644
@@ -185,8 +185,7 @@ static void __init omap3_cpuinfo(void)
 	 */
 	if (cpu_is_omap3630()) {
 		cpu_name = "OMAP3630";
-	} else if (cpu_is_omap3517()) {
-		/* AM35xx devices */
+	} else if (cpu_is_am35xx()) {
 		cpu_name = (omap3_has_sgx()) ? "AM3517" : "AM3505";
 	} else if (cpu_is_ti816x()) {
 		cpu_name = "TI816X";
@@ -352,13 +351,13 @@ void __init omap3xxx_check_revision(void)
 		 */
 		switch (rev) {
 		case 0:
-			omap_revision = OMAP3517_REV_ES1_0;
+			omap_revision = AM35XX_REV_ES1_0;
 			cpu_rev = "1.0";
 			break;
 		case 1:
 		/* FALLTHROUGH */
 		default:
-			omap_revision = OMAP3517_REV_ES1_1;
+			omap_revision = AM35XX_REV_ES1_1;
 			cpu_rev = "1.1";
 		}
 		break;
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c +1 -1
index db86ce9..c92df30 100644
@@ -3711,7 +3711,7 @@ int __init omap3xxx_hwmod_init(void)
 	    rev == OMAP3430_REV_ES2_1 || rev == OMAP3430_REV_ES3_0 ||
 	    rev == OMAP3430_REV_ES3_1 || rev == OMAP3430_REV_ES3_1_2) {
 		h = omap34xx_hwmods;
-	} else if (rev == OMAP3517_REV_ES1_0 || rev == OMAP3517_REV_ES1_1) {
+	} else if (rev == AM35XX_REV_ES1_0 || rev == AM35XX_REV_ES1_1) {
 		h = am35xx_hwmods;
 	} else if (rev == OMAP3630_REV_ES1_0 || rev == OMAP3630_REV_ES1_1 ||
 		   rev == OMAP3630_REV_ES1_2) {
arch/arm/mach-omap2/powerdomains3xxx_data.c +1 -1
index b7ea468..fb0a0a6 100644
@@ -311,7 +311,7 @@ void __init omap3xxx_powerdomains_init(void)
 		 rev == OMAP3430_REV_ES3_0 || rev == OMAP3630_REV_ES1_0)
 		pwrdm_register_pwrdms(powerdomains_omap3430es2_es3_0);
 	else if (rev == OMAP3430_REV_ES3_1 || rev == OMAP3430_REV_ES3_1_2 ||
-		 rev == OMAP3517_REV_ES1_0 || rev == OMAP3517_REV_ES1_1 ||
+		 rev == AM35XX_REV_ES1_0 || rev == AM35XX_REV_ES1_1 ||
 		 rev == OMAP3630_REV_ES1_1 || rev == OMAP3630_REV_ES1_2)
 		pwrdm_register_pwrdms(powerdomains_omap3430es3_1plus);
 	else
arch/arm/mach-omap2/usb-musb.c +1 -1
index bf33b4d..ae07060 100644
@@ -90,7 +90,7 @@ void __init usb_musb_init(struct omap_musb_board_data *musb_board_data)
 	musb_plat.mode = board_data->mode;
 	musb_plat.extvbus = board_data->extvbus;
 
-	if (cpu_is_omap3517()) {
+	if (cpu_is_am35xx()) {
 		oh_name = "am35x_otg_hs";
 		name = "musb-am35x";
 	} else if (cpu_is_ti81xx()) {
arch/arm/mach-omap2/voltagedomains3xxx_data.c +1 -1
index 98ed4d7..f796624 100644
@@ -118,7 +118,7 @@ void __init omap3xxx_voltagedomains_init(void)
 	}
 #endif
 
-	if (cpu_is_omap3517())
+	if (cpu_is_am35xx())
 		voltdms = voltagedomains_am35xx;
 	else
 		voltdms = voltagedomains_omap3;
arch/arm/plat-omap/include/plat/clkdev_omap.h +1 -2
index 45afa4d..d0ed8c4 100644
@@ -34,7 +34,7 @@ struct omap_clk {
 #define CK_243X		(1 << 5)	/* 243x, 253x */
 #define CK_3430ES1	(1 << 6)	/* 34xxES1 only */
 #define CK_3430ES2PLUS	(1 << 7)	/* 34xxES2, ES3, non-Sitara 35xx only */
-#define CK_3517		(1 << 9)
+#define CK_AM35XX	(1 << 9)	/* Sitara AM35xx */
 #define CK_36XX		(1 << 10)	/* 36xx/37xx-specific clocks */
 #define CK_443X		(1 << 11)
 #define CK_TI816X	(1 << 12)
@@ -43,7 +43,6 @@ struct omap_clk {
 
 
 #define CK_34XX		(CK_3430ES1 | CK_3430ES2PLUS)
-#define CK_AM35XX	CK_3517		/* all Sitara AM35xx */
 #define CK_3XXX		(CK_34XX | CK_AM35XX | CK_36XX)
 
 
arch/arm/plat-omap/include/plat/cpu.h +7 -8
index d584ac7..d9df396 100644
@@ -121,6 +121,7 @@ IS_OMAP_CLASS(16xx, 0x16)
 IS_OMAP_CLASS(24xx, 0x24)
 IS_OMAP_CLASS(34xx, 0x34)
 IS_OMAP_CLASS(44xx, 0x44)
+IS_AM_CLASS(35xx, 0x35)
 IS_AM_CLASS(33xx, 0x33)
 
 IS_TI_CLASS(81xx, 0x81)
@@ -148,6 +149,7 @@ IS_AM_SUBCLASS(335x, 0x335)
 #define cpu_is_ti81xx()			0
 #define cpu_is_ti816x()			0
 #define cpu_is_ti814x()			0
+#define cpu_is_am35xx()			0
 #define cpu_is_am33xx()			0
 #define cpu_is_am335x()			0
 #define cpu_is_omap44xx()		0
@@ -250,7 +252,6 @@ IS_AM_SUBCLASS(335x, 0x335)
  * cpu_is_omap2423():	True for OMAP2423
  * cpu_is_omap2430():	True for OMAP2430
  * cpu_is_omap3430():	True for OMAP3430
- * cpu_is_omap3517():	True for AM35x: OMAP3517, OMAP3505
  */
 #define GET_OMAP_TYPE	((omap_rev() >> 16) & 0xffff)
 
@@ -274,7 +275,6 @@ IS_OMAP_TYPE(2422, 0x2422)
 IS_OMAP_TYPE(2423, 0x2423)
 IS_OMAP_TYPE(2430, 0x2430)
 IS_OMAP_TYPE(3430, 0x3430)
-IS_OMAP_TYPE(3517, 0x3517)
 
 #define cpu_is_omap310()		0
 #define cpu_is_omap730()		0
@@ -289,7 +289,6 @@ IS_OMAP_TYPE(3517, 0x3517)
 #define cpu_is_omap2422()		0
 #define cpu_is_omap2423()		0
 #define cpu_is_omap2430()		0
-#define cpu_is_omap3517()		0
 #define cpu_is_omap3430()		0
 #define cpu_is_omap3630()		0
 
@@ -341,19 +340,19 @@ IS_OMAP_TYPE(3517, 0x3517)
 
 #if defined(CONFIG_ARCH_OMAP3)
 # undef cpu_is_omap3430
-# undef cpu_is_omap3517
 # undef cpu_is_ti81xx
 # undef cpu_is_ti816x
 # undef cpu_is_ti814x
+# undef cpu_is_am35xx
 # undef cpu_is_am33xx
 # undef cpu_is_am335x
 # define cpu_is_omap3430()		is_omap3430()
-# define cpu_is_omap3517()		is_omap3517()
 # undef cpu_is_omap3630
 # define cpu_is_omap3630()		is_omap363x()
 # define cpu_is_ti81xx()		is_ti81xx()
 # define cpu_is_ti816x()		is_ti816x()
 # define cpu_is_ti814x()		is_ti814x()
+# define cpu_is_am35xx()		is_am35xx()
 # define cpu_is_am33xx()		is_am33xx()
 # define cpu_is_am335x()		is_am335x()
 #endif
@@ -396,9 +395,9 @@ IS_OMAP_TYPE(3517, 0x3517)
 #define OMAP3630_REV_ES1_1	(OMAP363X_CLASS | (0x1 << 8))
 #define OMAP3630_REV_ES1_2	(OMAP363X_CLASS | (0x2 << 8))
 
-#define OMAP3517_CLASS		0x35170034
-#define OMAP3517_REV_ES1_0	OMAP3517_CLASS
-#define OMAP3517_REV_ES1_1	(OMAP3517_CLASS | (0x1 << 8))
+#define AM35XX_CLASS		0x35170034
+#define AM35XX_REV_ES1_0	AM35XX_CLASS
+#define AM35XX_REV_ES1_1	(AM35XX_CLASS | (0x1 << 8))
 
 #define TI816X_CLASS		0x81600034
 #define TI8168_REV_ES1_0	TI816X_CLASS
Signature · 1 line
1.7.9.2
#14 lore raw

cover ARM: OMAP: remove IP checks from SoC family detection

In reply to Kevin Hilman

On Thu, Apr 26, 2012 at 04:29:45PM -0700, Kevin Hilman wrote:

Hi Kevin.

Quoted 4 lines

This is a rebased version of this series which is ready for broader testing. I'd especially appreciate testing from those of you with AM35x platforms.

Quoted 8 lines

Currently, our SoC detection is based on SoC family detection (using die ID) and the presence of specific IP blocks (or feature.)

This series begins the separation of the SoC family detection and specific IP detection by completely removing IP detection from the SoC family detection (cpu_is_*.)

Applies on top of v3.4-rc4, boot tested on AM3517 EVM.

Your series applied and booted without issue until the point that pm_idle is called. At that point it hung because its doing a wfi and not getting an interrupt to wake up back up. That's expected behaviour so your patches are good (IMHO) but I need to finish and submit a new version of my patches to fix that issue.

I tested using an nfs-mounted and mmc-mounted rootfs (and CONFIG_TI_DAVINCI_EMAC=y).

Mark

#15 lore raw

cover ARM: OMAP: remove IP checks from SoC family detection

Quoted 15 lines · Mark A. Greer

On Thu, Apr 26, 2012 at 04:29:45PM -0700, Kevin Hilman wrote:

Hi Kevin.

Quoted 11 lines

This is a rebased version of this series which is ready for broader testing. I'd especially appreciate testing from those of you with AM35x platforms.

Currently, our SoC detection is based on SoC family detection (using die ID) and the presence of specific IP blocks (or feature.)

This series begins the separation of the SoC family detection and specific IP detection by completely removing IP detection from the SoC family detection (cpu_is_*.)

Quoted 7 lines
Quoted 1 line

Applies on top of v3.4-rc4, boot tested on AM3517 EVM.

Your series applied and booted without issue until the point that pm_idle is called. At that point it hung because its doing a wfi and not getting an interrupt to wake up back up. That's expected behaviour so your patches are good (IMHO) but I need to finish and submit a new version of my patches to fix that issue.

For the benefit of others wanting to test this:

You have to use 'nohlt' on the cmdline on AM35x in order to avoid WFI and the wakeup problems that are still being worked on.

Kevin

#16 lore raw
Quoted 27 lines · Kevin Hilman
Quoted 15 lines · Mark A. Greer

On Thu, Apr 26, 2012 at 04:29:45PM -0700, Kevin Hilman wrote:

Hi Kevin.

Quoted 11 lines

This is a rebased version of this series which is ready for broader testing. I'd especially appreciate testing from those of you with AM35x platforms.

Currently, our SoC detection is based on SoC family detection (using die ID) and the presence of specific IP blocks (or feature.)

This series begins the separation of the SoC family detection and specific IP detection by completely removing IP detection from the SoC family detection (cpu_is_*.)

Quoted 7 lines
Quoted 1 line

Applies on top of v3.4-rc4, boot tested on AM3517 EVM.

Your series applied and booted without issue until the point that pm_idle is called. At that point it hung because its doing a wfi and not getting an interrupt to wake up back up. That's expected behaviour so your patches are good (IMHO) but I need to finish and submit a new version of my patches to fix that issue.

For the benefit of others wanting to test this:

Quoted 8 lines

You have to use 'nohlt' on the cmdline on AM35x in order to avoid WFI and the wakeup problems that are still being worked on.

Kevin
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

Hello Kevin,

I have a Logic PD AM3517 Zoom Experimenter [SOMAM3517-10-1780RJXR-C (REV A)].

My board booted to the Linux login on MMC rootfs.

The following is from 'dmesg' output:

[start]-----------------------------------------------------------------

...

[    0.000000] Kernel command line: console=ttyO2,115200n8 root=/dev/mmcblk0p2 rw nohlt rootfstype=ext3 rootwait omapdss.def_disp=dvi omapfb.mode=dvi:1280x800@60

...

[    0.107727] omap_hwmod: am35x_otg_hs: cannot be enabled (3)
[    0.121704] omap_hwmod: uart4: softreset failed (waited 10000 usec)

...

[    0.136505] ------------[ cut here ]------------
[    0.136566] WARNING: at /sandbox/linux/arch/arm/mach-omap2/pm.c:48 _init_omap_device+0x74/0x94()
[    0.136566] _init_omap_device: could not find omap_hwmod for iva
[    0.136596] Modules linked in:
[    0.136657] [<c001855c>] (unwind_backtrace+0x0/0x11c) from [<c0032540>] (warn_slowpath_common+0x4c/0x64)
[    0.136718] [<c0032540>] (warn_slowpath_common+0x4c/0x64) from [<c00325d8>] (warn_slowpath_fmt+0x2c/0x3c)
[    0.136749] [<c00325d8>] (warn_slowpath_fmt+0x2c/0x3c) from [<c0649b80>] (_init_omap_device+0x74/0x94)
[    0.136779] [<c0649b80>] (_init_omap_device+0x74/0x94) from [<c0649bd4>] (omap2_common_pm_init+0x34/0x5c)
[    0.136810] [<c0649bd4>] (omap2_common_pm_init+0x34/0x5c) from [<c0008644>] (do_one_initcall+0x90/0x164)
[    0.136840] [<c0008644>] (do_one_initcall+0x90/0x164) from [<c06418c4>] (kernel_init+0x120/0x1dc)
[    0.136901] [<c06418c4>] (kernel_init+0x120/0x1dc) from [<c00136e8>] (kernel_thread_exit+0x0/0x8)
[    0.137207] ---[ end trace 1b75b31a2719ed1c ]---

...

[    0.184143] dpll3_m2_clk rate change failed: -22
[    0.186218]  usbhs_omap: alias fck already exists
[    0.191223] _omap_mux_init_gpio: Multiple gpio paths (2) for gpio126

...

[    0.547546] usbhs_omap usbhs_omap: xclk60mhsp1_ck set parentfailed error:-22
[    0.547607] usbhs_omap usbhs_omap: xclk60mhsp2_ck set parentfailed error:-22

...

[    0.858215] omapdss_venc supply vdda_dac not found, using dummy regulator

[ e.863067] omapdss supply vdds_dsi not found, using dummy regulator

...

[    1.864593] davinci_mdio davinci_mdio.0: davinci mdio revision 1.5
[    1.871093] davinci_mdio davinci_mdio.0: detected phy mask fffffffe
[    1.881072] davinci_mdio.0: probed
[    1.884643] davinci_mdio davinci_mdio.0: phy[0]: device davinci_mdio-0:00, driver SMSC LAN8710/LAN8720

...

[    4.477539] voltdm_scale: No voltage scale API registered for vdd_mpu_iva
[    4.484832] voltdm_scale: No voltage scale API registered for vdd_core

...

[    4.569549] omapfb omapfb: failed to allocate fbmem
[    4.579437] omapfb omapfb: failed to setup omapfb
[    4.588745] omapfb: probe of omapfb failed with error -12

[end]-------------------------------------------------------------------

Mark Greer's patches from earlier this month helped with some of these IVA related items. I would like to help test some of the AM3517 changes. I have two SOMAM3517 cards (one with WiFi). Is there a kernel config that is commonly used by those testing the AM3517? or modified omap2plus? I think some issues that I am seeing involve wrong configuration assumptions by me.

--
Derald D. Woods

#17 lore raw
Quoted 37 lines · Derald D. Woods
Quoted 27 lines · Kevin Hilman
Quoted 15 lines · Mark A. Greer

On Thu, Apr 26, 2012 at 04:29:45PM -0700, Kevin Hilman wrote:

Hi Kevin.

Quoted 11 lines

This is a rebased version of this series which is ready for broader testing. I'd especially appreciate testing from those of you with AM35x platforms.

Currently, our SoC detection is based on SoC family detection (using die ID) and the presence of specific IP blocks (or feature.)

This series begins the separation of the SoC family detection and specific IP detection by completely removing IP detection from the SoC family detection (cpu_is_*.)

Quoted 7 lines
Quoted 1 line

Applies on top of v3.4-rc4, boot tested on AM3517 EVM.

Your series applied and booted without issue until the point that pm_idle is called. At that point it hung because its doing a wfi and not getting an interrupt to wake up back up. That's expected behaviour so your patches are good (IMHO) but I need to finish and submit a new version of my patches to fix that issue.

For the benefit of others wanting to test this:

Quoted 8 lines

You have to use 'nohlt' on the cmdline on AM35x in order to avoid WFI and the wakeup problems that are still being worked on.

Kevin
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html

Quoted 6 lines

Hello Kevin,

I have a Logic PD AM3517 Zoom Experimenter [SOMAM3517-10-1780RJXR-C (REV A)].

My board booted to the Linux login on MMC rootfs.

I tried to validate these patches now with latest baseline, and I am not getting Linux prompt though,

I am based on linux-omap/master (1e32b7eee) and applied all 8 patches from Kevin, it always halts at,

==================================boot log=============================

AM3517_EVM # setenv bootargs root=/dev/ram0 rw mem=128M console=ttyS2,115200n8 console=ttyO2,115200n8 initrd=0x81600000,16M AM3517_EVM # setenv bootcmd 'dhcp; tftp 82000000 uImage; tftp 81600000 ramdisk-pm.gz; bootm 0x82000000' AM3517_EVM # boot
BOOTP broadcast 1
*** Unhandled DHCP Option in OFFER/ACK: 44
*** Unhandled DHCP Option in OFFER/ACK: 46
*** Unhandled DHCP Option in OFFER/ACK: 150
*** Unhandled DHCP Option in OFFER/ACK: 44
*** Unhandled DHCP Option in OFFER/ACK: 46
*** Unhandled DHCP Option in OFFER/ACK: 150
DHCP client bound to address 172.24.133.170
Using DaVinci EMAC device
TFTP from server 172.24.133.105; our IP address is 172.24.133.170
Filename 'uImage'.
Load address: 0x82000000
Loading: #################################################################

         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #############

done
Bytes transferred = 3391048 (33be48 hex)
Using DaVinci EMAC device
TFTP from server 172.24.133.105; our IP address is 172.24.133.170 Filename 'ramdisk-pm.gz'.
Load address: 0x81600000
Loading: #################################################################

         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         ######
done
Bytes transferred = 2022580 (1edcb4 hex)
## Booting kernel from Legacy Image at 82000000 ...
   Image Name:   Linux-3.4.0-rc3-11794-gbbc91ff
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    3390984 Bytes =  3.2 MB

Load Address: 80008000
Entry Point: 80008000
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK

Starting kernel ...

Uncompressing Linux... done, booting the kernel.

[    0.000000] Booting Linux on physical CPU 0
[    0.000000] Linux version 3.4.0-rc3-11794-gbbc91ff (a0393758@psplinux064) (gcc version 4.5.3 20110311 (prerelease) (GCC) ) #1 SMP Sun Apr 29 14:52:26 IST 2012
[    0.000000] CPU: ARMv7 Processor [411fc087] revision 7 (ARMv7), cr=10c53c7d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
[    0.000000] Machine: OMAP3517/AM3517 EVM
[    0.000000] Memory policy: ECC disabled, Data cache writeback
[    0.000000] AM3517 ES1.1 (l2cache iva sgx neon isp )
[    0.000000] Clocking rate (Crystal/Core/MPU): 26.0/332/500 MHz
[    0.000000] PERCPU: Embedded 8 pages/cpu @c0d1f000 s11456 r8192 d13120 u32768
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 32256
[    0.000000] Kernel command line: root=/dev/ram0 rw mem=128M console=ttyS2,115200n8 console=ttyO2,115200n8 initrd=0x81600000,16M
[    0.000000] PID hash table entries: 512 (order: -1, 2048 bytes)
[    0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
[    0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
[    0.000000] Memory: 127MB = 127MB total
[    0.000000] Memory: 100096k/100096k available, 30976k reserved, 0K highmem
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
[    0.000000]     vmalloc : 0xc8800000 - 0xff000000   ( 872 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xc8000000   ( 128 MB)
[    0.000000]     modules : 0xbf000000 - 0xc0000000   (  16 MB)
[    0.000000]       .text : 0xc0008000 - 0xc05e3ca0   (6000 kB)
[    0.000000]       .init : 0xc05e4000 - 0xc0631cc0   ( 312 kB)
[    0.000000]       .data : 0xc0632000 - 0xc06c6898   ( 595 kB)
[    0.000000]        .bss : 0xc06c68bc - 0xc0c1ac60   (5457 kB)
[    0.000000] Hierarchical RCU implementation.
[    0.000000] NR_IRQS:474
[    0.000000] IRQ: Found an INTC at 0xfa200000 (revision 4.0) with 96 interrupts
[    0.000000] Total of 96 interrupts on 1 active controller
[    0.000000] OMAP clockevent source: GPTIMER1 at 32768 Hz
[    0.000000] sched_clock: 32 bits at 32kHz, resolution 30517ns, wraps every 131071999ms
[    0.000000] Console: colour dummy device 80x30
[    0.000000] Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar
[    0.000000] ... MAX_LOCKDEP_SUBCLASSES:  8
[    0.000000] ... MAX_LOCK_DEPTH:          48
[    0.000000] ... MAX_LOCKDEP_KEYS:        8191
[    0.000000] ... CLASSHASH_SIZE:          4096
[    0.000000] ... MAX_LOCKDEP_ENTRIES:     16384
[    0.000000] ... MAX_LOCKDEP_CHAINS:      32768
[    0.000000] ... CHAINHASH_SIZE:          16384
[    0.000000]  memory used by lock dependency info: 3695 kB
[    0.000000]  per task-struct memory footprint: 1152 bytes
[    0.001220] Calibrating delay loop... 497.82 BogoMIPS (lpj=1941504)
[    0.085906] pid_max: default: 32768 minimum: 301
[    0.086914] Security Framework initialized
[    0.087280] Mount-cache hash table entries: 512
[    0.094543] CPU: Testing write buffer coherency: ok
[    0.095886] CPU0: thread -1, cpu 0, socket -1, mpidr 0
[    0.096008] Setting up static identity map for 0x80433d68 - 0x80433dd8
[    0.098541] Brought up 1 CPUs
[    0.098571] SMP: Total of 1 processors activated (497.82 BogoMIPS).
[    0.118988] omap_hwmod: am35x_otg_hs: cannot be enabled for reset (3)
[    0.133148] omap_hwmod: uart4: softreset failed (waited 10000 usec)
[    0.143005] dummy:
[    0.146087] NET: Registered protocol family 16
[    0.147888] GPMC revision 5.0
[    0.148223] gpmc: irq-20 could not claim: err -22
[    0.149719] ------------[ cut here ]------------
[    0.149780] WARNING: at arch/arm/mach-omap2/pm.c:48 _init_omap_device+0x30/0xa8()
[    0.149810] _init_omap_device: could not find omap_hwmod for iva
[    0.149810] Modules linked in:
[    0.149902] [<c001a5c4>] (unwind_backtrace+0x0/0xf0) from [<c003cd84>] (warn_slowpath_common+0x4c/0x64)
[    0.149932] [<c003cd84>] (warn_slowpath_common+0x4c/0x64) from [<c003ce30>] (warn_slowpath_fmt+0x30/0x40)
[    0.149993] [<c003ce30>] (warn_slowpath_fmt+0x30/0x40) from [<c05edef0>] (_init_omap_device+0x30/0xa8)
[    0.150024] [<c05edef0>] (_init_omap_device+0x30/0xa8) from [<c05edf9c>] (omap2_common_pm_init+0x34/0x90)
[    0.150054] [<c05edf9c>] (omap2_common_pm_init+0x34/0x90) from [<c0008718>] (do_one_initcall+0x34/0x180)
[    0.150115] [<c0008718>] (do_one_initcall+0x34/0x180) from [<c05e48f4>] (kernel_init+0xf0/0x1bc)
[    0.150146] [<c05e48f4>] (kernel_init+0xf0/0x1bc) from [<c00142d8>] (kernel_thread_exit+0x0/0x8)
[    0.150482] ---[ end trace 1b75b31a2719ed1c ]---
[    0.163085] gpiochip_add: registered GPIOs 0 to 31 on device: gpio
[    0.163787] OMAP GPIO hardware version 2.5
[    0.165893] gpiochip_add: registered GPIOs 32 to 63 on device: gpio
[    0.168060] gpiochip_add: registered GPIOs 64 to 95 on device: gpio
[    0.170043] gpiochip_add: registered GPIOs 96 to 127 on device: gpio
[    0.172332] gpiochip_add: registered GPIOs 128 to 159 on device: gpio
[    0.174346] gpiochip_add: registered GPIOs 160 to 191 on device: gpio
[    0.182769] ------------[ cut here ]------------
[    0.182830] WARNING: at arch/arm/mach-omap2/omap_l3_smx.c:161 omap3_l3_app_irq+0xd0/0x128()
[    0.182861] Address Hole seen by USB_OTG  at address 5ae89a58
[    0.182861] Modules linked in:
[    0.182952] [<c001a5c4>] (unwind_backtrace+0x0/0xf0) from [<c003cd84>] (warn_slowpath_common+0x4c/0x64)
[    0.182983] [<c003cd84>] (warn_slowpath_common+0x4c/0x64) from [<c003ce30>] (warn_slowpath_fmt+0x30/0x40)
[    0.183044] [<c003ce30>] (warn_slowpath_fmt+0x30/0x40) from [<c003135c>] (omap3_l3_app_irq+0xd0/0x128)
[    0.183074] [<c003135c>] (omap3_l3_app_irq+0xd0/0x128) from [<c0097ff8>] (handle_irq_event_percpu+0x5c/0x248)
[    0.183135] [<c0097ff8>] (handle_irq_event_percpu+0x5c/0x248) from [<c0098220>] (handle_irq_event+0x3c/0x5c)
[    0.183166] [<c0098220>] (handle_irq_event+0x3c/0x5c) from [<c009a604>] (handle_level_irq+0xac/0x138)
[    0.183197] [<c009a604>] (handle_level_irq+0xac/0x138) from [<c0097838>] (generic_handle_irq+0x30/0x48)
[    0.183258] [<c0097838>] (generic_handle_irq+0x30/0x48) from [<c0014078>] (handle_IRQ+0x4c/0xac)
[    0.183288] [<c0014078>] (handle_IRQ+0x4c/0xac) from [<c000857c>] (omap3_intc_handle_irq+0x54/0x68)
[    0.183349] [<c000857c>] (omap3_intc_handle_irq+0x54/0x68) from [<c042ebe4>] (__irq_svc+0x44/0x60)
[    0.183380] Exception stack(0xc7825df8 to 0xc7825e40)
[    0.183380] 5de0:                                                       00000001 00000004
[    0.183410] 5e00: 00000000 c78233c0 60000013 c0634994 0000000a c0634994 60000013 00000000
[    0.183441] 5e20: c0634974 00000000 00000001 c7825e40 c00895b8 c042e984 20000013 ffffffff
[    0.183502] [<c042ebe4>] (__irq_svc+0x44/0x60) from [<c042e984>] (_raw_spin_unlock_irqrestore+0x34/0x44)
[    0.183532] [<c042e984>] (_raw_spin_unlock_irqrestore+0x34/0x44) from [<c009944c>] (__setup_irq+0x158/0x398)
[    0.183563] [<c009944c>] (__setup_irq+0x158/0x398) from [<c0099764>] (request_threaded_irq+0xd8/0x150)
[    0.183624] [<c0099764>] (request_threaded_irq+0xd8/0x150) from [<c05f2b14>] (omap3_l3_probe+0x10c/0x16c)
[    0.183685] [<c05f2b14>] (omap3_l3_probe+0x10c/0x16c) from [<c02914f0>] (platform_drv_probe+0x18/0x1c)
[    0.183715] [<c02914f0>] (platform_drv_probe+0x18/0x1c) from [<c02901b0>] (really_probe+0x64/0x1d8)
[    0.183746] [<c02901b0>] (really_probe+0x64/0x1d8) from [<c0290468>] (driver_probe_device+0x48/0x60)
[    0.183776] [<c0290468>] (driver_probe_device+0x48/0x60) from [<c0290514>] (__driver_attach+0x94/0x98)
[    0.183837] [<c0290514>] (__driver_attach+0x94/0x98) from [<c028ebac>] (bus_for_each_dev+0x50/0x7c)
[    0.183868] [<c028ebac>] (bus_for_each_dev+0x50/0x7c) from [<c028f9fc>] (bus_add_driver+0xa0/0x248)
[    0.183898] [<c028f9fc>] (bus_add_driver+0xa0/0x248) from [<c0290a48>] (driver_register+0x78/0x12c)
[    0.183929] [<c0290a48>] (driver_register+0x78/0x12c) from [<c0291850>] (platform_driver_probe+0x18/0x9c)
[    0.183990] [<c0291850>] (platform_driver_probe+0x18/0x9c) from [<c0008718>] (do_one_initcall+0x34/0x180)
[    0.184020] [<c0008718>] (do_one_initcall+0x34/0x180) from [<c05e48f4>] (kernel_init+0xf0/0x1bc)
[    0.184051] [<c05e48f4>] (kernel_init+0xf0/0x1bc) from [<c00142d8>] (kernel_thread_exit+0x0/0x8)
[    0.184082] ---[ end trace 1b75b31a2719ed1d ]---
[    0.185882] omap_mux_init: Add partition: #1: core, flags: 0
[    0.203979] omap_uart.3: failed to claim resource 58
[    0.204040] omap_device: omap_uart: build failed (-16)
[    0.204040] ------------[ cut here ]------------
[    0.204101] WARNING: at arch/arm/mach-omap2/serial.c:265 omap_serial_init_port+0x1b4/0x294()
[    0.204132] Could not build omap_device for omap_uart: uart4.
[    0.204132] Modules linked in:
[    0.204223] [<c001a5c4>] (unwind_backtrace+0x0/0xf0) from [<c003cd84>] (warn_slowpath_common+0x4c/0x64)
[    0.204254] [<c003cd84>] (warn_slowpath_common+0x4c/0x64) from [<c003ce30>] (warn_slowpath_fmt+0x30/0x40)
[    0.204284] [<c003ce30>] (warn_slowpath_fmt+0x30/0x40) from [<c05ed4c4>] (omap_serial_init_port+0x1b4/0x294)
[    0.204345] [<c05ed4c4>] (omap_serial_init_port+0x1b4/0x294) from [<c05ed608>] (omap_serial_board_init+0x64/0x84)
[    0.204376] [<c05ed608>] (omap_serial_board_init+0x64/0x84) from [<c05f60e4>] (am3517_evm_init+0x74/0x150)
[    0.204437] [<c05f60e4>] (am3517_evm_init+0x74/0x150) from [<c05e76d4>] (customize_machine+0x1c/0x28)
[    0.204467] [<c05e76d4>] (customize_machine+0x1c/0x28) from [<c0008718>] (do_one_initcall+0x34/0x180)
[    0.204528] [<c0008718>] (do_one_initcall+0x34/0x180) from [<c05e48f4>] (kernel_init+0xf0/0x1bc)
[    0.204559] [<c05e48f4>] (kernel_init+0xf0/0x1bc) from [<c00142d8>] (kernel_thread_exit+0x0/0x8)
[    0.204589] ---[ end trace 1b75b31a2719ed1e ]---
[    0.216186] Reprogramming SDRC clock to 332000000 Hz
[    0.216247] dpll3_m2_clk rate change failed: -22
[    0.218627] _omap_mux_init_gpio: Multiple gpio paths (2) for gpio126
[    0.222930] hw-breakpoint: debug architecture 0x4 unsupported.
[    0.244750]  omap-mcbsp.2: alias fck already exists
[    0.245849]  omap-mcbsp.3: alias fck already exists
[    0.252624] OMAP DMA hardware revision 4.0
[    0.347473] bio: create slab <bio-0> at 0
[    0.360321] SCSI subsystem initialized
[    0.363342] omap2_mcspi omap2_mcspi.1: master is unqueued, this is deprecated
[    0.365264] omap2_mcspi omap2_mcspi.2: master is unqueued, this is deprecated
[    0.366882] omap2_mcspi omap2_mcspi.3: master is unqueued, this is deprecated
[    0.369171] omap2_mcspi omap2_mcspi.4: master is unqueued, this is deprecated
[    0.373840] usbcore: registered new interface driver usbfs
[    0.375793] usbcore: registered new interface driver hub
[    0.377075] usbcore: registered new device driver usb
[    0.391448] omap_i2c omap_i2c.1: bus 1 rev1.3.12 at 400 kHz
[    0.406555] omap_i2c omap_i2c.2: bus 2 rev1.3.12 at 400 kHz
[    0.422180] omap_i2c omap_i2c.3: bus 3 rev1.3.12 at 400 kHz
[    0.436157] Switching to clocksource 32k_counter
[    0.598144] NET: Registered protocol family 2
[    0.599212] IP route cache hash table entries: 1024 (order: 0, 4096 bytes)
[    0.602813] TCP established hash table entries: 4096 (order: 3, 32768 bytes)
[    0.603210] TCP bind hash table entries: 4096 (order: 5, 147456 bytes)
[    0.605926] TCP: Hash tables configured (established 4096 bind 4096)
[    0.606048] TCP: reno registered
[    0.606079] UDP hash table entries: 64 (order: 0, 5120 bytes)
[    0.606475] UDP-Lite hash table entries: 64 (order: 0, 5120 bytes)
[    0.607818] NET: Registered protocol family 1
[    0.610351] RPC: Registered named UNIX socket transport module.
[    0.610382] RPC: Registered udp transport module.
[    0.610412] RPC: Registered tcp transport module.
[    0.610443] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.611724] Trying to unpack rootfs image as initramfs...
[    0.614685] rootfs image is not initramfs (no cpio magic); looks like an initrd
[    0.803588] Freeing initrd memory: 16384K
[    0.803741] NetWinder Floating Point Emulator V0.97 (double precision)
[    1.011138] VFS: Disk quotas dquot_6.5.2
[    1.011596] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[    1.014068] NFS: Registering the id_resolver key type
[    1.016967] jffs2: version 2.2. (NAND) (SUMMARY)  (c) 2001-2006 Red Hat, Inc.
[    1.018646] msgmni has been set to 227
[    1.024047] io scheduler noop registered
[    1.024078] io scheduler deadline registered
[    1.024444] io scheduler cfq registered (default)
[    1.028167] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[    1.037933] omap_uart.0: ttyO0 at MMIO 0x4806a000 (irq = 72) is a OMAP UART0
[    1.040985] omap_uart.1: ttyO1 at MMIO 0x4806c000 (irq = 73) is a OMAP UART1
[    1.043060] omap_uart.2: ttyO2 at MMIO 0x49020000 (irq = 74) is a OMAP UART2
[    2.246429] console [ttyO2] enabled
[    2.299285] brd: module loaded
[    2.331420] loop: module loaded
[    2.343841] mtdoops: mtd device (mtddev=name/number) must be supplied
[    2.351928] OneNAND driver initializing
[    2.367126] usbcore: registered new interface driver asix
[    2.373626] usbcore: registered new interface driver cdc_ether
[    2.381042] usbcore: registered new interface driver net1080
[    2.388000] usbcore: registered new interface driver cdc_subset
[    2.395202] usbcore: registered new interface driver zaurus
[    2.402099] usbcore: registered new interface driver cdc_ncm
[    2.411407] usbcore: registered new interface driver cdc_wdm
[    2.417602] Initializing USB Mass Storage driver...
[    2.423706] usbcore: registered new interface driver usb-storage
[    2.430297] USB Mass Storage support registered.
[    2.437011] usbcore: registered new interface driver libusual
[    2.444000] usbcore: registered new interface driver usbtest
[    2.452667] mousedev: PS/2 mouse device common for all mice
[    2.466339] i2c /dev entries driver
[    2.475616] Driver for 1-wire Dallas network protocol.
[    2.486267] omap_wdt: OMAP Watchdog Timer Rev 0x31: initial timeout 60 sec
[    2.513214] usbcore: registered new interface driver usbhid
[    2.519348] usbhid: USB HID core driver
[    2.523468] oprofile: hardware counters not available
[    2.528808] oprofile: using timer interrupt.
[    2.534667] TCP: cubic registered
[    2.538177] Initializing XFRM netlink socket
[    2.542999] NET: Registered protocol family 17
[    2.547973] NET: Registered protocol family 15
[    2.553100] Registering the dns_resolver key type
[    2.558410] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 1
[    2.566741] ThumbEE CPU extension supported.
[    2.582977] voltdm_scale: No voltage scale API registered for vdd_mpu_iva
[    2.590332] voltdm_scale: No voltage scale API registered for vdd_core
[    2.597503] PM: no software I/O chain control; some wakeups may be lost
[    2.645935] clock: disabling unused clocks to save power
[    2.659515] drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
[    2.671844] RAMDISK: gzip image found at block 0

<Halt>

#18 lore raw
Quoted 25 lines · Vaibhav
Quoted 9 lines · Derald D. Woods

On Fri, Apr 27, 2012 at 03:25:38PM -0700, Kevin Hilman wrote:

Hello Kevin,

I have a Logic PD AM3517 Zoom Experimenter [SOMAM3517-10-1780RJXR-C (REV A)].

My board booted to the Linux login on MMC rootfs.

I tried to validate these patches now with latest baseline, and I am not getting Linux prompt though,

I am based on linux-omap/master (1e32b7eee) and applied all 8 patches from Kevin, it always halts at,

Starting kernel ...

Uncompressing Linux... done, booting the kernel.

[    0.000000] Booting Linux on physical CPU 0
[    0.000000] Linux version 3.4.0-rc3-11794-gbbc91ff (a0393758@psplinux064) (gcc version 4.5.3 20110311 (prerelease) (GCC) ) #1 SMP Sun Apr 29 14:52:26 IST 2012
[    0.000000] Kernel command line: root=/dev/ram0 rw mem=128M console=ttyS2,115200n8 console=ttyO2,115200n8 initrd=0x81600000,16M
Quoted 7 lines
[    2.566741] ThumbEE CPU extension supported.
[    2.582977] voltdm_scale: No voltage scale API registered for vdd_mpu_iva
[    2.590332] voltdm_scale: No voltage scale API registered for vdd_core
[    2.597503] PM: no software I/O chain control; some wakeups may be lost
[    2.645935] clock: disabling unused clocks to save power
[    2.659515] drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
[    2.671844] RAMDISK: gzip image found at block 0

Try adding 'nohlt' to your cmdline and make sure that CONFIG_CPU_IDLE is disabled.

Mark

#19 lore raw
In reply to Derald D. Woods
Quoted 4 lines · Derald D. Woods

Is there a kernel config
that is commonly used by those testing the AM3517? or modified omap2plus? I think some issues that I am seeing involve wrong configuration assumptions by me.

I'm using omap2plus_defconfig with CONFIG_TI_DAVINCI_EMAC enabled on an am3517evm board.

Does adding 'nohlt' to your cmdline help?

Mark

#20 lore raw

cover ARM: OMAP: remove IP checks from SoC family detection

In reply to Kevin Hilman
Quoted 25 lines · Kevin Hilman
Quoted 15 lines · Mark A. Greer

On Thu, Apr 26, 2012 at 04:29:45PM -0700, Kevin Hilman wrote:

Hi Kevin.

Quoted 11 lines

This is a rebased version of this series which is ready for broader testing. I'd especially appreciate testing from those of you with AM35x platforms.

Currently, our SoC detection is based on SoC family detection (using die ID) and the presence of specific IP blocks (or feature.)

This series begins the separation of the SoC family detection and specific IP detection by completely removing IP detection from the SoC family detection (cpu_is_*.)

Quoted 7 lines
Quoted 1 line

Applies on top of v3.4-rc4, boot tested on AM3517 EVM.

Your series applied and booted without issue until the point that pm_idle is called. At that point it hung because its doing a wfi and not getting an interrupt to wake up back up. That's expected behaviour so your patches are good (IMHO) but I need to finish and submit a new version of my patches to fix that issue.

Quoted 4 lines

For the benefit of others wanting to test this:

You have to use 'nohlt' on the cmdline on AM35x in order to avoid WFI and the wakeup problems that are still being worked on.

Oops, yes. I meant to add that and say that my am3517evm boots fine with your patches and 'nohlt' on the cmdline. I'm using omap2plus_defconfig with CONFIG_TI_DAVINCI_EMAC enabled.

Mark
--

#21 lore raw

cover ARM: OMAP: remove IP checks from SoC family detection

Quoted 26 lines · Mark A. Greer
Quoted 25 lines · Kevin Hilman
Quoted 22 lines · Mark A. Greer

On Thu, Apr 26, 2012 at 04:29:45PM -0700, Kevin Hilman wrote:

Hi Kevin.

Quoted 4 lines

This is a rebased version of this series which is ready for broader testing. I'd especially appreciate testing from those of you with AM35x platforms.

Quoted 8 lines

Currently, our SoC detection is based on SoC family detection (using die ID) and the presence of specific IP blocks (or feature.)

This series begins the separation of the SoC family detection and specific IP detection by completely removing IP detection from the SoC family detection (cpu_is_*.)

Applies on top of v3.4-rc4, boot tested on AM3517 EVM.

Your series applied and booted without issue until the point that pm_idle is called. At that point it hung because its doing a wfi and not getting an interrupt to wake up back up. That's expected behaviour so your patches are good (IMHO) but I need to finish and submit a new version of my patches to fix that issue.

Quoted 8 lines
Quoted 4 lines

For the benefit of others wanting to test this:

You have to use 'nohlt' on the cmdline on AM35x in order to avoid WFI and the wakeup problems that are still being worked on.

Oops, yes. I meant to add that and say that my am3517evm boots fine with your patches and 'nohlt' on the cmdline. I'm using omap2plus_defconfig with CONFIG_TI_DAVINCI_EMAC enabled.

Thanks for testing, will add a Tested-by from you.

Kevin

#22 lore raw

cover ARM: OMAP: remove IP checks from SoC family detection

In reply to Kevin Hilman
Quoted 10 lines · Kevin Hilman

This is a rebased version of this series which is ready for broader testing. I'd especially appreciate testing from those of you with AM35x platforms.

Currently, our SoC detection is based on SoC family detection (using die ID) and the presence of specific IP blocks (or feature.)

This series begins the separation of the SoC family detection and specific IP detection by completely removing IP detection from the SoC family detection (cpu_is_*.)

FYI... in order to avoid cross-tree dependencies going upstream, I split this series up into two seprate series, and just posted them. One for just clocks for Paul[1]:

[PATCH 0/3] ARM: OMAP3: clock: cleanup AM35xx clock flags

and another for converting most of the users of cpu_is_omap35*[2]:

[PATCH 0/2] ARM: OMAP3: cleanup AM35xx SoC detection

Once these are merged, I have one more patch[3] (which depends on both of the above branches) that will remove all the now unused cpu_is_omap35x* defintions and the last remaining user in the clock code.

Kevin

[1] http://marc.info/?l=linux-omap&m=133582867311326&w=2
[2] http://marc.info/?l=linux-omap&m=133582910911447&w=2

[3]

Quoted 1 line

From 88f5523f65d9f6c6a075c363922d2cd250d2cb42 Mon Sep 17 00:00:00 2001

From: Kevin Hilman <[email protected]>
Date: Wed, 4 Jan 2012 15:33:17 -0800
Subject: [PATCH] ARM: OMAP: SoC detection: remove unused cpu_is macros

Remove multiple unused cpu_is_omap35xx macros.

In particular, the cpu_is_omap35* macros for 3503, 3515, 3525 are removed because they are using omap_has_* feature checks and we want to remove specific feature detection from SoC family detection.

There are no longer any cpu_is_* checks that depend on specific IP detection.

---
 arch/arm/mach-omap2/clock3xxx_data.c  |    2 +-
 arch/arm/plat-omap/include/plat/cpu.h |   33 ---------------------------------
 2 files changed, 1 insertion(+), 34 deletions(-)
arch/arm/mach-omap2/clock3xxx_data.c +1 -1
index 9f48f84..31d38c7 100644
@@ -3513,7 +3513,7 @@ int __init omap3xxx_clk_init(void)
 	struct omap_clk *c;
 	u32 cpu_clkflg = 0;
 
-	if (cpu_is_omap3517()) {
+	if (cpu_is_am35xx()) {
 		cpu_mask = RATE_IN_34XX;
 		cpu_clkflg = CK_AM35XX;
 	} else if (cpu_is_omap3630()) {
arch/arm/plat-omap/include/plat/cpu.h +0 -33
index 7b0d8ef..2877fc2 100644
@@ -252,8 +252,6 @@ IS_AM_SUBCLASS(335x, 0x335)
  * cpu_is_omap2423():	True for OMAP2423
  * cpu_is_omap2430():	True for OMAP2430
  * cpu_is_omap3430():	True for OMAP3430
- * cpu_is_omap3505():	True for OMAP3505
- * cpu_is_omap3517():	True for OMAP3517
  */
 #define GET_OMAP_TYPE	((omap_rev() >> 16) & 0xffff)
 
@@ -277,8 +275,6 @@ IS_OMAP_TYPE(2422, 0x2422)
 IS_OMAP_TYPE(2423, 0x2423)
 IS_OMAP_TYPE(2430, 0x2430)
 IS_OMAP_TYPE(3430, 0x3430)
-IS_OMAP_TYPE(3505, 0x3517)
-IS_OMAP_TYPE(3517, 0x3517)
 
 #define cpu_is_omap310()		0
 #define cpu_is_omap730()		0
@@ -293,12 +289,6 @@ IS_OMAP_TYPE(3517, 0x3517)
 #define cpu_is_omap2422()		0
 #define cpu_is_omap2423()		0
 #define cpu_is_omap2430()		0
-#define cpu_is_omap3503()		0
-#define cpu_is_omap3515()		0
-#define cpu_is_omap3525()		0
-#define cpu_is_omap3530()		0
-#define cpu_is_omap3505()		0
-#define cpu_is_omap3517()		0
 #define cpu_is_omap3430()		0
 #define cpu_is_omap3630()		0
 
@@ -350,12 +340,6 @@ IS_OMAP_TYPE(3517, 0x3517)
 
 #if defined(CONFIG_ARCH_OMAP3)
 # undef cpu_is_omap3430
-# undef cpu_is_omap3503
-# undef cpu_is_omap3515
-# undef cpu_is_omap3525
-# undef cpu_is_omap3530
-# undef cpu_is_omap3505
-# undef cpu_is_omap3517
 # undef cpu_is_ti81xx
 # undef cpu_is_ti816x
 # undef cpu_is_ti814x
@@ -363,19 +347,6 @@ IS_OMAP_TYPE(3517, 0x3517)
 # undef cpu_is_am33xx
 # undef cpu_is_am335x
 # define cpu_is_omap3430()		is_omap3430()
-# define cpu_is_omap3503()		(cpu_is_omap3430() &&		\
-						(!omap3_has_iva()) &&	\
-						(!omap3_has_sgx()))
-# define cpu_is_omap3515()		(cpu_is_omap3430() &&		\
-						(!omap3_has_iva()) &&	\
-						(omap3_has_sgx()))
-# define cpu_is_omap3525()		(cpu_is_omap3430() &&		\
-						(!omap3_has_sgx()) &&	\
-						(omap3_has_iva()))
-# define cpu_is_omap3530()		(cpu_is_omap3430())
-# define cpu_is_omap3517()		is_omap3517()
-# define cpu_is_omap3505()		(cpu_is_omap3517() &&		\
-						!omap3_has_sgx())
 # undef cpu_is_omap3630
 # define cpu_is_omap3630()		is_omap363x()
 # define cpu_is_ti81xx()		is_ti81xx()
@@ -424,10 +395,6 @@ IS_OMAP_TYPE(3517, 0x3517)
 #define OMAP3630_REV_ES1_1	(OMAP363X_CLASS | (0x1 << 8))
 #define OMAP3630_REV_ES1_2	(OMAP363X_CLASS | (0x2 << 8))
 
-#define OMAP3517_CLASS		0x35170034
-#define OMAP3517_REV_ES1_0	OMAP3517_CLASS
-#define OMAP3517_REV_ES1_1	(OMAP3517_CLASS | (0x1 << 8))
-
 #define TI816X_CLASS		0x81600034
 #define TI8168_REV_ES1_0	TI816X_CLASS
 #define TI8168_REV_ES1_1	(TI816X_CLASS | (0x1 << 8))
Signature · 1 line
1.7.9.2