arm: tegra: Make tegra include directory
[linux-3.10.git] / drivers / platform / tegra / mc / mc-timing-t21x.c
1 /*
2  * arch/arm/mach-tegra/mc-timing-t210.c
3  *
4  * Copyright (c) 2013-2014, NVIDIA Corporation. All rights reserved.
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful, but WITHOUT
12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
14  * more details.
15  *
16  * You should have received a copy of the GNU General Public License along
17  * with this program; if not, write to the Free Software Foundation, Inc.,
18  * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
19  */
20
21 #include <linux/io.h>
22
23 #include <tegra/mcerr.h>
24
25 #include "../../../../arch/arm/mach-tegra/iomap.h"
26
27 #define MC_LA_REG(mod) MC_LATENCY_ALLOWANCE_ ## mod
28
29 static u32 mc_timing_reg_table[] = {
30         MC_LA_REG(AFI_0),
31         MC_LA_REG(AVPC_0),
32         MC_LA_REG(DC_0),
33         MC_LA_REG(DC_1),
34         MC_LA_REG(DC_2),
35         MC_LA_REG(DCB_0),
36         MC_LA_REG(DCB_1),
37         MC_LA_REG(DCB_2),
38         MC_LA_REG(HC_0),
39         MC_LA_REG(HC_1),
40         MC_LA_REG(HDA_0),
41         MC_LA_REG(MPCORE_0),
42         MC_LA_REG(NVENC_0),
43         MC_LA_REG(PPCS_0),
44         MC_LA_REG(PPCS_1),
45         MC_LA_REG(PTC_0),
46         MC_LA_REG(SATA_0),
47         MC_LA_REG(ISP2_0),
48         MC_LA_REG(ISP2_1),
49         MC_LA_REG(XUSB_0),
50         MC_LA_REG(XUSB_1),
51         MC_LA_REG(ISP2B_0),
52         MC_LA_REG(ISP2B_1),
53         MC_LA_REG(TSEC_0),
54         MC_LA_REG(VIC_0),
55         MC_LA_REG(VI2_0),
56         MC_LA_REG(AXIAP_0),
57         MC_LA_REG(A9AVP_0),
58         MC_LA_REG(GPU_0),
59         MC_LA_REG(SDMMCA_0),
60         MC_LA_REG(SDMMCAA_0),
61         MC_LA_REG(SDMMC_0),
62         MC_LA_REG(SDMMCAB_0),
63         MC_LA_REG(DC_3),
64         MC_LA_REG(NVDEC_0),
65         MC_LA_REG(APE_0),
66         MC_LA_REG(SE_0),
67         MC_LA_REG(NVJPG_0),
68         MC_LA_REG(GPU2_0),
69         MC_LA_REG(ETR_0),
70         MC_LA_REG(TSECB_0),
71 };
72
73 #define NUM_LA_REGS ARRAY_SIZE(mc_timing_reg_table)
74
75 void tegra21_mc_latency_allowance_save(u32 **pctx)
76 {
77         u32 *ctx = *pctx;
78         u32 i;
79         for (i = 0; i < NUM_LA_REGS; ++i)
80                 *ctx++ = readl(IOMEM(mc + mc_timing_reg_table[i]));
81 }
82
83 void tegra21_mc_latency_allowance_restore(u32 **pctx)
84 {
85         u32 *ctx = *pctx;
86         u32 i;
87         for (i = 0; i < NUM_LA_REGS; ++i)
88                 __raw_writel(*ctx++, IOMEM(mc +
89                         mc_timing_reg_table[i]));
90 }