public inbox for linux-omap@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3] OMAP3: introduce OMAP3630
@ 2009-10-08 23:47 Nishanth Menon
  2009-10-09 13:55 ` Aguirre Rodriguez, Sergio Alberto
  0 siblings, 1 reply; 4+ messages in thread
From: Nishanth Menon @ 2009-10-08 23:47 UTC (permalink / raw)
  To: linux-omap
  Cc: Nishanth Menon, Madhusudhan Chikkature Rajashekar, Vikram Pandita,
	Allen Pais, Anand Gadiyar, Benoit Cousson, Felipe Balbi,
	Kevin Hilman, Sanjeev Premi, Santosh Shilimkar,
	Sergio Alberto Aguirre Rodriguez, Tony Lindgren

--- SNIP ME --
Hi,
A bit of history for this patchset
V3 - Fixes from Sergio's comments + boot tested on SDP3430+3630.
V2 - fixes of generic comments from Felipe Balbi+minor cleanups
V1 - inital implementation of (a) approach
V0 - original approach introducing a new silicon family
--- END OF SNIP ME --
Device intro:
OMAP3630 is the latest in the family of OMAP3 devices
and among the changes it introduces are:

New OPP levels for new voltage and frequency levels. a bunch of
Bug fixes to various modules feature additions, notably with ISP,
sDMA etc.

Details about the chip is available here:
http://focus.ti.com/general/docs/wtbu/wtbuproductcontent.tsp?templateId=6123&navigationId=12836&contentId=52606

Strategy used:
Strategy to introduce this device into Linux was discussed here:
Ref: http://marc.info/?t=125343303400003&r=1&w=2

Two approaches were available:
a) Consider 3630 generation of devices as a new family of silicon
b) Consider 3630 as an offshoot of 3430 family of devices

As a common consensus, (b) seems to be more valid for 3630 as:
* There are changes which are easily handled by using "FEATURES"
  infrastructure.
  For details how to do this, see thread:
  http://marc.info/?t=125050998500001&r=1&w=2
* Most of existing 34xx infrastructure can be reused(almost 90%+)
	- so no ugly if (cpu_is_omap34xx() || cpu_is_omap36xx())
	  all over the place
	- lesser chance of bugs due to reuse of proven code flow
	- 36xx specific handling can still be done where required
	  within the existing infrastructure

NOTE:
* If additional 34xx series are added, OMAP3430_REV_ESXXXX can be
  added on top of the existing 3630 ones are renumbered

This patch was tested on SDP3430, boot tested on 3630 platform using
3430sdp defconfig

Signed-off-by: Madhusudhan Chikkature Rajashekar <madhu.cr@ti.com>
Signed-off-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Vikram Pandita <vikram.pandita@ti.com>
Cc: Allen Pais <allen.pais@ti.com>
Cc: Anand Gadiyar <gadiyar@ti.com>
Cc: Benoit Cousson <b-cousson@ti.com>
Cc: Felipe Balbi <felipe.balbi@nokia.com>
Cc: Kevin Hilman <khilman@deeprootsystems.com>
Cc: Sanjeev Premi <premi@ti.com>
Cc: Santosh Shilimkar <santosh.shilimkar@ti.com>
Cc: Sergio Alberto Aguirre Rodriguez <saaguirre@ti.com>
Cc: Tony Lindgren <tony@atomide.com>
---
 arch/arm/mach-omap2/id.c              |   32 +++++++++++++++++++++++++++++---
 arch/arm/plat-omap/include/mach/cpu.h |    6 ++++++
 2 files changed, 35 insertions(+), 3 deletions(-)

diff --git a/arch/arm/mach-omap2/id.c b/arch/arm/mach-omap2/id.c
index 03b80f2..2870d3b 100644
--- a/arch/arm/mach-omap2/id.c
+++ b/arch/arm/mach-omap2/id.c
@@ -186,6 +186,7 @@ void __init omap3_check_revision(void)
 {
 	u32 cpuid, idcode;
 	u16 hawkeye;
+	u16 omap_type = 0;
 	u8 rev;
 	char *rev_name = "ES1.0";
 
@@ -210,7 +211,9 @@ void __init omap3_check_revision(void)
 	hawkeye = (idcode >> 12) & 0xffff;
 	rev = (idcode >> 28) & 0xff;
 
-	if (hawkeye == 0xb7ae) {
+	switch (hawkeye) {
+	case 0xb7ae:
+		/* Handle 34xx devices */
 		switch (rev) {
 		case 0:
 			omap_revision = OMAP3430_REV_ES2_0;
@@ -231,12 +234,35 @@ void __init omap3_check_revision(void)
 		default:
 			/* Use the latest known revision as default */
 			omap_revision = OMAP3430_REV_ES3_1;
-			rev_name = "Unknown revision\n";
+			rev_name = "Unknown 34xx revision\n";
 		}
+		break;
+	case 0xb891:
+		/* Handle 36xx devices
+		 * But, override for display purposes
+		 */
+		omap_type = 0x3630;
+		switch (rev) {
+		case 0:
+			omap_revision = OMAP3630_REV_ES1_0;
+			rev_name = "ES1.0";
+			break;
+		default:
+			/* Use the latest known revision as default */
+			omap_revision = OMAP3630_REV_ES1_0;
+			rev_name = "Unknown 36xx revision\n";
+		}
+		break;
+	default:
+		/* Unknown default to latest rev as default*/
+		omap_revision = OMAP3630_REV_ES1_0;
+		rev_name = "Unknown revision\n";
 	}
 
 out:
-	pr_info("OMAP%04x %s\n", omap_rev() >> 16, rev_name);
+	if (!omap_type)
+		omap_type = omap_rev() >> 16;
+	pr_info("OMAP%04x %s\n", omap_type, rev_name);
 }
 
 #define OMAP3_SHOW_FEATURE(feat)		\
diff --git a/arch/arm/plat-omap/include/mach/cpu.h b/arch/arm/plat-omap/include/mach/cpu.h
index 431fec4..af1080f 100644
--- a/arch/arm/plat-omap/include/mach/cpu.h
+++ b/arch/arm/plat-omap/include/mach/cpu.h
@@ -383,6 +383,12 @@ IS_OMAP_TYPE(3430, 0x3430)
 #define OMAP3430_REV_ES2_1	0x34302034
 #define OMAP3430_REV_ES3_0	0x34303034
 #define OMAP3430_REV_ES3_1	0x34304034
+/* NOTE: Add 36xx series below
+ * If additional 34xx series are added, OMAP3430_REV_ESXXXX can be
+ * added above the 3630 defines and series renumbered to ensure
+ * rev() > checks to work
+ */
+#define OMAP3630_REV_ES1_0	0x34305034
 
 #define OMAP443X_CLASS		0x44300034
 
-- 
1.6.0.4


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* RE: [PATCH v3] OMAP3: introduce OMAP3630
  2009-10-08 23:47 [PATCH v3] OMAP3: introduce OMAP3630 Nishanth Menon
@ 2009-10-09 13:55 ` Aguirre Rodriguez, Sergio Alberto
  2009-10-09 17:53   ` Tony Lindgren
  0 siblings, 1 reply; 4+ messages in thread
From: Aguirre Rodriguez, Sergio Alberto @ 2009-10-09 13:55 UTC (permalink / raw)
  To: Menon, Nishanth, linux-omap
  Cc: Chikkature Rajashekar, Madhusudhan, Pandita, Vikram, Pais, Allen,
	Gadiyar, Anand, Cousson, Benoit, Felipe Balbi, Kevin Hilman,
	Premi, Sanjeev, Shilimkar, Santosh, Tony Lindgren

Nishanth, 

From: Menon, Nishanth 
Sent: Thursday, October 08, 2009 6:47 PM

<snip>

> diff --git a/arch/arm/plat-omap/include/mach/cpu.h 
> b/arch/arm/plat-omap/include/mach/cpu.h
> index 431fec4..af1080f 100644
> --- a/arch/arm/plat-omap/include/mach/cpu.h
> +++ b/arch/arm/plat-omap/include/mach/cpu.h
> @@ -383,6 +383,12 @@ IS_OMAP_TYPE(3430, 0x3430)
>  #define OMAP3430_REV_ES2_1	0x34302034
>  #define OMAP3430_REV_ES3_0	0x34303034
>  #define OMAP3430_REV_ES3_1	0x34304034
> +/* NOTE: Add 36xx series below
> + * If additional 34xx series are added, OMAP3430_REV_ESXXXX can be
> + * added above the 3630 defines and series renumbered to ensure
> + * rev() > checks to work
> + */
> +#define OMAP3630_REV_ES1_0	0x34305034

Just for the sake of curiosity...

Why not defining 3630 like this?

#define OMAP3630_REV_ES1_0	0x36301034

Sorry if i'm asking something dumb.

Regards,
Sergio

>  
>  #define OMAP443X_CLASS		0x44300034
>  
> -- 
> 1.6.0.4
> 
> 

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v3] OMAP3: introduce OMAP3630
  2009-10-09 13:55 ` Aguirre Rodriguez, Sergio Alberto
@ 2009-10-09 17:53   ` Tony Lindgren
  2009-10-09 18:54     ` Tony Lindgren
  0 siblings, 1 reply; 4+ messages in thread
From: Tony Lindgren @ 2009-10-09 17:53 UTC (permalink / raw)
  To: Aguirre Rodriguez, Sergio Alberto
  Cc: Menon, Nishanth, linux-omap, Chikkature Rajashekar, Madhusudhan,
	Pandita, Vikram, Pais, Allen, Gadiyar, Anand, Cousson, Benoit,
	Felipe Balbi, Kevin Hilman, Premi, Sanjeev, Shilimkar, Santosh

* Aguirre Rodriguez, Sergio Alberto <saaguirre@ti.com> [091009 06:55]:
> Nishanth, 
> 
> From: Menon, Nishanth 
> Sent: Thursday, October 08, 2009 6:47 PM
> 
> <snip>
> 
> > diff --git a/arch/arm/plat-omap/include/mach/cpu.h 
> > b/arch/arm/plat-omap/include/mach/cpu.h
> > index 431fec4..af1080f 100644
> > --- a/arch/arm/plat-omap/include/mach/cpu.h
> > +++ b/arch/arm/plat-omap/include/mach/cpu.h
> > @@ -383,6 +383,12 @@ IS_OMAP_TYPE(3430, 0x3430)
> >  #define OMAP3430_REV_ES2_1	0x34302034
> >  #define OMAP3430_REV_ES3_0	0x34303034
> >  #define OMAP3430_REV_ES3_1	0x34304034
> > +/* NOTE: Add 36xx series below
> > + * If additional 34xx series are added, OMAP3430_REV_ESXXXX can be
> > + * added above the 3630 defines and series renumbered to ensure
> > + * rev() > checks to work
> > + */
> > +#define OMAP3630_REV_ES1_0	0x34305034
> 
> Just for the sake of curiosity...
> 
> Why not defining 3630 like this?
> 
> #define OMAP3630_REV_ES1_0	0x36301034
> 
> Sorry if i'm asking something dumb.

Because it's still considered 34xx class chip with
some extra features. It compiles with the same settings,
and uses the same kernel code. So from kernel point of
view we can treat it as 34xx.

Regards,

Tony


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v3] OMAP3: introduce OMAP3630
  2009-10-09 17:53   ` Tony Lindgren
@ 2009-10-09 18:54     ` Tony Lindgren
  0 siblings, 0 replies; 4+ messages in thread
From: Tony Lindgren @ 2009-10-09 18:54 UTC (permalink / raw)
  To: Aguirre Rodriguez, Sergio Alberto
  Cc: Menon, Nishanth, linux-omap, Chikkature Rajashekar, Madhusudhan,
	Pandita, Vikram, Pais, Allen, Gadiyar, Anand, Cousson, Benoit,
	Felipe Balbi, Kevin Hilman, Premi, Sanjeev, Shilimkar, Santosh

* Tony Lindgren <tony@atomide.com> [091009 10:55]:
> * Aguirre Rodriguez, Sergio Alberto <saaguirre@ti.com> [091009 06:55]:
> > Nishanth, 
> > 
> > From: Menon, Nishanth 
> > Sent: Thursday, October 08, 2009 6:47 PM
> > 
> > <snip>
> > 
> > > diff --git a/arch/arm/plat-omap/include/mach/cpu.h 
> > > b/arch/arm/plat-omap/include/mach/cpu.h
> > > index 431fec4..af1080f 100644
> > > --- a/arch/arm/plat-omap/include/mach/cpu.h
> > > +++ b/arch/arm/plat-omap/include/mach/cpu.h
> > > @@ -383,6 +383,12 @@ IS_OMAP_TYPE(3430, 0x3430)
> > >  #define OMAP3430_REV_ES2_1	0x34302034
> > >  #define OMAP3430_REV_ES3_0	0x34303034
> > >  #define OMAP3430_REV_ES3_1	0x34304034
> > > +/* NOTE: Add 36xx series below
> > > + * If additional 34xx series are added, OMAP3430_REV_ESXXXX can be
> > > + * added above the 3630 defines and series renumbered to ensure
> > > + * rev() > checks to work
> > > + */
> > > +#define OMAP3630_REV_ES1_0	0x34305034
> > 
> > Just for the sake of curiosity...
> > 
> > Why not defining 3630 like this?
> > 
> > #define OMAP3630_REV_ES1_0	0x36301034
> > 
> > Sorry if i'm asking something dumb.
> 
> Because it's still considered 34xx class chip with
> some extra features. It compiles with the same settings,
> and uses the same kernel code. So from kernel point of
> view we can treat it as 34xx.

Never mind, the class bits for cpu_is_omap34xx() are the
still there. I was confused.
 
> Regards,
> 
> Tony
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2009-10-09 18:55 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-10-08 23:47 [PATCH v3] OMAP3: introduce OMAP3630 Nishanth Menon
2009-10-09 13:55 ` Aguirre Rodriguez, Sergio Alberto
2009-10-09 17:53   ` Tony Lindgren
2009-10-09 18:54     ` Tony Lindgren

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox