| /**************************************************************************** |
| * Driver for Solarflare Solarstorm network controllers and boards |
| * Copyright 2007-2010 Solarflare Communications Inc. |
| * |
| * This program is free software; you can redistribute it and/or modify it |
| * under the terms of the GNU General Public License version 2 as published |
| * by the Free Software Foundation, incorporated herein by reference. |
| */ |
| |
| #ifndef EFX_PHY_H |
| #define EFX_PHY_H |
| |
| /**************************************************************************** |
| * 10Xpress (SFX7101) PHY |
| */ |
| extern const struct efx_phy_operations falcon_sfx7101_phy_ops; |
| |
| extern void tenxpress_set_id_led(struct efx_nic *efx, enum efx_led_mode mode); |
| |
| /**************************************************************************** |
| * AMCC/Quake QT202x PHYs |
| */ |
| extern const struct efx_phy_operations falcon_qt202x_phy_ops; |
| |
| /* These PHYs provide various H/W control states for LEDs */ |
| #define QUAKE_LED_LINK_INVAL (0) |
| #define QUAKE_LED_LINK_STAT (1) |
| #define QUAKE_LED_LINK_ACT (2) |
| #define QUAKE_LED_LINK_ACTSTAT (3) |
| #define QUAKE_LED_OFF (4) |
| #define QUAKE_LED_ON (5) |
| #define QUAKE_LED_LINK_INPUT (6) /* Pin is an input. */ |
| /* What link the LED tracks */ |
| #define QUAKE_LED_TXLINK (0) |
| #define QUAKE_LED_RXLINK (8) |
| |
| extern void falcon_qt202x_set_led(struct efx_nic *p, int led, int state); |
| |
| /**************************************************************************** |
| * Transwitch CX4 retimer |
| */ |
| extern const struct efx_phy_operations falcon_txc_phy_ops; |
| |
| #define TXC_GPIO_DIR_INPUT 0 |
| #define TXC_GPIO_DIR_OUTPUT 1 |
| |
| extern void falcon_txc_set_gpio_dir(struct efx_nic *efx, int pin, int dir); |
| extern void falcon_txc_set_gpio_val(struct efx_nic *efx, int pin, int val); |
| |
| /**************************************************************************** |
| * Siena managed PHYs |
| */ |
| extern const struct efx_phy_operations efx_mcdi_phy_ops; |
| |
| extern int efx_mcdi_mdio_read(struct efx_nic *efx, unsigned int bus, |
| unsigned int prtad, unsigned int devad, |
| u16 addr, u16 *value_out, u32 *status_out); |
| extern int efx_mcdi_mdio_write(struct efx_nic *efx, unsigned int bus, |
| unsigned int prtad, unsigned int devad, |
| u16 addr, u16 value, u32 *status_out); |
| extern void efx_mcdi_phy_decode_link(struct efx_nic *efx, |
| struct efx_link_state *link_state, |
| u32 speed, u32 flags, u32 fcntl); |
| extern int efx_mcdi_phy_reconfigure(struct efx_nic *efx); |
| extern void efx_mcdi_phy_check_fcntl(struct efx_nic *efx, u32 lpa); |
| |
| #endif |