Commit d8ddab63 authored by Bjorn Helgaas's avatar Bjorn Helgaas
Browse files

Merge branch 'remotes/lorenzo/pci/vmd'

  - Add VMD bus 224-255 restriction decode (Jon Derrick)

  - Add VMD 8086:9A0B device ID (Jon Derrick)

  - Remove Keith from VMD maintainer list (Keith Busch)

* remotes/lorenzo/pci/vmd:
  MAINTAINERS: Remove Keith from VMD maintainer
  PCI: vmd: Add device id for VMD device 8086:9A0B
  PCI: vmd: Add bus 224-255 restriction decode
parents 77471510 e3d023b8
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -12447,7 +12447,6 @@ F: Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.txt
F:	drivers/pci/controller/dwc/*imx6*
PCI DRIVER FOR INTEL VOLUME MANAGEMENT DEVICE (VMD)
M:	Keith Busch <keith.busch@intel.com>
M:	Jonathan Derrick <jonathan.derrick@intel.com>
L:	linux-pci@vger.kernel.org
S:	Supported
+24 −8
Original line number Diff line number Diff line
@@ -602,16 +602,30 @@ static int vmd_enable_domain(struct vmd_dev *vmd, unsigned long features)

	/*
	 * Certain VMD devices may have a root port configuration option which
	 * limits the bus range to between 0-127 or 128-255
	 * limits the bus range to between 0-127, 128-255, or 224-255
	 */
	if (features & VMD_FEAT_HAS_BUS_RESTRICTIONS) {
		u32 vmcap, vmconfig;
		u16 reg16;

		pci_read_config_dword(vmd->dev, PCI_REG_VMCAP, &vmcap);
		pci_read_config_dword(vmd->dev, PCI_REG_VMCONFIG, &vmconfig);
		if (BUS_RESTRICT_CAP(vmcap) &&
		    (BUS_RESTRICT_CFG(vmconfig) == 0x1))
		pci_read_config_word(vmd->dev, PCI_REG_VMCAP, &reg16);
		if (BUS_RESTRICT_CAP(reg16)) {
			pci_read_config_word(vmd->dev, PCI_REG_VMCONFIG,
					     &reg16);

			switch (BUS_RESTRICT_CFG(reg16)) {
			case 1:
				vmd->busn_start = 128;
				break;
			case 2:
				vmd->busn_start = 224;
				break;
			case 3:
				pci_err(vmd->dev, "Unknown Bus Offset Setting\n");
				return -ENODEV;
			default:
				break;
			}
		}
	}

	res = &vmd->dev->resource[VMD_CFGBAR];
@@ -854,6 +868,8 @@ static const struct pci_device_id vmd_ids[] = {
	{PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_VMD_28C0),
		.driver_data = VMD_FEAT_HAS_MEMBAR_SHADOW |
				VMD_FEAT_HAS_BUS_RESTRICTIONS,},
	{PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_VMD_9A0B),
		.driver_data = VMD_FEAT_HAS_BUS_RESTRICTIONS,},
	{0,}
};
MODULE_DEVICE_TABLE(pci, vmd_ids);
+1 −0
Original line number Diff line number Diff line
@@ -3006,6 +3006,7 @@
#define PCI_DEVICE_ID_INTEL_84460GX	0x84ea
#define PCI_DEVICE_ID_INTEL_IXP4XX	0x8500
#define PCI_DEVICE_ID_INTEL_IXP2800	0x9004
#define PCI_DEVICE_ID_INTEL_VMD_9A0B	0x9a0b
#define PCI_DEVICE_ID_INTEL_S21152BB	0xb152

#define PCI_VENDOR_ID_SCALEMP		0x8686