Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
at v2.6.26-rc1 62 lines 2.0 kB view raw
1/**************************************************************************** 2 * Driver for Solarflare Solarstorm network controllers and boards 3 * Copyright 2006 Solarflare Communications Inc. 4 * 5 * This program is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 as published 7 * by the Free Software Foundation, incorporated herein by reference. 8 */ 9 10#ifndef EFX_XENPACK_H 11#define EFX_XENPACK_H 12 13/* Exported functions from Xenpack standard PHY control */ 14 15#include "mdio_10g.h" 16 17/****************************************************************************/ 18/* XENPACK MDIO register extensions */ 19#define MDIO_XP_LASI_RX_CTRL (0x9000) 20#define MDIO_XP_LASI_TX_CTRL (0x9001) 21#define MDIO_XP_LASI_CTRL (0x9002) 22#define MDIO_XP_LASI_RX_STAT (0x9003) 23#define MDIO_XP_LASI_TX_STAT (0x9004) 24#define MDIO_XP_LASI_STAT (0x9005) 25 26/* Control/Status bits */ 27#define XP_LASI_LS_ALARM (1 << 0) 28#define XP_LASI_TX_ALARM (1 << 1) 29#define XP_LASI_RX_ALARM (1 << 2) 30/* These two are Quake vendor extensions to the standard XENPACK defines */ 31#define XP_LASI_LS_INTB (1 << 3) 32#define XP_LASI_TEST (1 << 7) 33 34/* Enable LASI interrupts for PHY */ 35static inline void xenpack_enable_lasi_irqs(struct efx_nic *efx) 36{ 37 int reg; 38 int phy_id = efx->mii.phy_id; 39 /* Read to clear LASI status register */ 40 reg = mdio_clause45_read(efx, phy_id, MDIO_MMD_PMAPMD, 41 MDIO_XP_LASI_STAT); 42 43 mdio_clause45_write(efx, phy_id, MDIO_MMD_PMAPMD, 44 MDIO_XP_LASI_CTRL, XP_LASI_LS_ALARM); 45} 46 47/* Read the LASI interrupt status to clear the interrupt. */ 48static inline int xenpack_clear_lasi_irqs(struct efx_nic *efx) 49{ 50 /* Read to clear link status alarm */ 51 return mdio_clause45_read(efx, efx->mii.phy_id, 52 MDIO_MMD_PMAPMD, MDIO_XP_LASI_STAT); 53} 54 55/* Turn off LASI interrupts */ 56static inline void xenpack_disable_lasi_irqs(struct efx_nic *efx) 57{ 58 mdio_clause45_write(efx, efx->mii.phy_id, MDIO_MMD_PMAPMD, 59 MDIO_XP_LASI_CTRL, 0); 60} 61 62#endif /* EFX_XENPACK_H */