Re: [PATCHv2] PCI: iproc: platform: use device functions instead of OF.

Rosen Penev <[email protected]>
Newsgroups org.kernel.vger.linux-pci,org.infradead.lists.linux-arm-kernel,org.kernel.vger.linux-kernel
Message-ID <CAKxU2N9Q0tWCtVk2jn8bWu4H5YGGiKnxJksxZ-MjuKtoupzVmA@mail.gmail.com>
On Wed, Jul 29, 2026 at 5:32 PM Rob Herring <[email protected]> wrote:
>
> On Mon, Jul 27, 2026 at 6:44 PM Rosen Penev <[email protected]> wrote:
> >
> > Since this is supposed to be the higher layer file, use higher layer
> > than OF to handle this. Remove OF headers as a result.
> >
> > Signed-off-by: Rosen Penev <[email protected]>
> > ---
> >  v2: fix platform_get_resource() parameters.
> >  drivers/pci/controller/pcie-iproc-platform.c | 31 ++++++++------------
> >  1 file changed, 12 insertions(+), 19 deletions(-)
> >
> > diff --git a/drivers/pci/controller/pcie-iproc-platform.c b/drivers/pci/controller/pcie-iproc-platform.c
> > index 4c9a0c4bb923..488ff737ec52 100644
> > --- a/drivers/pci/controller/pcie-iproc-platform.c
> > +++ b/drivers/pci/controller/pcie-iproc-platform.c
> > @@ -10,12 +10,8 @@
> >  #include <linux/slab.h>
> >  #include <linux/interrupt.h>
> >  #include <linux/platform_device.h>
> > -#include <linux/of_address.h>
> > -#include <linux/of_pci.h>
> > -#include <linux/of_platform.h>
> >  #include <linux/phy/phy.h>
> >
> > -#include "../pci.h"
> >  #include "pcie-iproc.h"
> >
> >  static const struct of_device_id iproc_pcie_of_match_table[] = {
> > @@ -40,11 +36,14 @@ static int iproc_pltfm_pcie_probe(struct platform_device *pdev)
> >  {
> >         struct device *dev = &pdev->dev;
> >         struct iproc_pcie *pcie;
> > -       struct device_node *np = dev->of_node;
> > -       struct resource reg;
> > +       struct resource *reg;
> >         struct pci_host_bridge *bridge;
> >         int ret;
> >
> > +       reg = platform_get_resource(pdev, IORESOURCE_MEM, 0);
> > +       if (!reg)
> > +               return -ENODEV;
> > +
> >         bridge = devm_pci_alloc_host_bridge(dev, sizeof(*pcie));
> >         if (!bridge)
> >                 return -ENOMEM;
> > @@ -52,26 +51,20 @@ static int iproc_pltfm_pcie_probe(struct platform_device *pdev)
> >         pcie = pci_host_bridge_priv(bridge);
> >
> >         pcie->dev = dev;
> > -       pcie->type = (uintptr_t)of_device_get_match_data(dev);
> > -
> > -       ret = of_address_to_resource(np, 0, &reg);
> > -       if (ret < 0) {
> > -               dev_err(dev, "unable to obtain controller resources\n");
> > -               return ret;
> > -       }
> > +       pcie->type = (uintptr_t)device_get_match_data(dev);
> >
> > -       pcie->base = devm_pci_remap_cfgspace(dev, reg.start,
> > -                                            resource_size(&reg));
> > +       pcie->base = devm_pci_remap_cfgspace(dev, reg->start,
> > +                                            resource_size(reg));
> >         if (!pcie->base) {
> >                 dev_err(dev, "unable to map controller registers\n");
> >                 return -ENOMEM;
> >         }
> > -       pcie->base_addr = reg.start;
> > +       pcie->base_addr = reg->start;
> >
> > -       if (of_property_read_bool(np, "brcm,pcie-ob")) {
> > +       if (device_property_present(dev, "brcm,pcie-ob")) {
>
> If the property is boolean, it should use read_bool and vice-versa.
I don't see it as a boolean in dtsi.
>
> >                 u32 val;
> >
> > -               ret = of_property_read_u32(np, "brcm,pcie-ob-axi-offset",
> > +               ret = device_property_read_u32(dev, "brcm,pcie-ob-axi-offset",
> >                                            &val);
> >                 if (ret) {
> >                         dev_err(dev,
> > @@ -87,7 +80,7 @@ static int iproc_pltfm_pcie_probe(struct platform_device *pdev)
> >          * core driver. For platforms that require explicit inbound mapping
> >          * configuration, "dma-ranges" would have been present in DT
> >          */
> > -       pcie->need_ib_cfg = of_property_read_bool(np, "dma-ranges");
> > +       pcie->need_ib_cfg = device_property_present(dev, "dma-ranges");
>
> This is correct as dma-ranges may not be bool.
>
> Rob
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.