Merging of projects/armv6, part 5

- Driver for SMSC LAN95XX and LAN8710A ethernet controllers
- Driver for LAN8710A PHY

Submitted by:	Ben Gray, Damjan Marion, Tim Kientzle
This commit is contained in:
Oleksandr Tymoshenko 2012-08-15 04:03:55 +00:00
parent 8bb9363760
commit b011f8c450
9 changed files with 2319 additions and 3 deletions

View File

@ -1612,6 +1612,7 @@ dev/mii/rgephy.c optional miibus | rgephy
dev/mii/rlphy.c optional miibus | rlphy
dev/mii/rlswitch.c optional rlswitch
dev/mii/smcphy.c optional miibus | smcphy
dev/mii/smscphy.c optional miibus | smscphy
dev/mii/tdkphy.c optional miibus | tdkphy
dev/mii/tlphy.c optional miibus | tlphy
dev/mii/truephy.c optional miibus | truephy
@ -2118,11 +2119,12 @@ dev/usb/net/if_ipheth.c optional ipheth
dev/usb/net/if_kue.c optional kue
dev/usb/net/if_mos.c optional mos
dev/usb/net/if_rue.c optional rue
dev/usb/net/if_smsc.c optional smsc
dev/usb/net/if_udav.c optional udav
dev/usb/net/if_usie.c optional usie
dev/usb/net/ruephy.c optional rue
dev/usb/net/usb_ethernet.c optional aue | axe | cdce | cue | kue | mos | \
rue | udav
rue | smsc | udav
dev/usb/net/uhso.c optional uhso
#
# USB WLAN drivers

View File

@ -69,6 +69,7 @@ oui RDC 0x00d02d RDC Semiconductor
oui REALTEK 0x00e04c RealTek Semicondctor
oui SEEQ 0x00a07d Seeq Technology
oui SIS 0x00e006 Silicon Integrated Systems
oui SMC 0x00800f SMC
oui TI 0x080028 Texas Instruments
oui TSC 0x00c039 TDK Semiconductor
oui VITESSE 0x0001c1 Vitesse Semiconductor
@ -325,3 +326,6 @@ model xxVITESSE VSC8641 0x0003 Vitesse VSC8641 10/100/1000TX PHY
/* XaQti Corp. PHYs */
model xxXAQTI XMACII 0x0000 XaQti Corp. XMAC II gigabit interface
/* SMC */
model SMC LAN8710A 0x000F SMC LAN8710A 10/100 interface

View File

@ -26,7 +26,8 @@
__FBSDID("$FreeBSD$");
/*
* Driver for the internal PHY on the SMSC LAN91C111.
* Driver for the SEEQ 80220 and 84220.
* (Originally developed for the internal PHY on the SMSC LAN91C111.)
*/
#include <sys/param.h>

237
sys/dev/mii/smscphy.c Normal file
View File

@ -0,0 +1,237 @@
/*-
* Copyright (c) 2006 Benno Rice. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <sys/cdefs.h>
__FBSDID("$FreeBSD$");
/*
* Driver for the SMSC LAN8710A
*/
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/kernel.h>
#include <sys/socket.h>
#include <sys/errno.h>
#include <sys/module.h>
#include <sys/bus.h>
#include <sys/malloc.h>
#include <machine/bus.h>
#include <net/if.h>
#include <net/if_media.h>
#include <dev/mii/mii.h>
#include <dev/mii/miivar.h>
#include "miidevs.h"
#include "miibus_if.h"
static int smscphy_probe(device_t);
static int smscphy_attach(device_t);
static int smscphy_service(struct mii_softc *, struct mii_data *, int);
static void smscphy_auto(struct mii_softc *, int);
static void smscphy_status(struct mii_softc *);
static device_method_t smscphy_methods[] = {
/* device interface */
DEVMETHOD(device_probe, smscphy_probe),
DEVMETHOD(device_attach, smscphy_attach),
DEVMETHOD(device_detach, mii_phy_detach),
DEVMETHOD(device_shutdown, bus_generic_shutdown),
DEVMETHOD_END
};
static devclass_t smscphy_devclass;
static driver_t smscphy_driver = {
"smscphy",
smscphy_methods,
sizeof(struct mii_softc)
};
DRIVER_MODULE(smscphy, miibus, smscphy_driver, smscphy_devclass, 0, 0);
static const struct mii_phydesc smscphys[] = {
MII_PHY_DESC(SMC, LAN8710A),
MII_PHY_END
};
static const struct mii_phy_funcs smscphy_funcs = {
smscphy_service,
smscphy_status,
mii_phy_reset
};
static int
smscphy_probe(device_t dev)
{
return (mii_phy_dev_probe(dev, smscphys, BUS_PROBE_DEFAULT));
}
static int
smscphy_attach(device_t dev)
{
struct mii_softc *sc;
struct mii_attach_args *ma;
const struct mii_phy_funcs *mpf;
sc = device_get_softc(dev);
ma = device_get_ivars(dev);
mpf = &smscphy_funcs;
mii_phy_dev_attach(dev, MIIF_NOISOLATE | MIIF_NOMANPAUSE, mpf, 1);
mii_phy_setmedia(sc);
return (0);
}
static int
smscphy_service(struct mii_softc *sc, struct mii_data *mii, int cmd)
{
struct ifmedia_entry *ife;
int reg;
ife = mii->mii_media.ifm_cur;
switch (cmd) {
case MII_POLLSTAT:
break;
case MII_MEDIACHG:
/*
* If the interface is not up, don't do anything.
*/
if ((mii->mii_ifp->if_flags & IFF_UP) == 0)
break;
switch (IFM_SUBTYPE(ife->ifm_media)) {
case IFM_AUTO:
smscphy_auto(sc, ife->ifm_media);
break;
default:
mii_phy_setmedia(sc);
break;
}
break;
case MII_TICK:
if ((mii->mii_ifp->if_flags & IFF_UP) == 0) {
return (0);
}
if (IFM_SUBTYPE(ife->ifm_media) != IFM_AUTO) {
break;
}
/* I have no idea why BMCR_ISO gets set. */
reg = PHY_READ(sc, MII_BMCR);
if (reg & BMCR_ISO) {
PHY_WRITE(sc, MII_BMCR, reg & ~BMCR_ISO);
}
reg = PHY_READ(sc, MII_BMSR) | PHY_READ(sc, MII_BMSR);
if (reg & BMSR_LINK) {
sc->mii_ticks = 0;
break;
}
if (++sc->mii_ticks <= MII_ANEGTICKS) {
break;
}
sc->mii_ticks = 0;
PHY_RESET(sc);
smscphy_auto(sc, ife->ifm_media);
break;
}
/* Update the media status. */
PHY_STATUS(sc);
/* Callback if something changed. */
mii_phy_update(sc, cmd);
return (0);
}
static void
smscphy_auto(struct mii_softc *sc, int media)
{
uint16_t anar;
anar = BMSR_MEDIA_TO_ANAR(sc->mii_capabilities) | ANAR_CSMA;
if ((media & IFM_FLOW) != 0 || (sc->mii_flags & MIIF_FORCEPAUSE) != 0)
anar |= ANAR_FC;
PHY_WRITE(sc, MII_ANAR, anar);
/* Apparently this helps. */
anar = PHY_READ(sc, MII_ANAR);
PHY_WRITE(sc, MII_BMCR, BMCR_AUTOEN | BMCR_STARTNEG);
}
static void
smscphy_status(struct mii_softc *sc)
{
struct mii_data *mii;
uint32_t bmcr, bmsr, status;
mii = sc->mii_pdata;
mii->mii_media_status = IFM_AVALID;
mii->mii_media_active = IFM_ETHER;
bmsr = PHY_READ(sc, MII_BMSR) | PHY_READ(sc, MII_BMSR);
if ((bmsr & BMSR_LINK) != 0)
mii->mii_media_status |= IFM_ACTIVE;
bmcr = PHY_READ(sc, MII_BMCR);
if ((bmcr & BMCR_ISO) != 0) {
mii->mii_media_active |= IFM_NONE;
mii->mii_media_status = 0;
return;
}
if ((bmcr & BMCR_LOOP) != 0)
mii->mii_media_active |= IFM_LOOP;
if ((bmcr & BMCR_AUTOEN) != 0) {
if ((bmsr & BMSR_ACOMP) == 0) {
/* Erg, still trying, I guess... */
mii->mii_media_active |= IFM_NONE;
return;
}
}
status = PHY_READ(sc, 0x1F);
if (status & 0x0008)
mii->mii_media_active |= IFM_100_TX;
else
mii->mii_media_active |= IFM_10_T;
if (status & 0x0010)
mii->mii_media_active |= IFM_FDX | mii_phy_flowstatus(sc);
else
mii->mii_media_active |= IFM_HDX;
}

1756
sys/dev/usb/net/if_smsc.c Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,277 @@
/*-
* Copyright (c) 2012
* Ben Gray <bgray@freebsd.org>.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD$
*/
#ifndef _IF_SMSCREG_H_
#define _IF_SMSCREG_H_
/*
* Definitions for the SMSC LAN9514 and LAN9514 USB to ethernet controllers.
*
* This information was gleaned from the SMSC driver in the linux kernel, where
* it is Copyrighted (C) 2007-2008 SMSC.
*
*/
/**
* TRANSMIT FRAMES
* ---------------
* Tx frames are prefixed with an 8-byte header which describes the frame
*
* 4 bytes 4 bytes variable
* +------------+------------+--- . . . . . . . . . . . . ---+
* | TX_CTRL_0 | TX_CTRL_1 | Ethernet frame data |
* +------------+------------+--- . . . . . . . . . . . . ---+
*
* Where the headers have the following fields:
*
* TX_CTRL_0 <20:16> Data offset
* TX_CTRL_0 <13> First segment of frame indicator
* TX_CTRL_0 <12> Last segment of frame indicator
* TX_CTRL_0 <10:0> Buffer size (?)
*
* TX_CTRL_1 <14> Perform H/W checksuming on IP packets
* TX_CTRL_1 <13> Disable automatic ethernet CRC generation
* TX_CTRL_1 <12> Disable padding (?)
* TX_CTRL_1 <10:0> Packet byte length
*
*/
#define SMSC_TX_CTRL_0_OFFSET(x) (((x) & 0x1FUL) << 16)
#define SMSC_TX_CTRL_0_FIRST_SEG (0x1UL << 13)
#define SMSC_TX_CTRL_0_LAST_SEG (0x1UL << 12)
#define SMSC_TX_CTRL_0_BUF_SIZE(x) ((x) & 0x000007FFUL)
#define SMSC_TX_CTRL_1_CSUM_ENABLE (0x1UL << 14)
#define SMSC_TX_CTRL_1_CRC_DISABLE (0x1UL << 13)
#define SMSC_TX_CTRL_1_PADDING_DISABLE (0x1UL << 12)
#define SMSC_TX_CTRL_1_PKT_LENGTH(x) ((x) & 0x000007FFUL)
/**
* RECEIVE FRAMES
* --------------
* Rx frames are prefixed with an 4-byte status header which describes any
* errors with the frame as well as things like the length
*
* 4 bytes variable
* +------------+--- . . . . . . . . . . . . ---+
* | RX_STAT | Ethernet frame data |
* +------------+--- . . . . . . . . . . . . ---+
*
* Where the status header has the following fields:
*
* RX_STAT <30> Filter Fail
* RX_STAT <29:16> Frame Length
* RX_STAT <15> Error Summary
* RX_STAT <13> Broadcast Frame
* RX_STAT <12> Length Error
* RX_STAT <11> Runt Frame
* RX_STAT <10> Multicast Frame
* RX_STAT <7> Frame too long
* RX_STAT <6> Collision Seen
* RX_STAT <5> Frame Type
* RX_STAT <4> Receive Watchdog
* RX_STAT <3> Mii Error
* RX_STAT <2> Dribbling
* RX_STAT <1> CRC Error
*
*/
#define SMSC_RX_STAT_FILTER_FAIL (0x1UL << 30)
#define SMSC_RX_STAT_FRM_LENGTH(x) (((x) >> 16) & 0x3FFFUL)
#define SMSC_RX_STAT_ERROR (0x1UL << 15)
#define SMSC_RX_STAT_BROADCAST (0x1UL << 13)
#define SMSC_RX_STAT_LENGTH_ERROR (0x1UL << 12)
#define SMSC_RX_STAT_RUNT (0x1UL << 11)
#define SMSC_RX_STAT_MULTICAST (0x1UL << 10)
#define SMSC_RX_STAT_FRM_TO_LONG (0x1UL << 7)
#define SMSC_RX_STAT_COLLISION (0x1UL << 6)
#define SMSC_RX_STAT_FRM_TYPE (0x1UL << 5)
#define SMSC_RX_STAT_WATCHDOG (0x1UL << 4)
#define SMSC_RX_STAT_MII_ERROR (0x1UL << 3)
#define SMSC_RX_STAT_DRIBBLING (0x1UL << 2)
#define SMSC_RX_STAT_CRC_ERROR (0x1UL << 1)
/**
* REGISTERS
*
*/
#define SMSC_ID_REV 0x000
#define SMSC_INTR_STATUS 0x008
#define SMSC_RX_CFG 0x00C
#define SMSC_TX_CFG 0x010
#define SMSC_HW_CFG 0x014
#define SMSC_PM_CTRL 0x020
#define SMSC_LED_GPIO_CFG 0x024
#define SMSC_GPIO_CFG 0x028
#define SMSC_AFC_CFG 0x02C
#define SMSC_EEPROM_CMD 0x030
#define SMSC_EEPROM_DATA 0x034
#define SMSC_BURST_CAP 0x038
#define SMSC_GPIO_WAKE 0x064
#define SMSC_INTR_CFG 0x068
#define SMSC_BULK_IN_DLY 0x06C
#define SMSC_MAC_CSR 0x100
#define SMSC_MAC_ADDRH 0x104
#define SMSC_MAC_ADDRL 0x108
#define SMSC_HASHH 0x10C
#define SMSC_HASHL 0x110
#define SMSC_MII_ADDR 0x114
#define SMSC_MII_DATA 0x118
#define SMSC_FLOW 0x11C
#define SMSC_VLAN1 0x120
#define SMSC_VLAN2 0x124
#define SMSC_WUFF 0x128
#define SMSC_WUCSR 0x12C
#define SMSC_COE_CTRL 0x130
/* ID / Revision register */
#define SMSC_ID_REV_CHIP_ID_MASK 0xFFFF0000UL
#define SMSC_ID_REV_CHIP_REV_MASK 0x0000FFFFUL
#define SMSC_RX_FIFO_FLUSH (0x1UL << 0)
#define SMSC_TX_CFG_ON (0x1UL << 2)
#define SMSC_TX_CFG_STOP (0x1UL << 1)
#define SMSC_TX_CFG_FIFO_FLUSH (0x1UL << 0)
#define SMSC_HW_CFG_BIR (0x1UL << 12)
#define SMSC_HW_CFG_LEDB (0x1UL << 11)
#define SMSC_HW_CFG_RXDOFF (0x3UL << 9) /* RX pkt alignment */
#define SMSC_HW_CFG_DRP (0x1UL << 6)
#define SMSC_HW_CFG_MEF (0x1UL << 5)
#define SMSC_HW_CFG_LRST (0x1UL << 3) /* Lite reset */
#define SMSC_HW_CFG_PSEL (0x1UL << 2)
#define SMSC_HW_CFG_BCE (0x1UL << 1)
#define SMSC_HW_CFG_SRST (0x1UL << 0)
#define SMSC_PM_CTRL_PHY_RST (0x1UL << 4) /* PHY reset */
#define SMSC_LED_GPIO_CFG_SPD_LED (0x1UL << 24)
#define SMSC_LED_GPIO_CFG_LNK_LED (0x1UL << 20)
#define SMSC_LED_GPIO_CFG_FDX_LED (0x1UL << 16)
/* Hi watermark = 15.5Kb (~10 mtu pkts) */
/* low watermark = 3k (~2 mtu pkts) */
/* backpressure duration = ~ 350us */
/* Apply FC on any frame. */
#define AFC_CFG_DEFAULT (0x00F830A1)
#define SMSC_EEPROM_CMD_BUSY (0x1UL << 31)
#define SMSC_EEPROM_CMD_MASK (0x7UL << 28)
#define SMSC_EEPROM_CMD_READ (0x0UL << 28)
#define SMSC_EEPROM_CMD_WRITE (0x3UL << 28)
#define SMSC_EEPROM_CMD_ERASE (0x5UL << 28)
#define SMSC_EEPROM_CMD_RELOAD (0x7UL << 28)
#define SMSC_EEPROM_CMD_TIMEOUT (0x1UL << 10)
#define SMSC_EEPROM_CMD_ADDR_MASK 0x000001FFUL
/* MAC Control and Status Register */
#define SMSC_MAC_CSR_RCVOWN (0x1UL << 23) /* Half duplex */
#define SMSC_MAC_CSR_LOOPBK (0x1UL << 21) /* Loopback */
#define SMSC_MAC_CSR_FDPX (0x1UL << 20) /* Full duplex */
#define SMSC_MAC_CSR_MCPAS (0x1UL << 19) /* Multicast mode */
#define SMSC_MAC_CSR_PRMS (0x1UL << 18) /* Promiscuous mode */
#define SMSC_MAC_CSR_INVFILT (0x1UL << 17) /* Inverse filtering */
#define SMSC_MAC_CSR_PASSBAD (0x1UL << 16) /* Pass on bad frames */
#define SMSC_MAC_CSR_HPFILT (0x1UL << 13) /* Hash filtering */
#define SMSC_MAC_CSR_BCAST (0x1UL << 11) /* Broadcast */
#define SMSC_MAC_CSR_TXEN (0x1UL << 3) /* TX enable */
#define SMSC_MAC_CSR_RXEN (0x1UL << 2) /* RX enable */
/* Interrupt control register */
#define SMSC_INTR_NTEP (0x1UL << 31)
#define SMSC_INTR_MACRTO (0x1UL << 19)
#define SMSC_INTR_TX_STOP (0x1UL << 17)
#define SMSC_INTR_RX_STOP (0x1UL << 16)
#define SMSC_INTR_PHY_INT (0x1UL << 15)
#define SMSC_INTR_TXE (0x1UL << 14)
#define SMSC_INTR_TDFU (0x1UL << 13)
#define SMSC_INTR_TDFO (0x1UL << 12)
#define SMSC_INTR_RXDF (0x1UL << 11)
#define SMSC_INTR_GPIOS 0x000007FFUL
/* Phy MII interface register */
#define SMSC_MII_WRITE (0x1UL << 1)
#define SMSC_MII_READ (0x0UL << 1)
#define SMSC_MII_BUSY (0x1UL << 0)
/* H/W checksum register */
#define SMSC_COE_CTRL_TX_EN (0x1UL << 16) /* Tx H/W csum enable */
#define SMSC_COE_CTRL_RX_MODE (0x1UL << 1)
#define SMSC_COE_CTRL_RX_EN (0x1UL << 0) /* Rx H/W csum enable */
/* Registers on the phy, accessed via MII/MDIO */
#define SMSC_PHY_INTR_STAT (29)
#define SMSC_PHY_INTR_MASK (30)
#define SMSC_PHY_INTR_ENERGY_ON (0x1U << 7)
#define SMSC_PHY_INTR_ANEG_COMP (0x1U << 6)
#define SMSC_PHY_INTR_REMOTE_FAULT (0x1U << 5)
#define SMSC_PHY_INTR_LINK_DOWN (0x1U << 4)
/* USB Vendor Requests */
#define SMSC_UR_WRITE_REG 0xA0
#define SMSC_UR_READ_REG 0xA1
#define SMSC_UR_GET_STATS 0xA2
#define SMSC_CONFIG_INDEX 0 /* config number 1 */
#define SMSC_IFACE_IDX 0
/*
* USB endpoints.
*/
enum {
SMSC_BULK_DT_RD,
SMSC_BULK_DT_WR,
/* the LAN9514 device does support interrupt endpoints, however I couldn't
* get then to work reliably and since they are unneeded (poll the mii
* status) they are unused.
* SMSC_INTR_DT_WR,
* SMSC_INTR_DT_RD,
*/
SMSC_N_TRANSFER,
};
struct smsc_softc {
struct usb_ether sc_ue;
struct mtx sc_mtx;
struct usb_xfer *sc_xfer[SMSC_N_TRANSFER];
int sc_phyno;
/* The following stores the settings in the mac control (MAC_CSR) register */
uint32_t sc_mac_csr;
uint32_t sc_rev_id;
uint32_t sc_flags;
#define SMSC_FLAG_LINK 0x0001
#define SMSC_FLAG_LAN9514 0x1000 /* LAN9514 */
};
#define SMSC_LOCK(_sc) mtx_lock(&(_sc)->sc_mtx)
#define SMSC_UNLOCK(_sc) mtx_unlock(&(_sc)->sc_mtx)
#define SMSC_LOCK_ASSERT(_sc, t) mtx_assert(&(_sc)->sc_mtx, t)
#endif /* _IF_SMSCREG_H_ */

View File

@ -3855,6 +3855,7 @@ product SMC 2862WG 0xee13 EZ Connect Wireless Adapter
product SMC2 2020HUB 0x2020 USB Hub
product SMC2 2514HUB 0x2514 USB Hub
product SMC3 2662WUSB 0xa002 2662W-AR Wireless
product SMC2 LAN9514_ETH 0xec00 USB/Ethernet
/* SOHOware products */
product SOHOWARE NUB100 0x9100 10/100 USB Ethernet

View File

@ -8,7 +8,8 @@ SRCS+= ciphy.c device_if.h
SRCS+= e1000phy.c gentbi.c icsphy.c ip1000phy.c jmphy.c lxtphy.c
SRCS+= miibus_if.c miibus_if.h mii.c miidevs.h mii_bitbang.c mii_physubr.c
SRCS+= mlphy.c nsgphy.c nsphy.c nsphyter.c pci_if.h pnaphy.c qsphy.c
SRCS+= rdcphy.c rgephy.c rlphy.c smcphy.c tdkphy.c tlphy.c truephy.c
SRCS+= rdcphy.c rgephy.c rlphy.c smcphy.c
SRCS+= smscphy.c tdkphy.c tlphy.c truephy.c
SRCS+= ukphy.c ukphy_subr.c
SRCS+= xmphy.c

View File

@ -0,0 +1,37 @@
#
# $FreeBSD$
#
# Copyright (c) 2011 Ben Gray. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
S= ${.CURDIR}/../../..
.PATH: $S/dev/usb/net
KMOD= if_smsc
SRCS= opt_bus.h opt_usb.h device_if.h bus_if.h usb_if.h usbdevs.h \
miibus_if.h opt_inet.h \
if_smsc.c
.include <bsd.kmod.mk>