From 27cd1a4762c50eb461f74c7c43eee17b7bdde024 Mon Sep 17 00:00:00 2001 From: Tien Hock Loh Date: Mon, 11 May 2020 01:11:55 -0700 Subject: [PATCH] plat: intel: Fix CCU initialization for Agilex The CCU initialization loop uses the wrong units, this fixes that. This also fixes snoop filter register set bits should be used instead of overwriting the register Signed-off-by: Tien Hock Loh Change-Id: Ia15eeeae5569b00ad84120182170d353ee221b31 --- plat/intel/soc/common/drivers/ccu/ncore_ccu.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/plat/intel/soc/common/drivers/ccu/ncore_ccu.c b/plat/intel/soc/common/drivers/ccu/ncore_ccu.c index fce816b65..b4fce7b40 100644 --- a/plat/intel/soc/common/drivers/ccu/ncore_ccu.c +++ b/plat/intel/soc/common/drivers/ccu/ncore_ccu.c @@ -35,14 +35,12 @@ uint32_t directory_init(void) uint32_t dir, sf, ret; for (dir = 0; dir < subsystem_id.num_directory; dir++) { - - dir_sf_mtn = DIRECTORY_UNIT(dir, NCORE_DIRUSFMCR); - dir_sf_en = DIRECTORY_UNIT(dir, NCORE_DIRUSFER); - for (sf = 0; sf < subsystem_id.num_snoop_filter; sf++) { + dir_sf_mtn = DIRECTORY_UNIT(dir, NCORE_DIRUSFMCR); + dir_sf_en = DIRECTORY_UNIT(dir, NCORE_DIRUSFER); /* Initialize All Entries */ - mmio_write_32(dir_sf_mtn, SNOOP_FILTER_ID(sf)); + mmio_write_32(dir_sf_mtn, SNOOP_FILTER_ID(dir)); /* Poll Active Bit */ ret = poll_active_bit(dir); @@ -52,7 +50,7 @@ uint32_t directory_init(void) } /* Snoope Filter Enable */ - mmio_write_32(dir_sf_en, BIT(sf)); + mmio_setbits_32(dir_sf_en, BIT(sf)); } } @@ -64,11 +62,8 @@ uint32_t coherent_agent_intfc_init(void) uint32_t dir, ca, ca_id, ca_type, ca_snoop_en; for (dir = 0; dir < subsystem_id.num_directory; dir++) { - - ca_snoop_en = DIRECTORY_UNIT(dir, NCORE_DIRUCASER0); - for (ca = 0; ca < subsystem_id.num_coh_agent; ca++) { - + ca_snoop_en = DIRECTORY_UNIT(ca, NCORE_DIRUCASER0); ca_id = mmio_read_32(COH_AGENT_UNIT(ca, NCORE_CAIUIDR)); /* Coh Agent Snoop Enable */