Changeset View
Changeset View
Standalone View
Standalone View
head/sys/arm/mv/mv_machdep.c
Show First 20 Lines • Show All 53 Lines • ▼ Show 20 Lines | |||||
#include <machine/fdt.h> | #include <machine/fdt.h> | ||||
#include <machine/machdep.h> | #include <machine/machdep.h> | ||||
#include <machine/platform.h> | #include <machine/platform.h> | ||||
#if __ARM_ARCH < 6 | #if __ARM_ARCH < 6 | ||||
#include <machine/cpu-v4.h> | #include <machine/cpu-v4.h> | ||||
#else | #else | ||||
#include <machine/cpu-v6.h> | #include <machine/cpu-v6.h> | ||||
#include <machine/pte-v6.h> | |||||
#endif | #endif | ||||
#include <arm/mv/mvreg.h> /* XXX */ | #include <arm/mv/mvreg.h> /* XXX */ | ||||
#include <arm/mv/mvvar.h> /* XXX eventually this should be eliminated */ | #include <arm/mv/mvvar.h> /* XXX eventually this should be eliminated */ | ||||
#include <arm/mv/mvwin.h> | #include <arm/mv/mvwin.h> | ||||
#include <dev/fdt/fdt_common.h> | #include <dev/fdt/fdt_common.h> | ||||
#include <dev/ofw/ofw_bus_subr.h> | #include <dev/ofw/ofw_bus_subr.h> | ||||
▲ Show 20 Lines • Show All 182 Lines • ▼ Show 20 Lines | |||||
#if !defined(SMP) | #if !defined(SMP) | ||||
/* For SMP case it should be initialized after APs are booted */ | /* For SMP case it should be initialized after APs are booted */ | ||||
armadaxp_init_coher_fabric(); | armadaxp_init_coher_fabric(); | ||||
#endif | #endif | ||||
armadaxp_l2_init(); | armadaxp_l2_init(); | ||||
#endif | #endif | ||||
#if defined(SOC_MV_ARMADA38X) | #if defined(SOC_MV_ARMADA38X) | ||||
/* | |||||
* Workaround for Marvell Armada38X family HW issue | |||||
* between Cortex-A9 CPUs and on-chip devices that may | |||||
* cause hang on heavy load. | |||||
* To avoid that, map all registers including PCIe IO | |||||
* as strongly ordered instead of device memory. | |||||
*/ | |||||
pmap_remap_vm_attr(PTE2_ATTR_DEVICE, PTE2_ATTR_SO); | |||||
/* Set IO Sync Barrier bit for all Mbus devices */ | /* Set IO Sync Barrier bit for all Mbus devices */ | ||||
if (armada38x_win_set_iosync_barrier() != 0) | if (armada38x_win_set_iosync_barrier() != 0) | ||||
printf("WARNING: could not map CPU Subsystem registers\n"); | printf("WARNING: could not map CPU Subsystem registers\n"); | ||||
if (armada38x_mbus_optimization() != 0) | if (armada38x_mbus_optimization() != 0) | ||||
printf("WARNING: could not enable mbus optimization\n"); | printf("WARNING: could not enable mbus optimization\n"); | ||||
if (armada38x_scu_enable() != 0) | if (armada38x_scu_enable() != 0) | ||||
printf("WARNING: could not enable SCU\n"); | printf("WARNING: could not enable SCU\n"); | ||||
#ifdef SMP | #ifdef SMP | ||||
▲ Show 20 Lines • Show All 236 Lines • Show Last 20 Lines |