xref: /rk3399_rockchip-uboot/arch/powerpc/cpu/mpc85xx/p3041_serdes.c (revision 326ea986ac150acdc7656d57fca647db80b50158)
1d5d2cd43SKumar Gala /*
2d5d2cd43SKumar Gala  * Copyright 2009-2011 Freescale Semiconductor, Inc.
3d5d2cd43SKumar Gala  *
4*1a459660SWolfgang Denk  * SPDX-License-Identifier:	GPL-2.0+
5d5d2cd43SKumar Gala  */
6d5d2cd43SKumar Gala 
7d5d2cd43SKumar Gala #include <common.h>
8d5d2cd43SKumar Gala #include <asm/fsl_serdes.h>
9d5d2cd43SKumar Gala #include <asm/processor.h>
10d5d2cd43SKumar Gala #include <asm/io.h>
11d5d2cd43SKumar Gala #include "fsl_corenet_serdes.h"
12d5d2cd43SKumar Gala 
13d5d2cd43SKumar Gala static u8 serdes_cfg_tbl[][SRDS_MAX_LANES] = {
14d5d2cd43SKumar Gala 	[0x2] = {PCIE1, PCIE1, PCIE1, PCIE1, PCIE2, PCIE2, PCIE2, PCIE2,
15d5d2cd43SKumar Gala 		PCIE4, AURORA, PCIE3, SGMII_FM1_DTSEC2, SGMII_FM1_DTSEC3,
16d5d2cd43SKumar Gala 		SGMII_FM1_DTSEC4, NONE, NONE, SATA1, SATA2, },
17d5d2cd43SKumar Gala 	[0x4] = {SRIO2, SRIO2, SRIO2, SRIO2, SRIO1, SRIO1, SRIO1, SRIO1,
18d5d2cd43SKumar Gala 		PCIE2, AURORA, PCIE3, SGMII_FM1_DTSEC2, SGMII_FM1_DTSEC3,
19d5d2cd43SKumar Gala 		SGMII_FM1_DTSEC4, XAUI_FM1, XAUI_FM1, XAUI_FM1, XAUI_FM1, },
20d5d2cd43SKumar Gala 	[0xb] = {PCIE1, PCIE1, PCIE1, PCIE1, SRIO2, SRIO2, SRIO1, SRIO1,
21d5d2cd43SKumar Gala 		PCIE2, AURORA, PCIE3, SGMII_FM1_DTSEC2, SGMII_FM1_DTSEC3,
22d5d2cd43SKumar Gala 		SGMII_FM1_DTSEC4, NONE, NONE, SATA1, SATA2, },
23d5d2cd43SKumar Gala 	[0x10] = {PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1, PCIE1,
24d5d2cd43SKumar Gala 		AURORA, AURORA, XAUI_FM1, XAUI_FM1, XAUI_FM1, XAUI_FM1,
25d5d2cd43SKumar Gala 		NONE, NONE, SATA1, SATA2, },
26d5d2cd43SKumar Gala 	[0x11] = {PCIE1, PCIE1, PCIE1, PCIE1, PCIE2, PCIE2, PCIE2, PCIE2,
27d5d2cd43SKumar Gala 		AURORA, AURORA, SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
28d5d2cd43SKumar Gala 		SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4, NONE, NONE, SATA1, SATA2, },
29d5d2cd43SKumar Gala 	[0x13] = {PCIE1, PCIE1, PCIE1, PCIE1, PCIE2, PCIE2, PCIE2, PCIE2,
30d5d2cd43SKumar Gala 		AURORA, AURORA, SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
31d5d2cd43SKumar Gala 		SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4, XAUI_FM1, XAUI_FM1,
32d5d2cd43SKumar Gala 		XAUI_FM1, XAUI_FM1, },
33d5d2cd43SKumar Gala 	[0x14] = {PCIE1, PCIE1, PCIE1, PCIE1, PCIE2, PCIE2, PCIE2, PCIE2,
34d5d2cd43SKumar Gala 		AURORA, AURORA, PCIE3, PCIE3, PCIE3, PCIE3,
35d5d2cd43SKumar Gala 		SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2, SGMII_FM1_DTSEC3,
36d5d2cd43SKumar Gala 		SGMII_FM1_DTSEC4, },
37d5d2cd43SKumar Gala 	[0x15] = {PCIE1, PCIE1, PCIE1, PCIE1, PCIE2, PCIE2, PCIE2, PCIE2,
38d5d2cd43SKumar Gala 		AURORA, AURORA, XAUI_FM1, XAUI_FM1, XAUI_FM1, XAUI_FM1,
39d5d2cd43SKumar Gala 		NONE, NONE, SATA1, SATA2, },
40d5d2cd43SKumar Gala 	[0x16] = {PCIE1, PCIE1, PCIE1, PCIE1, PCIE2, PCIE2, PCIE2, PCIE2,
41d5d2cd43SKumar Gala 		AURORA, AURORA, SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
42d5d2cd43SKumar Gala 		SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4, SRIO1, SRIO1, SRIO1,
43d5d2cd43SKumar Gala 		SRIO1, },
44d5d2cd43SKumar Gala 	[0x17] = {SRIO2, SRIO2, SRIO2, SRIO2, SRIO1, SRIO1, SRIO1, SRIO1,
45d5d2cd43SKumar Gala 		AURORA, AURORA, SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
46d5d2cd43SKumar Gala 		SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4, NONE, NONE, SATA1, SATA2, },
47d5d2cd43SKumar Gala 	[0x18] = {SRIO2, SRIO2, SRIO2, SRIO2, SRIO1, SRIO1, SRIO1, SRIO1,
48d5d2cd43SKumar Gala 		AURORA, AURORA, SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
49d5d2cd43SKumar Gala 		SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4, SGMII_FM1_DTSEC5, NONE,
50d5d2cd43SKumar Gala 		NONE, NONE, },
51d5d2cd43SKumar Gala 	[0x1b] = {SRIO2, SRIO2, SRIO2, SRIO2, SRIO1, SRIO1, SRIO1, SRIO1,
52d5d2cd43SKumar Gala 		AURORA, AURORA, XAUI_FM1, XAUI_FM1, XAUI_FM1, XAUI_FM1,
53d5d2cd43SKumar Gala 		NONE, NONE, SATA1, SATA2, },
54d5d2cd43SKumar Gala 	[0x1d] = {SRIO2, SRIO2, SRIO2, SRIO2, SRIO1, SRIO1, SRIO1, SRIO1,
55d5d2cd43SKumar Gala 		AURORA, AURORA, PCIE3, PCIE3, PCIE3, PCIE3, NONE, NONE,
56d5d2cd43SKumar Gala 		SATA1, SATA2, },
57d5d2cd43SKumar Gala 	[0x20] = {PCIE1, PCIE1, PCIE1, PCIE1, SRIO1, SRIO1, SRIO1, SRIO1,
58d5d2cd43SKumar Gala 		AURORA, AURORA, SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
59d5d2cd43SKumar Gala 		SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4, XAUI_FM1, XAUI_FM1,
60d5d2cd43SKumar Gala 		XAUI_FM1, XAUI_FM1, },
61d5d2cd43SKumar Gala 	[0x21] = {PCIE1, PCIE1, PCIE1, PCIE1, SRIO1, SRIO1, SRIO1, SRIO1,
62d5d2cd43SKumar Gala 		AURORA, AURORA, PCIE3, PCIE3, PCIE3, PCIE3,
63d5d2cd43SKumar Gala 		SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2, SGMII_FM1_DTSEC3,
64d5d2cd43SKumar Gala 		SGMII_FM1_DTSEC4, },
65d5d2cd43SKumar Gala 	[0x22] = {PCIE1, PCIE1, PCIE1, PCIE1, SRIO1, SRIO1, SRIO1, SRIO1,
66d5d2cd43SKumar Gala 		AURORA, AURORA, XAUI_FM1, XAUI_FM1, XAUI_FM1, XAUI_FM1,
67d5d2cd43SKumar Gala 		NONE, NONE, SATA1, SATA2, },
68d5d2cd43SKumar Gala 	[0x23] = {PCIE1, PCIE1, PCIE1, PCIE1, SRIO2, SRIO2, SRIO1, SRIO1,
69d5d2cd43SKumar Gala 		AURORA, AURORA, SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
70d5d2cd43SKumar Gala 		SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4, NONE, NONE, SATA1, SATA2, },
71d5d2cd43SKumar Gala 	[0x24] = {PCIE1, PCIE1, PCIE1, PCIE1, SRIO2, SRIO2, SRIO1, SRIO1,
72d5d2cd43SKumar Gala 		AURORA, AURORA, SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
73d5d2cd43SKumar Gala 		SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4, SGMII_FM1_DTSEC5, NONE,
74d5d2cd43SKumar Gala 		NONE, NONE, },
75d5d2cd43SKumar Gala 	[0x28] = {PCIE1, PCIE1, PCIE3, PCIE3, PCIE2, PCIE2, PCIE2, PCIE2,
76d5d2cd43SKumar Gala 		AURORA, AURORA, SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
77d5d2cd43SKumar Gala 		SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4, NONE, NONE, SATA1, SATA2, },
78d5d2cd43SKumar Gala 	[0x29] = {PCIE1, PCIE1, PCIE3, PCIE3, PCIE2, PCIE2, PCIE2, PCIE2,
79d5d2cd43SKumar Gala 		AURORA, AURORA, SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
80d5d2cd43SKumar Gala 		SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4, SGMII_FM1_DTSEC5, NONE,
81d5d2cd43SKumar Gala 		NONE, NONE, },
82d5d2cd43SKumar Gala 	[0x2a] = {PCIE1, PCIE1, PCIE3, PCIE3, PCIE2, PCIE2, PCIE2, PCIE2,
83d5d2cd43SKumar Gala 		AURORA, AURORA, SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
84d5d2cd43SKumar Gala 		SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4, XAUI_FM1, XAUI_FM1,
85d5d2cd43SKumar Gala 		XAUI_FM1, XAUI_FM1, },
86d5d2cd43SKumar Gala 	[0x2b] = {PCIE1, PCIE1, PCIE3, PCIE3, PCIE2, PCIE2, PCIE2, PCIE2,
87d5d2cd43SKumar Gala 		AURORA, AURORA, XAUI_FM1, XAUI_FM1, XAUI_FM1, XAUI_FM1,
88d5d2cd43SKumar Gala 		NONE, NONE, SATA1, SATA2, },
89d5d2cd43SKumar Gala 	[0x2f] = {PCIE1, PCIE1, PCIE3, PCIE3, SRIO2, SRIO2, SRIO1, SRIO1,
90d5d2cd43SKumar Gala 		AURORA, AURORA, XAUI_FM1, XAUI_FM1, XAUI_FM1, XAUI_FM1,
91d5d2cd43SKumar Gala 		NONE, NONE, SATA1, SATA2, },
92d5d2cd43SKumar Gala 	[0x31] = {PCIE1, PCIE1, PCIE3, PCIE3, SRIO1, SRIO1, SRIO1, SRIO1,
93d5d2cd43SKumar Gala 		AURORA, AURORA, SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
94d5d2cd43SKumar Gala 		SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4, SGMII_FM1_DTSEC5, NONE,
95d5d2cd43SKumar Gala 		NONE, NONE, },
96d5d2cd43SKumar Gala 	[0x33] = {PCIE1, PCIE1, PCIE3, PCIE3, SRIO1, SRIO1, SRIO1, SRIO1,
97d5d2cd43SKumar Gala 		AURORA, AURORA, XAUI_FM1, XAUI_FM1, XAUI_FM1, XAUI_FM1,
98d5d2cd43SKumar Gala 		NONE, NONE, SATA1, SATA2, },
99d5d2cd43SKumar Gala 	[0x34] = {PCIE1, PCIE1, PCIE1, PCIE1, SGMII_FM1_DTSEC1,
100d5d2cd43SKumar Gala 		SGMII_FM1_DTSEC2, SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4, AURORA,
101d5d2cd43SKumar Gala 		AURORA, XAUI_FM1, XAUI_FM1, XAUI_FM1, XAUI_FM1, NONE,
102d5d2cd43SKumar Gala 		NONE, SATA1, SATA2, },
103d5d2cd43SKumar Gala 	[0x35] = {PCIE1, PCIE1, PCIE1, PCIE1, PCIE2, PCIE2,
104d5d2cd43SKumar Gala 		SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4, AURORA, AURORA, XAUI_FM1,
105d5d2cd43SKumar Gala 		XAUI_FM1, XAUI_FM1, XAUI_FM1, NONE, NONE, SATA1, SATA2, },
106d5d2cd43SKumar Gala 	[0x36] = {PCIE1, PCIE1, PCIE3, PCIE3, SGMII_FM1_DTSEC1,
107d5d2cd43SKumar Gala 		SGMII_FM1_DTSEC2, SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4, AURORA,
108d5d2cd43SKumar Gala 		AURORA, XAUI_FM1, XAUI_FM1, XAUI_FM1, XAUI_FM1, NONE,
109d5d2cd43SKumar Gala 		NONE, SATA1, SATA2, },
110d5d2cd43SKumar Gala 	[0x37] = {PCIE1, PCIE1, PCIE3, PCIE3, PCIE2, PCIE2,
111d5d2cd43SKumar Gala 		SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC4, AURORA, AURORA, XAUI_FM1,
112d5d2cd43SKumar Gala 		XAUI_FM1, XAUI_FM1, XAUI_FM1, NONE, NONE, SATA1, SATA2, },
113d5d2cd43SKumar Gala };
114d5d2cd43SKumar Gala 
serdes_get_prtcl(int cfg,int lane)115d5d2cd43SKumar Gala enum srds_prtcl serdes_get_prtcl(int cfg, int lane)
116d5d2cd43SKumar Gala {
117d5d2cd43SKumar Gala 	if (!serdes_lane_enabled(lane))
118d5d2cd43SKumar Gala 		return NONE;
119d5d2cd43SKumar Gala 
120d5d2cd43SKumar Gala 	return serdes_cfg_tbl[cfg][lane];
121d5d2cd43SKumar Gala }
122d5d2cd43SKumar Gala 
is_serdes_prtcl_valid(u32 prtcl)123d5d2cd43SKumar Gala int is_serdes_prtcl_valid(u32 prtcl) {
124d5d2cd43SKumar Gala 	int i;
125d5d2cd43SKumar Gala 
126e51e47d3SAxel Lin 	if (prtcl >= ARRAY_SIZE(serdes_cfg_tbl))
127d5d2cd43SKumar Gala 		return 0;
128d5d2cd43SKumar Gala 
129d5d2cd43SKumar Gala 	for (i = 0; i < SRDS_MAX_LANES; i++) {
130d5d2cd43SKumar Gala 		if (serdes_cfg_tbl[prtcl][i] != NONE)
131d5d2cd43SKumar Gala 			return 1;
132d5d2cd43SKumar Gala 	}
133d5d2cd43SKumar Gala 
134d5d2cd43SKumar Gala 	return 0;
135d5d2cd43SKumar Gala }
136