From ae20f807dab9a705b4dfcd76f6d1150c45e3ef9c Mon Sep 17 00:00:00 2001 From: Aurelien Jarno Date: Mon, 12 Nov 2018 23:00:56 +0100 Subject: [PATCH] soc: same70: enable data cache on sam_e70 The Cortex-M7 CPU included in the SAM e70 SoCs has a data cache that significantly boost the performances. However the SAM GMAC Ethernet driver is using a scatter-gather technique to exchange data with the Ethernet driver. This requires the use use of a non-cached memory area. This is currently not supported on Zephyr, but support for it is being discussed in PR#11199. In the meantime, enable the data cache during the SoC initialization, unless the SAM GMAC Ethernet driver is enabled. Signed-off-by: Aurelien Jarno --- soc/arm/atmel_sam/same70/soc.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/soc/arm/atmel_sam/same70/soc.c b/soc/arm/atmel_sam/same70/soc.c index 13625b02bef..89f4d89b96b 100644 --- a/soc/arm/atmel_sam/same70/soc.c +++ b/soc/arm/atmel_sam/same70/soc.c @@ -229,6 +229,18 @@ static int atmel_same70_init(struct device *arg) SCB_EnableICache(); +/* + * The Atmel SAM GMAC Ethernet driver is using a scatter-gather technique + * to exchange data with the Ethernet driver. This requires the use use of + * a non-cached memory area. This is currently not supported on Zephyr, so + * do not enable the cache in that case. + */ +#ifndef CONFIG_ETH_SAM_GMAC + if (!(SCB->CCR & SCB_CCR_DC_Msk)) { + SCB_EnableDCache(); + } +#endif + /* Clear all faults */ _ClearFaults();