/* * Copyright 2014 Freescale Semiconductor, Inc. * * SPDX-License-Identifier: GPL-2.0+ */ #include #include #include "fsl_epu.h" /** * fsl_epu_clean - Clear EPU registers */ void fsl_epu_clean(void *epu_base) { u32 offset; /* follow the exact sequence to clear the registers */ /* Clear EPACRn */ for (offset = EPACR0; offset <= EPACR15; offset += EPACR_STRIDE) out_be32(epu_base + offset, 0); /* Clear EPEVTCRn */ for (offset = EPEVTCR0; offset <= EPEVTCR9; offset += EPEVTCR_STRIDE) out_be32(epu_base + offset, 0); /* Clear EPGCR */ out_be32(epu_base + EPGCR, 0); /* Clear EPSMCRn */ for (offset = EPSMCR0; offset <= EPSMCR15; offset += EPSMCR_STRIDE) out_be32(epu_base + offset, 0); /* Clear EPCCRn */ for (offset = EPCCR0; offset <= EPCCR31; offset += EPCCR_STRIDE) out_be32(epu_base + offset, 0); /* Clear EPCMPRn */ for (offset = EPCMPR0; offset <= EPCMPR31; offset += EPCMPR_STRIDE) out_be32(epu_base + offset, 0); /* Clear EPCTRn */ for (offset = EPCTR0; offset <= EPCTR31; offset += EPCTR_STRIDE) out_be32(epu_base + offset, 0); /* Clear EPIMCRn */ for (offset = EPIMCR0; offset <= EPIMCR31; offset += EPIMCR_STRIDE) out_be32(epu_base + offset, 0); /* Clear EPXTRIGCRn */ out_be32(epu_base + EPXTRIGCR, 0); /* Clear EPECRn */ for (offset = EPECR0; offset <= EPECR15; offset += EPECR_STRIDE) out_be32(epu_base + offset, 0); }