RE: [PATCH] ARM: OMAP: Add chip id recognition for OMAP4 ES2.1 and ES2.2

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi all,

Any comments on this patch?

Regards,
Nishant

> -----Original Message-----
> From: Nishant Kamat [mailto:nskamat@xxxxxx]
> Sent: Wednesday, January 19, 2011 8:49 PM
> To: linux-omap@xxxxxxxxxxxxxxx
> Cc: Nishant Kamat
> Subject: [PATCH] ARM: OMAP: Add chip id recognition for OMAP4 ES2.1 and
> ES2.2
>
> Allow OMAP4 ES2.1 and ES2.2 revisions to be recognized in the
> omap4_check_revision() function.
>
> Mainly, ES2.1 has fixes that allow LPDDR to be used at 100% OPP
> (400MHz).
> ES2.2 additionally has a couple of power management fixes (to reduce
> leakage), an I2C1 SDA line state fix, and a floating point write
> corruption fix (cortex erratum).
>
> Even though the current mainline support doesn't need to distinguish
> between ES2.X versions, it's still useful to know the correct silicon
> rev when issues are reported. Moreover, these id checks can be used by
> power management code that selects suitable OPPs considering the
> memory speed limitation on ES2.0.
>
> For details about the silicon errata on OMAP4430, refer
> http://focus.ti.com/pdfs/wtbu/SWPZ009A_OMAP4430_Errata_Public_vA.pdf
>
> Signed-off-by: Nishant Kamat <nskamat@xxxxxx>
> ---
>  arch/arm/mach-omap2/id.c              |   31 ++++++++++++++++++++-----
> ------
>  arch/arm/plat-omap/include/plat/cpu.h |   16 +++++++++++-----
>  2 files changed, 31 insertions(+), 16 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/id.c b/arch/arm/mach-omap2/id.c
> index 5f9086c..8fd0535 100644
> --- a/arch/arm/mach-omap2/id.c
> +++ b/arch/arm/mach-omap2/id.c
> @@ -6,7 +6,7 @@
>   * Copyright (C) 2005 Nokia Corporation
>   * Written by Tony Lindgren <tony@xxxxxxxxxxx>
>   *
> - * Copyright (C) 2009 Texas Instruments
> + * Copyright (C) 2009-11 Texas Instruments
>   * Added OMAP4 support - Santosh Shilimkar <santosh.shilimkar@xxxxxx>
>   *
>   * This program is free software; you can redistribute it and/or
> modify
> @@ -307,7 +307,7 @@ static void __init omap4_check_revision(void)
>  	 */
>  	idcode = read_tap_reg(OMAP_TAP_IDCODE);
>  	hawkeye = (idcode >> 12) & 0xffff;
> -	rev = (idcode >> 28) & 0xff;
> +	rev = (idcode >> 28) & 0xf;
>
>  	/*
>  	 * Few initial ES2.0 samples IDCODE is same as ES1.0
> @@ -326,22 +326,31 @@ static void __init omap4_check_revision(void)
>  			omap_chip.oc |= CHIP_IS_OMAP4430ES1;
>  			break;
>  		case 1:
> +		default:
>  			omap_revision = OMAP4430_REV_ES2_0;
>  			omap_chip.oc |= CHIP_IS_OMAP4430ES2;
> +		}
> +		break;
> +	case 0xb95c:
> +		switch (rev) {
> +		case 3:
> +			omap_revision = OMAP4430_REV_ES2_1;
> +			omap_chip.oc |= CHIP_IS_OMAP4430ES2_1;
>  			break;
> +		case 4:
>  		default:
> -			omap_revision = OMAP4430_REV_ES2_0;
> -			omap_chip.oc |= CHIP_IS_OMAP4430ES2;
> -	}
> -	break;
> +			omap_revision = OMAP4430_REV_ES2_2;
> +			omap_chip.oc |= CHIP_IS_OMAP4430ES2_2;
> +		}
> +		break;
>  	default:
> -		/* Unknown default to latest silicon rev as default*/
> -		omap_revision = OMAP4430_REV_ES2_0;
> -		omap_chip.oc |= CHIP_IS_OMAP4430ES2;
> +		/* Unknown default to latest silicon rev as default */
> +		omap_revision = OMAP4430_REV_ES2_2;
> +		omap_chip.oc |= CHIP_IS_OMAP4430ES2_2;
>  	}
>
> -	pr_info("OMAP%04x ES%d.0\n",
> -			omap_rev() >> 16, ((omap_rev() >> 12) & 0xf) + 1);
> +	pr_info("OMAP%04x ES%d.%d\n", omap_rev() >> 16,
> +		((omap_rev() >> 12) & 0xf), ((omap_rev() >> 8) & 0xf));
>  }
>
>  #define OMAP3_SHOW_FEATURE(feat)		\
> diff --git a/arch/arm/plat-omap/include/plat/cpu.h b/arch/arm/plat-
> omap/include/plat/cpu.h
> index 3fd8b40..989f9e6 100644
> --- a/arch/arm/plat-omap/include/plat/cpu.h
> +++ b/arch/arm/plat-omap/include/plat/cpu.h
> @@ -5,7 +5,7 @@
>   *
>   * Copyright (C) 2004, 2008 Nokia Corporation
>   *
> - * Copyright (C) 2009 Texas Instruments.
> + * Copyright (C) 2009-11 Texas Instruments.
>   *
>   * Written by Tony Lindgren <tony.lindgren@xxxxxxxxx>
>   *
> @@ -390,8 +390,10 @@ IS_OMAP_TYPE(3517, 0x3517)
>  #define OMAP3517_REV(v)		(OMAP35XX_CLASS | (0x3517 << 16) |
> (v << 8))
>
>  #define OMAP443X_CLASS		0x44300044
> -#define OMAP4430_REV_ES1_0	OMAP443X_CLASS
> -#define OMAP4430_REV_ES2_0	0x44301044
> +#define OMAP4430_REV_ES1_0	(OMAP443X_CLASS | (0x10 << 8))
> +#define OMAP4430_REV_ES2_0	(OMAP443X_CLASS | (0x20 << 8))
> +#define OMAP4430_REV_ES2_1	(OMAP443X_CLASS | (0x21 << 8))
> +#define OMAP4430_REV_ES2_2	(OMAP443X_CLASS | (0x22 << 8))
>
>  /*
>   * omap_chip bits
> @@ -419,11 +421,15 @@ IS_OMAP_TYPE(3517, 0x3517)
>  #define CHIP_IS_OMAP3630ES1_1           (1 << 9)
>  #define CHIP_IS_OMAP3630ES1_2           (1 << 10)
>  #define CHIP_IS_OMAP4430ES2		(1 << 11)
> +#define CHIP_IS_OMAP4430ES2_1		(1 << 12)
> +#define CHIP_IS_OMAP4430ES2_2		(1 << 13)
>
>  #define CHIP_IS_OMAP24XX		(CHIP_IS_OMAP2420 |
> CHIP_IS_OMAP2430)
>
> -#define CHIP_IS_OMAP4430		(CHIP_IS_OMAP4430ES1 | \
> -						 CHIP_IS_OMAP4430ES2)
> +#define CHIP_IS_OMAP4430		(CHIP_IS_OMAP4430ES1 |		\
> +					 CHIP_IS_OMAP4430ES2 |		\
> +					 CHIP_IS_OMAP4430ES2_1 |	\
> +					 CHIP_IS_OMAP4430ES2_2)
>
>  /*
>   * "GE" here represents "greater than or equal to" in terms of ES
> --
> 1.7.1
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux