PCI: mobiveil: Use pci_is_root_bus() to check if bus is root bus
authorRob Herring <robh@kernel.org>
Wed, 22 Jul 2020 02:25:01 +0000 (20:25 -0600)
committerLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Thu, 23 Jul 2020 10:20:50 +0000 (11:20 +0100)
Use pci_is_root_bus() rather than tracking the root bus number to
determine if the bus is the root bus or not. This removes storing
duplicated data as well as the need for the host bridge driver to have
to care about the bus numbers in most cases.

Link: https://lore.kernel.org/r/20200722022514.1283916-7-robh@kernel.org
Signed-off-by: Rob Herring <robh@kernel.org>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
Cc: Karthikeyan Mitran <m.karthikeyan@mobiveil.co.in>
Cc: Hou Zhiqiang <Zhiqiang.Hou@nxp.com>
Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Cc: Bjorn Helgaas <bhelgaas@google.com>
drivers/pci/controller/mobiveil/pcie-mobiveil-host.c
drivers/pci/controller/mobiveil/pcie-mobiveil.h

index 705542b4bd210d5c44b3be9616398195828bec8a..7250b84a7efee058a85efe58b26b575df2f6e959 100644 (file)
 
 static bool mobiveil_pcie_valid_device(struct pci_bus *bus, unsigned int devfn)
 {
-       struct mobiveil_pcie *pcie = bus->sysdata;
-       struct mobiveil_root_port *rp = &pcie->rp;
-
        /* Only one device down on each root port */
-       if ((bus->number == rp->root_bus_nr) && (devfn > 0))
+       if (pci_is_root_bus(bus) && (devfn > 0))
                return false;
 
        /*
         * Do not read more than one device on the bus directly
         * attached to RC
         */
-       if ((bus->primary == rp->root_bus_nr) && (PCI_SLOT(devfn) > 0))
+       if ((bus->primary == to_pci_host_bridge(bus->bridge)->busnr) && (PCI_SLOT(devfn) > 0))
                return false;
 
        return true;
@@ -61,7 +58,7 @@ static void __iomem *mobiveil_pcie_map_bus(struct pci_bus *bus,
                return NULL;
 
        /* RC config access */
-       if (bus->number == rp->root_bus_nr)
+       if (pci_is_root_bus(bus))
                return pcie->csr_axi_slave_base + where;
 
        /*
@@ -606,7 +603,6 @@ int mobiveil_pcie_host_probe(struct mobiveil_pcie *pcie)
 
        /* Initialize bridge */
        bridge->sysdata = pcie;
-       bridge->busnr = rp->root_bus_nr;
        bridge->ops = &mobiveil_pcie_ops;
        bridge->map_irq = of_irq_parse_and_map_pci;
        bridge->swizzle_irq = pci_common_swizzle;
index 767e36a8522da1ea753be3a6fcb92f146b7e6e34..6082b8afbc31ee22c17cbbf9e02541fa37a0e12d 100644 (file)
@@ -149,7 +149,6 @@ struct mobiveil_rp_ops {
 };
 
 struct mobiveil_root_port {
-       char root_bus_nr;
        void __iomem *config_axi_slave_base;    /* endpoint config base */
        struct resource *ob_io_res;
        struct mobiveil_rp_ops *ops;