| From 14e2abb732e485ee57d9d5b2cb8884652238e5c1 Mon Sep 17 00:00:00 2001 |
| From: Kleber Sacilotto de Souza <klebers@linux.vnet.ibm.com> |
| Date: Mon, 3 Feb 2014 13:31:03 -0200 |
| Subject: of: fix PCI bus match for PCIe slots |
| |
| From: Kleber Sacilotto de Souza <klebers@linux.vnet.ibm.com> |
| |
| commit 14e2abb732e485ee57d9d5b2cb8884652238e5c1 upstream. |
| |
| On IBM pseries systems the device_type device-tree property of a PCIe |
| bridge contains the string "pciex". The of_bus_pci_match() function was |
| looking only for "pci" on this property, so in such cases the bus |
| matching code was falling back to the default bus, causing problems on |
| functions that should be using "assigned-addresses" for region address |
| translation. This patch fixes the problem by also looking for "pciex" on |
| the PCI bus match function. |
| |
| v2: added comment |
| |
| Signed-off-by: Kleber Sacilotto de Souza <klebers@linux.vnet.ibm.com> |
| Acked-by: Grant Likely <grant.likely@linaro.org> |
| Signed-off-by: Rob Herring <robh@kernel.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/of/address.c | 5 +++-- |
| 1 file changed, 3 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/of/address.c |
| +++ b/drivers/of/address.c |
| @@ -99,11 +99,12 @@ static unsigned int of_bus_default_get_f |
| static int of_bus_pci_match(struct device_node *np) |
| { |
| /* |
| + * "pciex" is PCI Express |
| * "vci" is for the /chaos bridge on 1st-gen PCI powermacs |
| * "ht" is hypertransport |
| */ |
| - return !strcmp(np->type, "pci") || !strcmp(np->type, "vci") || |
| - !strcmp(np->type, "ht"); |
| + return !strcmp(np->type, "pci") || !strcmp(np->type, "pciex") || |
| + !strcmp(np->type, "vci") || !strcmp(np->type, "ht"); |
| } |
| |
| static void of_bus_pci_count_cells(struct device_node *np, |