public inbox for linux-arm-kernel@lists.infradead.org 
 help / color / mirror / Atom feed
From: kgene.kim@samsung•com (Kukjin Kim)
To: linux-arm-kernel@lists•infradead.org
Subject: [PATCH 1/4] ARM: Exynos: Use CHIP_ID to detect cpu type during decompression setup
Date: Wed, 28 Mar 2012 18:34:05 -0700	[thread overview]
Message-ID: <4F73BC0D.7070004@samsung.com> (raw)
In-Reply-To: <1332840365-24827-2-git-send-email-thomas.abraham@linaro.org>

Thomas Abraham wrote:
> The config option MACH_SMDK5250 is not available for Exynos5 since only
> a device tree based machine is supported and selected by MACH_EXYNOS5_DT.
> Hence, the detection of the cpu type based on machine_is_smdk5250 always
> fails and boot hangs due to incorrect uart base being used. Fix this by
> reading the chip id to determine the cpu type and setup the uart_base
> accordingly.
> 
> Signed-off-by: Thomas Abraham<thomas.ab@samsung•com>
> ---
>   arch/arm/mach-exynos/include/mach/uncompress.h |    6 +++++-
>   1 files changed, 5 insertions(+), 1 deletions(-)
> 
> diff --git a/arch/arm/mach-exynos/include/mach/uncompress.h b/arch/arm/mach-exynos/include/mach/uncompress.h
> index 493f4f3..603ea9b 100644
> --- a/arch/arm/mach-exynos/include/mach/uncompress.h
> +++ b/arch/arm/mach-exynos/include/mach/uncompress.h
> @@ -14,15 +14,19 @@
> 
>   #include<asm/mach-types.h>
> 
> +#include<plat/cpu.h>
>   #include<mach/map.h>
> 
>   volatile u8 *uart_base;
> 
>   #include<plat/uncompress.h>
> 
> +#define __raw_readl(addr)		\
> +	(*((volatile unsigned int __force *)(addr)))
> +
>   static void arch_detect_cpu(void)
>   {
> -	if (machine_is_smdk5250())
> +	if ((__raw_readl(EXYNOS_PA_CHIPID)&  EXYNOS5_SOC_MASK) == EXYNOS5250_SOC_ID)
>   		uart_base = (volatile u8 *)EXYNOS5_PA_UART + (S3C_UART_OFFSET * CONFIG_S3C_LOWLEVEL_UART_PORT);
>   	else
>   		uart_base = (volatile u8 *)EXYNOS4_PA_UART + (S3C_UART_OFFSET * CONFIG_S3C_LOWLEVEL_UART_PORT);

Hi Thomas,

Thanks for fix.

But I have following patch and it is not required to add inclusion of
<plat/cpu.h>. How do you think? If you're ok, I would preferred to use
follwoing.

diff --git a/arch/arm/mach-exynos/include/mach/uncompress.h
b/arch/arm/mach-exynos/include/mach/uncompress.h
index 493f4f3..2979995 100644
--- a/arch/arm/mach-exynos/include/mach/uncompress.h
+++ b/arch/arm/mach-exynos/include/mach/uncompress.h
@@ -20,9 +20,24 @@ volatile u8 *uart_base;

 #include <plat/uncompress.h>

+static unsigned int __raw_readl(unsigned int ptr)
+{
+	return *((volatile unsigned int *)ptr);
+}
+
 static void arch_detect_cpu(void)
 {
-	if (machine_is_smdk5250())
+	u32 chip_id = __raw_readl(EXYNOS_PA_CHIPID);
+
+	/*
+	 * product_id is bits 31:12
+	 *    bits 23:20 describe the exynosX family
+	 *
+	 */
+	chip_id >>= 20;
+	chip_id &= 0xf;
+
+	if (chip_id == 0x5)
 		uart_base = (volatile u8 *)EXYNOS5_PA_UART + (S3C_UART_OFFSET *
CONFIG_S3C_LOWLEVEL_UART_PORT);
 	else
 		uart_base = (volatile u8 *)EXYNOS4_PA_UART + (S3C_UART_OFFSET *
CONFIG_S3C_LOWLEVEL_UART_PORT);


Thanks.

Best regards,
Kgene.
--
Kukjin Kim <kgene.kim@samsung•com>, Senior Engineer,
SW Solution Development Team, Samsung Electronics Co., Ltd.

  reply	other threads:[~2012-03-29  1:34 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-03-27  9:26 [PATCH 0/4] ARM: Exynos: Fixes for Exynos5 device tree support Thomas Abraham
2012-03-27  9:26 ` [PATCH 1/4] ARM: Exynos: Use CHIP_ID to detect cpu type during decompression setup Thomas Abraham
2012-03-29  1:34   ` Kukjin Kim [this message]
2012-03-27  9:26 ` [PATCH 2/4] ARM: Exynos: Remove a new bus_type instance for Exynos5 Thomas Abraham
2012-03-27  9:26 ` [PATCH 3/4] ARM: Exynos5: Fix incorrect initialization of GIC Thomas Abraham
2012-03-29  1:46   ` Kukjin Kim
2012-03-27  9:26 ` [PATCH 4/4] ARM: Exynos5: Add PDMA and MDMA physical base address defines Thomas Abraham
2012-03-29  1:54   ` Kukjin Kim
2012-04-09  3:48     ` Olof Johansson
2012-04-10 16:56       ` Kukjin Kim

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4F73BC0D.7070004@samsung.com \
    --to=kgene.kim@samsung$(echo .)com \
    --cc=linux-arm-kernel@lists$(echo .)infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox