]>
Commit | Line | Data |
---|---|---|
f070b1a2 JH |
1 | /* SPDX-License-Identifier: GPL-2.0+ */ |
2 | /* | |
3 | * Copyright 2011 Freescale Semiconductor, Inc. | |
5d3bcdb1 | 4 | * Copyright 2020 NXP |
f070b1a2 JH |
5 | * Andy Fleming <afleming@gmail.com> |
6 | * | |
7 | * This file pretty much stolen from Linux's mii.h/ethtool.h/phy.h | |
8 | */ | |
9 | ||
10 | #ifndef _PHY_INTERFACE_H | |
11 | #define _PHY_INTERFACE_H | |
12 | ||
13 | typedef enum { | |
14 | PHY_INTERFACE_MODE_MII, | |
15 | PHY_INTERFACE_MODE_GMII, | |
16 | PHY_INTERFACE_MODE_SGMII, | |
17 | PHY_INTERFACE_MODE_SGMII_2500, | |
18 | PHY_INTERFACE_MODE_QSGMII, | |
19 | PHY_INTERFACE_MODE_TBI, | |
20 | PHY_INTERFACE_MODE_RMII, | |
21 | PHY_INTERFACE_MODE_RGMII, | |
22 | PHY_INTERFACE_MODE_RGMII_ID, | |
23 | PHY_INTERFACE_MODE_RGMII_RXID, | |
24 | PHY_INTERFACE_MODE_RGMII_TXID, | |
25 | PHY_INTERFACE_MODE_RTBI, | |
26 | PHY_INTERFACE_MODE_XGMII, | |
27 | PHY_INTERFACE_MODE_XAUI, | |
28 | PHY_INTERFACE_MODE_RXAUI, | |
29 | PHY_INTERFACE_MODE_SFI, | |
30 | PHY_INTERFACE_MODE_INTERNAL, | |
5b723986 PJ |
31 | PHY_INTERFACE_MODE_25G_AUI, |
32 | PHY_INTERFACE_MODE_XLAUI, | |
33 | PHY_INTERFACE_MODE_CAUI2, | |
34 | PHY_INTERFACE_MODE_CAUI4, | |
e2ffeaa1 | 35 | PHY_INTERFACE_MODE_NCSI, |
17285fc2 AM |
36 | PHY_INTERFACE_MODE_XFI, |
37 | PHY_INTERFACE_MODE_USXGMII, | |
f070b1a2 JH |
38 | PHY_INTERFACE_MODE_NONE, /* Must be last */ |
39 | ||
40 | PHY_INTERFACE_MODE_COUNT, | |
41 | } phy_interface_t; | |
42 | ||
43 | static const char * const phy_interface_strings[] = { | |
44 | [PHY_INTERFACE_MODE_MII] = "mii", | |
45 | [PHY_INTERFACE_MODE_GMII] = "gmii", | |
46 | [PHY_INTERFACE_MODE_SGMII] = "sgmii", | |
47 | [PHY_INTERFACE_MODE_SGMII_2500] = "sgmii-2500", | |
48 | [PHY_INTERFACE_MODE_QSGMII] = "qsgmii", | |
49 | [PHY_INTERFACE_MODE_TBI] = "tbi", | |
50 | [PHY_INTERFACE_MODE_RMII] = "rmii", | |
51 | [PHY_INTERFACE_MODE_RGMII] = "rgmii", | |
52 | [PHY_INTERFACE_MODE_RGMII_ID] = "rgmii-id", | |
53 | [PHY_INTERFACE_MODE_RGMII_RXID] = "rgmii-rxid", | |
54 | [PHY_INTERFACE_MODE_RGMII_TXID] = "rgmii-txid", | |
55 | [PHY_INTERFACE_MODE_RTBI] = "rtbi", | |
56 | [PHY_INTERFACE_MODE_XGMII] = "xgmii", | |
57 | [PHY_INTERFACE_MODE_XAUI] = "xaui", | |
58 | [PHY_INTERFACE_MODE_RXAUI] = "rxaui", | |
59 | [PHY_INTERFACE_MODE_SFI] = "sfi", | |
60 | [PHY_INTERFACE_MODE_INTERNAL] = "internal", | |
5b723986 PJ |
61 | [PHY_INTERFACE_MODE_25G_AUI] = "25g-aui", |
62 | [PHY_INTERFACE_MODE_XLAUI] = "xlaui4", | |
63 | [PHY_INTERFACE_MODE_CAUI2] = "caui2", | |
64 | [PHY_INTERFACE_MODE_CAUI4] = "caui4", | |
e2ffeaa1 | 65 | [PHY_INTERFACE_MODE_NCSI] = "NC-SI", |
17285fc2 AM |
66 | [PHY_INTERFACE_MODE_XFI] = "xfi", |
67 | [PHY_INTERFACE_MODE_USXGMII] = "usxgmii", | |
f070b1a2 JH |
68 | [PHY_INTERFACE_MODE_NONE] = "", |
69 | }; | |
70 | ||
5d3bcdb1 FI |
71 | /* Backplane modes: |
72 | * are considered a sub-type of phy_interface_t: XGMII | |
73 | * and are specified in "phy-connection-type" with one of the following strings | |
74 | */ | |
75 | static const char * const backplane_mode_strings[] = { | |
76 | "10gbase-kr", | |
77 | "40gbase-kr4", | |
78 | }; | |
79 | ||
f070b1a2 JH |
80 | static inline const char *phy_string_for_interface(phy_interface_t i) |
81 | { | |
82 | /* Default to unknown */ | |
83 | if (i > PHY_INTERFACE_MODE_NONE) | |
84 | i = PHY_INTERFACE_MODE_NONE; | |
85 | ||
86 | return phy_interface_strings[i]; | |
87 | } | |
88 | ||
5d3bcdb1 FI |
89 | static inline bool is_backplane_mode(const char *phyconn) |
90 | { | |
91 | int i; | |
92 | ||
93 | if (!phyconn) | |
94 | return false; | |
95 | for (i = 0; i < ARRAY_SIZE(backplane_mode_strings); i++) { | |
96 | if (!strcmp(phyconn, backplane_mode_strings[i])) | |
97 | return true; | |
98 | } | |
99 | return false; | |
100 | } | |
101 | ||
f070b1a2 | 102 | #endif /* _PHY_INTERFACE_H */ |