Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/virtio/mmio/virtio_mmio_acpi.c
- This file was copied from sys/dev/virtio/mmio/virtio_mmio.h.
/*- | /*- | ||||
* Copyright (c) 2014 Ruslan Bukin <br@bsdpad.com> | * Copyright (c) 2014 Ruslan Bukin <br@bsdpad.com> | ||||
* Copyright (c) 2014 The FreeBSD Foundation | |||||
* All rights reserved. | * All rights reserved. | ||||
* | * | ||||
* This software was developed by SRI International and the University of | * This software was developed by SRI International and the University of | ||||
* Cambridge Computer Laboratory under DARPA/AFRL contract (FA8750-10-C-0237) | * Cambridge Computer Laboratory under DARPA/AFRL contract (FA8750-10-C-0237) | ||||
* ("CTSRD"), as part of the DARPA CRASH research programme. | * ("CTSRD"), as part of the DARPA CRASH research programme. | ||||
* | * | ||||
* Portions of this software were developed by Andrew Turner | |||||
* under sponsorship from the FreeBSD Foundation. | |||||
* | |||||
* Redistribution and use in source and binary forms, with or without | * Redistribution and use in source and binary forms, with or without | ||||
* modification, are permitted provided that the following conditions | * modification, are permitted provided that the following conditions | ||||
* are met: | * are met: | ||||
* 1. Redistributions of source code must retain the above copyright | * 1. Redistributions of source code must retain the above copyright | ||||
* notice, this list of conditions and the following disclaimer. | * notice, this list of conditions and the following disclaimer. | ||||
* 2. Redistributions in binary form must reproduce the above copyright | * 2. Redistributions in binary form must reproduce the above copyright | ||||
* notice, this list of conditions and the following disclaimer in the | * notice, this list of conditions and the following disclaimer in the | ||||
* documentation and/or other materials provided with the distribution. | * documentation and/or other materials provided with the distribution. | ||||
* | * | ||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND | * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND | ||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE | ||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF | ||||
* SUCH DAMAGE. | * SUCH DAMAGE. | ||||
* | |||||
* $FreeBSD$ | |||||
*/ | */ | ||||
#ifndef _VIRTIO_MMIO_H | /* | ||||
#define _VIRTIO_MMIO_H | * VirtIO MMIO interface. | ||||
* This driver is heavily based on VirtIO PCI interface driver. | |||||
*/ | |||||
#define VIRTIO_MMIO_MAGIC_VALUE 0x000 | #include "opt_acpi.h" | ||||
#define VIRTIO_MMIO_VERSION 0x004 | |||||
#define VIRTIO_MMIO_DEVICE_ID 0x008 | |||||
#define VIRTIO_MMIO_VENDOR_ID 0x00c | |||||
#define VIRTIO_MMIO_HOST_FEATURES 0x010 | |||||
#define VIRTIO_MMIO_HOST_FEATURES_SEL 0x014 | |||||
#define VIRTIO_MMIO_GUEST_FEATURES 0x020 | |||||
#define VIRTIO_MMIO_GUEST_FEATURES_SEL 0x024 | |||||
#define VIRTIO_MMIO_GUEST_PAGE_SIZE 0x028 | |||||
#define VIRTIO_MMIO_QUEUE_SEL 0x030 | |||||
#define VIRTIO_MMIO_QUEUE_NUM_MAX 0x034 | |||||
#define VIRTIO_MMIO_QUEUE_NUM 0x038 | |||||
#define VIRTIO_MMIO_QUEUE_ALIGN 0x03c | |||||
#define VIRTIO_MMIO_QUEUE_PFN 0x040 | |||||
#define VIRTIO_MMIO_QUEUE_NOTIFY 0x050 | |||||
#define VIRTIO_MMIO_INTERRUPT_STATUS 0x060 | |||||
#define VIRTIO_MMIO_INTERRUPT_ACK 0x064 | |||||
#define VIRTIO_MMIO_STATUS 0x070 | |||||
#define VIRTIO_MMIO_CONFIG 0x100 | |||||
#define VIRTIO_MMIO_INT_VRING (1 << 0) | |||||
#define VIRTIO_MMIO_INT_CONFIG (1 << 1) | |||||
#define VIRTIO_MMIO_VRING_ALIGN 4096 | |||||
#endif /* _VIRTIO_MMIO_H */ | #include <sys/cdefs.h> | ||||
__FBSDID("$FreeBSD$"); | |||||
#include <sys/param.h> | |||||
#include <sys/systm.h> | |||||
#include <sys/bus.h> | |||||
#include <sys/kernel.h> | |||||
#include <sys/module.h> | |||||
#include <contrib/dev/acpica/include/acpi.h> | |||||
#include <dev/acpica/acpivar.h> | |||||
#include <dev/virtio/mmio/virtio_mmio.h> | |||||
static int vtmmio_acpi_probe(device_t); | |||||
static device_method_t vtmmio_acpi_methods[] = { | |||||
/* Device interface. */ | |||||
DEVMETHOD(device_probe, vtmmio_acpi_probe), | |||||
DEVMETHOD_END | |||||
}; | |||||
DEFINE_CLASS_1(virtio_mmio, vtmmio_acpi_driver, vtmmio_acpi_methods, | |||||
sizeof(struct vtmmio_softc), vtmmio_driver); | |||||
static devclass_t vtmmio_acpi_devclass; | |||||
DRIVER_MODULE(virtio_mmio, acpi, vtmmio_acpi_driver, vtmmio_acpi_devclass, 0,0); | |||||
MODULE_DEPEND(virtio_mmio, acpi, 1, 1, 1); | |||||
static int | |||||
vtmmio_acpi_probe(device_t dev) | |||||
{ | |||||
ACPI_HANDLE h; | |||||
if ((h = acpi_get_handle(dev)) == NULL) | |||||
return (ENXIO); | |||||
if (!acpi_MatchHid(h, "LNRO0005")) | |||||
return (ENXIO); | |||||
device_set_desc(dev, "VirtIO MMIO adapter"); | |||||
return (BUS_PROBE_DEFAULT); | |||||
} |