Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/mii/mii.c
Show First 20 Lines • Show All 41 Lines • ▼ Show 20 Lines | |||||
*/ | */ | ||||
#include <sys/param.h> | #include <sys/param.h> | ||||
#include <sys/systm.h> | #include <sys/systm.h> | ||||
#include <sys/socket.h> | #include <sys/socket.h> | ||||
#include <sys/malloc.h> | #include <sys/malloc.h> | ||||
#include <sys/module.h> | #include <sys/module.h> | ||||
#include <sys/bus.h> | #include <sys/bus.h> | ||||
#include <sys/sbuf.h> | |||||
#include <net/if.h> | #include <net/if.h> | ||||
#include <net/if_var.h> | #include <net/if_var.h> | ||||
#include <net/if_media.h> | #include <net/if_media.h> | ||||
#include <dev/mii/mii.h> | #include <dev/mii/mii.h> | ||||
#include <dev/mii/miivar.h> | #include <dev/mii/miivar.h> | ||||
MODULE_VERSION(miibus, 1); | MODULE_VERSION(miibus, 1); | ||||
#include "miibus_if.h" | #include "miibus_if.h" | ||||
static device_attach_t miibus_attach; | static device_attach_t miibus_attach; | ||||
static bus_child_detached_t miibus_child_detached; | static bus_child_detached_t miibus_child_detached; | ||||
static bus_child_location_str_t miibus_child_location_str; | static bus_child_location_t miibus_child_location; | ||||
static bus_child_pnpinfo_str_t miibus_child_pnpinfo_str; | static bus_child_pnpinfo_t miibus_child_pnpinfo; | ||||
static device_detach_t miibus_detach; | static device_detach_t miibus_detach; | ||||
static bus_hinted_child_t miibus_hinted_child; | static bus_hinted_child_t miibus_hinted_child; | ||||
static bus_print_child_t miibus_print_child; | static bus_print_child_t miibus_print_child; | ||||
static device_probe_t miibus_probe; | static device_probe_t miibus_probe; | ||||
static bus_read_ivar_t miibus_read_ivar; | static bus_read_ivar_t miibus_read_ivar; | ||||
static miibus_readreg_t miibus_readreg; | static miibus_readreg_t miibus_readreg; | ||||
static miibus_statchg_t miibus_statchg; | static miibus_statchg_t miibus_statchg; | ||||
static miibus_writereg_t miibus_writereg; | static miibus_writereg_t miibus_writereg; | ||||
static miibus_linkchg_t miibus_linkchg; | static miibus_linkchg_t miibus_linkchg; | ||||
static miibus_mediainit_t miibus_mediainit; | static miibus_mediainit_t miibus_mediainit; | ||||
static unsigned char mii_bitreverse(unsigned char x); | static unsigned char mii_bitreverse(unsigned char x); | ||||
static device_method_t miibus_methods[] = { | static device_method_t miibus_methods[] = { | ||||
/* device interface */ | /* device interface */ | ||||
DEVMETHOD(device_probe, miibus_probe), | DEVMETHOD(device_probe, miibus_probe), | ||||
DEVMETHOD(device_attach, miibus_attach), | DEVMETHOD(device_attach, miibus_attach), | ||||
DEVMETHOD(device_detach, miibus_detach), | DEVMETHOD(device_detach, miibus_detach), | ||||
DEVMETHOD(device_shutdown, bus_generic_shutdown), | DEVMETHOD(device_shutdown, bus_generic_shutdown), | ||||
/* bus interface */ | /* bus interface */ | ||||
DEVMETHOD(bus_print_child, miibus_print_child), | DEVMETHOD(bus_print_child, miibus_print_child), | ||||
DEVMETHOD(bus_read_ivar, miibus_read_ivar), | DEVMETHOD(bus_read_ivar, miibus_read_ivar), | ||||
DEVMETHOD(bus_child_detached, miibus_child_detached), | DEVMETHOD(bus_child_detached, miibus_child_detached), | ||||
DEVMETHOD(bus_child_pnpinfo_str, miibus_child_pnpinfo_str), | DEVMETHOD(bus_child_pnpinfo, miibus_child_pnpinfo), | ||||
DEVMETHOD(bus_child_location_str, miibus_child_location_str), | DEVMETHOD(bus_child_location, miibus_child_location), | ||||
DEVMETHOD(bus_hinted_child, miibus_hinted_child), | DEVMETHOD(bus_hinted_child, miibus_hinted_child), | ||||
/* MII interface */ | /* MII interface */ | ||||
DEVMETHOD(miibus_readreg, miibus_readreg), | DEVMETHOD(miibus_readreg, miibus_readreg), | ||||
DEVMETHOD(miibus_writereg, miibus_writereg), | DEVMETHOD(miibus_writereg, miibus_writereg), | ||||
DEVMETHOD(miibus_statchg, miibus_statchg), | DEVMETHOD(miibus_statchg, miibus_statchg), | ||||
DEVMETHOD(miibus_linkchg, miibus_linkchg), | DEVMETHOD(miibus_linkchg, miibus_linkchg), | ||||
DEVMETHOD(miibus_mediainit, miibus_mediainit), | DEVMETHOD(miibus_mediainit, miibus_mediainit), | ||||
▲ Show 20 Lines • Show All 114 Lines • ▼ Show 20 Lines | case MIIBUS_IVAR_FLAGS: | ||||
break; | break; | ||||
default: | default: | ||||
return (ENOENT); | return (ENOENT); | ||||
} | } | ||||
return (0); | return (0); | ||||
} | } | ||||
static int | static int | ||||
miibus_child_pnpinfo_str(device_t dev __unused, device_t child, char *buf, | miibus_child_pnpinfo(device_t dev __unused, device_t child, struct sbuf *sb) | ||||
size_t buflen) | |||||
{ | { | ||||
struct mii_attach_args *ma; | struct mii_attach_args *ma; | ||||
ma = device_get_ivars(child); | ma = device_get_ivars(child); | ||||
snprintf(buf, buflen, "oui=0x%x model=0x%x rev=0x%x", | sbuf_printf(sb, "oui=0x%x model=0x%x rev=0x%x", | ||||
MII_OUI(ma->mii_id1, ma->mii_id2), | MII_OUI(ma->mii_id1, ma->mii_id2), | ||||
MII_MODEL(ma->mii_id2), MII_REV(ma->mii_id2)); | MII_MODEL(ma->mii_id2), MII_REV(ma->mii_id2)); | ||||
return (0); | return (0); | ||||
} | } | ||||
static int | static int | ||||
miibus_child_location_str(device_t dev __unused, device_t child, char *buf, | miibus_child_location(device_t dev __unused, device_t child, struct sbuf *sb) | ||||
size_t buflen) | |||||
{ | { | ||||
struct mii_attach_args *ma; | struct mii_attach_args *ma; | ||||
ma = device_get_ivars(child); | ma = device_get_ivars(child); | ||||
snprintf(buf, buflen, "phyno=%d", ma->mii_phyno); | sbuf_printf(sb, "phyno=%d", ma->mii_phyno); | ||||
return (0); | return (0); | ||||
} | } | ||||
static void | static void | ||||
miibus_hinted_child(device_t dev, const char *name, int unit) | miibus_hinted_child(device_t dev, const char *name, int unit) | ||||
{ | { | ||||
struct miibus_ivars *ivars; | struct miibus_ivars *ivars; | ||||
struct mii_attach_args *args, *ma; | struct mii_attach_args *args, *ma; | ||||
▲ Show 20 Lines • Show All 432 Lines • Show Last 20 Lines |