2011-08-20 07:18:07 +04:00
/* linux/arch/arm/plat-samsung/cpu.c
*
* Copyright ( c ) 2009 - 2011 Samsung Electronics Co . , Ltd .
* http : //www.samsung.com
*
* Samsung CPU Support
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation .
*/
# include <linux/module.h>
# include <linux/kernel.h>
# include <linux/init.h>
# include <linux/io.h>
2014-07-03 15:17:12 +04:00
# include <plat/map-base.h>
2011-08-20 07:18:07 +04:00
# include <plat/cpu.h>
unsigned long samsung_cpu_id ;
static unsigned int samsung_cpu_rev ;
unsigned int samsung_rev ( void )
{
return samsung_cpu_rev ;
}
EXPORT_SYMBOL ( samsung_rev ) ;
void __init s3c64xx_init_cpu ( void )
{
2016-06-21 13:20:23 +03:00
samsung_cpu_id = readl_relaxed ( S3C_VA_SYS + 0x118 ) ;
2011-08-20 07:18:07 +04:00
if ( ! samsung_cpu_id ) {
/*
* S3C6400 has the ID register in a different place ,
* and needs a write before it can be read .
*/
2016-06-21 13:20:23 +03:00
writel_relaxed ( 0x0 , S3C_VA_SYS + 0xA1C ) ;
samsung_cpu_id = readl_relaxed ( S3C_VA_SYS + 0xA1C ) ;
2011-08-20 07:18:07 +04:00
}
samsung_cpu_rev = 0 ;
2014-11-26 09:43:35 +03:00
pr_info ( " Samsung CPU ID: 0x%08lx \n " , samsung_cpu_id ) ;
2011-08-20 07:18:07 +04:00
}
2016-07-05 16:56:54 +03:00
void __init s5p_init_cpu ( const void __iomem * cpuid_addr )
2011-08-20 07:18:07 +04:00
{
2016-06-21 13:20:23 +03:00
samsung_cpu_id = readl_relaxed ( cpuid_addr ) ;
2011-08-20 07:18:07 +04:00
samsung_cpu_rev = samsung_cpu_id & 0xFF ;
2014-11-26 09:43:35 +03:00
pr_info ( " Samsung CPU ID: 0x%08lx \n " , samsung_cpu_id ) ;
2011-08-20 07:18:07 +04:00
}