On Tuesday 18 November 2014 20:17:57 Yijing Wang wrote: > > >> > >> I hope platforms with ACPI or DT could both use pci_create_host_bridge(). > >> Why we need to use two different ways to process it ? > > > > These are completely different use cases: > > > > a) For DT, we want loadable device drivers that start by probing a host > > bridge device which was added through the DT platform code. The > > driver is self-contained, and eventually we want to be able to unload > > it. We have lots of different per-soc drivers that require different > > quirks > > > > b) For ACPI, the interface is defined in the ACPI spec across architectures > > and SoCs, we don't have host bridge drivers and the code that initializes > > the PCI is required early during boot and called from architecture > > code. There is no parent device, as ACPI sees PCI as a fundamental building > > block by itself, and there are no drivers because the firmware does > > the initial hardware setup, so we only have to access the config space. > > Hmmm, I'm a little confused, so why you think ACPI host driver should not use > pci_create_host_bridge(), because ACPI PCI driver has no parent device ? It's one of the difference. Having a parent device can certainly make your life simpler, since you have devm_kzalloc(), dev_info(), etc. Coming from the other end, I think ACPI needs PCI to be available during early boot, at a time where we might not want pci_create_host_bridge() to do the right thing. Arnd -- 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