@ -386,11 +386,15 @@ static void arc_ioc_setup(void)
if ( ! dcache_enabled ( ) )
panic ( " Try to enable IOC but L1 D$ is disabled " ) ;
flush_n_invalidate_dcache_all ( ) ;
if ( ! is_power_of_2 ( ap_size ) | | ap_size < 4096 )
panic ( " IOC Aperture size must be power of 2 and bigger 4Kib " ) ;
/* IOC Aperture start must be aligned to the size of the aperture */
if ( ap_base % ap_size ! = 0 )
panic ( " IOC Aperture start must be aligned to the size of the aperture " ) ;
flush_n_invalidate_dcache_all ( ) ;
/*
* IOC Aperture size decoded as 2 ^ ( SIZE + 2 ) KB ,
* so setting 0x11 implies 512 M , 0x12 implies 1 G . . .
@ -398,10 +402,6 @@ static void arc_ioc_setup(void)
write_aux_reg ( ARC_AUX_IO_COH_AP0_SIZE ,
order_base_2 ( ap_size / 1024 ) - 2 ) ;
/* IOC Aperture start must be aligned to the size of the aperture */
if ( ap_base % ap_size ! = 0 )
panic ( " IOC Aperture start must be aligned to the size of the aperture " ) ;
write_aux_reg ( ARC_AUX_IO_COH_AP0_BASE , ap_base > > 12 ) ;
write_aux_reg ( ARC_AUX_IO_COH_PARTIAL , 1 ) ;
write_aux_reg ( ARC_AUX_IO_COH_ENABLE , 1 ) ;