Merge branch 'remotes/lorenzo/pci/cadence'

- Deprecate 'cdns,max-outbound-regions' and 'cdns,no-bar-match-nbits'
    bindings in favor of deriving them from 'ranges' and 'dma-ranges'
    (Kishon Vijay Abraham I)

  - Read Vendor and Device ID as 32 bits (not 16) from DT (Kishon Vijay
    Abraham I)

* remotes/lorenzo/pci/cadence:
  PCI: cadence: Fix to read 32-bit Vendor ID/Device ID property from DT
  PCI: cadence: Remove "cdns,max-outbound-regions" DT property
  dt-bindings: PCI: cadence: Deprecate inbound/outbound specific bindings
This commit is contained in:
Bjorn Helgaas 2020-06-04 12:59:15 -05:00
commit 712879510f
7 changed files with 41 additions and 23 deletions

View File

@ -10,7 +10,7 @@ maintainers:
- Tom Joseph <tjoseph@cadence.com> - Tom Joseph <tjoseph@cadence.com>
allOf: allOf:
- $ref: "cdns-pcie.yaml#" - $ref: "cdns-pcie-ep.yaml#"
- $ref: "pci-ep.yaml#" - $ref: "pci-ep.yaml#"
properties: properties:

View File

@ -45,8 +45,6 @@ examples:
#size-cells = <2>; #size-cells = <2>;
bus-range = <0x0 0xff>; bus-range = <0x0 0xff>;
linux,pci-domain = <0>; linux,pci-domain = <0>;
cdns,max-outbound-regions = <16>;
cdns,no-bar-match-nbits = <32>;
vendor-id = <0x17cd>; vendor-id = <0x17cd>;
device-id = <0x0200>; device-id = <0x0200>;
@ -57,6 +55,7 @@ examples:
ranges = <0x02000000 0x0 0x42000000 0x0 0x42000000 0x0 0x1000000>, ranges = <0x02000000 0x0 0x42000000 0x0 0x42000000 0x0 0x1000000>,
<0x01000000 0x0 0x43000000 0x0 0x43000000 0x0 0x0010000>; <0x01000000 0x0 0x43000000 0x0 0x43000000 0x0 0x0010000>;
dma-ranges = <0x02000000 0x0 0x0 0x0 0x0 0x1 0x00000000>;
#interrupt-cells = <0x1>; #interrupt-cells = <0x1>;

View File

@ -0,0 +1,25 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: "http://devicetree.org/schemas/pci/cdns-pcie-ep.yaml#"
$schema: "http://devicetree.org/meta-schemas/core.yaml#"
title: Cadence PCIe Device
maintainers:
- Tom Joseph <tjoseph@cadence.com>
allOf:
- $ref: "cdns-pcie.yaml#"
properties:
cdns,max-outbound-regions:
description: maximum number of outbound regions
allOf:
- $ref: /schemas/types.yaml#/definitions/uint32
minimum: 1
maximum: 32
default: 32
required:
- cdns,max-outbound-regions

View File

@ -14,6 +14,15 @@ allOf:
- $ref: "cdns-pcie.yaml#" - $ref: "cdns-pcie.yaml#"
properties: properties:
cdns,max-outbound-regions:
description: maximum number of outbound regions
allOf:
- $ref: /schemas/types.yaml#/definitions/uint32
minimum: 1
maximum: 32
default: 32
deprecated: true
cdns,no-bar-match-nbits: cdns,no-bar-match-nbits:
description: description:
Set into the no BAR match register to configure the number of least Set into the no BAR match register to configure the number of least
@ -23,5 +32,6 @@ properties:
minimum: 0 minimum: 0
maximum: 64 maximum: 64
default: 32 default: 32
deprecated: true
msi-parent: true msi-parent: true

View File

@ -10,14 +10,6 @@ maintainers:
- Tom Joseph <tjoseph@cadence.com> - Tom Joseph <tjoseph@cadence.com>
properties: properties:
cdns,max-outbound-regions:
description: maximum number of outbound regions
allOf:
- $ref: /schemas/types.yaml#/definitions/uint32
minimum: 1
maximum: 32
default: 32
phys: phys:
description: description:
One per lane if more than one in the list. If only one PHY listed it must One per lane if more than one in the list. If only one PHY listed it must

View File

@ -140,9 +140,6 @@ static int cdns_pcie_host_init_address_translation(struct cdns_pcie_rc *rc)
for_each_of_pci_range(&parser, &range) { for_each_of_pci_range(&parser, &range) {
bool is_io; bool is_io;
if (r >= rc->max_regions)
break;
if ((range.flags & IORESOURCE_TYPE_BITS) == IORESOURCE_MEM) if ((range.flags & IORESOURCE_TYPE_BITS) == IORESOURCE_MEM)
is_io = false; is_io = false;
else if ((range.flags & IORESOURCE_TYPE_BITS) == IORESOURCE_IO) else if ((range.flags & IORESOURCE_TYPE_BITS) == IORESOURCE_IO)
@ -219,17 +216,14 @@ int cdns_pcie_host_setup(struct cdns_pcie_rc *rc)
pcie = &rc->pcie; pcie = &rc->pcie;
pcie->is_rc = true; pcie->is_rc = true;
rc->max_regions = 32;
of_property_read_u32(np, "cdns,max-outbound-regions", &rc->max_regions);
rc->no_bar_nbits = 32; rc->no_bar_nbits = 32;
of_property_read_u32(np, "cdns,no-bar-match-nbits", &rc->no_bar_nbits); of_property_read_u32(np, "cdns,no-bar-match-nbits", &rc->no_bar_nbits);
rc->vendor_id = 0xffff; rc->vendor_id = 0xffff;
of_property_read_u16(np, "vendor-id", &rc->vendor_id); of_property_read_u32(np, "vendor-id", &rc->vendor_id);
rc->device_id = 0xffff; rc->device_id = 0xffff;
of_property_read_u16(np, "device-id", &rc->device_id); of_property_read_u32(np, "device-id", &rc->device_id);
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "reg"); res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "reg");
pcie->reg_base = devm_ioremap_resource(dev, res); pcie->reg_base = devm_ioremap_resource(dev, res);

View File

@ -251,7 +251,6 @@ struct cdns_pcie {
* @bus_range: first/last buses behind the PCIe host controller * @bus_range: first/last buses behind the PCIe host controller
* @cfg_base: IO mapped window to access the PCI configuration space of a * @cfg_base: IO mapped window to access the PCI configuration space of a
* single function at a time * single function at a time
* @max_regions: maximum number of regions supported by the hardware
* @no_bar_nbits: Number of bits to keep for inbound (PCIe -> CPU) address * @no_bar_nbits: Number of bits to keep for inbound (PCIe -> CPU) address
* translation (nbits sets into the "no BAR match" register) * translation (nbits sets into the "no BAR match" register)
* @vendor_id: PCI vendor ID * @vendor_id: PCI vendor ID
@ -262,10 +261,9 @@ struct cdns_pcie_rc {
struct resource *cfg_res; struct resource *cfg_res;
struct resource *bus_range; struct resource *bus_range;
void __iomem *cfg_base; void __iomem *cfg_base;
u32 max_regions;
u32 no_bar_nbits; u32 no_bar_nbits;
u16 vendor_id; u32 vendor_id;
u16 device_id; u32 device_id;
}; };
/** /**