1*83d290c5STom Rini // SPDX-License-Identifier: GPL-2.0+
21e7cefefSChristophe Leroy /*
31e7cefefSChristophe Leroy * (C) Copyright 2017
41e7cefefSChristophe Leroy * Christophe Leroy, CS Systemes d'Information, christophe.leroy@c-s.fr
51e7cefefSChristophe Leroy */
61e7cefefSChristophe Leroy
71e7cefefSChristophe Leroy #include <common.h>
81e7cefefSChristophe Leroy #include <asm/processor.h>
91e7cefefSChristophe Leroy #include <asm/ppc.h>
101e7cefefSChristophe Leroy #include <asm/io.h>
111e7cefefSChristophe Leroy #include <asm/mmu.h>
121e7cefefSChristophe Leroy
icache_status(void)131e7cefefSChristophe Leroy int icache_status(void)
141e7cefefSChristophe Leroy {
151e7cefefSChristophe Leroy return !!(mfspr(IC_CST) & IDC_ENABLED);
161e7cefefSChristophe Leroy }
171e7cefefSChristophe Leroy
icache_enable(void)181e7cefefSChristophe Leroy void icache_enable(void)
191e7cefefSChristophe Leroy {
201e7cefefSChristophe Leroy sync();
211e7cefefSChristophe Leroy mtspr(IC_CST, IDC_INVALL);
221e7cefefSChristophe Leroy mtspr(IC_CST, IDC_ENABLE);
231e7cefefSChristophe Leroy }
241e7cefefSChristophe Leroy
icache_disable(void)251e7cefefSChristophe Leroy void icache_disable(void)
261e7cefefSChristophe Leroy {
271e7cefefSChristophe Leroy sync();
281e7cefefSChristophe Leroy mtspr(IC_CST, IDC_DISABLE);
291e7cefefSChristophe Leroy }
301e7cefefSChristophe Leroy
dcache_status(void)311e7cefefSChristophe Leroy int dcache_status(void)
321e7cefefSChristophe Leroy {
331e7cefefSChristophe Leroy return !!(mfspr(IC_CST) & IDC_ENABLED);
341e7cefefSChristophe Leroy }
351e7cefefSChristophe Leroy
dcache_enable(void)361e7cefefSChristophe Leroy void dcache_enable(void)
371e7cefefSChristophe Leroy {
381e7cefefSChristophe Leroy mtspr(MD_CTR, MD_RESETVAL); /* Set cache mode with MMU off */
391e7cefefSChristophe Leroy mtspr(DC_CST, IDC_INVALL);
401e7cefefSChristophe Leroy mtspr(DC_CST, IDC_ENABLE);
411e7cefefSChristophe Leroy }
421e7cefefSChristophe Leroy
dcache_disable(void)431e7cefefSChristophe Leroy void dcache_disable(void)
441e7cefefSChristophe Leroy {
451e7cefefSChristophe Leroy sync();
461e7cefefSChristophe Leroy mtspr(DC_CST, IDC_DISABLE);
471e7cefefSChristophe Leroy mtspr(DC_CST, IDC_INVALL);
481e7cefefSChristophe Leroy }
49