[PATCH 2/3] OMAP3630: Add ES1.1 and ES1.2 detection

Nishanth Menon nm at ti.com
Wed Aug 4 15:02:04 EDT 2010


Tony Lindgren had written, on 08/04/2010 06:33 AM, the following:
> From: Anand Gadiyar <gadiyar at ti.com>
> 
> Add revision detection for ES1.1 and ES1.2. Set default
> revision as ES1.2.
> 
> Add CHIP_GE_OMAP3630ES1_1 to detect revisions 1.1 and later.
> This is needed for at least one feature that is broken in
> 3630ES1.0 but exists on older (3430 ES3.1) and newer revisions.
> 
> Additionally, update some of the CHIP_GE_* macros to use other
> macros for ease of maintenance.
> 
> Signed-off-by: Anand Gadiyar <gadiyar at ti.com>
> Cc: Nishanth Menon <nm at ti.com>
> Cc: Manjunatha GK <manjugk at ti.com>
> [tony at atomide.com: update to remove fallthrough handling]
> Signed-off-by: Tony Lindgren <tony at atomide.com>
> ---
>  arch/arm/mach-omap2/id.c              |   28 +++++++++++++++++++++++++---
>  arch/arm/plat-omap/include/plat/cpu.h |   15 +++++++++++----
>  2 files changed, 36 insertions(+), 7 deletions(-)
> 
> diff --git a/arch/arm/mach-omap2/id.c b/arch/arm/mach-omap2/id.c
> index fd1904b..e8256a2 100644
> --- a/arch/arm/mach-omap2/id.c
> +++ b/arch/arm/mach-omap2/id.c
> @@ -269,11 +269,27 @@ static void __init omap3_check_revision(void)
>  		omap_chip.oc |= CHIP_IS_OMAP3430ES3_1;
>  		break;
>  	case 0xb891:
> -	/* FALLTHROUGH */
> +		/* Handle 36xx devices */
> +		omap_chip.oc |= CHIP_IS_OMAP3630ES1;
> +
> +		switch(rev) {
> +		case 0: /* Take care of early samples */
> +			omap_revision = OMAP3630_REV_ES1_0;
> +			break;
> +		case 1:
> +			omap_revision = OMAP3630_REV_ES1_1;
> +			omap_chip.oc |= CHIP_IS_OMAP3630ES1_1;
> +			break;
> +		case 2:
> +		default:
> +			omap_revision =  OMAP3630_REV_ES1_2;
> +			omap_chip.oc |= CHIP_IS_OMAP3630ES1_2;
> +			break;
> +		}

we need to add a break here. to jump out of the main switch statement.
currently with ES1.0 3630, it reports as 3630 ES1.2

Tested and verified on SDP3630 with OMAP3630 ES1.0

>  	default:
>  		/* Unknown default to latest silicon rev as default*/
> -		omap_revision = OMAP3630_REV_ES1_0;
> -		omap_chip.oc |= CHIP_IS_OMAP3630ES1;
> +		omap_revision =  OMAP3630_REV_ES1_2;
> +		omap_chip.oc |= CHIP_IS_OMAP3630ES1_2;
>  	}
>  }
>  
> @@ -349,6 +365,12 @@ static void __init omap3_cpuinfo(void)
>  	case OMAP_REVBITS_00:
>  		strcpy(cpu_rev, "1.0");
>  		break;
> +	case OMAP_REVBITS_01:
> +		strcpy(cpu_rev, "1.1");
> +		break;
> +	case OMAP_REVBITS_02:
> +		strcpy(cpu_rev, "1.2");
> +		break;
>  	case OMAP_REVBITS_10:
>  		strcpy(cpu_rev, "2.0");
>  		break;
> diff --git a/arch/arm/plat-omap/include/plat/cpu.h b/arch/arm/plat-omap/include/plat/cpu.h
> index aa2f4f0..2e2ae53 100644
> --- a/arch/arm/plat-omap/include/plat/cpu.h
> +++ b/arch/arm/plat-omap/include/plat/cpu.h
> @@ -66,6 +66,8 @@ unsigned int omap_rev(void);
>   * family. This difference can be handled separately.
>   */
>  #define OMAP_REVBITS_00		0x00
> +#define OMAP_REVBITS_01		0x01
> +#define OMAP_REVBITS_02		0x02
>  #define OMAP_REVBITS_10		0x10
>  #define OMAP_REVBITS_20		0x20
>  #define OMAP_REVBITS_30		0x30
> @@ -376,6 +378,8 @@ IS_OMAP_TYPE(3517, 0x3517)
>  #define OMAP3430_REV_ES3_1_2	0x34305034
>  
>  #define OMAP3630_REV_ES1_0	0x36300034
> +#define OMAP3630_REV_ES1_1	0x36300134
> +#define OMAP3630_REV_ES1_2	0x36300234
>  
>  #define OMAP35XX_CLASS		0x35000034
>  #define OMAP3503_REV(v)		(OMAP35XX_CLASS | (0x3503 << 16) | (v << 8))
> @@ -411,6 +415,8 @@ IS_OMAP_TYPE(3517, 0x3517)
>  #define CHIP_IS_OMAP3430ES3_1		(1 << 6)
>  #define CHIP_IS_OMAP3630ES1		(1 << 7)
>  #define CHIP_IS_OMAP4430ES1		(1 << 8)
> +#define CHIP_IS_OMAP3630ES1_1           (1 << 9)
> +#define CHIP_IS_OMAP3630ES1_2           (1 << 10)
>  
>  #define CHIP_IS_OMAP24XX		(CHIP_IS_OMAP2420 | CHIP_IS_OMAP2430)
>  
> @@ -424,11 +430,12 @@ IS_OMAP_TYPE(3517, 0x3517)
>   */
>  #define CHIP_GE_OMAP3430ES2		(CHIP_IS_OMAP3430ES2 | \
>  					 CHIP_IS_OMAP3430ES3_0 | \
> -					 CHIP_IS_OMAP3430ES3_1 | \
> -					 CHIP_IS_OMAP3630ES1)
> +					 CHIP_GE_OMAP3430ES3_1)
>  #define CHIP_GE_OMAP3430ES3_1		(CHIP_IS_OMAP3430ES3_1 | \
> -					 CHIP_IS_OMAP3630ES1)
> -
> +					 CHIP_IS_OMAP3630ES1 | \
> +					 CHIP_GE_OMAP3630ES1_1)
> +#define CHIP_GE_OMAP3630ES1_1		(CHIP_IS_OMAP3630ES1_1 | \
> +					 CHIP_IS_OMAP3630ES1_2)
>  
>  int omap_chip_is(struct omap_chip_id oci);
>  void omap2_check_revision(void);
> 


-- 
Regards,
Nishanth Menon



More information about the linux-arm-kernel mailing list