On Wed, May 3, 2017 at 12:31 PM, Lorenzo Pieralisi <lorenzo.pieralisi@xxxxxxx> wrote: > On Fri, Apr 28, 2017 at 02:38:48PM +0200, Arnd Bergmann wrote: >> On Wed, Apr 26, 2017 at 1:17 PM, Lorenzo Pieralisi >> <lorenzo.pieralisi@xxxxxxx> wrote: >> > The introduction of pci_scan_root_bus_bridge() provides a PCI core >> > API to scan a PCI root bus backed by an already initialized >> > struct pci_host_bridge object, which simplifies the bus scan >> > interface and makes the PCI scan root bus interface easier to >> > generalize as members are added to the struct pci_host_bridge(). >> > >> > Convert ARM dove platform code to pci_scan_root_bus_bridge() to improve >> > the PCI root bus scanning interface. >> > >> > Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@xxxxxxx> >> >> Is this patch required for one of the later steps in the series? >> >> As non-DT dove uses the traditional pci_common_init() helper rather >> than registering its own driver, I wonder if there is anything to gain here. > > Well, the point is, the non-DT platforms I patched implement a custom > .scan method in struct hw_pci. If we move the bridge allocation to > pcibios_init_hw() we would end up initializing some struct > pci_host_bridge fields in pcibios_init_hw() and some in the custom .scan > method (ie custom pci_ops) which I found not very elegant but it could be > done I reckon, I need to give it a go to see how the code looks like. I don't see anything wrong with initializing the members in different places. The first set would give you a default that works for basic drivers, and the second set is a way to override the defaults for drivers that do something special. Conceptually we do this all the time in other places. Arnd