2008-04-27 15:55:59 +04:00
/****************************************************************************
* Driver for Solarflare Solarstorm network controllers and boards
2011-02-25 03:01:34 +03:00
* Copyright 2007 - 2010 Solarflare Communications Inc .
2008-04-27 15:55:59 +04:00
*
* 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
/****************************************************************************
2010-09-22 14:00:11 +04:00
* 10 Xpress ( SFX7101 ) PHY
2008-04-27 15:55:59 +04:00
*/
2011-04-14 09:50:12 +04:00
extern const struct efx_phy_operations falcon_sfx7101_phy_ops ;
2008-04-27 15:55:59 +04:00
2009-11-23 19:03:45 +03:00
extern void tenxpress_set_id_led ( struct efx_nic * efx , enum efx_led_mode mode ) ;
2008-04-27 15:55:59 +04:00
/****************************************************************************
2009-10-23 12:33:42 +04:00
* AMCC / Quake QT202x PHYs
2008-04-27 15:55:59 +04:00
*/
2011-04-14 09:50:12 +04:00
extern const struct efx_phy_operations falcon_qt202x_phy_ops ;
2008-04-27 15:55:59 +04:00
2009-02-27 16:07:33 +03:00
/* These PHYs provide various H/W control states for LEDs */
2008-04-27 15:55:59 +04:00
# 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)
2009-10-23 12:33:42 +04:00
extern void falcon_qt202x_set_led ( struct efx_nic * p , int led , int state ) ;
2008-04-27 15:55:59 +04:00
2010-09-22 14:00:47 +04:00
/****************************************************************************
* Transwitch CX4 retimer
*/
2011-04-14 09:50:12 +04:00
extern const struct efx_phy_operations falcon_txc_phy_ops ;
2010-09-22 14:00:47 +04:00
# 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 ) ;
2009-11-29 18:15:41 +03:00
/****************************************************************************
* Siena managed PHYs
*/
2011-04-14 09:50:12 +04:00
extern const struct efx_phy_operations efx_mcdi_phy_ops ;
2009-11-29 18:15:41 +03:00
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 ) ;
2008-04-27 15:55:59 +04:00
# endif