Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/nvdimm/nvdimm_acpi.c
Show All 35 Lines | |||||
#include <sys/param.h> | #include <sys/param.h> | ||||
#include <sys/bio.h> | #include <sys/bio.h> | ||||
#include <sys/bitstring.h> | #include <sys/bitstring.h> | ||||
#include <sys/bus.h> | #include <sys/bus.h> | ||||
#include <sys/kernel.h> | #include <sys/kernel.h> | ||||
#include <sys/lock.h> | #include <sys/lock.h> | ||||
#include <sys/malloc.h> | #include <sys/malloc.h> | ||||
#include <sys/module.h> | #include <sys/module.h> | ||||
#include <sys/sbuf.h> | |||||
#include <sys/uuid.h> | #include <sys/uuid.h> | ||||
#include <contrib/dev/acpica/include/acpi.h> | #include <contrib/dev/acpica/include/acpi.h> | ||||
#include <contrib/dev/acpica/include/accommon.h> | #include <contrib/dev/acpica/include/accommon.h> | ||||
#include <contrib/dev/acpica/include/acuuid.h> | #include <contrib/dev/acpica/include/acuuid.h> | ||||
#include <dev/acpica/acpivar.h> | #include <dev/acpica/acpivar.h> | ||||
#include <dev/nvdimm/nvdimm_var.h> | #include <dev/nvdimm/nvdimm_var.h> | ||||
▲ Show 20 Lines • Show All 188 Lines • ▼ Show 20 Lines | nvdimm_root_write_ivar(device_t dev, device_t child, int index, | ||||
if (index < 0 || index >= NVDIMM_ROOT_IVAR_MAX) | if (index < 0 || index >= NVDIMM_ROOT_IVAR_MAX) | ||||
return (ENOENT); | return (ENOENT); | ||||
((uintptr_t *)device_get_ivars(child))[index] = value; | ((uintptr_t *)device_get_ivars(child))[index] = value; | ||||
return (0); | return (0); | ||||
} | } | ||||
static int | static int | ||||
nvdimm_root_child_location_str(device_t dev, device_t child, char *buf, | nvdimm_root_child_location(device_t dev, device_t child, struct sbuf *sb) | ||||
size_t buflen) | |||||
{ | { | ||||
ACPI_HANDLE handle; | ACPI_HANDLE handle; | ||||
int res; | |||||
handle = nvdimm_root_get_acpi_handle(child); | handle = nvdimm_root_get_acpi_handle(child); | ||||
if (handle != NULL) | if (handle != NULL) | ||||
res = snprintf(buf, buflen, "handle=%s", acpi_name(handle)); | sbuf_printf(sb, "handle=%s", acpi_name(handle)); | ||||
else | |||||
res = snprintf(buf, buflen, ""); | |||||
if (res >= buflen) | |||||
return (EOVERFLOW); | |||||
return (0); | return (0); | ||||
} | } | ||||
static device_method_t nvdimm_acpi_methods[] = { | static device_method_t nvdimm_acpi_methods[] = { | ||||
DEVMETHOD(device_probe, nvdimm_root_probe), | DEVMETHOD(device_probe, nvdimm_root_probe), | ||||
DEVMETHOD(device_attach, nvdimm_root_attach), | DEVMETHOD(device_attach, nvdimm_root_attach), | ||||
DEVMETHOD(device_detach, nvdimm_root_detach), | DEVMETHOD(device_detach, nvdimm_root_detach), | ||||
DEVMETHOD(bus_add_child, bus_generic_add_child), | DEVMETHOD(bus_add_child, bus_generic_add_child), | ||||
DEVMETHOD(bus_read_ivar, nvdimm_root_read_ivar), | DEVMETHOD(bus_read_ivar, nvdimm_root_read_ivar), | ||||
DEVMETHOD(bus_write_ivar, nvdimm_root_write_ivar), | DEVMETHOD(bus_write_ivar, nvdimm_root_write_ivar), | ||||
DEVMETHOD(bus_child_location_str, nvdimm_root_child_location_str), | DEVMETHOD(bus_child_location, nvdimm_root_child_location), | ||||
DEVMETHOD_END | DEVMETHOD_END | ||||
}; | }; | ||||
static driver_t nvdimm_acpi_driver = { | static driver_t nvdimm_acpi_driver = { | ||||
"nvdimm_acpi_root", | "nvdimm_acpi_root", | ||||
nvdimm_acpi_methods, | nvdimm_acpi_methods, | ||||
sizeof(struct nvdimm_root_dev), | sizeof(struct nvdimm_root_dev), | ||||
}; | }; | ||||
static devclass_t nvdimm_acpi_root_devclass; | static devclass_t nvdimm_acpi_root_devclass; | ||||
DRIVER_MODULE(nvdimm_acpi_root, acpi, nvdimm_acpi_driver, | DRIVER_MODULE(nvdimm_acpi_root, acpi, nvdimm_acpi_driver, | ||||
nvdimm_acpi_root_devclass, NULL, NULL); | nvdimm_acpi_root_devclass, NULL, NULL); | ||||
MODULE_DEPEND(nvdimm_acpi_root, acpi, 1, 1, 1); | MODULE_DEPEND(nvdimm_acpi_root, acpi, 1, 1, 1); |