summaryrefslogtreecommitdiff
path: root/arch/arm/mach-socfpga/include/mach/system_manager_s10.h
blob: 297f9e1999d068fc3da6dd897b96f8ded36bc355 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
/* SPDX-License-Identifier: GPL-2.0
 *
 * Copyright (C) 2016-2018 Intel Corporation <www.intel.com>
 *
 */

#ifndef	_SYSTEM_MANAGER_S10_
#define	_SYSTEM_MANAGER_S10_

void sysmgr_pinmux_init(void);
void populate_sysmgr_fpgaintf_module(void);
void populate_sysmgr_pinmux(void);
void sysmgr_pinmux_table_sel(const u32 **table, unsigned int *table_len);
void sysmgr_pinmux_table_ctrl(const u32 **table, unsigned int *table_len);
void sysmgr_pinmux_table_fpga(const u32 **table, unsigned int *table_len);
void sysmgr_pinmux_table_delay(const u32 **table, unsigned int *table_len);

struct socfpga_system_manager {
	/* System Manager Module */
	u32	siliconid1;			/* 0x00 */
	u32	siliconid2;
	u32	wddbg;
	u32	_pad_0xc;
	u32	mpu_status;			/* 0x10 */
	u32	mpu_ace;
	u32	_pad_0x18_0x1c[2];
	u32	dma;				/* 0x20 */
	u32	dma_periph;
	/* SDMMC Controller Group */
	u32	sdmmcgrp_ctrl;
	u32	sdmmcgrp_l3master;
	/* NAND Flash Controller Register Group */
	u32	nandgrp_bootstrap;		/* 0x30 */
	u32	nandgrp_l3master;
	/* USB Controller Group */
	u32	usb0_l3master;
	u32	usb1_l3master;
	/* EMAC Group */
	u32	emac_gbl;			/* 0x40 */
	u32	emac0;
	u32	emac1;
	u32	emac2;
	u32	emac0_ace;			/* 0x50 */
	u32	emac1_ace;
	u32	emac2_ace;
	u32	nand_axuser;
	u32	_pad_0x60_0x64[2];		/* 0x60 */
	/* FPGA interface Group */
	u32	fpgaintf_en_1;
	u32	fpgaintf_en_2;
	u32	fpgaintf_en_3;			/* 0x70 */
	u32	dma_l3master;
	u32	etr_l3master;
	u32	_pad_0x7c;
	u32	sec_ctrl_slt;			/* 0x80 */
	u32	osc_trim;
	u32	_pad_0x88_0x8c[2];
	/* ECC Group */
	u32	ecc_intmask_value;		/* 0x90 */
	u32	ecc_intmask_set;
	u32	ecc_intmask_clr;
	u32	ecc_intstatus_serr;
	u32	ecc_intstatus_derr;		/* 0xa0 */
	u32	_pad_0xa4_0xac[3];
	u32	noc_addr_remap;			/* 0xb0 */
	u32	hmc_clk;
	u32	io_pa_ctrl;
	u32	_pad_0xbc;
	/* NOC Group */
	u32	noc_timeout;			/* 0xc0 */
	u32	noc_idlereq_set;
	u32	noc_idlereq_clr;
	u32	noc_idlereq_value;
	u32	noc_idleack;			/* 0xd0 */
	u32	noc_idlestatus;
	u32	fpga2soc_ctrl;
	u32	fpga_config;
	u32	iocsrclk_gate;			/* 0xe0 */
	u32	gpo;
	u32	gpi;
	u32	_pad_0xec;
	u32	mpu;				/* 0xf0 */
	u32	sdm_hps_spare;
	u32	hps_sdm_spare;
	u32	_pad_0xfc_0x1fc[65];
	/* Boot scratch register group */
	u32	boot_scratch_cold0;		/* 0x200 */
	u32	boot_scratch_cold1;
	u32	boot_scratch_cold2;
	u32	boot_scratch_cold3;
	u32	boot_scratch_cold4;		/* 0x210 */
	u32	boot_scratch_cold5;
	u32	boot_scratch_cold6;
	u32	boot_scratch_cold7;
	u32	boot_scratch_cold8;		/* 0x220 */
	u32	boot_scratch_cold9;
	u32	_pad_0x228_0xffc[886];
	/* Pin select and pin control group */
	u32	pinsel0[40];			/* 0x1000 */
	u32	_pad_0x10a0_0x10fc[24];
	u32	pinsel40[8];
	u32	_pad_0x1120_0x112c[4];
	u32	ioctrl0[28];
	u32	_pad_0x11a0_0x11fc[24];
	u32	ioctrl28[20];
	u32	_pad_0x1250_0x12fc[44];
	/* Use FPGA mux */
	u32	rgmii0usefpga;			/* 0x1300 */
	u32	rgmii1usefpga;
	u32	rgmii2usefpga;
	u32	i2c0usefpga;
	u32	i2c1usefpga;
	u32	i2c_emac0_usefpga;
	u32	i2c_emac1_usefpga;
	u32	i2c_emac2_usefpga;
	u32	nandusefpga;
	u32	_pad_0x1324;
	u32	spim0usefpga;
	u32	spim1usefpga;
	u32	spis0usefpga;
	u32	spis1usefpga;
	u32	uart0usefpga;
	u32	uart1usefpga;
	u32	mdio0usefpga;
	u32	mdio1usefpga;
	u32	mdio2usefpga;
	u32	_pad_0x134c;
	u32	jtagusefpga;
	u32	sdmmcusefpga;
	u32	hps_osc_clk;
	u32	_pad_0x135c_0x13fc[41];
	u32	iodelay0[40];
	u32	_pad_0x14a0_0x14fc[24];
	u32	iodelay40[8];

};

#define SYSMGR_ROMCODEGRP_CTRL_WARMRSTCFGPINMUX	BIT(0)
#define SYSMGR_ROMCODEGRP_CTRL_WARMRSTCFGIO	BIT(1)
#define SYSMGR_ECC_OCRAM_EN	BIT(0)
#define SYSMGR_ECC_OCRAM_SERR	BIT(3)
#define SYSMGR_ECC_OCRAM_DERR	BIT(4)
#define SYSMGR_FPGAINTF_USEFPGA	0x1

#define SYSMGR_FPGAINTF_NAND	BIT(4)
#define SYSMGR_FPGAINTF_SDMMC	BIT(8)
#define SYSMGR_FPGAINTF_SPIM0	BIT(16)
#define SYSMGR_FPGAINTF_SPIM1	BIT(24)
#define SYSMGR_FPGAINTF_EMAC0	BIT(0)
#define SYSMGR_FPGAINTF_EMAC1	BIT(8)
#define SYSMGR_FPGAINTF_EMAC2	BIT(16)

#define SYSMGR_SDMMC_SMPLSEL_SHIFT	4
#define SYSMGR_SDMMC_DRVSEL_SHIFT	0

/* EMAC Group Bit definitions */
#define SYSMGR_EMACGRP_CTRL_PHYSEL_ENUM_GMII_MII	0x0
#define SYSMGR_EMACGRP_CTRL_PHYSEL_ENUM_RGMII		0x1
#define SYSMGR_EMACGRP_CTRL_PHYSEL_ENUM_RMII		0x2

#define SYSMGR_EMACGRP_CTRL_PHYSEL0_LSB			0
#define SYSMGR_EMACGRP_CTRL_PHYSEL1_LSB			2
#define SYSMGR_EMACGRP_CTRL_PHYSEL_MASK			0x3

#define SYSMGR_NOC_H2F_MSK		0x00000001
#define SYSMGR_NOC_LWH2F_MSK		0x00000010
#define SYSMGR_HMC_CLK_STATUS_MSK	0x00000001

#define SYSMGR_DMA_IRQ_NS		0xFF000000
#define SYSMGR_DMA_MGR_NS		0x00010000

#define SYSMGR_DMAPERIPH_ALL_NS		0xFFFFFFFF

#define SYSMGR_WDDBG_PAUSE_ALL_CPU	0x0F0F0F0F

#endif /* _SYSTEM_MANAGER_S10_ */