Lines Matching +full:msi +full:- +full:offset

1 // SPDX-License-Identifier: GPL-2.0
3 * PCI Backend - Handles the virtual fields found on the capability lists
26 .offset = PCI_CAP_LIST_ID,
36 list_add_tail(&cap->cap_list, &capabilities); in register_capability()
46 cap_offset = pci_find_capability(dev, cap->capability); in xen_pcibk_config_capability_add_fields()
48 dev_dbg(&dev->dev, "Found capability 0x%x at 0x%x\n", in xen_pcibk_config_capability_add_fields()
49 cap->capability, cap_offset); in xen_pcibk_config_capability_add_fields()
57 cap->fields, in xen_pcibk_config_capability_add_fields()
68 static int vpd_address_write(struct pci_dev *dev, int offset, u16 value, in vpd_address_write() argument
75 return pci_write_config_word(dev, offset, value); in vpd_address_write()
80 .offset = PCI_VPD_ADDR,
86 .offset = PCI_VPD_DATA,
94 static int pm_caps_read(struct pci_dev *dev, int offset, u16 *value, in pm_caps_read() argument
100 err = pci_read_config_word(dev, offset, &real_value); in pm_caps_read()
111 * Can't allow driver domain to enable PMEs - they're shared */
114 static int pm_ctrl_write(struct pci_dev *dev, int offset, u16 new_value, in pm_ctrl_write() argument
121 err = pci_read_config_word(dev, offset, &old_value); in pm_ctrl_write()
130 err = pci_write_config_word(dev, offset, new_value); in pm_ctrl_write()
136 dev_dbg(&dev->dev, "set power state to %x\n", new_state); in pm_ctrl_write()
148 static void *pm_ctrl_init(struct pci_dev *dev, int offset) in pm_ctrl_init() argument
153 err = pci_read_config_word(dev, offset, &value); in pm_ctrl_init()
159 err = pci_write_config_word(dev, offset, value); in pm_ctrl_init()
168 .offset = PCI_PM_PMC,
173 .offset = PCI_PM_CTRL,
180 .offset = PCI_PM_PPB_EXTENSIONS,
185 .offset = PCI_PM_DATA_REGISTER,
193 u16 enable_bit; /* bit for enabling MSI/MSI-X */
206 static void *msi_field_init(struct pci_dev *dev, int offset) in msi_field_init() argument
211 static void *msix_field_init(struct pci_dev *dev, int offset) in msix_field_init() argument
216 static int msi_msix_flags_write(struct pci_dev *dev, int offset, u16 new_value, in msi_msix_flags_write() argument
224 if (xen_pcibk_permissive || dev_data->permissive) in msi_msix_flags_write()
227 err = pci_read_config_word(dev, offset, &old_value); in msi_msix_flags_write()
234 if (!dev_data->allow_interrupt_control || in msi_msix_flags_write()
235 (new_value ^ old_value) & ~field_config->allowed_bits) in msi_msix_flags_write()
238 if (new_value & field_config->enable_bit) { in msi_msix_flags_write()
241 * allow enabling MSI(-X) while INTx is still active to please Linuxes in msi_msix_flags_write()
242 * MSI(-X) startup sequence. It is safe to do, as according to PCI in msi_msix_flags_write()
243 * spec, device with enabled MSI(-X) shouldn't use INTx. in msi_msix_flags_write()
249 int_type == field_config->int_type) in msi_msix_flags_write()
255 return pci_write_config_word(dev, offset, new_value); in msi_msix_flags_write()
260 .offset = PCI_MSIX_FLAGS,
271 .offset = PCI_MSI_FLAGS,