]>
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 <[email protected]> |
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 | ||
2a64ada7 SG |
13 | #include <string.h> |
14 | ||
f070b1a2 | 15 | typedef enum { |
c677fb1e | 16 | PHY_INTERFACE_MODE_NA, /* don't touch */ |
f070b1a2 JH |
17 | PHY_INTERFACE_MODE_MII, |
18 | PHY_INTERFACE_MODE_GMII, | |
19 | PHY_INTERFACE_MODE_SGMII, | |
20 | PHY_INTERFACE_MODE_SGMII_2500, | |
21 | PHY_INTERFACE_MODE_QSGMII, | |
22 | PHY_INTERFACE_MODE_TBI, | |
23 | PHY_INTERFACE_MODE_RMII, | |
24 | PHY_INTERFACE_MODE_RGMII, | |
25 | PHY_INTERFACE_MODE_RGMII_ID, | |
26 | PHY_INTERFACE_MODE_RGMII_RXID, | |
27 | PHY_INTERFACE_MODE_RGMII_TXID, | |
28 | PHY_INTERFACE_MODE_RTBI, | |
16bacd5e SC |
29 | PHY_INTERFACE_MODE_1000BASEX, |
30 | PHY_INTERFACE_MODE_2500BASEX, | |
f070b1a2 JH |
31 | PHY_INTERFACE_MODE_XGMII, |
32 | PHY_INTERFACE_MODE_XAUI, | |
33 | PHY_INTERFACE_MODE_RXAUI, | |
34 | PHY_INTERFACE_MODE_SFI, | |
35 | PHY_INTERFACE_MODE_INTERNAL, | |
5b723986 PJ |
36 | PHY_INTERFACE_MODE_25G_AUI, |
37 | PHY_INTERFACE_MODE_XLAUI, | |
38 | PHY_INTERFACE_MODE_CAUI2, | |
39 | PHY_INTERFACE_MODE_CAUI4, | |
e2ffeaa1 | 40 | PHY_INTERFACE_MODE_NCSI, |
77b11f76 | 41 | PHY_INTERFACE_MODE_10GBASER, |
17285fc2 | 42 | PHY_INTERFACE_MODE_USXGMII, |
6706d7dc | 43 | PHY_INTERFACE_MODE_MAX, |
f070b1a2 JH |
44 | } phy_interface_t; |
45 | ||
46 | static const char * const phy_interface_strings[] = { | |
c677fb1e | 47 | [PHY_INTERFACE_MODE_NA] = "", |
f070b1a2 JH |
48 | [PHY_INTERFACE_MODE_MII] = "mii", |
49 | [PHY_INTERFACE_MODE_GMII] = "gmii", | |
50 | [PHY_INTERFACE_MODE_SGMII] = "sgmii", | |
51 | [PHY_INTERFACE_MODE_SGMII_2500] = "sgmii-2500", | |
52 | [PHY_INTERFACE_MODE_QSGMII] = "qsgmii", | |
53 | [PHY_INTERFACE_MODE_TBI] = "tbi", | |
54 | [PHY_INTERFACE_MODE_RMII] = "rmii", | |
55 | [PHY_INTERFACE_MODE_RGMII] = "rgmii", | |
56 | [PHY_INTERFACE_MODE_RGMII_ID] = "rgmii-id", | |
57 | [PHY_INTERFACE_MODE_RGMII_RXID] = "rgmii-rxid", | |
58 | [PHY_INTERFACE_MODE_RGMII_TXID] = "rgmii-txid", | |
59 | [PHY_INTERFACE_MODE_RTBI] = "rtbi", | |
16bacd5e SC |
60 | [PHY_INTERFACE_MODE_1000BASEX] = "1000base-x", |
61 | [PHY_INTERFACE_MODE_2500BASEX] = "2500base-x", | |
f070b1a2 JH |
62 | [PHY_INTERFACE_MODE_XGMII] = "xgmii", |
63 | [PHY_INTERFACE_MODE_XAUI] = "xaui", | |
64 | [PHY_INTERFACE_MODE_RXAUI] = "rxaui", | |
65 | [PHY_INTERFACE_MODE_SFI] = "sfi", | |
66 | [PHY_INTERFACE_MODE_INTERNAL] = "internal", | |
5b723986 PJ |
67 | [PHY_INTERFACE_MODE_25G_AUI] = "25g-aui", |
68 | [PHY_INTERFACE_MODE_XLAUI] = "xlaui4", | |
69 | [PHY_INTERFACE_MODE_CAUI2] = "caui2", | |
70 | [PHY_INTERFACE_MODE_CAUI4] = "caui4", | |
e2ffeaa1 | 71 | [PHY_INTERFACE_MODE_NCSI] = "NC-SI", |
77b11f76 | 72 | [PHY_INTERFACE_MODE_10GBASER] = "10gbase-r", |
17285fc2 | 73 | [PHY_INTERFACE_MODE_USXGMII] = "usxgmii", |
f070b1a2 JH |
74 | }; |
75 | ||
5d3bcdb1 FI |
76 | /* Backplane modes: |
77 | * are considered a sub-type of phy_interface_t: XGMII | |
78 | * and are specified in "phy-connection-type" with one of the following strings | |
79 | */ | |
80 | static const char * const backplane_mode_strings[] = { | |
81 | "10gbase-kr", | |
82 | "40gbase-kr4", | |
83 | }; | |
84 | ||
f070b1a2 JH |
85 | static inline const char *phy_string_for_interface(phy_interface_t i) |
86 | { | |
87 | /* Default to unknown */ | |
ffb0f6f4 MB |
88 | if (i > PHY_INTERFACE_MODE_NA) |
89 | i = PHY_INTERFACE_MODE_NA; | |
f070b1a2 JH |
90 | |
91 | return phy_interface_strings[i]; | |
92 | } | |
93 | ||
5d3bcdb1 FI |
94 | static inline bool is_backplane_mode(const char *phyconn) |
95 | { | |
96 | int i; | |
97 | ||
98 | if (!phyconn) | |
99 | return false; | |
100 | for (i = 0; i < ARRAY_SIZE(backplane_mode_strings); i++) { | |
101 | if (!strcmp(phyconn, backplane_mode_strings[i])) | |
102 | return true; | |
103 | } | |
104 | return false; | |
105 | } | |
106 | ||
f070b1a2 | 107 | #endif /* _PHY_INTERFACE_H */ |