summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjoe <joe@FreeBSD.org>2002-04-06 20:50:21 +0000
committerjoe <joe@FreeBSD.org>2002-04-06 20:50:21 +0000
commit6acac88074c7f94c902b7197828376b2d276fe87 (patch)
tree4dba9fb3973da21cba4988e493fc6b4394a045d9
parent30f86800413b1dc7e831ab51a288fb9c62d42ffd (diff)
downloadFreeBSD-src-6acac88074c7f94c902b7197828376b2d276fe87.zip
FreeBSD-src-6acac88074c7f94c902b7197828376b2d276fe87.tar.gz
Another step in merging our if_aue driver with NetBSD's.
-rw-r--r--sys/dev/usb/if_aue.c29
-rw-r--r--sys/dev/usb/if_auereg.h7
-rw-r--r--sys/dev/usb/usb_port.h3
3 files changed, 19 insertions, 20 deletions
diff --git a/sys/dev/usb/if_aue.c b/sys/dev/usb/if_aue.c
index a520099..17d2ef6 100644
--- a/sys/dev/usb/if_aue.c
+++ b/sys/dev/usb/if_aue.c
@@ -405,12 +405,10 @@ aue_read_eeprom(struct aue_softc *sc, caddr_t dest, int off, int cnt, int swap)
Static int
aue_miibus_readreg(device_ptr_t dev, int phy, int reg)
{
- struct aue_softc *sc;
+ struct aue_softc *sc = USBGETSOFTC(dev);
int i;
u_int16_t val = 0;
- sc = device_get_softc(dev);
-
/*
* The Am79C901 HomePNA PHY actually contains
* two transceivers: a 1Mbps HomePNA PHY and a
@@ -451,14 +449,12 @@ aue_miibus_readreg(device_ptr_t dev, int phy, int reg)
Static int
aue_miibus_writereg(device_ptr_t dev, int phy, int reg, int data)
{
- struct aue_softc *sc;
+ struct aue_softc *sc = USBGETSOFTC(dev);
int i;
if (phy == 3)
return (0);
- sc = device_get_softc(dev);
-
aue_csr_write_2(sc, AUE_PHY_DATA, data);
aue_csr_write_1(sc, AUE_PHY_ADDR, phy);
aue_csr_write_1(sc, AUE_PHY_CTL, reg | AUE_PHYCTL_WRITE);
@@ -479,11 +475,8 @@ aue_miibus_writereg(device_ptr_t dev, int phy, int reg, int data)
Static void
aue_miibus_statchg(device_ptr_t dev)
{
- struct aue_softc *sc;
- struct mii_data *mii;
-
- sc = device_get_softc(dev);
- mii = device_get_softc(sc->aue_miibus);
+ struct aue_softc *sc = USBGETSOFTC(dev);
+ struct mii_data *mii = GET_MII(sc);
AUE_CLRBIT(sc, AUE_CTL0, AUE_CTL0_RX_ENB | AUE_CTL0_TX_ENB);
if (IFM_SUBTYPE(mii->mii_media_active) == IFM_100_TX) {
@@ -1097,7 +1090,7 @@ aue_tick(void *xsc)
AUE_LOCK(sc);
ifp = &sc->arpcom.ac_if;
- mii = device_get_softc(sc->aue_miibus);
+ mii = GET_MII(sc);
if (mii == NULL) {
AUE_UNLOCK(sc);
return;
@@ -1215,7 +1208,7 @@ aue_init(void *xsc)
{
struct aue_softc *sc = xsc;
struct ifnet *ifp = &sc->arpcom.ac_if;
- struct mii_data *mii;
+ struct mii_data *mii = GET_MII(sc);
struct aue_chain *c;
usbd_status err;
int i;
@@ -1232,8 +1225,6 @@ aue_init(void *xsc)
*/
aue_reset(sc);
- mii = device_get_softc(sc->aue_miibus);
-
/* Set MAC address */
for (i = 0; i < ETHER_ADDR_LEN; i++)
aue_csr_write_1(sc, AUE_PAR0 + i, sc->arpcom.ac_enaddr[i]);
@@ -1329,9 +1320,8 @@ Static int
aue_ifmedia_upd(struct ifnet *ifp)
{
struct aue_softc *sc = ifp->if_softc;
- struct mii_data *mii;
+ struct mii_data *mii = GET_MII(sc);
- mii = device_get_softc(sc->aue_miibus);
sc->aue_link = 0;
if (mii->mii_instance) {
struct mii_softc *miisc;
@@ -1350,9 +1340,8 @@ Static void
aue_ifmedia_sts(struct ifnet *ifp, struct ifmediareq *ifmr)
{
struct aue_softc *sc = ifp->if_softc;
- struct mii_data *mii;
+ struct mii_data *mii = GET_MII(sc);
- mii = device_get_softc(sc->aue_miibus);
mii_pollstat(mii);
ifmr->ifm_active = mii->mii_media_active;
ifmr->ifm_status = mii->mii_media_status;
@@ -1402,7 +1391,7 @@ aue_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
break;
case SIOCGIFMEDIA:
case SIOCSIFMEDIA:
- mii = device_get_softc(sc->aue_miibus);
+ mii = GET_MII(sc);
error = ifmedia_ioctl(ifp, ifr, &mii->mii_media, command);
break;
default:
diff --git a/sys/dev/usb/if_auereg.h b/sys/dev/usb/if_auereg.h
index 2988314..57fce4a 100644
--- a/sys/dev/usb/if_auereg.h
+++ b/sys/dev/usb/if_auereg.h
@@ -240,6 +240,13 @@ struct aue_cdata {
#define AUE_INC(x, y) (x) = (x + 1) % y
struct aue_softc {
+#if defined(__FreeBSD__)
+#define GET_MII(sc) (device_get_softc((sc)->aue_miibus))
+#elif defined(__NetBSD__)
+#define GET_MII(sc) (&(sc)->aue_mii)
+#elif defined(__OpenBSD__)
+#define GET_MII(sc) (&(sc)->aue_mii)
+#endif
struct arpcom arpcom;
device_t aue_miibus;
usbd_device_handle aue_udev;
diff --git a/sys/dev/usb/usb_port.h b/sys/dev/usb/usb_port.h
index 8c0ddae..0737d94 100644
--- a/sys/dev/usb/usb_port.h
+++ b/sys/dev/usb/usb_port.h
@@ -75,6 +75,7 @@ typedef struct device *device_ptr_t;
#define USBDEVUNIT(bdev) ((bdev).dv_unit)
#define USBDEVPTRNAME(bdevptr) ((bdevptr)->dv_xname)
#define USBDEVUNIT(bdev) ((bdev).dv_unit)
+#define USBGETSOFTC(d) ((void *)(d))
#define DECLARE_USB_DMA_T \
struct usb_dma_block; \
@@ -206,6 +207,7 @@ typedef struct device *device_ptr_t;
#define USBDEVUNIT(bdev) ((bdev).dv_unit)
#define USBDEVPTRNAME(bdevptr) ((bdevptr)->dv_xname)
#define USBDEVUNIT(bdev) ((bdev).dv_unit)
+#define USBGETSOFTC(d) ((void *)(d))
#define DECLARE_USB_DMA_T \
struct usb_dma_block; \
@@ -317,6 +319,7 @@ MALLOC_DECLARE(M_USBHC);
#define USBDEVUNIT(bdev) device_get_unit(bdev)
#define USBDEVPTRNAME(bdev) device_get_nameunit(bdev)
#define USBDEVUNIT(bdev) device_get_unit(bdev)
+#define USBGETSOFTC(bdev) (device_get_softc(bdev))
#define DECLARE_USB_DMA_T typedef char * usb_dma_t
OpenPOWER on IntegriCloud