1*60742802SPekka Enberg #include "kvm/pci.h" 2*60742802SPekka Enberg 3*60742802SPekka Enberg #include "kvm/ioport.h" 4*60742802SPekka Enberg 5*60742802SPekka Enberg #include <stdint.h> 6*60742802SPekka Enberg 7*60742802SPekka Enberg static uint32_t pci_cse; /* PCI configuration space enable */ 8*60742802SPekka Enberg 9*60742802SPekka Enberg static bool pci_cse_out(struct kvm *self, uint16_t port, void *data, int size, uint32_t count) 10*60742802SPekka Enberg { 11*60742802SPekka Enberg uint32_t *p = data; 12*60742802SPekka Enberg 13*60742802SPekka Enberg pci_cse = *p; 14*60742802SPekka Enberg 15*60742802SPekka Enberg return true; 16*60742802SPekka Enberg } 17*60742802SPekka Enberg 18*60742802SPekka Enberg static bool pci_cse_in(struct kvm *self, uint16_t port, void *data, int size, uint32_t count) 19*60742802SPekka Enberg { 20*60742802SPekka Enberg uint32_t *p = data; 21*60742802SPekka Enberg 22*60742802SPekka Enberg *p = pci_cse; 23*60742802SPekka Enberg 24*60742802SPekka Enberg return true; 25*60742802SPekka Enberg } 26*60742802SPekka Enberg 27*60742802SPekka Enberg static struct ioport_operations pci_cse_ops = { 28*60742802SPekka Enberg .io_in = pci_cse_in, 29*60742802SPekka Enberg .io_out = pci_cse_out, 30*60742802SPekka Enberg }; 31*60742802SPekka Enberg 32*60742802SPekka Enberg static bool pci_mechanism_out(struct kvm *self, uint16_t port, void *data, int size, uint32_t count) 33*60742802SPekka Enberg { 34*60742802SPekka Enberg return true; 35*60742802SPekka Enberg } 36*60742802SPekka Enberg 37*60742802SPekka Enberg static bool pci_mechanism_in(struct kvm *self, uint16_t port, void *data, int size, uint32_t count) 38*60742802SPekka Enberg { 39*60742802SPekka Enberg return true; 40*60742802SPekka Enberg } 41*60742802SPekka Enberg 42*60742802SPekka Enberg static struct ioport_operations pci_mechanism_ops = { 43*60742802SPekka Enberg .io_in = pci_mechanism_in, 44*60742802SPekka Enberg .io_out = pci_mechanism_out, 45*60742802SPekka Enberg }; 46*60742802SPekka Enberg 47*60742802SPekka Enberg void pci__init(void) 48*60742802SPekka Enberg { 49*60742802SPekka Enberg ioport__register(0xcfb, &pci_mechanism_ops); 50*60742802SPekka Enberg ioport__register(0xcf8, &pci_cse_ops); 51*60742802SPekka Enberg } 52