| From 7719ec7e0ca111c8af43e71e64ee98c33b6daac5 Mon Sep 17 00:00:00 2001 |
| From: Bjorn Helgaas <bhelgaas@google.com> |
| Date: Tue, 31 Jan 2017 16:35:42 -0600 |
| Subject: [PATCH 103/255] PCI: rcar: Use of_device_get_match_data() to simplify |
| probe |
| |
| This is a DT-only driver, so the only way to call rcar_pcie_probe() is to |
| match an entry in rcar_pcie_of_match[], so of_id cannot be NULL. |
| |
| Furthermore, of_id->data can only be NULL if an rcar_pcie_of_match[] entry |
| has a NULL .data member. That's a driver defect, and we don't want to |
| return -EINVAL, which is easy to ignore. We'd rather take the NULL pointer |
| dereference so we notice the problem and fix it. |
| |
| Use of_device_get_match_data() to retrieve the hw_init_fn pointer. No |
| functional change intended. |
| |
| Suggested-by: Geert Uytterhoeven <geert+renesas@glider.be> |
| Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> |
| Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be> |
| Acked-by: Simon Horman <horms+renesas@verge.net.au> |
| (cherry picked from commit ff1677e231651205e7e19770a677057dea05cb70) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| --- |
| drivers/pci/host/pcie-rcar.c | 7 +------ |
| 1 file changed, 1 insertion(+), 6 deletions(-) |
| |
| --- a/drivers/pci/host/pcie-rcar.c |
| +++ b/drivers/pci/host/pcie-rcar.c |
| @@ -1125,7 +1125,6 @@ static int rcar_pcie_probe(struct platfo |
| struct device *dev = &pdev->dev; |
| struct rcar_pcie *pcie; |
| unsigned int data; |
| - const struct of_device_id *of_id; |
| int err; |
| int (*hw_init_fn)(struct rcar_pcie *); |
| |
| @@ -1149,11 +1148,6 @@ static int rcar_pcie_probe(struct platfo |
| if (err) |
| return err; |
| |
| - of_id = of_match_device(rcar_pcie_of_match, dev); |
| - if (!of_id || !of_id->data) |
| - return -EINVAL; |
| - hw_init_fn = of_id->data; |
| - |
| pm_runtime_enable(dev); |
| err = pm_runtime_get_sync(dev); |
| if (err < 0) { |
| @@ -1162,6 +1156,7 @@ static int rcar_pcie_probe(struct platfo |
| } |
| |
| /* Failure to get a link might just be that no cards are inserted */ |
| + hw_init_fn = of_device_get_match_data(dev); |
| err = hw_init_fn(pcie); |
| if (err) { |
| dev_info(dev, "PCIe link down\n"); |