xref: /openbmc/u-boot/arch/arm/include/asm/arch-ls102xa/fsl_serdes.h (revision 83d290c56fab2d38cd1ab4c4cc7099559c1d5046)
1*83d290c5STom Rini /* SPDX-License-Identifier: GPL-2.0+ */
2d60a2099SWang Huan /*
3d60a2099SWang Huan  * Copyright 2014 Freescale Semiconductor, Inc.
4d60a2099SWang Huan  */
5d60a2099SWang Huan 
6d60a2099SWang Huan #ifndef __FSL_SERDES_H
7d60a2099SWang Huan #define __FSL_SERDES_H
8d60a2099SWang Huan 
9d60a2099SWang Huan #include <config.h>
10d60a2099SWang Huan 
11d60a2099SWang Huan enum srds_prtcl {
1271fe2225SHou Zhiqiang 	/*
1371fe2225SHou Zhiqiang 	 * Nobody will check whether the device 'NONE' has been configured,
1471fe2225SHou Zhiqiang 	 * So use it to indicate if the serdes_prtcl_map has been initialized.
1571fe2225SHou Zhiqiang 	 */
16d60a2099SWang Huan 	NONE = 0,
17d60a2099SWang Huan 	PCIE1,
18d60a2099SWang Huan 	PCIE2,
19d60a2099SWang Huan 	SATA1,
20d60a2099SWang Huan 	SGMII_TSEC1,
21d60a2099SWang Huan 	SGMII_TSEC2,
22d60a2099SWang Huan };
23d60a2099SWang Huan 
24d60a2099SWang Huan enum srds {
25d60a2099SWang Huan 	FSL_SRDS_1  = 0,
26d60a2099SWang Huan 	FSL_SRDS_2  = 1,
27d60a2099SWang Huan };
28d60a2099SWang Huan 
29d60a2099SWang Huan int is_serdes_configured(enum srds_prtcl device);
30d60a2099SWang Huan void fsl_serdes_init(void);
31d60a2099SWang Huan const char *serdes_clock_to_string(u32 clock);
32d60a2099SWang Huan 
33d60a2099SWang Huan int serdes_get_first_lane(u32 sd, enum srds_prtcl device);
34d60a2099SWang Huan enum srds_prtcl serdes_get_prtcl(int serdes, int cfg, int lane);
35d60a2099SWang Huan 
36d60a2099SWang Huan #endif /* __FSL_SERDES_H */
37