Skip to contentSkip to conversation

PCI: remove unnecessary check of device_type == pci

PATCH Applied Rob Herring 6 participants 10 messages Aug 29, 2018 – Sep 25, 2018

Subsystems (4)
lore
Share & tools
lore

Rob Herring

author reviewer
#0 lore raw

PATCH 1/1 PCI: remove unnecessary check of device_type == pci

PCI host drivers have already matched on compatible strings, so checking device_type is redundant. Also, device_type is considered deprecated for FDT though we've still been requiring it for PCI hosts as it is useful for finding PCI buses.

Cc Will Deacon <[email protected]>
Cc Lorenzo Pieralisi <[email protected]>
Cc Bjorn Helgaas <[email protected]>
Cc Alan Douglas <[email protected]>
Cc Subrahmanya Lingappa <[email protected]>
Cc Michal Simek <[email protected]>
Cc linux-pci at vger.kernel.org
Cc linux-arm-kernel at lists.infradead.org
---
 drivers/pci/controller/pci-host-common.c   | 8 --------
 drivers/pci/controller/pcie-cadence-host.c | 7 -------
 drivers/pci/controller/pcie-mobiveil.c     | 7 -------
 drivers/pci/controller/pcie-xilinx-nwl.c   | 9 ---------
 drivers/pci/controller/pcie-xilinx.c       | 7 -------
 5 files changed, 38 deletions(-)
drivers/pci/controller/pci-host-common.c +0 -8
index d8f10451f273..c742881b5061 100644
@@ -58,9 +58,7 @@ static struct pci_config_window *gen_pci_init(struct device *dev,
 int pci_host_common_probe(struct platform_device *pdev,
 			  struct pci_ecam_ops *ops)
 {
-	const char *type;
 	struct device *dev = &pdev->dev;
-	struct device_node *np = dev->of_node;
 	struct pci_host_bridge *bridge;
 	struct pci_config_window *cfg;
 	struct list_head resources;
@@ -70,12 +68,6 @@ int pci_host_common_probe(struct platform_device *pdev,
 	if (!bridge)
 		return -ENOMEM;
 
-	type = of_get_property(np, "device_type", NULL);
-	if (!type || strcmp(type, "pci")) {
-		dev_err(dev, "invalid \"device_type\" %s\n", type);
-		return -EINVAL;
-	}
-
 	of_pci_check_probe_only();
 
 	/* Parse and map our Configuration Space windows */
drivers/pci/controller/pcie-cadence-host.c +0 -7
index ec394f6a19c8..97e251090b4f 100644
@@ -235,7 +235,6 @@ static int cdns_pcie_host_init(struct device *dev,
 
 static int cdns_pcie_host_probe(struct platform_device *pdev)
 {
-	const char *type;
 	struct device *dev = &pdev->dev;
 	struct device_node *np = dev->of_node;
 	struct pci_host_bridge *bridge;
@@ -268,12 +267,6 @@ static int cdns_pcie_host_probe(struct platform_device *pdev)
 	rc->device_id = 0xffff;
 	of_property_read_u16(np, "device-id", &rc->device_id);
 
-	type = of_get_property(np, "device_type", NULL);
-	if (!type || strcmp(type, "pci")) {
-		dev_err(dev, "invalid \"device_type\" %s\n", type);
-		return -EINVAL;
-	}
-
 	res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "reg");
 	pcie->reg_base = devm_ioremap_resource(dev, res);
 	if (IS_ERR(pcie->reg_base)) {
drivers/pci/controller/pcie-mobiveil.c +0 -7
index a939e8d31735..77052a0712d0 100644
@@ -301,13 +301,6 @@ static int mobiveil_pcie_parse_dt(struct mobiveil_pcie *pcie)
 	struct platform_device *pdev = pcie->pdev;
 	struct device_node *node = dev->of_node;
 	struct resource *res;
-	const char *type;
-
-	type = of_get_property(node, "device_type", NULL);
-	if (!type || strcmp(type, "pci")) {
-		dev_err(dev, "invalid \"device_type\" %s\n", type);
-		return -EINVAL;
-	}
 
 	/* map config resource */
 	res = platform_get_resource_byname(pdev, IORESOURCE_MEM,
drivers/pci/controller/pcie-xilinx-nwl.c +0 -9
index fb32840ce8e6..81538d77f790 100644
@@ -777,16 +777,7 @@ static int nwl_pcie_parse_dt(struct nwl_pcie *pcie,
 			     struct platform_device *pdev)
 {
 	struct device *dev = pcie->dev;
-	struct device_node *node = dev->of_node;
 	struct resource *res;
-	const char *type;
-
-	/* Check for device type */
-	type = of_get_property(node, "device_type", NULL);
-	if (!type || strcmp(type, "pci")) {
-		dev_err(dev, "invalid \"device_type\" %s\n", type);
-		return -EINVAL;
-	}
 
 	res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "breg");
 	pcie->breg_base = devm_ioremap_resource(dev, res);
drivers/pci/controller/pcie-xilinx.c +0 -7
index 7b1389d8e2a5..9bd1a35cd5d8 100644
@@ -574,15 +574,8 @@ static int xilinx_pcie_parse_dt(struct xilinx_pcie_port *port)
 	struct device *dev = port->dev;
 	struct device_node *node = dev->of_node;
 	struct resource regs;
-	const char *type;
 	int err;
 
-	type = of_get_property(node, "device_type", NULL);
-	if (!type || strcmp(type, "pci")) {
-		dev_err(dev, "invalid \"device_type\" %s\n", type);
-		return -EINVAL;
-	}
-
 	err = of_address_to_resource(node, 0, &regs);
 	if (err) {
 		dev_err(dev, "missing \"reg\" property\n");
Signature · 1 line
2.17.1
Acked-by on v1 1/1
#1 lore raw

Hi,

Quoted 73 lines · Rob Herring

To: Lorenzo Pieralisi <[email protected]>
Cc: linux-kernel at vger.kernel.org; Will Deacon <[email protected]>; Bjorn Helgaas <[email protected]>; Alan Douglas <[email protected]>; Subrahmanya Lingappa <[email protected]>; Michal Simek <[email protected]>; linux- pci at vger.kernel.org; linux-arm-kernel at lists.infradead.org
Subject: [PATCH] PCI: remove unnecessary check of device_type == pci

EXTERNAL MAIL

PCI host drivers have already matched on compatible strings, so checking device_type is redundant. Also, device_type is considered deprecated for FDT though we've still been requiring it for PCI hosts as it is useful for finding PCI buses.

Cc Will Deacon <[email protected]>
Cc Lorenzo Pieralisi <[email protected]>
Cc Bjorn Helgaas <[email protected]>
Cc Alan Douglas <[email protected]>
Cc Subrahmanya Lingappa <[email protected]>
Cc Michal Simek <[email protected]>
Cc linux-pci at vger.kernel.org
Cc linux-arm-kernel at lists.infradead.org
---
 drivers/pci/controller/pci-host-common.c   | 8 --------
 drivers/pci/controller/pcie-cadence-host.c | 7 -------
 drivers/pci/controller/pcie-mobiveil.c     | 7 -------
 drivers/pci/controller/pcie-xilinx-nwl.c   | 9 ---------
 drivers/pci/controller/pcie-xilinx.c       | 7 -------
 5 files changed, 38 deletions(-)
drivers/pci/controller/pci-host-common.c +0 -8
index d8f10451f273..c742881b5061 100644
@@ -58,9 +58,7 @@ static struct pci_config_window *gen_pci_init(struct device *dev,
 int pci_host_common_probe(struct platform_device *pdev,
 			  struct pci_ecam_ops *ops)
 {
-	const char *type;
 	struct device *dev = &pdev->dev;
-	struct device_node *np = dev->of_node;
 	struct pci_host_bridge *bridge;
 	struct pci_config_window *cfg;
 	struct list_head resources;
@@ -70,12 +68,6 @@ int pci_host_common_probe(struct platform_device *pdev,
 	if (!bridge)
 		return -ENOMEM;
 
-	type = of_get_property(np, "device_type", NULL);
-	if (!type || strcmp(type, "pci")) {
-		dev_err(dev, "invalid \"device_type\" %s\n", type);
-		return -EINVAL;
-	}
-
 	of_pci_check_probe_only();
 
 	/* Parse and map our Configuration Space windows */
drivers/pci/controller/pcie-cadence-host.c +0 -1
index ec394f6a19c8..97e251090b4f 100644
@@ -235,7 +235,6 @@ static int cdns_pcie_host_init(struct device *dev,
 
 static int cdns_pcie_host_probe(struct platform_device *pdev)
 {
-	const char *type;
 	struct device *dev = &pdev->dev;
 	struct device_node *np = dev->of_node;
 	struct pci_host_bridge *bridge;
@@ -268,12 +267,6 @@ static int cdns_pcie_host_probe(struct platform_device *pdev)
 	rc->device_id = 0xffff;
 	of_property_read_u16(np, "device-id", &rc->device_id);

drivers/pci/controller/pcie-cadence-host.c static int cdns_pcie_host_probe(struct platform_device *pdev) · line 272

Quoted 10 lines
drivers/pci/controller/pcie-cadence-host.c +0 -6
 
-	type = of_get_property(np, "device_type", NULL);
-	if (!type || strcmp(type, "pci")) {
-		dev_err(dev, "invalid \"device_type\" %s\n", type);
-		return -EINVAL;
-	}
-
 	res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "reg");
 	pcie->reg_base = devm_ioremap_resource(dev, res);
 	if (IS_ERR(pcie->reg_base)) {

With regards to drivers/pci/controller/pcie-cadence-host.c

Acked-by on v1 1/1
#2 lore raw
In reply to Rob Herring

Hi,

with regards to : drivers/pci/controller/pcie-mobiveil.c

Thanks.

Quoted 137 lines · Rob Herring

PCI host drivers have already matched on compatible strings, so checking device_type is redundant. Also, device_type is considered deprecated for FDT though we've still been requiring it for PCI hosts as it is useful for finding PCI buses.

Cc Will Deacon <[email protected]>
Cc Lorenzo Pieralisi <[email protected]>
Cc Bjorn Helgaas <[email protected]>
Cc Alan Douglas <[email protected]>
Cc Subrahmanya Lingappa <[email protected]>
Cc Michal Simek <[email protected]>
Cc linux-pci at vger.kernel.org
Cc linux-arm-kernel at lists.infradead.org
---
 drivers/pci/controller/pci-host-common.c   | 8 --------
 drivers/pci/controller/pcie-cadence-host.c | 7 -------
 drivers/pci/controller/pcie-mobiveil.c     | 7 -------
 drivers/pci/controller/pcie-xilinx-nwl.c   | 9 ---------
 drivers/pci/controller/pcie-xilinx.c       | 7 -------
 5 files changed, 38 deletions(-)
drivers/pci/controller/pci-host-common.c +0 -8
index d8f10451f273..c742881b5061 100644
@@ -58,9 +58,7 @@ static struct pci_config_window *gen_pci_init(struct device *dev,
 int pci_host_common_probe(struct platform_device *pdev,
                          struct pci_ecam_ops *ops)
 {
-       const char *type;
        struct device *dev = &pdev->dev;
-       struct device_node *np = dev->of_node;
        struct pci_host_bridge *bridge;
        struct pci_config_window *cfg;
        struct list_head resources;
@@ -70,12 +68,6 @@ int pci_host_common_probe(struct platform_device *pdev,
        if (!bridge)
                return -ENOMEM;
 
-       type = of_get_property(np, "device_type", NULL);
-       if (!type || strcmp(type, "pci")) {
-               dev_err(dev, "invalid \"device_type\" %s\n", type);
-               return -EINVAL;
-       }
-
        of_pci_check_probe_only();
 
        /* Parse and map our Configuration Space windows */
drivers/pci/controller/pcie-cadence-host.c +0 -7
index ec394f6a19c8..97e251090b4f 100644
@@ -235,7 +235,6 @@ static int cdns_pcie_host_init(struct device *dev,
 
 static int cdns_pcie_host_probe(struct platform_device *pdev)
 {
-       const char *type;
        struct device *dev = &pdev->dev;
        struct device_node *np = dev->of_node;
        struct pci_host_bridge *bridge;
@@ -268,12 +267,6 @@ static int cdns_pcie_host_probe(struct platform_device *pdev)
        rc->device_id = 0xffff;
        of_property_read_u16(np, "device-id", &rc->device_id);
 
-       type = of_get_property(np, "device_type", NULL);
-       if (!type || strcmp(type, "pci")) {
-               dev_err(dev, "invalid \"device_type\" %s\n", type);
-               return -EINVAL;
-       }
-
        res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "reg");
        pcie->reg_base = devm_ioremap_resource(dev, res);
        if (IS_ERR(pcie->reg_base)) {
drivers/pci/controller/pcie-mobiveil.c +0 -7
index a939e8d31735..77052a0712d0 100644
@@ -301,13 +301,6 @@ static int mobiveil_pcie_parse_dt(struct mobiveil_pcie *pcie)
        struct platform_device *pdev = pcie->pdev;
        struct device_node *node = dev->of_node;
        struct resource *res;
-       const char *type;
-
-       type = of_get_property(node, "device_type", NULL);
-       if (!type || strcmp(type, "pci")) {
-               dev_err(dev, "invalid \"device_type\" %s\n", type);
-               return -EINVAL;
-       }
 
        /* map config resource */
        res = platform_get_resource_byname(pdev, IORESOURCE_MEM,
drivers/pci/controller/pcie-xilinx-nwl.c +0 -9
index fb32840ce8e6..81538d77f790 100644
@@ -777,16 +777,7 @@ static int nwl_pcie_parse_dt(struct nwl_pcie *pcie,
                             struct platform_device *pdev)
 {
        struct device *dev = pcie->dev;
-       struct device_node *node = dev->of_node;
        struct resource *res;
-       const char *type;
-
-       /* Check for device type */
-       type = of_get_property(node, "device_type", NULL);
-       if (!type || strcmp(type, "pci")) {
-               dev_err(dev, "invalid \"device_type\" %s\n", type);
-               return -EINVAL;
-       }
 
        res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "breg");
        pcie->breg_base = devm_ioremap_resource(dev, res);
drivers/pci/controller/pcie-xilinx.c +0 -8
index 7b1389d8e2a5..9bd1a35cd5d8 100644
@@ -574,15 +574,8 @@ static int xilinx_pcie_parse_dt(struct xilinx_pcie_port *port)
        struct device *dev = port->dev;
        struct device_node *node = dev->of_node;
        struct resource regs;
-       const char *type;
        int err;
 
-       type = of_get_property(node, "device_type", NULL);
-       if (!type || strcmp(type, "pci")) {
-               dev_err(dev, "invalid \"device_type\" %s\n", type);
-               return -EINVAL;
-       }
-
        err = of_address_to_resource(node, 0, &regs);
        if (err) {
                dev_err(dev, "missing \"reg\" property\n");
--

2.17.1

#3 lore raw
In reply to Rob Herring
Quoted 4 lines · Rob Herring

PCI host drivers have already matched on compatible strings, so checking device_type is redundant. Also, device_type is considered deprecated for FDT though we've still been requiring it for PCI hosts as it is useful for finding PCI buses.

Hi Rob,

I have no problem with the patch per-se, I can't parse though the second paragraph, in particular what you mean by "useful for finding PCI buses".

What about the corresponding dts files ? I suspect we had better leave them alone lest we can trigger regressions with new dts and older kernels.

Thanks,
Lorenzo

Quoted 131 lines
Cc Will Deacon <[email protected]>
Cc Lorenzo Pieralisi <[email protected]>
Cc Bjorn Helgaas <[email protected]>
Cc Alan Douglas <[email protected]>
Cc Subrahmanya Lingappa <[email protected]>
Cc Michal Simek <[email protected]>
Cc linux-pci at vger.kernel.org
Cc linux-arm-kernel at lists.infradead.org
---
 drivers/pci/controller/pci-host-common.c   | 8 --------
 drivers/pci/controller/pcie-cadence-host.c | 7 -------
 drivers/pci/controller/pcie-mobiveil.c     | 7 -------
 drivers/pci/controller/pcie-xilinx-nwl.c   | 9 ---------
 drivers/pci/controller/pcie-xilinx.c       | 7 -------
 5 files changed, 38 deletions(-)
drivers/pci/controller/pci-host-common.c +0 -8
index d8f10451f273..c742881b5061 100644
@@ -58,9 +58,7 @@ static struct pci_config_window *gen_pci_init(struct device *dev,
 int pci_host_common_probe(struct platform_device *pdev,
 			  struct pci_ecam_ops *ops)
 {
-	const char *type;
 	struct device *dev = &pdev->dev;
-	struct device_node *np = dev->of_node;
 	struct pci_host_bridge *bridge;
 	struct pci_config_window *cfg;
 	struct list_head resources;
@@ -70,12 +68,6 @@ int pci_host_common_probe(struct platform_device *pdev,
 	if (!bridge)
 		return -ENOMEM;
 
-	type = of_get_property(np, "device_type", NULL);
-	if (!type || strcmp(type, "pci")) {
-		dev_err(dev, "invalid \"device_type\" %s\n", type);
-		return -EINVAL;
-	}
-
 	of_pci_check_probe_only();
 
 	/* Parse and map our Configuration Space windows */
drivers/pci/controller/pcie-cadence-host.c +0 -7
index ec394f6a19c8..97e251090b4f 100644
@@ -235,7 +235,6 @@ static int cdns_pcie_host_init(struct device *dev,
 
 static int cdns_pcie_host_probe(struct platform_device *pdev)
 {
-	const char *type;
 	struct device *dev = &pdev->dev;
 	struct device_node *np = dev->of_node;
 	struct pci_host_bridge *bridge;
@@ -268,12 +267,6 @@ static int cdns_pcie_host_probe(struct platform_device *pdev)
 	rc->device_id = 0xffff;
 	of_property_read_u16(np, "device-id", &rc->device_id);
 
-	type = of_get_property(np, "device_type", NULL);
-	if (!type || strcmp(type, "pci")) {
-		dev_err(dev, "invalid \"device_type\" %s\n", type);
-		return -EINVAL;
-	}
-
 	res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "reg");
 	pcie->reg_base = devm_ioremap_resource(dev, res);
 	if (IS_ERR(pcie->reg_base)) {
drivers/pci/controller/pcie-mobiveil.c +0 -7
index a939e8d31735..77052a0712d0 100644
@@ -301,13 +301,6 @@ static int mobiveil_pcie_parse_dt(struct mobiveil_pcie *pcie)
 	struct platform_device *pdev = pcie->pdev;
 	struct device_node *node = dev->of_node;
 	struct resource *res;
-	const char *type;
-
-	type = of_get_property(node, "device_type", NULL);
-	if (!type || strcmp(type, "pci")) {
-		dev_err(dev, "invalid \"device_type\" %s\n", type);
-		return -EINVAL;
-	}
 
 	/* map config resource */
 	res = platform_get_resource_byname(pdev, IORESOURCE_MEM,
drivers/pci/controller/pcie-xilinx-nwl.c +0 -9
index fb32840ce8e6..81538d77f790 100644
@@ -777,16 +777,7 @@ static int nwl_pcie_parse_dt(struct nwl_pcie *pcie,
 			     struct platform_device *pdev)
 {
 	struct device *dev = pcie->dev;
-	struct device_node *node = dev->of_node;
 	struct resource *res;
-	const char *type;
-
-	/* Check for device type */
-	type = of_get_property(node, "device_type", NULL);
-	if (!type || strcmp(type, "pci")) {
-		dev_err(dev, "invalid \"device_type\" %s\n", type);
-		return -EINVAL;
-	}
 
 	res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "breg");
 	pcie->breg_base = devm_ioremap_resource(dev, res);
drivers/pci/controller/pcie-xilinx.c +0 -7
index 7b1389d8e2a5..9bd1a35cd5d8 100644
@@ -574,15 +574,8 @@ static int xilinx_pcie_parse_dt(struct xilinx_pcie_port *port)
 	struct device *dev = port->dev;
 	struct device_node *node = dev->of_node;
 	struct resource regs;
-	const char *type;
 	int err;
 
-	type = of_get_property(node, "device_type", NULL);
-	if (!type || strcmp(type, "pci")) {
-		dev_err(dev, "invalid \"device_type\" %s\n", type);
-		return -EINVAL;
-	}
-
 	err = of_address_to_resource(node, 0, &regs);
 	if (err) {
 		dev_err(dev, "missing \"reg\" property\n");
Signature · 1 line
2.17.1
author reviewer
#4 lore raw
Quoted 7 lines · Lorenzo Pieralisi
Quoted 4 lines · Rob Herring

PCI host drivers have already matched on compatible strings, so checking device_type is redundant. Also, device_type is considered deprecated for FDT though we've still been requiring it for PCI hosts as it is useful for finding PCI buses.

Quoted 5 lines

Hi Rob,

I have no problem with the patch per-se, I can't parse though the second paragraph, in particular what you mean by "useful for finding PCI buses".

Device_type is the only generic way we can identify PCI buses which is useful for dtc for example to do PCI binding checks. Maybe we can use the node name which is what I'm doing for cpu nodes, but we've been less consistent about that for PCI.

Quoted 4 lines

What about the corresponding dts files ? I suspect we had better leave them alone lest we can trigger regressions with new dts and older kernels.

Yes. it will take some time before we can remove from dts files. Or maybe only new ones change.

Rob

#5 lore raw
Quoted 21 lines · Rob Herring
Quoted 7 lines · Lorenzo Pieralisi
Quoted 4 lines · Rob Herring

PCI host drivers have already matched on compatible strings, so checking device_type is redundant. Also, device_type is considered deprecated for FDT though we've still been requiring it for PCI hosts as it is useful for finding PCI buses.

Quoted 5 lines

Hi Rob,

I have no problem with the patch per-se, I can't parse though the second paragraph, in particular what you mean by "useful for finding PCI buses".

Device_type is the only generic way we can identify PCI buses which is useful for dtc for example to do PCI binding checks. Maybe we can use the node name which is what I'm doing for cpu nodes, but we've been less consistent about that for PCI.

Quoted 1 line
Quoted 6 lines
Quoted 3 lines

What about the corresponding dts files ? I suspect we had better leave them alone lest we can trigger regressions with new dts and older kernels.

Yes. it will take some time before we can remove from dts files. Or maybe only new ones change.

OK, thanks. What about PCI host controllers bindings ? I assume we leave the bindings (that enforce device_type) unchanged too.

If Will and Michal have no objections I will queue this patch as-is for v4.20.

Thanks,
Lorenzo

#6 lore raw
Quoted 26 lines · Lorenzo Pieralisi
Quoted 25 lines · Rob Herring
Quoted 7 lines · Lorenzo Pieralisi
Quoted 4 lines · Rob Herring

PCI host drivers have already matched on compatible strings, so checking device_type is redundant. Also, device_type is considered deprecated for FDT though we've still been requiring it for PCI hosts as it is useful for finding PCI buses.

Quoted 5 lines

Hi Rob,

I have no problem with the patch per-se, I can't parse though the second paragraph, in particular what you mean by "useful for finding PCI buses".

Device_type is the only generic way we can identify PCI buses which is useful for dtc for example to do PCI binding checks. Maybe we can use the node name which is what I'm doing for cpu nodes, but we've been less consistent about that for PCI.

Quoted 4 lines

What about the corresponding dts files ? I suspect we had better leave them alone lest we can trigger regressions with new dts and older kernels.

Quoted 8 lines
Quoted 2 lines

Yes. it will take some time before we can remove from dts files. Or maybe only new ones change.

OK, thanks. What about PCI host controllers bindings ? I assume we leave the bindings (that enforce device_type) unchanged too.

If Will and Michal have no objections I will queue this patch as-is for v4.20.

Fine by me!

Will

#7 lore raw
In reply to Rob Herring
Quoted 14 lines · Rob Herring

PCI host drivers have already matched on compatible strings, so checking device_type is redundant. Also, device_type is considered deprecated for FDT though we've still been requiring it for PCI hosts as it is useful for finding PCI buses.

Cc Will Deacon <[email protected]>
Cc Lorenzo Pieralisi <[email protected]>
Cc Bjorn Helgaas <[email protected]>
Cc Alan Douglas <[email protected]>
Cc Subrahmanya Lingappa <[email protected]>
Cc Michal Simek <[email protected]>
Cc linux-pci at vger.kernel.org
Cc linux-arm-kernel at lists.infradead.org
Quoted 7 lines
---
 drivers/pci/controller/pci-host-common.c   | 8 --------
 drivers/pci/controller/pcie-cadence-host.c | 7 -------
 drivers/pci/controller/pcie-mobiveil.c     | 7 -------
 drivers/pci/controller/pcie-xilinx-nwl.c   | 9 ---------
 drivers/pci/controller/pcie-xilinx.c       | 7 -------
 5 files changed, 38 deletions(-)

Hi Michal,

are you OK with these changes ?

Thanks,
Lorenzo

Quoted 114 lines
drivers/pci/controller/pci-host-common.c +0 -8
index d8f10451f273..c742881b5061 100644
@@ -58,9 +58,7 @@ static struct pci_config_window *gen_pci_init(struct device *dev,
 int pci_host_common_probe(struct platform_device *pdev,
 			  struct pci_ecam_ops *ops)
 {
-	const char *type;
 	struct device *dev = &pdev->dev;
-	struct device_node *np = dev->of_node;
 	struct pci_host_bridge *bridge;
 	struct pci_config_window *cfg;
 	struct list_head resources;
@@ -70,12 +68,6 @@ int pci_host_common_probe(struct platform_device *pdev,
 	if (!bridge)
 		return -ENOMEM;
 
-	type = of_get_property(np, "device_type", NULL);
-	if (!type || strcmp(type, "pci")) {
-		dev_err(dev, "invalid \"device_type\" %s\n", type);
-		return -EINVAL;
-	}
-
 	of_pci_check_probe_only();
 
 	/* Parse and map our Configuration Space windows */
drivers/pci/controller/pcie-cadence-host.c +0 -7
index ec394f6a19c8..97e251090b4f 100644
@@ -235,7 +235,6 @@ static int cdns_pcie_host_init(struct device *dev,
 
 static int cdns_pcie_host_probe(struct platform_device *pdev)
 {
-	const char *type;
 	struct device *dev = &pdev->dev;
 	struct device_node *np = dev->of_node;
 	struct pci_host_bridge *bridge;
@@ -268,12 +267,6 @@ static int cdns_pcie_host_probe(struct platform_device *pdev)
 	rc->device_id = 0xffff;
 	of_property_read_u16(np, "device-id", &rc->device_id);
 
-	type = of_get_property(np, "device_type", NULL);
-	if (!type || strcmp(type, "pci")) {
-		dev_err(dev, "invalid \"device_type\" %s\n", type);
-		return -EINVAL;
-	}
-
 	res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "reg");
 	pcie->reg_base = devm_ioremap_resource(dev, res);
 	if (IS_ERR(pcie->reg_base)) {
drivers/pci/controller/pcie-mobiveil.c +0 -7
index a939e8d31735..77052a0712d0 100644
@@ -301,13 +301,6 @@ static int mobiveil_pcie_parse_dt(struct mobiveil_pcie *pcie)
 	struct platform_device *pdev = pcie->pdev;
 	struct device_node *node = dev->of_node;
 	struct resource *res;
-	const char *type;
-
-	type = of_get_property(node, "device_type", NULL);
-	if (!type || strcmp(type, "pci")) {
-		dev_err(dev, "invalid \"device_type\" %s\n", type);
-		return -EINVAL;
-	}
 
 	/* map config resource */
 	res = platform_get_resource_byname(pdev, IORESOURCE_MEM,
drivers/pci/controller/pcie-xilinx-nwl.c +0 -9
index fb32840ce8e6..81538d77f790 100644
@@ -777,16 +777,7 @@ static int nwl_pcie_parse_dt(struct nwl_pcie *pcie,
 			     struct platform_device *pdev)
 {
 	struct device *dev = pcie->dev;
-	struct device_node *node = dev->of_node;
 	struct resource *res;
-	const char *type;
-
-	/* Check for device type */
-	type = of_get_property(node, "device_type", NULL);
-	if (!type || strcmp(type, "pci")) {
-		dev_err(dev, "invalid \"device_type\" %s\n", type);
-		return -EINVAL;
-	}
 
 	res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "breg");
 	pcie->breg_base = devm_ioremap_resource(dev, res);
drivers/pci/controller/pcie-xilinx.c +0 -7
index 7b1389d8e2a5..9bd1a35cd5d8 100644
@@ -574,15 +574,8 @@ static int xilinx_pcie_parse_dt(struct xilinx_pcie_port *port)
 	struct device *dev = port->dev;
 	struct device_node *node = dev->of_node;
 	struct resource regs;
-	const char *type;
 	int err;
 
-	type = of_get_property(node, "device_type", NULL);
-	if (!type || strcmp(type, "pci")) {
-		dev_err(dev, "invalid \"device_type\" %s\n", type);
-		return -EINVAL;
-	}
-
 	err = of_address_to_resource(node, 0, &regs);
 	if (err) {
 		dev_err(dev, "missing \"reg\" property\n");
Signature · 1 line
2.17.1
Acked-by
#8 lore raw

Hi Lorenzo,

Quoted 23 lines · Lorenzo Pieralisi
Quoted 14 lines · Rob Herring

PCI host drivers have already matched on compatible strings, so checking device_type is redundant. Also, device_type is considered deprecated for FDT though we've still been requiring it for PCI hosts as it is useful for finding PCI buses.

Cc Will Deacon <[email protected]>
Cc Lorenzo Pieralisi <[email protected]>
Cc Bjorn Helgaas <[email protected]>
Cc Alan Douglas <[email protected]>
Cc Subrahmanya Lingappa <[email protected]>
Cc Michal Simek <[email protected]>
Cc linux-pci at vger.kernel.org
Cc linux-arm-kernel at lists.infradead.org
Quoted 7 lines
---
 drivers/pci/controller/pci-host-common.c   | 8 --------
 drivers/pci/controller/pcie-cadence-host.c | 7 -------
 drivers/pci/controller/pcie-mobiveil.c     | 7 -------
 drivers/pci/controller/pcie-xilinx-nwl.c   | 9 ---------
 drivers/pci/controller/pcie-xilinx.c       | 7 -------
 5 files changed, 38 deletions(-)
Quoted 3 lines

Hi Michal,

are you OK with these changes ?

This change is fine.

Thanks,
Michal

#9 lore raw
In reply to Rob Herring
Quoted 14 lines · Rob Herring

PCI host drivers have already matched on compatible strings, so checking device_type is redundant. Also, device_type is considered deprecated for FDT though we've still been requiring it for PCI hosts as it is useful for finding PCI buses.

Cc Will Deacon <[email protected]>
Cc Lorenzo Pieralisi <[email protected]>
Cc Bjorn Helgaas <[email protected]>
Cc Alan Douglas <[email protected]>
Cc Subrahmanya Lingappa <[email protected]>
Cc Michal Simek <[email protected]>
Quoted 7 lines
---
 drivers/pci/controller/pci-host-common.c   | 8 --------
 drivers/pci/controller/pcie-cadence-host.c | 7 -------
 drivers/pci/controller/pcie-mobiveil.c     | 7 -------
 drivers/pci/controller/pcie-xilinx-nwl.c   | 9 ---------
 drivers/pci/controller/pcie-xilinx.c       | 7 -------
 5 files changed, 38 deletions(-)

Applied to pci/controller-misc for v4.20, thanks.

Lorenzo

Quoted 114 lines
drivers/pci/controller/pci-host-common.c +0 -8
index d8f10451f273..c742881b5061 100644
@@ -58,9 +58,7 @@ static struct pci_config_window *gen_pci_init(struct device *dev,
 int pci_host_common_probe(struct platform_device *pdev,
 			  struct pci_ecam_ops *ops)
 {
-	const char *type;
 	struct device *dev = &pdev->dev;
-	struct device_node *np = dev->of_node;
 	struct pci_host_bridge *bridge;
 	struct pci_config_window *cfg;
 	struct list_head resources;
@@ -70,12 +68,6 @@ int pci_host_common_probe(struct platform_device *pdev,
 	if (!bridge)
 		return -ENOMEM;
 
-	type = of_get_property(np, "device_type", NULL);
-	if (!type || strcmp(type, "pci")) {
-		dev_err(dev, "invalid \"device_type\" %s\n", type);
-		return -EINVAL;
-	}
-
 	of_pci_check_probe_only();
 
 	/* Parse and map our Configuration Space windows */
drivers/pci/controller/pcie-cadence-host.c +0 -7
index ec394f6a19c8..97e251090b4f 100644
@@ -235,7 +235,6 @@ static int cdns_pcie_host_init(struct device *dev,
 
 static int cdns_pcie_host_probe(struct platform_device *pdev)
 {
-	const char *type;
 	struct device *dev = &pdev->dev;
 	struct device_node *np = dev->of_node;
 	struct pci_host_bridge *bridge;
@@ -268,12 +267,6 @@ static int cdns_pcie_host_probe(struct platform_device *pdev)
 	rc->device_id = 0xffff;
 	of_property_read_u16(np, "device-id", &rc->device_id);
 
-	type = of_get_property(np, "device_type", NULL);
-	if (!type || strcmp(type, "pci")) {
-		dev_err(dev, "invalid \"device_type\" %s\n", type);
-		return -EINVAL;
-	}
-
 	res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "reg");
 	pcie->reg_base = devm_ioremap_resource(dev, res);
 	if (IS_ERR(pcie->reg_base)) {
drivers/pci/controller/pcie-mobiveil.c +0 -7
index a939e8d31735..77052a0712d0 100644
@@ -301,13 +301,6 @@ static int mobiveil_pcie_parse_dt(struct mobiveil_pcie *pcie)
 	struct platform_device *pdev = pcie->pdev;
 	struct device_node *node = dev->of_node;
 	struct resource *res;
-	const char *type;
-
-	type = of_get_property(node, "device_type", NULL);
-	if (!type || strcmp(type, "pci")) {
-		dev_err(dev, "invalid \"device_type\" %s\n", type);
-		return -EINVAL;
-	}
 
 	/* map config resource */
 	res = platform_get_resource_byname(pdev, IORESOURCE_MEM,
drivers/pci/controller/pcie-xilinx-nwl.c +0 -9
index fb32840ce8e6..81538d77f790 100644
@@ -777,16 +777,7 @@ static int nwl_pcie_parse_dt(struct nwl_pcie *pcie,
 			     struct platform_device *pdev)
 {
 	struct device *dev = pcie->dev;
-	struct device_node *node = dev->of_node;
 	struct resource *res;
-	const char *type;
-
-	/* Check for device type */
-	type = of_get_property(node, "device_type", NULL);
-	if (!type || strcmp(type, "pci")) {
-		dev_err(dev, "invalid \"device_type\" %s\n", type);
-		return -EINVAL;
-	}
 
 	res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "breg");
 	pcie->breg_base = devm_ioremap_resource(dev, res);
drivers/pci/controller/pcie-xilinx.c +0 -7
index 7b1389d8e2a5..9bd1a35cd5d8 100644
@@ -574,15 +574,8 @@ static int xilinx_pcie_parse_dt(struct xilinx_pcie_port *port)
 	struct device *dev = port->dev;
 	struct device_node *node = dev->of_node;
 	struct resource regs;
-	const char *type;
 	int err;
 
-	type = of_get_property(node, "device_type", NULL);
-	if (!type || strcmp(type, "pci")) {
-		dev_err(dev, "invalid \"device_type\" %s\n", type);
-		return -EINVAL;
-	}
-
 	err = of_address_to_resource(node, 0, &regs);
 	if (err) {
 		dev_err(dev, "missing \"reg\" property\n");
Signature · 1 line
2.17.1