xref: /openbmc/u-boot/arch/powerpc/cpu/mpc85xx/t1040_serdes.c (revision 83d290c56fab2d38cd1ab4c4cc7099559c1d5046)
1*83d290c5STom Rini // SPDX-License-Identifier: GPL-2.0+
25f208d11SYork Sun /*
35f208d11SYork Sun  * Copyright 2012 Freescale Semiconductor, Inc.
45f208d11SYork Sun  */
55f208d11SYork Sun 
65f208d11SYork Sun #include <common.h>
75f208d11SYork Sun #include <asm/fsl_serdes.h>
85f208d11SYork Sun #include <asm/processor.h>
95f208d11SYork Sun #include <asm/io.h>
105f208d11SYork Sun 
1196bda02cSPrabhakar Kushwaha 
1296bda02cSPrabhakar Kushwaha static u8 serdes_cfg_tbl[][SRDS_MAX_LANES] = {
1396bda02cSPrabhakar Kushwaha 	[0x00] = {PCIE1, PCIE1, PCIE1, PCIE1,
145f208d11SYork Sun 		PCIE2, PCIE2, PCIE2, PCIE2},
155f208d11SYork Sun 	[0x06] = {PCIE1, PCIE1, PCIE1, PCIE1,
165f208d11SYork Sun 		PCIE2, PCIE3, PCIE4, SATA1},
175f208d11SYork Sun 	[0x08] = {PCIE1, PCIE1, PCIE1, PCIE1,
185f208d11SYork Sun 		PCIE2, PCIE3, SATA2, SATA1},
1996bda02cSPrabhakar Kushwaha 	[0x40] = {PCIE1, PCIE1, SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
2096bda02cSPrabhakar Kushwaha 		PCIE2, PCIE2, PCIE2, PCIE2},
2196bda02cSPrabhakar Kushwaha 	[0x60] = {PCIE1, SGMII_FM1_DTSEC3, QSGMII_SW1_A, QSGMII_SW1_B,
2296bda02cSPrabhakar Kushwaha 		PCIE2, PCIE2, PCIE2, PCIE2},
2396bda02cSPrabhakar Kushwaha 	[0x66] = {PCIE1, SGMII_FM1_DTSEC3, QSGMII_SW1_A, QSGMII_SW1_B,
2496bda02cSPrabhakar Kushwaha 		PCIE2, PCIE3, PCIE4, SATA1},
2596bda02cSPrabhakar Kushwaha 	[0x67] = {PCIE1, SGMII_FM1_DTSEC3, QSGMII_SW1_A, QSGMII_SW1_B,
2696bda02cSPrabhakar Kushwaha 		PCIE2, PCIE3, PCIE4, SGMII_FM1_DTSEC5},
2796bda02cSPrabhakar Kushwaha 	[0x69] = {PCIE1, SGMII_FM1_DTSEC3, QSGMII_SW1_A, QSGMII_SW1_B,
2896bda02cSPrabhakar Kushwaha 		PCIE2, PCIE3, SGMII_FM1_DTSEC4, SATA1},
2996bda02cSPrabhakar Kushwaha 	[0x86] = {PCIE1, SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
3096bda02cSPrabhakar Kushwaha 		PCIE2, PCIE3, PCIE4, SATA1},
315f208d11SYork Sun 	[0x85] = {PCIE1, SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
325f208d11SYork Sun 		PCIE2, PCIE2, SGMII_FM1_DTSEC4, SGMII_FM1_DTSEC5},
3396bda02cSPrabhakar Kushwaha 	[0x87] = {PCIE1, SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
3496bda02cSPrabhakar Kushwaha 		PCIE2, PCIE3, PCIE4, SGMII_FM1_DTSEC5},
35c2a61cd2SCodrin Ciubotariu 	[0x89] = {PCIE1, SGMII_SW1_MAC3, SGMII_SW1_MAC1, SGMII_SW1_MAC2,
36c2a61cd2SCodrin Ciubotariu 		PCIE2, PCIE3, SGMII_SW1_MAC4, SATA1},
37c2a61cd2SCodrin Ciubotariu 	[0x8D] = {PCIE1, SGMII_SW1_MAC3, SGMII_SW1_MAC1, SGMII_SW1_MAC2,
38c2a61cd2SCodrin Ciubotariu 		PCIE2, SGMII_SW1_MAC6, SGMII_SW1_MAC4, SGMII_SW1_MAC5},
3996bda02cSPrabhakar Kushwaha 	[0x8F] = {PCIE1, SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
4096bda02cSPrabhakar Kushwaha 		AURORA, NONE, SGMII_FM1_DTSEC4, SGMII_FM1_DTSEC5},
415f208d11SYork Sun 	[0xA5] = {PCIE1, SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
425f208d11SYork Sun 		PCIE2, PCIE2, SGMII_FM1_DTSEC4, SGMII_FM1_DTSEC5},
4396bda02cSPrabhakar Kushwaha 	[0xA7] = {PCIE1, SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
4496bda02cSPrabhakar Kushwaha 		 PCIE2, PCIE3, PCIE4, SGMII_FM1_DTSEC5},
4596bda02cSPrabhakar Kushwaha 	[0xAA] = {PCIE1, SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
4696bda02cSPrabhakar Kushwaha 		 PCIE2, PCIE3, SGMII_FM1_DTSEC4, SGMII_FM1_DTSEC5},
475f208d11SYork Sun };
485f208d11SYork Sun 
serdes_get_prtcl(int serdes,int cfg,int lane)495f208d11SYork Sun enum srds_prtcl serdes_get_prtcl(int serdes, int cfg, int lane)
505f208d11SYork Sun {
5196bda02cSPrabhakar Kushwaha 	return serdes_cfg_tbl[cfg][lane];
525f208d11SYork Sun }
535f208d11SYork Sun 
is_serdes_prtcl_valid(int serdes,u32 prtcl)545f208d11SYork Sun int is_serdes_prtcl_valid(int serdes, u32 prtcl)
555f208d11SYork Sun {
565f208d11SYork Sun 	int i;
575f208d11SYork Sun 
5896bda02cSPrabhakar Kushwaha 	if (prtcl >= ARRAY_SIZE(serdes_cfg_tbl))
595f208d11SYork Sun 		return 0;
605f208d11SYork Sun 
615f208d11SYork Sun 	for (i = 0; i < SRDS_MAX_LANES; i++) {
6296bda02cSPrabhakar Kushwaha 		if (serdes_cfg_tbl[prtcl][i] != NONE)
635f208d11SYork Sun 			return 1;
645f208d11SYork Sun 	}
655f208d11SYork Sun 
665f208d11SYork Sun 	return 0;
675f208d11SYork Sun }
68