| @@ -1,14 +1,14 @@ | | | @@ -1,14 +1,14 @@ |
1 | /* $NetBSD: if_axe.c,v 1.81 2017/03/03 06:27:20 msaitoh Exp $ */ | | 1 | /* $NetBSD: if_axe.c,v 1.82 2017/03/06 01:50:44 ozaki-r Exp $ */ |
2 | /* $OpenBSD: if_axe.c,v 1.137 2016/04/13 11:03:37 mpi Exp $ */ | | 2 | /* $OpenBSD: if_axe.c,v 1.137 2016/04/13 11:03:37 mpi Exp $ */ |
3 | | | 3 | |
4 | /* | | 4 | /* |
5 | * Copyright (c) 2005, 2006, 2007 Jonathan Gray <jsg@openbsd.org> | | 5 | * Copyright (c) 2005, 2006, 2007 Jonathan Gray <jsg@openbsd.org> |
6 | * | | 6 | * |
7 | * Permission to use, copy, modify, and distribute this software for any | | 7 | * Permission to use, copy, modify, and distribute this software for any |
8 | * purpose with or without fee is hereby granted, provided that the above | | 8 | * purpose with or without fee is hereby granted, provided that the above |
9 | * copyright notice and this permission notice appear in all copies. | | 9 | * copyright notice and this permission notice appear in all copies. |
10 | * | | 10 | * |
11 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | | 11 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
12 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | | 12 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
13 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | | 13 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
14 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | | 14 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
| @@ -77,27 +77,27 @@ | | | @@ -77,27 +77,27 @@ |
77 | * (Adam Weinberger wanted me to name this driver if_gir.c.) | | 77 | * (Adam Weinberger wanted me to name this driver if_gir.c.) |
78 | */ | | 78 | */ |
79 | | | 79 | |
80 | /* | | 80 | /* |
81 | * Ax88178 and Ax88772 support backported from the OpenBSD driver. | | 81 | * Ax88178 and Ax88772 support backported from the OpenBSD driver. |
82 | * 2007/02/12, J.R. Oldroyd, fbsd@opal.com | | 82 | * 2007/02/12, J.R. Oldroyd, fbsd@opal.com |
83 | * | | 83 | * |
84 | * Manual here: | | 84 | * Manual here: |
85 | * http://www.asix.com.tw/FrootAttach/datasheet/AX88178_datasheet_Rev10.pdf | | 85 | * http://www.asix.com.tw/FrootAttach/datasheet/AX88178_datasheet_Rev10.pdf |
86 | * http://www.asix.com.tw/FrootAttach/datasheet/AX88772_datasheet_Rev10.pdf | | 86 | * http://www.asix.com.tw/FrootAttach/datasheet/AX88772_datasheet_Rev10.pdf |
87 | */ | | 87 | */ |
88 | | | 88 | |
89 | #include <sys/cdefs.h> | | 89 | #include <sys/cdefs.h> |
90 | __KERNEL_RCSID(0, "$NetBSD: if_axe.c,v 1.81 2017/03/03 06:27:20 msaitoh Exp $"); | | 90 | __KERNEL_RCSID(0, "$NetBSD: if_axe.c,v 1.82 2017/03/06 01:50:44 ozaki-r Exp $"); |
91 | | | 91 | |
92 | #ifdef _KERNEL_OPT | | 92 | #ifdef _KERNEL_OPT |
93 | #include "opt_inet.h" | | 93 | #include "opt_inet.h" |
94 | #include "opt_usb.h" | | 94 | #include "opt_usb.h" |
95 | #include "opt_net_mpsafe.h" | | 95 | #include "opt_net_mpsafe.h" |
96 | #endif | | 96 | #endif |
97 | | | 97 | |
98 | #include <sys/param.h> | | 98 | #include <sys/param.h> |
99 | #include <sys/bus.h> | | 99 | #include <sys/bus.h> |
100 | #include <sys/device.h> | | 100 | #include <sys/device.h> |
101 | #include <sys/kernel.h> | | 101 | #include <sys/kernel.h> |
102 | #include <sys/mbuf.h> | | 102 | #include <sys/mbuf.h> |
103 | #include <sys/module.h> | | 103 | #include <sys/module.h> |
| @@ -262,26 +262,28 @@ static int axe_miibus_readreg_locked(dev | | | @@ -262,26 +262,28 @@ static int axe_miibus_readreg_locked(dev |
262 | static int axe_miibus_readreg(device_t, int, int); | | 262 | static int axe_miibus_readreg(device_t, int, int); |
263 | static void axe_miibus_writereg_locked(device_t, int, int, int); | | 263 | static void axe_miibus_writereg_locked(device_t, int, int, int); |
264 | static void axe_miibus_writereg(device_t, int, int, int); | | 264 | static void axe_miibus_writereg(device_t, int, int, int); |
265 | static void axe_miibus_statchg(struct ifnet *); | | 265 | static void axe_miibus_statchg(struct ifnet *); |
266 | static int axe_cmd(struct axe_softc *, int, int, int, void *); | | 266 | static int axe_cmd(struct axe_softc *, int, int, int, void *); |
267 | static void axe_reset(struct axe_softc *); | | 267 | static void axe_reset(struct axe_softc *); |
268 | | | 268 | |
269 | static void axe_setmulti(struct axe_softc *); | | 269 | static void axe_setmulti(struct axe_softc *); |
270 | static void axe_lock_mii(struct axe_softc *); | | 270 | static void axe_lock_mii(struct axe_softc *); |
271 | static void axe_unlock_mii(struct axe_softc *); | | 271 | static void axe_unlock_mii(struct axe_softc *); |
272 | | | 272 | |
273 | static void axe_ax88178_init(struct axe_softc *); | | 273 | static void axe_ax88178_init(struct axe_softc *); |
274 | static void axe_ax88772_init(struct axe_softc *); | | 274 | static void axe_ax88772_init(struct axe_softc *); |
| | | 275 | static void axe_ax88772a_init(struct axe_softc *); |
| | | 276 | static void axe_ax88772b_init(struct axe_softc *); |
275 | | | 277 | |
276 | /* Get exclusive access to the MII registers */ | | 278 | /* Get exclusive access to the MII registers */ |
277 | static void | | 279 | static void |
278 | axe_lock_mii(struct axe_softc *sc) | | 280 | axe_lock_mii(struct axe_softc *sc) |
279 | { | | 281 | { |
280 | | | 282 | |
281 | sc->axe_refcnt++; | | 283 | sc->axe_refcnt++; |
282 | mutex_enter(&sc->axe_mii_lock); | | 284 | mutex_enter(&sc->axe_mii_lock); |
283 | } | | 285 | } |
284 | | | 286 | |
285 | static void | | 287 | static void |
286 | axe_unlock_mii(struct axe_softc *sc) | | 288 | axe_unlock_mii(struct axe_softc *sc) |
287 | { | | 289 | { |