@ -119,17 +119,6 @@ static struct map_desc exynos_iodesc[] __initdata = {
} ,
} ;
# ifdef CONFIG_ARCH_EXYNOS5
static struct map_desc exynos5440_iodesc [ ] __initdata = {
{
. virtual = ( unsigned long ) S5P_VA_CHIPID ,
. pfn = __phys_to_pfn ( EXYNOS5440_PA_CHIPID ) ,
. length = SZ_4K ,
. type = MT_DEVICE ,
} ,
} ;
# endif
static struct map_desc exynos4_iodesc [ ] __initdata = {
{
. virtual = ( unsigned long ) S3C_VA_SYS ,
@ -320,6 +309,31 @@ void __init exynos_init_late(void)
exynos_pm_late_initcall ( ) ;
}
# ifdef CONFIG_OF
int __init exynos_fdt_map_chipid ( unsigned long node , const char * uname ,
int depth , void * data )
{
struct map_desc iodesc ;
__be32 * reg ;
unsigned long len ;
if ( ! of_flat_dt_is_compatible ( node , " samsung,exynos4210-chipid " ) & &
! of_flat_dt_is_compatible ( node , " samsung,exynos5440-clock " ) )
return 0 ;
reg = of_get_flat_dt_prop ( node , " reg " , & len ) ;
if ( reg = = NULL | | len ! = ( sizeof ( unsigned long ) * 2 ) )
return 0 ;
iodesc . pfn = __phys_to_pfn ( be32_to_cpu ( reg [ 0 ] ) ) ;
iodesc . length = be32_to_cpu ( reg [ 1 ] ) - 1 ;
iodesc . virtual = ( unsigned long ) S5P_VA_CHIPID ;
iodesc . type = MT_DEVICE ;
iotable_init ( & iodesc , 1 ) ;
return 1 ;
}
# endif
/*
* exynos_map_io
*
@ -328,19 +342,12 @@ void __init exynos_init_late(void)
void __init exynos_init_io ( struct map_desc * mach_desc , int size )
{
struct map_desc * iodesc = exynos_iodesc ;
int iodesc_sz = ARRAY_SIZE ( exynos_iodesc ) ;
# if defined(CONFIG_OF) && defined(CONFIG_ARCH_EXYNOS5)
unsigned long root = of_get_flat_dt_root ( ) ;
/* initialize the io descriptors we need for initialization */
if ( of_flat_dt_is_compatible ( root , " samsung,exynos5440 " ) ) {
iodesc = exynos5440_iodesc ;
iodesc_sz = ARRAY_SIZE ( exynos5440_iodesc ) ;
}
# ifdef CONFIG_OF
if ( initial_boot_params )
of_scan_flat_dt ( exynos_fdt_map_chipid , NULL ) ;
else
# endif
iotable_init ( iodesc , iodesc_sz ) ;
iotable_init ( exynos_iodesc , ARRAY_SIZE ( exynos_iodesc ) ) ;
if ( mach_desc )
iotable_init ( mach_desc , size ) ;