[PATCH 1/2] PCI: host-generic: Simplify return value handling in pci_host_common_parse_port(s)
Sherry Sun
sherry.sun at nxp.com
Thu May 21 23:20:13 PDT 2026
> > Subject: [PATCH 1/2] PCI: host-generic: Simplify return value handling
> > in
> > pci_host_common_parse_port(s)
> >
> > From: Sherry Sun <sherry.sun at nxp.com>
> >
> > The pci_host_common_parse_port() shouldn't check the RC-level binding.
> > That's a policy decision that belongs to the caller, not this common helper.
> >
> > Simplify pci_host_common_parse_port() to only parses properties from
> > the Root
> "to only parses"/s/"to only parse"
>
> > Port(and its children) without checking the RC node. Also change
> Missing space after "Port".
>
> > pci_host_common_parse_ports() to return 0 when no ports are found,
> > since it is not an error.
> >
> > So now both functions won't return failure for "property not found" or
> > "port not found", they purely returns 0 on success and a negative
> > error code on real
> returns/s/return
Thanks, will fix these issues.
Best Regards
Sherry Sun
>
> Best Regards
> Richard Zhu
>
> > failures.
> >
> > Signed-off-by: Sherry Sun <sherry.sun at nxp.com>
> > ---
> > drivers/pci/controller/pci-host-common.c | 29
> > ++++--------------------
> > 1 file changed, 5 insertions(+), 24 deletions(-)
> >
> > diff --git a/drivers/pci/controller/pci-host-common.c
> > b/drivers/pci/controller/pci- host-common.c index
> > 67455caaf9e6..7ce5a939e3d9 100644
> > --- a/drivers/pci/controller/pci-host-common.c
> > +++ b/drivers/pci/controller/pci-host-common.c
> > @@ -108,8 +108,7 @@ static int pci_host_common_parse_perst(struct
> > device *dev,
> > * dependencies and the driver may fail to operate if required resources
> > * are missing.
> > *
> > - * Return: 0 on success, -ENODEV if PERST# found in RC node (legacy
> > binding
> > - * should be used), Other negative error codes on failure.
> > + * Return: 0 on success, negative error codes on failure.
> > */
> > static int pci_host_common_parse_port(struct device *dev,
> > struct pci_host_bridge *bridge, @@ -
> 128,22
> > +127,6 @@ static int pci_host_common_parse_port(struct device *dev,
> > if (ret)
> > return ret;
> >
> > - /*
> > - * 1. PERST# found in RP or its child nodes - list is not empty,
> > - * continue
> > - *
> > - * 2. PERST# not found in RP/children, but found in RC node -
> > - * return -ENODEV to fallback legacy binding
> > - *
> > - * 3. PERST# not found anywhere - list is empty, continue (optional
> > - * PERST#)
> > - */
> > - if (list_empty(&port->perst)) {
> > - if (of_property_present(dev->of_node, "reset-gpios") ||
> > - of_property_present(dev->of_node, "reset-gpio"))
> > - return -ENODEV;
> > - }
> > -
> > INIT_LIST_HEAD(&port->list);
> > list_add_tail(&port->list, &bridge->ports);
> >
> > @@ -158,13 +141,11 @@ static int pci_host_common_parse_port(struct
> > device *dev,
> > * Iterate through child nodes of the host bridge and parse Root Port
> > * properties (currently only reset GPIOs).
> > *
> > - * Return: 0 on success, -ENODEV if no ports found or PERST# found in
> > RC
> > - * node (legacy binding should be used), Other negative error codes
> > on
> > - * failure.
> > + * Return: 0 on success, negative error codes on failure.
> > */
> > int pci_host_common_parse_ports(struct device *dev, struct
> > pci_host_bridge
> > *bridge) {
> > - int ret = -ENODEV;
> > + int ret = 0;
> >
> > for_each_available_child_of_node_scoped(dev->of_node, of_port) {
> > if (!of_node_is_type(of_port, "pci")) @@ -174,8 +155,8 @@
> int
> > pci_host_common_parse_ports(struct device *dev, struct pci_host_bridge
> *brid
> > goto err_cleanup;
> > }
> >
> > - if (ret)
> > - return ret;
> > + if (list_empty(&bridge->ports))
> > + return 0;
> >
> > return devm_add_action_or_reset(dev,
> pci_host_common_delete_ports,
> > &bridge->ports);
> > --
> > 2.37.1
More information about the linux-arm-kernel
mailing list