1*24ffa71bSTiwei Bie /* SPDX-License-Identifier: GPL-2.0 */ 2*24ffa71bSTiwei Bie #ifndef __UM_VIRT_PCI_H 3*24ffa71bSTiwei Bie #define __UM_VIRT_PCI_H 4*24ffa71bSTiwei Bie 5*24ffa71bSTiwei Bie #include <linux/pci.h> 6*24ffa71bSTiwei Bie 7*24ffa71bSTiwei Bie struct um_pci_device { 8*24ffa71bSTiwei Bie const struct um_pci_ops *ops; 9*24ffa71bSTiwei Bie 10*24ffa71bSTiwei Bie /* for now just standard BARs */ 11*24ffa71bSTiwei Bie u8 resptr[PCI_STD_NUM_BARS]; 12*24ffa71bSTiwei Bie 13*24ffa71bSTiwei Bie int irq; 14*24ffa71bSTiwei Bie }; 15*24ffa71bSTiwei Bie 16*24ffa71bSTiwei Bie struct um_pci_ops { 17*24ffa71bSTiwei Bie unsigned long (*cfgspace_read)(struct um_pci_device *dev, 18*24ffa71bSTiwei Bie unsigned int offset, int size); 19*24ffa71bSTiwei Bie void (*cfgspace_write)(struct um_pci_device *dev, unsigned int offset, 20*24ffa71bSTiwei Bie int size, unsigned long val); 21*24ffa71bSTiwei Bie 22*24ffa71bSTiwei Bie unsigned long (*bar_read)(struct um_pci_device *dev, int bar, 23*24ffa71bSTiwei Bie unsigned int offset, int size); 24*24ffa71bSTiwei Bie void (*bar_write)(struct um_pci_device *dev, int bar, 25*24ffa71bSTiwei Bie unsigned int offset, int size, unsigned long val); 26*24ffa71bSTiwei Bie 27*24ffa71bSTiwei Bie void (*bar_copy_from)(struct um_pci_device *dev, int bar, void *buffer, 28*24ffa71bSTiwei Bie unsigned int offset, int size); 29*24ffa71bSTiwei Bie void (*bar_copy_to)(struct um_pci_device *dev, int bar, 30*24ffa71bSTiwei Bie unsigned int offset, const void *buffer, int size); 31*24ffa71bSTiwei Bie void (*bar_set)(struct um_pci_device *dev, int bar, 32*24ffa71bSTiwei Bie unsigned int offset, u8 value, int size); 33*24ffa71bSTiwei Bie }; 34*24ffa71bSTiwei Bie 35*24ffa71bSTiwei Bie int um_pci_device_register(struct um_pci_device *dev); 36*24ffa71bSTiwei Bie void um_pci_device_unregister(struct um_pci_device *dev); 37*24ffa71bSTiwei Bie 38*24ffa71bSTiwei Bie int um_pci_platform_device_register(struct um_pci_device *dev); 39*24ffa71bSTiwei Bie void um_pci_platform_device_unregister(struct um_pci_device *dev); 40*24ffa71bSTiwei Bie 41*24ffa71bSTiwei Bie #endif /* __UM_VIRT_PCI_H */ 42