Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/glxsb/glxsb.c
Show First 20 Lines • Show All 213 Lines • ▼ Show 20 Lines | static int glxsb_aes(struct glxsb_softc *, uint32_t, uint32_t, | ||||
uint32_t, void *, int, void *); | uint32_t, void *, int, void *); | ||||
static int glxsb_crypto_encdec(struct cryptop *, struct cryptodesc *, | static int glxsb_crypto_encdec(struct cryptop *, struct cryptodesc *, | ||||
struct glxsb_session *, struct glxsb_softc *); | struct glxsb_session *, struct glxsb_softc *); | ||||
static void glxsb_crypto_task(void *, int); | static void glxsb_crypto_task(void *, int); | ||||
static int glxsb_crypto_process(device_t, struct cryptop *, int); | static int glxsb_crypto_process(device_t, struct cryptop *, int); | ||||
static struct glxsb_dev{ | struct pci_device_table glxsb_devs[] = { | ||||
uint16_t vendorid; | {PCI_DEV(PCI_VENDOR_AMD, PCI_PRODUCT_AMD_GEODE_LX_CRYPTO), | ||||
uint16_t deviceid; | PCI_DESCR("AMD Geode LX Security Block (AES-128-CBC, RNG)")} | ||||
const char *description; | |||||
} glxsb_devs[] = { | |||||
{PCI_VENDOR_AMD, PCI_PRODUCT_AMD_GEODE_LX_CRYPTO, | |||||
"AMD Geode LX Security Block (AES-128-CBC, RNG)"}, | |||||
{0, 0, NULL}, | |||||
}; | }; | ||||
static device_method_t glxsb_methods[] = { | static device_method_t glxsb_methods[] = { | ||||
/* device interface */ | /* device interface */ | ||||
DEVMETHOD(device_probe, glxsb_probe), | DEVMETHOD(device_probe, glxsb_probe), | ||||
DEVMETHOD(device_attach, glxsb_attach), | DEVMETHOD(device_attach, glxsb_attach), | ||||
DEVMETHOD(device_detach, glxsb_detach), | DEVMETHOD(device_detach, glxsb_detach), | ||||
Show All 9 Lines | static driver_t glxsb_driver = { | ||||
"glxsb", | "glxsb", | ||||
glxsb_methods, | glxsb_methods, | ||||
sizeof(struct glxsb_softc) | sizeof(struct glxsb_softc) | ||||
}; | }; | ||||
static devclass_t glxsb_devclass; | static devclass_t glxsb_devclass; | ||||
DRIVER_MODULE(glxsb, pci, glxsb_driver, glxsb_devclass, 0, 0); | DRIVER_MODULE(glxsb, pci, glxsb_driver, glxsb_devclass, 0, 0); | ||||
MODULE_PNP_INFO("U16:vendor;U16:device", pci, glxsb, glxsb_devs, | PCI_PNP_INFO(glxsb_devs); | ||||
sizeof(glxsb_devs[0]), nitems(glxsb_devs) - 1); | |||||
MODULE_VERSION(glxsb, 1); | MODULE_VERSION(glxsb, 1); | ||||
MODULE_DEPEND(glxsb, crypto, 1, 1, 1); | MODULE_DEPEND(glxsb, crypto, 1, 1, 1); | ||||
static int | static int | ||||
glxsb_probe(device_t dev) | glxsb_probe(device_t dev) | ||||
{ | { | ||||
uint16_t vid; | const struct pci_device_table *glxd; | ||||
uint16_t did; | |||||
const struct glxsb_dev *glxd; | |||||
size_t i; | |||||
vid = pci_get_vendor(dev); | glxd = PCI_MATCH(dev, glxsb_devs); | ||||
did = pci_get_device(dev); | if (glxd == NULL) | ||||
for(i=0; i<nitems(glxsb_devs) - 1; i++){ | |||||
glxd = &glxd_devs[i]; | |||||
if (vid == glxd->vendorid && | |||||
did == glxd->deviceid){ | |||||
device_set_desc(dev, glxd->description); | |||||
return (BUS_PROBE_DEFAULT); | |||||
} | |||||
} | |||||
return (ENXIO); | return (ENXIO); | ||||
device_set_desc(dev, glxd->descr); | |||||
return (BUS_PROBE_DEFAULT); | |||||
} | } | ||||
static int | static int | ||||
glxsb_attach(device_t dev) | glxsb_attach(device_t dev) | ||||
{ | { | ||||
struct glxsb_softc *sc = device_get_softc(dev); | struct glxsb_softc *sc = device_get_softc(dev); | ||||
uint64_t msr; | uint64_t msr; | ||||
▲ Show 20 Lines • Show All 679 Lines • Show Last 20 Lines |