Changeset View
Changeset View
Standalone View
Standalone View
usr.sbin/bhyve/pci_lpc.c
Show All 28 Lines | |||||
* $FreeBSD$ | * $FreeBSD$ | ||||
*/ | */ | ||||
#include <sys/cdefs.h> | #include <sys/cdefs.h> | ||||
__FBSDID("$FreeBSD$"); | __FBSDID("$FreeBSD$"); | ||||
#include <sys/types.h> | #include <sys/types.h> | ||||
#include <machine/vmm.h> | #include <machine/vmm.h> | ||||
#include <machine/vmm_snapshot.h> | |||||
#include <stdio.h> | #include <stdio.h> | ||||
#include <stdlib.h> | #include <stdlib.h> | ||||
#include <string.h> | #include <string.h> | ||||
#include <vmmapi.h> | #include <vmmapi.h> | ||||
#include "acpi.h" | #include "acpi.h" | ||||
▲ Show 20 Lines • Show All 402 Lines • ▼ Show 20 Lines | if (lpc_bridge == NULL) | ||||
return; | return; | ||||
for (pin = 0; pin < 4; pin++) | for (pin = 0; pin < 4; pin++) | ||||
pci_set_cfgdata8(lpc_bridge, 0x60 + pin, pirq_read(pin + 1)); | pci_set_cfgdata8(lpc_bridge, 0x60 + pin, pirq_read(pin + 1)); | ||||
for (pin = 0; pin < 4; pin++) | for (pin = 0; pin < 4; pin++) | ||||
pci_set_cfgdata8(lpc_bridge, 0x68 + pin, pirq_read(pin + 5)); | pci_set_cfgdata8(lpc_bridge, 0x68 + pin, pirq_read(pin + 5)); | ||||
} | } | ||||
#ifdef BHYVE_SNAPSHOT | |||||
static int | |||||
pci_lpc_snapshot(struct vm_snapshot_meta *meta) | |||||
{ | |||||
int unit, ret; | |||||
struct uart_softc *sc; | |||||
for (unit = 0; unit < LPC_UART_NUM; unit++) { | |||||
sc = lpc_uart_softc[unit].uart_softc; | |||||
ret = uart_snapshot(sc, meta); | |||||
if (ret != 0) | |||||
goto done; | |||||
} | |||||
done: | |||||
return (ret); | |||||
} | |||||
#endif | |||||
struct pci_devemu pci_de_lpc = { | struct pci_devemu pci_de_lpc = { | ||||
.pe_emu = "lpc", | .pe_emu = "lpc", | ||||
.pe_init = pci_lpc_init, | .pe_init = pci_lpc_init, | ||||
.pe_write_dsdt = pci_lpc_write_dsdt, | .pe_write_dsdt = pci_lpc_write_dsdt, | ||||
.pe_cfgwrite = pci_lpc_cfgwrite, | .pe_cfgwrite = pci_lpc_cfgwrite, | ||||
.pe_barwrite = pci_lpc_write, | .pe_barwrite = pci_lpc_write, | ||||
.pe_barread = pci_lpc_read | .pe_barread = pci_lpc_read, | ||||
#ifdef BHYVE_SNAPSHOT | |||||
.pe_snapshot = pci_lpc_snapshot, | |||||
#endif | |||||
}; | }; | ||||
PCI_EMUL_SET(pci_de_lpc); | PCI_EMUL_SET(pci_de_lpc); |