Message ID | 20200311124506.208376-4-jean-philippe@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | PCI/ATS: Device-tree support and other improvements | expand |
On Wed, Mar 11, 2020 at 01:44:58PM +0100, Jean-Philippe Brucker wrote: > When setting up a generic host on a device-tree based system, copy the > ats-supported flag into the pci_host_bridge structure. > > Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org> > --- > v1->v2: keep the helper in pci-host-common.c > --- > drivers/pci/controller/pci-host-common.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/drivers/pci/controller/pci-host-common.c b/drivers/pci/controller/pci-host-common.c > index 250a3fc80ec6..2e800bc6ae7a 100644 > --- a/drivers/pci/controller/pci-host-common.c > +++ b/drivers/pci/controller/pci-host-common.c > @@ -54,6 +54,16 @@ static struct pci_config_window *gen_pci_init(struct device *dev, > return ERR_PTR(err); > } > > +static void of_pci_host_check_ats(struct pci_host_bridge *bridge) > +{ > + struct device_node *np = bridge->bus->dev.of_node; > + > + if (!np) > + return; > + > + bridge->ats_supported = of_property_read_bool(np, "ats-supported"); > +} > + > int pci_host_common_probe(struct platform_device *pdev, > struct pci_ecam_ops *ops) > { > @@ -92,6 +102,7 @@ int pci_host_common_probe(struct platform_device *pdev, > return ret; > } > > + of_pci_host_check_ats(bridge); I would prefer to write this as a predicate instead of having the assignment be a side-effect, e.g., bridge->ats_supported = of_pci_host_ats_supported(bridge); If that works for you, Acked-by: Bjorn Helgaas <bhelgaas@google.com> > platform_set_drvdata(pdev, bridge->bus); > return 0; > } > -- > 2.25.1 >
diff --git a/drivers/pci/controller/pci-host-common.c b/drivers/pci/controller/pci-host-common.c index 250a3fc80ec6..2e800bc6ae7a 100644 --- a/drivers/pci/controller/pci-host-common.c +++ b/drivers/pci/controller/pci-host-common.c @@ -54,6 +54,16 @@ static struct pci_config_window *gen_pci_init(struct device *dev, return ERR_PTR(err); } +static void of_pci_host_check_ats(struct pci_host_bridge *bridge) +{ + struct device_node *np = bridge->bus->dev.of_node; + + if (!np) + return; + + bridge->ats_supported = of_property_read_bool(np, "ats-supported"); +} + int pci_host_common_probe(struct platform_device *pdev, struct pci_ecam_ops *ops) { @@ -92,6 +102,7 @@ int pci_host_common_probe(struct platform_device *pdev, return ret; } + of_pci_host_check_ats(bridge); platform_set_drvdata(pdev, bridge->bus); return 0; }
When setting up a generic host on a device-tree based system, copy the ats-supported flag into the pci_host_bridge structure. Signed-off-by: Jean-Philippe Brucker <jean-philippe@linaro.org> --- v1->v2: keep the helper in pci-host-common.c --- drivers/pci/controller/pci-host-common.c | 11 +++++++++++ 1 file changed, 11 insertions(+)