xref: /openbmc/u-boot/arch/arm/cpu/armv7/ls102xa/fsl_epu.c (revision 306fa012)
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