[U-Boot] [PATCH v2] Kirkwood: print_cpuinfo fixed for valid devid revid

Prafulla Wadaskar prafulla at marvell.com
Thu Oct 7 12:31:16 CEST 2010


 

> -----Original Message-----
> From: Prafulla Wadaskar [mailto:prafulla at marvell.com] 
> Sent: Monday, September 20, 2010 9:40 PM
> To: u-boot at lists.denx.de
> Cc: Prabhanjan Sarnaik; Ashish Karkare; Prafulla Wadaskar; 
> Prafulla Wadaskar
> Subject: [PATCH v2] Kirkwood: print_cpuinfo fixed for valid 
> devid revid
> 
> From: Prafulla Wadaskar <[prafulla at marvell.com]>
> 
> Earlier Device Identification register was used to detect
> the type for SoC, considering 88F6282 support to be added,
> It is not possible to detect the same using current
> algorithm.
> 
> With this patch, device ID is being read using PCIE devid
> register, also valid chip revision ID will also be read and
> displayed
> 
> Signed-off-by: Prafulla Wadaskar <prafulla at marvell.com>
> ---
> Change log:
> v2: Updated as per review comments for V1
> 	debug replaced by printf, sprintf removed
> 	(??) kept as it is since we dont know future references 
> for revid
> 
>  arch/arm/cpu/arm926ejs/kirkwood/cpu.c    |   34 
> ++++++++++++++++++++---------
>  arch/arm/include/asm/arch-kirkwood/cpu.h |    2 +
>  2 files changed, 25 insertions(+), 11 deletions(-)
> 
> diff --git a/arch/arm/cpu/arm926ejs/kirkwood/cpu.c 
> b/arch/arm/cpu/arm926ejs/kirkwood/cpu.c
> index 82c978b..b4a4c04 100644
> --- a/arch/arm/cpu/arm926ejs/kirkwood/cpu.c
> +++ b/arch/arm/cpu/arm926ejs/kirkwood/cpu.c
> @@ -54,10 +54,11 @@ unsigned char get_random_hex(void)
>  	u8 outbuf[BUFLEN];
>  
>  	/*
> -	 * in case of 88F6281/88F6192 A0,
> +	 * in case of 88F6281/88F6282/88F6192 A0,
>  	 * Bit7 need to reset to generate random values in 
> KW_REG_UNDOC_0x1470
> -	 * Soc reg offsets KW_REG_UNDOC_0x1470 and 
> KW_REG_UNDOC_0x1478 are reserved regs and
> -	 * Does not have names at this moment (no errata available)
> +	 * Soc reg offsets KW_REG_UNDOC_0x1470 and 
> KW_REG_UNDOC_0x1478 are
> +	 * reserved regs and does not have names at this moment
> +	 * (no errata available)
>  	 */
>  	writel(readl(KW_REG_UNDOC_0x1478) & ~(1 << 7), 
> KW_REG_UNDOC_0x1478);
>  	for (i = 0; i < BUFLEN; i++) {
> @@ -271,20 +272,31 @@ static void kw_sysrst_check(void)
>  #if defined(CONFIG_DISPLAY_CPUINFO)
>  int print_cpuinfo(void)
>  {
> -	char *name = "Unknown";
> +	char *rev;
> +	u16 devid = (readl(KW_REG_PCIE_DEVID) >> 16) & 0xffff;
> +	u8 revid = readl(KW_REG_PCIE_REVID) & 0xff;
>  
> -	switch (readl(KW_REG_DEVICE_ID) & 0x03) {
> -	case 1:
> -		name = "88F6192_A0";
> +	if ((readl(KW_REG_DEVICE_ID) & 0x03) > 2) {
> +		printf("Error.. %s:Unsupported Kirkwood SoC 
> 88F%04x\n", __FUNCTION__, devid);
> +		return -1;
> +	}
> +
> +	switch (revid) {
> +	case 0:
> +		rev = "Z0";
>  		break;
>  	case 2:
> -		name = "88F6281_A0";
> +		rev = "A0";
> +		break;
> +	case 3:
> +		rev = "A1";
>  		break;
>  	default:
> -		printf("SoC:   Unsupported Kirkwood\n");
> -		return -1;
> +		rev = "??";
> +		break;
>  	}
> -	printf("SoC:   Kirkwood %s\n", name);
> +
> +	printf("SoC:   Kirkwood 88F%04x_%s\n", devid, rev);
>  	return 0;
>  }
>  #endif /* CONFIG_DISPLAY_CPUINFO */
> diff --git a/arch/arm/include/asm/arch-kirkwood/cpu.h 
> b/arch/arm/include/asm/arch-kirkwood/cpu.h
> index b3022a3..d28c51a 100644
> --- a/arch/arm/include/asm/arch-kirkwood/cpu.h
> +++ b/arch/arm/include/asm/arch-kirkwood/cpu.h
> @@ -35,6 +35,8 @@
>  #define KWGBE_PORT_SERIAL_CONTROL1_REG(_x)	\
>  		((_x ? KW_EGIGA0_BASE : KW_EGIGA1_BASE) + 0x44c)
>  
> +#define KW_REG_PCIE_DEVID		(KW_REG_PCIE_BASE + 0x00)
> +#define KW_REG_PCIE_REVID		(KW_REG_PCIE_BASE + 0x08)
>  #define KW_REG_DEVICE_ID		(KW_MPP_BASE + 0x34)
>  #define KW_REG_SYSRST_CNT		(KW_MPP_BASE + 0x50)
>  #define SYSRST_CNT_1SEC_VAL		(25*1000000)
> -- 


Applied to u-boot-marvell.git master branch

Regards..
Prafulla . .


More information about the U-Boot mailing list