diff options
| -rw-r--r-- | drivers/net/sfc/Makefile | 2 | ||||
| -rw-r--r-- | drivers/net/sfc/falcon.c | 2 | ||||
| -rw-r--r-- | drivers/net/sfc/falcon_boards.c | 26 | ||||
| -rw-r--r-- | drivers/net/sfc/phy.h | 6 | ||||
| -rw-r--r-- | drivers/net/sfc/qt202x_phy.c (renamed from drivers/net/sfc/xfp_phy.c) | 80 |
5 files changed, 58 insertions, 58 deletions
diff --git a/drivers/net/sfc/Makefile b/drivers/net/sfc/Makefile index 9c98d06ada7d..7b52fe10d38f 100644 --- a/drivers/net/sfc/Makefile +++ b/drivers/net/sfc/Makefile | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | sfc-y += efx.o falcon.o tx.o rx.o falcon_gmac.o \ | 1 | sfc-y += efx.o falcon.o tx.o rx.o falcon_gmac.o \ |
| 2 | falcon_xmac.o selftest.o ethtool.o xfp_phy.o \ | 2 | falcon_xmac.o selftest.o ethtool.o qt202x_phy.o \ |
| 3 | mdio_10g.o tenxpress.o falcon_boards.o | 3 | mdio_10g.o tenxpress.o falcon_boards.o |
| 4 | sfc-$(CONFIG_SFC_MTD) += mtd.o | 4 | sfc-$(CONFIG_SFC_MTD) += mtd.o |
| 5 | 5 | ||
diff --git a/drivers/net/sfc/falcon.c b/drivers/net/sfc/falcon.c index d9ce21edfa6a..8776432f683c 100644 --- a/drivers/net/sfc/falcon.c +++ b/drivers/net/sfc/falcon.c | |||
| @@ -2239,7 +2239,7 @@ int falcon_probe_port(struct efx_nic *efx) | |||
| 2239 | break; | 2239 | break; |
| 2240 | case PHY_TYPE_QT2022C2: | 2240 | case PHY_TYPE_QT2022C2: |
| 2241 | case PHY_TYPE_QT2025C: | 2241 | case PHY_TYPE_QT2025C: |
| 2242 | efx->phy_op = &falcon_xfp_phy_ops; | 2242 | efx->phy_op = &falcon_qt202x_phy_ops; |
| 2243 | break; | 2243 | break; |
| 2244 | default: | 2244 | default: |
| 2245 | EFX_ERR(efx, "Unknown PHY type %d\n", | 2245 | EFX_ERR(efx, "Unknown PHY type %d\n", |
diff --git a/drivers/net/sfc/falcon_boards.c b/drivers/net/sfc/falcon_boards.c index f65738bb5536..99f737223b10 100644 --- a/drivers/net/sfc/falcon_boards.c +++ b/drivers/net/sfc/falcon_boards.c | |||
| @@ -612,17 +612,17 @@ static void sfe4002_init_leds(struct efx_nic *efx) | |||
| 612 | { | 612 | { |
| 613 | /* Set the TX and RX LEDs to reflect status and activity, and the | 613 | /* Set the TX and RX LEDs to reflect status and activity, and the |
| 614 | * fault LED off */ | 614 | * fault LED off */ |
| 615 | xfp_set_led(efx, SFE4002_TX_LED, | 615 | falcon_qt202x_set_led(efx, SFE4002_TX_LED, |
| 616 | QUAKE_LED_TXLINK | QUAKE_LED_LINK_ACTSTAT); | 616 | QUAKE_LED_TXLINK | QUAKE_LED_LINK_ACTSTAT); |
| 617 | xfp_set_led(efx, SFE4002_RX_LED, | 617 | falcon_qt202x_set_led(efx, SFE4002_RX_LED, |
| 618 | QUAKE_LED_RXLINK | QUAKE_LED_LINK_ACTSTAT); | 618 | QUAKE_LED_RXLINK | QUAKE_LED_LINK_ACTSTAT); |
| 619 | xfp_set_led(efx, SFE4002_FAULT_LED, QUAKE_LED_OFF); | 619 | falcon_qt202x_set_led(efx, SFE4002_FAULT_LED, QUAKE_LED_OFF); |
| 620 | } | 620 | } |
| 621 | 621 | ||
| 622 | static void sfe4002_set_id_led(struct efx_nic *efx, bool state) | 622 | static void sfe4002_set_id_led(struct efx_nic *efx, bool state) |
| 623 | { | 623 | { |
| 624 | xfp_set_led(efx, SFE4002_FAULT_LED, state ? QUAKE_LED_ON : | 624 | falcon_qt202x_set_led(efx, SFE4002_FAULT_LED, state ? QUAKE_LED_ON : |
| 625 | QUAKE_LED_OFF); | 625 | QUAKE_LED_OFF); |
| 626 | } | 626 | } |
| 627 | 627 | ||
| 628 | static int sfe4002_check_hw(struct efx_nic *efx) | 628 | static int sfe4002_check_hw(struct efx_nic *efx) |
| @@ -677,16 +677,16 @@ static struct i2c_board_info sfn4112f_hwmon_info = { | |||
| 677 | 677 | ||
| 678 | static void sfn4112f_init_leds(struct efx_nic *efx) | 678 | static void sfn4112f_init_leds(struct efx_nic *efx) |
| 679 | { | 679 | { |
| 680 | xfp_set_led(efx, SFN4112F_ACT_LED, | 680 | falcon_qt202x_set_led(efx, SFN4112F_ACT_LED, |
| 681 | QUAKE_LED_RXLINK | QUAKE_LED_LINK_ACT); | 681 | QUAKE_LED_RXLINK | QUAKE_LED_LINK_ACT); |
| 682 | xfp_set_led(efx, SFN4112F_LINK_LED, | 682 | falcon_qt202x_set_led(efx, SFN4112F_LINK_LED, |
| 683 | QUAKE_LED_RXLINK | QUAKE_LED_LINK_STAT); | 683 | QUAKE_LED_RXLINK | QUAKE_LED_LINK_STAT); |
| 684 | } | 684 | } |
| 685 | 685 | ||
| 686 | static void sfn4112f_set_id_led(struct efx_nic *efx, bool state) | 686 | static void sfn4112f_set_id_led(struct efx_nic *efx, bool state) |
| 687 | { | 687 | { |
| 688 | xfp_set_led(efx, SFN4112F_LINK_LED, | 688 | falcon_qt202x_set_led(efx, SFN4112F_LINK_LED, |
| 689 | state ? QUAKE_LED_ON : QUAKE_LED_OFF); | 689 | state ? QUAKE_LED_ON : QUAKE_LED_OFF); |
| 690 | } | 690 | } |
| 691 | 691 | ||
| 692 | static int sfn4112f_check_hw(struct efx_nic *efx) | 692 | static int sfn4112f_check_hw(struct efx_nic *efx) |
diff --git a/drivers/net/sfc/phy.h b/drivers/net/sfc/phy.h index c1cff9c0c173..b5150f3bca31 100644 --- a/drivers/net/sfc/phy.h +++ b/drivers/net/sfc/phy.h | |||
| @@ -23,9 +23,9 @@ extern void tenxpress_phy_blink(struct efx_nic *efx, bool blink); | |||
| 23 | extern int sft9001_wait_boot(struct efx_nic *efx); | 23 | extern int sft9001_wait_boot(struct efx_nic *efx); |
| 24 | 24 | ||
| 25 | /**************************************************************************** | 25 | /**************************************************************************** |
| 26 | * AMCC/Quake QT20xx PHYs | 26 | * AMCC/Quake QT202x PHYs |
| 27 | */ | 27 | */ |
| 28 | extern struct efx_phy_operations falcon_xfp_phy_ops; | 28 | extern struct efx_phy_operations falcon_qt202x_phy_ops; |
| 29 | 29 | ||
| 30 | /* These PHYs provide various H/W control states for LEDs */ | 30 | /* These PHYs provide various H/W control states for LEDs */ |
| 31 | #define QUAKE_LED_LINK_INVAL (0) | 31 | #define QUAKE_LED_LINK_INVAL (0) |
| @@ -39,6 +39,6 @@ extern struct efx_phy_operations falcon_xfp_phy_ops; | |||
| 39 | #define QUAKE_LED_TXLINK (0) | 39 | #define QUAKE_LED_TXLINK (0) |
| 40 | #define QUAKE_LED_RXLINK (8) | 40 | #define QUAKE_LED_RXLINK (8) |
| 41 | 41 | ||
| 42 | extern void xfp_set_led(struct efx_nic *p, int led, int state); | 42 | extern void falcon_qt202x_set_led(struct efx_nic *p, int led, int state); |
| 43 | 43 | ||
| 44 | #endif | 44 | #endif |
diff --git a/drivers/net/sfc/xfp_phy.c b/drivers/net/sfc/qt202x_phy.c index e6b3d5eaddba..560eb18280e1 100644 --- a/drivers/net/sfc/xfp_phy.c +++ b/drivers/net/sfc/qt202x_phy.c | |||
| @@ -7,8 +7,7 @@ | |||
| 7 | * by the Free Software Foundation, incorporated herein by reference. | 7 | * by the Free Software Foundation, incorporated herein by reference. |
| 8 | */ | 8 | */ |
| 9 | /* | 9 | /* |
| 10 | * Driver for SFP+ and XFP optical PHYs plus some support specific to the | 10 | * Driver for AMCC QT202x SFP+ and XFP adapters; see www.amcc.com for details |
| 11 | * AMCC QT20xx adapters; see www.amcc.com for details | ||
| 12 | */ | 11 | */ |
| 13 | 12 | ||
| 14 | #include <linux/timer.h> | 13 | #include <linux/timer.h> |
| @@ -18,13 +17,13 @@ | |||
| 18 | #include "phy.h" | 17 | #include "phy.h" |
| 19 | #include "falcon.h" | 18 | #include "falcon.h" |
| 20 | 19 | ||
| 21 | #define XFP_REQUIRED_DEVS (MDIO_DEVS_PCS | \ | 20 | #define QT202X_REQUIRED_DEVS (MDIO_DEVS_PCS | \ |
| 22 | MDIO_DEVS_PMAPMD | \ | 21 | MDIO_DEVS_PMAPMD | \ |
| 23 | MDIO_DEVS_PHYXS) | 22 | MDIO_DEVS_PHYXS) |
| 24 | 23 | ||
| 25 | #define XFP_LOOPBACKS ((1 << LOOPBACK_PCS) | \ | 24 | #define QT202X_LOOPBACKS ((1 << LOOPBACK_PCS) | \ |
| 26 | (1 << LOOPBACK_PMAPMD) | \ | 25 | (1 << LOOPBACK_PMAPMD) | \ |
| 27 | (1 << LOOPBACK_NETWORK)) | 26 | (1 << LOOPBACK_NETWORK)) |
| 28 | 27 | ||
| 29 | /****************************************************************************/ | 28 | /****************************************************************************/ |
| 30 | /* Quake-specific MDIO registers */ | 29 | /* Quake-specific MDIO registers */ |
| @@ -45,18 +44,18 @@ | |||
| 45 | #define PCS_VEND1_REG 0xc000 | 44 | #define PCS_VEND1_REG 0xc000 |
| 46 | #define PCS_VEND1_LBTXD_LBN 5 | 45 | #define PCS_VEND1_LBTXD_LBN 5 |
| 47 | 46 | ||
| 48 | void xfp_set_led(struct efx_nic *p, int led, int mode) | 47 | void falcon_qt202x_set_led(struct efx_nic *p, int led, int mode) |
| 49 | { | 48 | { |
| 50 | int addr = MDIO_QUAKE_LED0_REG + led; | 49 | int addr = MDIO_QUAKE_LED0_REG + led; |
| 51 | efx_mdio_write(p, MDIO_MMD_PMAPMD, addr, mode); | 50 | efx_mdio_write(p, MDIO_MMD_PMAPMD, addr, mode); |
| 52 | } | 51 | } |
| 53 | 52 | ||
| 54 | struct xfp_phy_data { | 53 | struct qt202x_phy_data { |
| 55 | enum efx_phy_mode phy_mode; | 54 | enum efx_phy_mode phy_mode; |
| 56 | }; | 55 | }; |
| 57 | 56 | ||
| 58 | #define XFP_MAX_RESET_TIME 500 | 57 | #define QT2022C2_MAX_RESET_TIME 500 |
| 59 | #define XFP_RESET_WAIT 10 | 58 | #define QT2022C2_RESET_WAIT 10 |
| 60 | 59 | ||
| 61 | static int qt2025c_wait_reset(struct efx_nic *efx) | 60 | static int qt2025c_wait_reset(struct efx_nic *efx) |
| 62 | { | 61 | { |
| @@ -97,7 +96,7 @@ static int qt2025c_wait_reset(struct efx_nic *efx) | |||
| 97 | return 0; | 96 | return 0; |
| 98 | } | 97 | } |
| 99 | 98 | ||
| 100 | static int xfp_reset_phy(struct efx_nic *efx) | 99 | static int qt202x_reset_phy(struct efx_nic *efx) |
| 101 | { | 100 | { |
| 102 | int rc; | 101 | int rc; |
| 103 | 102 | ||
| @@ -111,8 +110,9 @@ static int xfp_reset_phy(struct efx_nic *efx) | |||
| 111 | /* Reset the PHYXS MMD. This is documented as doing | 110 | /* Reset the PHYXS MMD. This is documented as doing |
| 112 | * a complete soft reset. */ | 111 | * a complete soft reset. */ |
| 113 | rc = efx_mdio_reset_mmd(efx, MDIO_MMD_PHYXS, | 112 | rc = efx_mdio_reset_mmd(efx, MDIO_MMD_PHYXS, |
| 114 | XFP_MAX_RESET_TIME / XFP_RESET_WAIT, | 113 | QT2022C2_MAX_RESET_TIME / |
| 115 | XFP_RESET_WAIT); | 114 | QT2022C2_RESET_WAIT, |
| 115 | QT2022C2_RESET_WAIT); | ||
| 116 | if (rc < 0) | 116 | if (rc < 0) |
| 117 | goto fail; | 117 | goto fail; |
| 118 | } | 118 | } |
| @@ -122,7 +122,7 @@ static int xfp_reset_phy(struct efx_nic *efx) | |||
| 122 | 122 | ||
| 123 | /* Check that all the MMDs we expect are present and responding. We | 123 | /* Check that all the MMDs we expect are present and responding. We |
| 124 | * expect faults on some if the link is down, but not on the PHY XS */ | 124 | * expect faults on some if the link is down, but not on the PHY XS */ |
| 125 | rc = efx_mdio_check_mmds(efx, XFP_REQUIRED_DEVS, MDIO_DEVS_PHYXS); | 125 | rc = efx_mdio_check_mmds(efx, QT202X_REQUIRED_DEVS, MDIO_DEVS_PHYXS); |
| 126 | if (rc < 0) | 126 | if (rc < 0) |
| 127 | goto fail; | 127 | goto fail; |
| 128 | 128 | ||
| @@ -135,13 +135,13 @@ static int xfp_reset_phy(struct efx_nic *efx) | |||
| 135 | return rc; | 135 | return rc; |
| 136 | } | 136 | } |
| 137 | 137 | ||
| 138 | static int xfp_phy_init(struct efx_nic *efx) | 138 | static int qt202x_phy_init(struct efx_nic *efx) |
| 139 | { | 139 | { |
| 140 | struct xfp_phy_data *phy_data; | 140 | struct qt202x_phy_data *phy_data; |
| 141 | u32 devid = efx_mdio_read_id(efx, MDIO_MMD_PHYXS); | 141 | u32 devid = efx_mdio_read_id(efx, MDIO_MMD_PHYXS); |
| 142 | int rc; | 142 | int rc; |
| 143 | 143 | ||
| 144 | phy_data = kzalloc(sizeof(struct xfp_phy_data), GFP_KERNEL); | 144 | phy_data = kzalloc(sizeof(struct qt202x_phy_data), GFP_KERNEL); |
| 145 | if (!phy_data) | 145 | if (!phy_data) |
| 146 | return -ENOMEM; | 146 | return -ENOMEM; |
| 147 | efx->phy_data = phy_data; | 147 | efx->phy_data = phy_data; |
| @@ -152,7 +152,7 @@ static int xfp_phy_init(struct efx_nic *efx) | |||
| 152 | 152 | ||
| 153 | phy_data->phy_mode = efx->phy_mode; | 153 | phy_data->phy_mode = efx->phy_mode; |
| 154 | 154 | ||
| 155 | rc = xfp_reset_phy(efx); | 155 | rc = qt202x_reset_phy(efx); |
| 156 | 156 | ||
| 157 | EFX_INFO(efx, "PHY init %s.\n", | 157 | EFX_INFO(efx, "PHY init %s.\n", |
| 158 | rc ? "failed" : "successful"); | 158 | rc ? "failed" : "successful"); |
| @@ -167,28 +167,28 @@ static int xfp_phy_init(struct efx_nic *efx) | |||
| 167 | return rc; | 167 | return rc; |
| 168 | } | 168 | } |
| 169 | 169 | ||
| 170 | static void xfp_phy_clear_interrupt(struct efx_nic *efx) | 170 | static void qt202x_phy_clear_interrupt(struct efx_nic *efx) |
| 171 | { | 171 | { |
| 172 | /* Read to clear link status alarm */ | 172 | /* Read to clear link status alarm */ |
| 173 | efx_mdio_read(efx, MDIO_MMD_PMAPMD, MDIO_PMA_LASI_STAT); | 173 | efx_mdio_read(efx, MDIO_MMD_PMAPMD, MDIO_PMA_LASI_STAT); |
| 174 | } | 174 | } |
| 175 | 175 | ||
| 176 | static int xfp_link_ok(struct efx_nic *efx) | 176 | static int qt202x_link_ok(struct efx_nic *efx) |
| 177 | { | 177 | { |
| 178 | return efx_mdio_links_ok(efx, XFP_REQUIRED_DEVS); | 178 | return efx_mdio_links_ok(efx, QT202X_REQUIRED_DEVS); |
| 179 | } | 179 | } |
| 180 | 180 | ||
| 181 | static void xfp_phy_poll(struct efx_nic *efx) | 181 | static void qt202x_phy_poll(struct efx_nic *efx) |
| 182 | { | 182 | { |
| 183 | int link_up = xfp_link_ok(efx); | 183 | int link_up = qt202x_link_ok(efx); |
| 184 | /* Simulate a PHY event if link state has changed */ | 184 | /* Simulate a PHY event if link state has changed */ |
| 185 | if (link_up != efx->link_up) | 185 | if (link_up != efx->link_up) |
| 186 | falcon_sim_phy_event(efx); | 186 | falcon_sim_phy_event(efx); |
| 187 | } | 187 | } |
| 188 | 188 | ||
| 189 | static void xfp_phy_reconfigure(struct efx_nic *efx) | 189 | static void qt202x_phy_reconfigure(struct efx_nic *efx) |
| 190 | { | 190 | { |
| 191 | struct xfp_phy_data *phy_data = efx->phy_data; | 191 | struct qt202x_phy_data *phy_data = efx->phy_data; |
| 192 | 192 | ||
| 193 | if (efx->phy_type == PHY_TYPE_QT2025C) { | 193 | if (efx->phy_type == PHY_TYPE_QT2025C) { |
| 194 | /* There are several different register bits which can | 194 | /* There are several different register bits which can |
| @@ -207,7 +207,7 @@ static void xfp_phy_reconfigure(struct efx_nic *efx) | |||
| 207 | /* Reset the PHY when moving from tx off to tx on */ | 207 | /* Reset the PHY when moving from tx off to tx on */ |
| 208 | if (!(efx->phy_mode & PHY_MODE_TX_DISABLED) && | 208 | if (!(efx->phy_mode & PHY_MODE_TX_DISABLED) && |
| 209 | (phy_data->phy_mode & PHY_MODE_TX_DISABLED)) | 209 | (phy_data->phy_mode & PHY_MODE_TX_DISABLED)) |
| 210 | xfp_reset_phy(efx); | 210 | qt202x_reset_phy(efx); |
| 211 | 211 | ||
| 212 | efx_mdio_transmit_disable(efx); | 212 | efx_mdio_transmit_disable(efx); |
| 213 | } | 213 | } |
| @@ -215,18 +215,18 @@ static void xfp_phy_reconfigure(struct efx_nic *efx) | |||
| 215 | efx_mdio_phy_reconfigure(efx); | 215 | efx_mdio_phy_reconfigure(efx); |
| 216 | 216 | ||
| 217 | phy_data->phy_mode = efx->phy_mode; | 217 | phy_data->phy_mode = efx->phy_mode; |
| 218 | efx->link_up = xfp_link_ok(efx); | 218 | efx->link_up = qt202x_link_ok(efx); |
| 219 | efx->link_speed = 10000; | 219 | efx->link_speed = 10000; |
| 220 | efx->link_fd = true; | 220 | efx->link_fd = true; |
| 221 | efx->link_fc = efx->wanted_fc; | 221 | efx->link_fc = efx->wanted_fc; |
| 222 | } | 222 | } |
| 223 | 223 | ||
| 224 | static void xfp_phy_get_settings(struct efx_nic *efx, struct ethtool_cmd *ecmd) | 224 | static void qt202x_phy_get_settings(struct efx_nic *efx, struct ethtool_cmd *ecmd) |
| 225 | { | 225 | { |
| 226 | mdio45_ethtool_gset(&efx->mdio, ecmd); | 226 | mdio45_ethtool_gset(&efx->mdio, ecmd); |
| 227 | } | 227 | } |
| 228 | 228 | ||
| 229 | static void xfp_phy_fini(struct efx_nic *efx) | 229 | static void qt202x_phy_fini(struct efx_nic *efx) |
| 230 | { | 230 | { |
| 231 | /* Clobber the LED if it was blinking */ | 231 | /* Clobber the LED if it was blinking */ |
| 232 | efx->board_info.blink(efx, false); | 232 | efx->board_info.blink(efx, false); |
| @@ -236,15 +236,15 @@ static void xfp_phy_fini(struct efx_nic *efx) | |||
| 236 | efx->phy_data = NULL; | 236 | efx->phy_data = NULL; |
| 237 | } | 237 | } |
| 238 | 238 | ||
| 239 | struct efx_phy_operations falcon_xfp_phy_ops = { | 239 | struct efx_phy_operations falcon_qt202x_phy_ops = { |
| 240 | .macs = EFX_XMAC, | 240 | .macs = EFX_XMAC, |
| 241 | .init = xfp_phy_init, | 241 | .init = qt202x_phy_init, |
| 242 | .reconfigure = xfp_phy_reconfigure, | 242 | .reconfigure = qt202x_phy_reconfigure, |
| 243 | .poll = xfp_phy_poll, | 243 | .poll = qt202x_phy_poll, |
| 244 | .fini = xfp_phy_fini, | 244 | .fini = qt202x_phy_fini, |
| 245 | .clear_interrupt = xfp_phy_clear_interrupt, | 245 | .clear_interrupt = qt202x_phy_clear_interrupt, |
| 246 | .get_settings = xfp_phy_get_settings, | 246 | .get_settings = qt202x_phy_get_settings, |
| 247 | .set_settings = efx_mdio_set_settings, | 247 | .set_settings = efx_mdio_set_settings, |
| 248 | .mmds = XFP_REQUIRED_DEVS, | 248 | .mmds = QT202X_REQUIRED_DEVS, |
| 249 | .loopbacks = XFP_LOOPBACKS, | 249 | .loopbacks = QT202X_LOOPBACKS, |
| 250 | }; | 250 | }; |
