port.c (448cc2fb3a7b327823a9afd374808c37b8e6194f) | port.c (21bd64bd717dedac96f53b668144cbe37d3c12d4) |
---|---|
1// SPDX-License-Identifier: GPL-2.0-or-later 2/* 3 * Handling of a single switch port 4 * 5 * Copyright (c) 2017 Savoir-faire Linux Inc. 6 * Vivien Didelot <vivien.didelot@savoirfairelinux.com> 7 */ 8 --- 1058 unchanged lines hidden (view full) --- 1067 ds->ops->adjust_link(ds, dp->index, phydev); 1068 return; 1069 } 1070 1071 ds->ops->phylink_mac_link_up(ds, dp->index, mode, interface, phydev, 1072 speed, duplex, tx_pause, rx_pause); 1073} 1074 | 1// SPDX-License-Identifier: GPL-2.0-or-later 2/* 3 * Handling of a single switch port 4 * 5 * Copyright (c) 2017 Savoir-faire Linux Inc. 6 * Vivien Didelot <vivien.didelot@savoirfairelinux.com> 7 */ 8 --- 1058 unchanged lines hidden (view full) --- 1067 ds->ops->adjust_link(ds, dp->index, phydev); 1068 return; 1069 } 1070 1071 ds->ops->phylink_mac_link_up(ds, dp->index, mode, interface, phydev, 1072 speed, duplex, tx_pause, rx_pause); 1073} 1074 |
1075const struct phylink_mac_ops dsa_port_phylink_mac_ops = { | 1075static const struct phylink_mac_ops dsa_port_phylink_mac_ops = { |
1076 .validate = dsa_port_phylink_validate, 1077 .mac_pcs_get_state = dsa_port_phylink_mac_pcs_get_state, 1078 .mac_config = dsa_port_phylink_mac_config, 1079 .mac_an_restart = dsa_port_phylink_mac_an_restart, 1080 .mac_link_down = dsa_port_phylink_mac_link_down, 1081 .mac_link_up = dsa_port_phylink_mac_link_up, 1082}; 1083 | 1076 .validate = dsa_port_phylink_validate, 1077 .mac_pcs_get_state = dsa_port_phylink_mac_pcs_get_state, 1078 .mac_config = dsa_port_phylink_mac_config, 1079 .mac_an_restart = dsa_port_phylink_mac_an_restart, 1080 .mac_link_down = dsa_port_phylink_mac_link_down, 1081 .mac_link_up = dsa_port_phylink_mac_link_up, 1082}; 1083 |
1084int dsa_port_phylink_create(struct dsa_port *dp) 1085{ 1086 struct dsa_switch *ds = dp->ds; 1087 phy_interface_t mode; 1088 int err; 1089 1090 err = of_get_phy_mode(dp->dn, &mode); 1091 if (err) 1092 mode = PHY_INTERFACE_MODE_NA; 1093 1094 if (ds->ops->phylink_get_interfaces) 1095 ds->ops->phylink_get_interfaces(ds, dp->index, 1096 dp->pl_config.supported_interfaces); 1097 1098 dp->pl = phylink_create(&dp->pl_config, of_fwnode_handle(dp->dn), 1099 mode, &dsa_port_phylink_mac_ops); 1100 if (IS_ERR(dp->pl)) { 1101 pr_err("error creating PHYLINK: %ld\n", PTR_ERR(dp->pl)); 1102 return PTR_ERR(dp->pl); 1103 } 1104 1105 return 0; 1106} 1107 |
|
1084static int dsa_port_setup_phy_of(struct dsa_port *dp, bool enable) 1085{ 1086 struct dsa_switch *ds = dp->ds; 1087 struct phy_device *phydev; 1088 int port = dp->index; 1089 int err = 0; 1090 1091 phydev = dsa_port_get_phy_device(dp); --- 60 unchanged lines hidden (view full) --- 1152 1153 return 0; 1154} 1155 1156static int dsa_port_phylink_register(struct dsa_port *dp) 1157{ 1158 struct dsa_switch *ds = dp->ds; 1159 struct device_node *port_dn = dp->dn; | 1108static int dsa_port_setup_phy_of(struct dsa_port *dp, bool enable) 1109{ 1110 struct dsa_switch *ds = dp->ds; 1111 struct phy_device *phydev; 1112 int port = dp->index; 1113 int err = 0; 1114 1115 phydev = dsa_port_get_phy_device(dp); --- 60 unchanged lines hidden (view full) --- 1176 1177 return 0; 1178} 1179 1180static int dsa_port_phylink_register(struct dsa_port *dp) 1181{ 1182 struct dsa_switch *ds = dp->ds; 1183 struct device_node *port_dn = dp->dn; |
1160 phy_interface_t mode; | |
1161 int err; 1162 | 1184 int err; 1185 |
1163 err = of_get_phy_mode(port_dn, &mode); 1164 if (err) 1165 mode = PHY_INTERFACE_MODE_NA; 1166 | |
1167 dp->pl_config.dev = ds->dev; 1168 dp->pl_config.type = PHYLINK_DEV; 1169 dp->pl_config.pcs_poll = ds->pcs_poll; 1170 | 1186 dp->pl_config.dev = ds->dev; 1187 dp->pl_config.type = PHYLINK_DEV; 1188 dp->pl_config.pcs_poll = ds->pcs_poll; 1189 |
1171 if (ds->ops->phylink_get_interfaces) 1172 ds->ops->phylink_get_interfaces(ds, dp->index, 1173 dp->pl_config.supported_interfaces); | 1190 err = dsa_port_phylink_create(dp); 1191 if (err) 1192 return err; |
1174 | 1193 |
1175 dp->pl = phylink_create(&dp->pl_config, of_fwnode_handle(port_dn), 1176 mode, &dsa_port_phylink_mac_ops); 1177 if (IS_ERR(dp->pl)) { 1178 pr_err("error creating PHYLINK: %ld\n", PTR_ERR(dp->pl)); 1179 return PTR_ERR(dp->pl); 1180 } 1181 | |
1182 err = phylink_of_phy_connect(dp->pl, port_dn, 0); 1183 if (err && err != -ENODEV) { 1184 pr_err("could not attach to PHY: %d\n", err); 1185 goto err_phy_connect; 1186 } 1187 1188 return 0; 1189 --- 177 unchanged lines hidden --- | 1194 err = phylink_of_phy_connect(dp->pl, port_dn, 0); 1195 if (err && err != -ENODEV) { 1196 pr_err("could not attach to PHY: %d\n", err); 1197 goto err_phy_connect; 1198 } 1199 1200 return 0; 1201 --- 177 unchanged lines hidden --- |