1*306fa012Schenhui zhao /* 2*306fa012Schenhui zhao * Copyright 2014 Freescale Semiconductor, Inc. 3*306fa012Schenhui zhao * 4*306fa012Schenhui zhao * SPDX-License-Identifier: GPL-2.0+ 5*306fa012Schenhui zhao */ 6*306fa012Schenhui zhao 7*306fa012Schenhui zhao #include <common.h> 8*306fa012Schenhui zhao #include <asm/io.h> 9*306fa012Schenhui zhao 10*306fa012Schenhui zhao #include "fsl_epu.h" 11*306fa012Schenhui zhao 12*306fa012Schenhui zhao /** 13*306fa012Schenhui zhao * fsl_epu_clean - Clear EPU registers 14*306fa012Schenhui zhao */ 15*306fa012Schenhui zhao void fsl_epu_clean(void *epu_base) 16*306fa012Schenhui zhao { 17*306fa012Schenhui zhao u32 offset; 18*306fa012Schenhui zhao 19*306fa012Schenhui zhao /* follow the exact sequence to clear the registers */ 20*306fa012Schenhui zhao /* Clear EPACRn */ 21*306fa012Schenhui zhao for (offset = EPACR0; offset <= EPACR15; offset += EPACR_STRIDE) 22*306fa012Schenhui zhao out_be32(epu_base + offset, 0); 23*306fa012Schenhui zhao 24*306fa012Schenhui zhao /* Clear EPEVTCRn */ 25*306fa012Schenhui zhao for (offset = EPEVTCR0; offset <= EPEVTCR9; offset += EPEVTCR_STRIDE) 26*306fa012Schenhui zhao out_be32(epu_base + offset, 0); 27*306fa012Schenhui zhao 28*306fa012Schenhui zhao /* Clear EPGCR */ 29*306fa012Schenhui zhao out_be32(epu_base + EPGCR, 0); 30*306fa012Schenhui zhao 31*306fa012Schenhui zhao /* Clear EPSMCRn */ 32*306fa012Schenhui zhao for (offset = EPSMCR0; offset <= EPSMCR15; offset += EPSMCR_STRIDE) 33*306fa012Schenhui zhao out_be32(epu_base + offset, 0); 34*306fa012Schenhui zhao 35*306fa012Schenhui zhao /* Clear EPCCRn */ 36*306fa012Schenhui zhao for (offset = EPCCR0; offset <= EPCCR31; offset += EPCCR_STRIDE) 37*306fa012Schenhui zhao out_be32(epu_base + offset, 0); 38*306fa012Schenhui zhao 39*306fa012Schenhui zhao /* Clear EPCMPRn */ 40*306fa012Schenhui zhao for (offset = EPCMPR0; offset <= EPCMPR31; offset += EPCMPR_STRIDE) 41*306fa012Schenhui zhao out_be32(epu_base + offset, 0); 42*306fa012Schenhui zhao 43*306fa012Schenhui zhao /* Clear EPCTRn */ 44*306fa012Schenhui zhao for (offset = EPCTR0; offset <= EPCTR31; offset += EPCTR_STRIDE) 45*306fa012Schenhui zhao out_be32(epu_base + offset, 0); 46*306fa012Schenhui zhao 47*306fa012Schenhui zhao /* Clear EPIMCRn */ 48*306fa012Schenhui zhao for (offset = EPIMCR0; offset <= EPIMCR31; offset += EPIMCR_STRIDE) 49*306fa012Schenhui zhao out_be32(epu_base + offset, 0); 50*306fa012Schenhui zhao 51*306fa012Schenhui zhao /* Clear EPXTRIGCRn */ 52*306fa012Schenhui zhao out_be32(epu_base + EPXTRIGCR, 0); 53*306fa012Schenhui zhao 54*306fa012Schenhui zhao /* Clear EPECRn */ 55*306fa012Schenhui zhao for (offset = EPECR0; offset <= EPECR15; offset += EPECR_STRIDE) 56*306fa012Schenhui zhao out_be32(epu_base + offset, 0); 57*306fa012Schenhui zhao } 58