xref: /rk3399_rockchip-uboot/arch/powerpc/cpu/mpc85xx/t1040_serdes.c (revision e72d344386bf80738fab7a6bd37cb321f443093a)
15f208d11SYork Sun /*
25f208d11SYork Sun  * Copyright 2012 Freescale Semiconductor, Inc.
35f208d11SYork Sun  *
41a459660SWolfgang Denk  * SPDX-License-Identifier:	GPL-2.0+
55f208d11SYork Sun  */
65f208d11SYork Sun 
75f208d11SYork Sun #include <common.h>
85f208d11SYork Sun #include <asm/fsl_serdes.h>
95f208d11SYork Sun #include <asm/processor.h>
105f208d11SYork Sun #include <asm/io.h>
115f208d11SYork Sun 
1296bda02cSPrabhakar Kushwaha 
1396bda02cSPrabhakar Kushwaha static u8 serdes_cfg_tbl[][SRDS_MAX_LANES] = {
1496bda02cSPrabhakar Kushwaha 	[0x00] = {PCIE1, PCIE1, PCIE1, PCIE1,
155f208d11SYork Sun 		PCIE2, PCIE2, PCIE2, PCIE2},
165f208d11SYork Sun 	[0x06] = {PCIE1, PCIE1, PCIE1, PCIE1,
175f208d11SYork Sun 		PCIE2, PCIE3, PCIE4, SATA1},
185f208d11SYork Sun 	[0x08] = {PCIE1, PCIE1, PCIE1, PCIE1,
195f208d11SYork Sun 		PCIE2, PCIE3, SATA2, SATA1},
2096bda02cSPrabhakar Kushwaha 	[0x40] = {PCIE1, PCIE1, SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
2196bda02cSPrabhakar Kushwaha 		PCIE2, PCIE2, PCIE2, PCIE2},
2296bda02cSPrabhakar Kushwaha 	[0x60] = {PCIE1, SGMII_FM1_DTSEC3, QSGMII_SW1_A, QSGMII_SW1_B,
2396bda02cSPrabhakar Kushwaha 		PCIE2, PCIE2, PCIE2, PCIE2},
2496bda02cSPrabhakar Kushwaha 	[0x66] = {PCIE1, SGMII_FM1_DTSEC3, QSGMII_SW1_A, QSGMII_SW1_B,
2596bda02cSPrabhakar Kushwaha 		PCIE2, PCIE3, PCIE4, SATA1},
2696bda02cSPrabhakar Kushwaha 	[0x67] = {PCIE1, SGMII_FM1_DTSEC3, QSGMII_SW1_A, QSGMII_SW1_B,
2796bda02cSPrabhakar Kushwaha 		PCIE2, PCIE3, PCIE4, SGMII_FM1_DTSEC5},
2896bda02cSPrabhakar Kushwaha 	[0x69] = {PCIE1, SGMII_FM1_DTSEC3, QSGMII_SW1_A, QSGMII_SW1_B,
2996bda02cSPrabhakar Kushwaha 		PCIE2, PCIE3, SGMII_FM1_DTSEC4, SATA1},
3096bda02cSPrabhakar Kushwaha 	[0x86] = {PCIE1, SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
3196bda02cSPrabhakar Kushwaha 		PCIE2, PCIE3, PCIE4, SATA1},
325f208d11SYork Sun 	[0x85] = {PCIE1, SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
335f208d11SYork Sun 		PCIE2, PCIE2, SGMII_FM1_DTSEC4, SGMII_FM1_DTSEC5},
3496bda02cSPrabhakar Kushwaha 	[0x87] = {PCIE1, SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
3596bda02cSPrabhakar Kushwaha 		PCIE2, PCIE3, PCIE4, SGMII_FM1_DTSEC5},
36*c2a61cd2SCodrin Ciubotariu 	[0x89] = {PCIE1, SGMII_SW1_MAC3, SGMII_SW1_MAC1, SGMII_SW1_MAC2,
37*c2a61cd2SCodrin Ciubotariu 		PCIE2, PCIE3, SGMII_SW1_MAC4, SATA1},
38*c2a61cd2SCodrin Ciubotariu 	[0x8D] = {PCIE1, SGMII_SW1_MAC3, SGMII_SW1_MAC1, SGMII_SW1_MAC2,
39*c2a61cd2SCodrin Ciubotariu 		PCIE2, SGMII_SW1_MAC6, SGMII_SW1_MAC4, SGMII_SW1_MAC5},
4096bda02cSPrabhakar Kushwaha 	[0x8F] = {PCIE1, SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
4196bda02cSPrabhakar Kushwaha 		AURORA, NONE, SGMII_FM1_DTSEC4, SGMII_FM1_DTSEC5},
425f208d11SYork Sun 	[0xA5] = {PCIE1, SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
435f208d11SYork Sun 		PCIE2, PCIE2, SGMII_FM1_DTSEC4, SGMII_FM1_DTSEC5},
4496bda02cSPrabhakar Kushwaha 	[0xA7] = {PCIE1, SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
4596bda02cSPrabhakar Kushwaha 		 PCIE2, PCIE3, PCIE4, SGMII_FM1_DTSEC5},
4696bda02cSPrabhakar Kushwaha 	[0xAA] = {PCIE1, SGMII_FM1_DTSEC3, SGMII_FM1_DTSEC1, SGMII_FM1_DTSEC2,
4796bda02cSPrabhakar Kushwaha 		 PCIE2, PCIE3, SGMII_FM1_DTSEC4, SGMII_FM1_DTSEC5},
485f208d11SYork Sun };
495f208d11SYork Sun 
serdes_get_prtcl(int serdes,int cfg,int lane)505f208d11SYork Sun enum srds_prtcl serdes_get_prtcl(int serdes, int cfg, int lane)
515f208d11SYork Sun {
5296bda02cSPrabhakar Kushwaha 	return serdes_cfg_tbl[cfg][lane];
535f208d11SYork Sun }
545f208d11SYork Sun 
is_serdes_prtcl_valid(int serdes,u32 prtcl)555f208d11SYork Sun int is_serdes_prtcl_valid(int serdes, u32 prtcl)
565f208d11SYork Sun {
575f208d11SYork Sun 	int i;
585f208d11SYork Sun 
5996bda02cSPrabhakar Kushwaha 	if (prtcl >= ARRAY_SIZE(serdes_cfg_tbl))
605f208d11SYork Sun 		return 0;
615f208d11SYork Sun 
625f208d11SYork Sun 	for (i = 0; i < SRDS_MAX_LANES; i++) {
6396bda02cSPrabhakar Kushwaha 		if (serdes_cfg_tbl[prtcl][i] != NONE)
645f208d11SYork Sun 			return 1;
655f208d11SYork Sun 	}
665f208d11SYork Sun 
675f208d11SYork Sun 	return 0;
685f208d11SYork Sun }
69