/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __UM_VIRT_PCI_H #define __UM_VIRT_PCI_H #include struct um_pci_device { const struct um_pci_ops *ops; /* for now just standard BARs */ u8 resptr[PCI_STD_NUM_BARS]; int irq; }; struct um_pci_ops { unsigned long (*cfgspace_read)(struct um_pci_device *dev, unsigned int offset, int size); void (*cfgspace_write)(struct um_pci_device *dev, unsigned int offset, int size, unsigned long val); unsigned long (*bar_read)(struct um_pci_device *dev, int bar, unsigned int offset, int size); void (*bar_write)(struct um_pci_device *dev, int bar, unsigned int offset, int size, unsigned long val); void (*bar_copy_from)(struct um_pci_device *dev, int bar, void *buffer, unsigned int offset, int size); void (*bar_copy_to)(struct um_pci_device *dev, int bar, unsigned int offset, const void *buffer, int size); void (*bar_set)(struct um_pci_device *dev, int bar, unsigned int offset, u8 value, int size); }; int um_pci_device_register(struct um_pci_device *dev); void um_pci_device_unregister(struct um_pci_device *dev); int um_pci_platform_device_register(struct um_pci_device *dev); void um_pci_platform_device_unregister(struct um_pci_device *dev); #endif /* __UM_VIRT_PCI_H */