[PATCH V8] powerpc/fsl-pci: Unify pci/pcie initialization code
Jia Hongtao-B38951
B38951 at freescale.com
Wed Aug 22 17:41:29 EST 2012
> -----Original Message-----
> From: Wood Scott-B07421
> Sent: Tuesday, August 21, 2012 6:04 AM
> To: Jia Hongtao-B38951
> Cc: linuxppc-dev at lists.ozlabs.org; galak at kernel.crashing.org; Li Yang-
> R58472; Bradley Hughes
> Subject: Re: [PATCH V8] powerpc/fsl-pci: Unify pci/pcie initialization
> code
>
> On 08/20/2012 05:06 AM, Jia Hongtao wrote:
> > We unified the Freescale pci/pcie initialization by changing the
> > fsl_pci to a platform driver. In previous PCI code architecture the
> > initialization routine is called at board_setup_arch stage. Now the
> > initialization is done in probe function which is architectural
> > better. Also It's convenient for adding PM support for PCI controller
> in later patch.
> >
> > Now we registered pci controllers as platform devices. So we combine
> > two initialization code as one platform driver.
> >
> > Signed-off-by: Jia Hongtao <B38951 at freescale.com>
> > Signed-off-by: Li Yang <leoli at freescale.com>
> > Signed-off-by: Chunhe Lan <Chunhe.Lan at freescale.com>
> > ---
> > Changes for V8:
> > * Use previous primary determination. Based on the point that there are
> > bugs on primary-less system.
> > * Add exceptional support on ge_imp3a in which the primary bus is not
> the
> > first pci bus detected.
>
> The exceptional thing about ge_imp3a is that it has no isa node, but
> we're not sure if it actually has isa or not. We should not be relying
> on probe order in any case. Device tree nodes are not ordered.
>
> Another interesting case is stxssa8555.dts, which has an i8259 node but
> no ISA node (are there any other instances of this?). However, I can't
> tell if stx_gp3.c is the platform file that goes with this device tree,
> or if the platform code for stxssa8555 is out-of-tree (or some other file
> that I'm not seeing).
>
Hi Scott and Kumar:
Obviously stx_gp3_8560.dts without isa or i8259 node goes with the file
stx_gp3.c. But I'm not sure the board has ISA bridge or not.
> > -void __devinit fsl_pci_init(void)
> > +void fsl_pci_assign_primary(void)
> > {
> > - int ret;
> > struct device_node *node;
> > - struct pci_controller *hose;
> > - dma_addr_t max = 0xffffffff;
> >
> > /* Callers can specify the primary bus using other means. */
> > if (!fsl_pci_primary) {
>
> Since the whole point of this function is now to find the primary, just
> return if it's already set, instead of indenting the rest of the function.
>
> > @@ -842,38 +839,60 @@ void __devinit fsl_pci_init(void)
> > node = fsl_pci_primary;
> >
> > if (of_match_node(pci_ids, node))
> > - break;
> > + return;
> > }
> > - }
> >
> > - node = NULL;
> > - for_each_node_by_type(node, "pci") {
> > - if (of_match_node(pci_ids, node)) {
> > + node = of_find_node_by_type(NULL, "pci");
> > + if (of_match_node(pci_ids, node))
> >
>
> What if the node returned doesn't match? If you're checking for this,
> handle the else-case (even if just with an error message).
>
> -Scott
More information about the Linuxppc-dev
mailing list