[PATCH] powerpc: fsl_pci: Fix PCI/PCI-X regression
Scott Wood
scottwood at freescale.com
Fri Aug 22 07:19:56 EST 2014
On Wed, 2014-08-20 at 18:51 -0500, Aaron Sierra wrote:
> @@ -520,9 +520,22 @@ int fsl_add_bridge(struct platform_device *pdev, int is_primary)
> goto no_bridge;
>
> } else {
> - /* For PCI read PROG to identify controller mode */
> - early_read_config_byte(hose, 0, 0, PCI_CLASS_PROG, &progif);
> - if ((progif & 1) == 1)
> + u16 master;
> +
> + /*
> + * If the controller is PCI-X, then Host mode refers to a
> + * bridge that drives the PCI-X initialization pattern to
> + * indicate bus operating mode/frequency to devices on the bus.
> + * Some hardware (specifically PrPMC modules) are Agents, since
> + * the mezzanine carrier is responsible for driving the
> + * pattern, but they still may perform bus enumeration.
> + *
> + * Allow the bridge to be used for enumeration, if hardware
> + * strapping (Host mode) or firmware (Agent mode) has enabled
> + * bus mastering.
> + */
> + early_read_config_word(hose, 0, 0, PCI_COMMAND, &master);
> + if (!(master & PCI_COMMAND_MASTER))
> goto no_bridge;
> }
Why wouldn't a normal PCI agent be able to bus master?
-Scott
More information about the Linuxppc-dev
mailing list