PICe hotplug problems

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I got an PCIe device that is woken up by user space, clocks needs to configured in various ways before the
device enables its PCIe interface.

The device is connected to a built in root bridge on a P2010(mpc85xx) CPU.
To enable HP in Linux we need to apply some minor hacks.

First, The contoller has MSI but there is no pci_find_capability(dev, PCI_CAP_ID_MSI) so
portdrv_core.c:init_service_irqs() fails this test(dev->pin is false too):
 	if (!pci_enable_msi(dev) || dev->pin)

Is the code correct? Should our root bridge have PCI_CAP_ID_MSI?

Second problem, the root bride does not have PCI_EXP_FLAGS_SLOT so
portdrv_core.c:get_port_device_capability() fails this test:
  if ((cap_mask & PCIE_PORT_SERVICE_HP) && (reg16 & PCI_EXP_FLAGS_SLOT)) {
		pci_read_config_dword(dev, pos + PCI_EXP_SLTCAP, &reg32);
		if (reg32 & PCI_EXP_SLTCAP_HPC) {
			services |= PCIE_PORT_SERVICE_HP;

which cause PCIE_PORT_SERVICE_HP to be unset in services.

Is PCI_EXP_FLAGS_SLOT really required for hot plug?

Perhaps there another way?

 Jocke

--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux