2008-04-27 15:55:59 +04:00
/****************************************************************************
* Driver for Solarflare Solarstorm network controllers and boards
2009-11-29 18:16:19 +03:00
* Copyright 2007 - 2009 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
/****************************************************************************
2008-12-13 09:00:17 +03:00
* 10 Xpress ( SFX7101 and SFT9001 ) PHYs
2008-04-27 15:55:59 +04:00
*/
2008-12-13 09:00:17 +03:00
extern struct efx_phy_operations falcon_sfx7101_phy_ops ;
extern struct efx_phy_operations falcon_sft9001_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-02-27 16:06:45 +03:00
/* Wait for the PHY to boot. Return 0 on success, -EINVAL if the PHY failed
* to boot due to corrupt flash , or some other negative error code . */
extern int sft9001_wait_boot ( struct efx_nic * efx ) ;
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
*/
2009-10-23 12:33:42 +04:00
extern 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
2009-11-29 18:15:41 +03:00
/****************************************************************************
* Siena managed PHYs
*/
extern 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 ) ;
2008-04-27 15:55:59 +04:00
# endif