summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bsps/sparc/shared/l2c/l2c.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/bsps/sparc/shared/l2c/l2c.c b/bsps/sparc/shared/l2c/l2c.c
index 7b17f8b318..89b0f40444 100644
--- a/bsps/sparc/shared/l2c/l2c.c
+++ b/bsps/sparc/shared/l2c/l2c.c
@@ -241,6 +241,8 @@
/*
* L2CACHE ACCESS CONTROL register fields
*/
+#define L2C_ACCCTRL_DSC (0x1 << L2C_ACCCTRL_DSC_BIT)
+#define L2C_ACCCTRL_SH (0x1 << L2C_ACCCTRL_SH_BIT)
#define L2C_ACCCTRL_SPLITQ (0x1 << L2C_ACCCTRL_SPLITQ_BIT)
#define L2C_ACCCTRL_NHM (0x1 << L2C_ACCCTRL_NHM_BIT)
#define L2C_ACCCTRL_BERR (0x1 << L2C_ACCCTRL_BERR_BIT)
@@ -251,6 +253,8 @@
#define L2C_ACCCTRL_DBPWS (0x1 << L2C_ACCCTRL_DBPWS_BIT)
#define L2C_ACCCTRL_SPLIT (0x1 << L2C_ACCCTRL_SPLIT_BIT)
+#define L2C_ACCCTRL_DSC_BIT 14
+#define L2C_ACCCTRL_SH_BIT 13
#define L2C_ACCCTRL_SPLITQ_BIT 10
#define L2C_ACCCTRL_NHM_BIT 9
#define L2C_ACCCTRL_BERR_BIT 8
@@ -672,6 +676,10 @@ STATIC INLINE int l2cache_reg_scrub_enable(int delay)
{
struct l2cache_priv *priv = l2cachepriv;
+ unsigned int accc = REG_READ(&priv->regs->access_control);
+ REG_WRITE(&priv->regs->access_control,
+ accc | L2C_ACCCTRL_DSC | L2C_ACCCTRL_SH);
+
unsigned int ctrl = REG_READ(&priv->regs->scrub_control_status);
REG_WRITE(&priv->regs->scrub_delay,
(delay << L2C_SCRUB_DEL_BIT) & L2C_SCRUB_DEL);