1. 07 Sep, 2017 16 commits
    • Bjorn Helgaas's avatar
      Merge branch 'pci/host-layerscape' into next · 9857f125
      Bjorn Helgaas authored
      * pci/host-layerscape:
        PCI: layerscape: Add support for ls1088a
        PCI: layerscape: Add support for ls2088a
        PCI: artpec6: Stop enabling writes to DBI read-only registers
        PCI: layerscape: Remove unnecessary class code fixup
        PCI: dwc: Enable write permission for Class Code, Interrupt Pin updates
        PCI: dwc: Add accessors for write permission of DBI read-only registers
        PCI: layerscape: Disable outbound windows configured by bootloader
        PCI: layerscape: Refactor ls1021_pcie_host_init()
        PCI: layerscape: Move generic init functions earlier in file
        PCI: layerscape: Add class code and multifunction fixups for ls1021a
        PCI: layerscape: Move STRFMR1 access out from the DBI write-enable bracket
        PCI: layerscape: Call dw_pcie_setup_rc() from ls_pcie_host_init()
      9857f125
    • Bjorn Helgaas's avatar
      Merge branch 'pci/host-kirin' into next · 0964c40f
      Bjorn Helgaas authored
      * pci/host-kirin:
        PCI: kirin: Constify dw_pcie_host_ops structure
      0964c40f
    • Bjorn Helgaas's avatar
      Merge branch 'pci/host-keystone' into next · 8f5b3f5b
      Bjorn Helgaas authored
      * pci/host-keystone:
        PCI: keystone: Use PCI_NUM_INTX
        PCI: keystone: Remove duplicate MAX_*_IRQS defs
        PCI: keystone-dw: Remove unused ks_pcie, pci variables
      8f5b3f5b
    • Bjorn Helgaas's avatar
      Merge branch 'pci/host-iproc' into next · 352948c4
      Bjorn Helgaas authored
      * pci/host-iproc:
        PCI: iproc: Clean up whitespace
        PCI: iproc: Rename PCI_EXP_CAP to IPROC_PCI_EXP_CAP
        PCI: iproc: Add 500ms delay during device shutdown
        PCI: iproc: Work around Stingray CRS defects
        PCI: iproc: Factor out memory-mapped config access address calculation
        PCI: iproc: Remove unused struct iproc_pcie *pcie
      352948c4
    • Bjorn Helgaas's avatar
      Merge branch 'pci/host-imx6' into next · 8a21881a
      Bjorn Helgaas authored
      * pci/host-imx6:
        PCI: imx6: Explicitly request exclusive reset control
      8a21881a
    • Bjorn Helgaas's avatar
      Merge branch 'pci/host-hv' into next · b7c19476
      Bjorn Helgaas authored
      * pci/host-hv:
        PCI: hv: Do not sleep in compose_msi_msg()
      b7c19476
    • Bjorn Helgaas's avatar
      Merge branch 'pci/host-hisi' into next · 6238e057
      Bjorn Helgaas authored
      * pci/host-hisi:
        PCI: hisi: Constify dw_pcie_host_ops structure
        PCI: hisi: Remove unused variable driver
      6238e057
    • Bjorn Helgaas's avatar
      Merge branch 'pci/host-faraday' into next · 73626629
      Bjorn Helgaas authored
      * pci/host-faraday:
        PCI: faraday: Use PCI_NUM_INTX
        PCI: faraday: Fix of_irq_get() error check
      73626629
    • Bjorn Helgaas's avatar
      Merge branch 'pci/host-exynos' into next · 0dd9636f
      Bjorn Helgaas authored
      * pci/host-exynos:
        PCI: exynos: Fix platform_get_irq() error handling
      0dd9636f
    • Bjorn Helgaas's avatar
      Merge branch 'pci/host-dra7xx' into next · 51386202
      Bjorn Helgaas authored
      * pci/host-dra7xx:
        PCI: dra7xx: Fix platform_get_irq() error handling
        PCI: dra7xx: Propagate platform_get_irq() errors in dra7xx_pcie_probe()
        PCI: dra7xx: Use PCI_NUM_INTX
      51386202
    • Bjorn Helgaas's avatar
      Merge branch 'pci/host-designware' into next · ee75520e
      Bjorn Helgaas authored
      * pci/host-designware:
        PCI: dwc: Clear MSI interrupt status after it is handled, not before
        PCI: qcom: Allow ->post_init() to fail
        PCI: qcom: Don't unroll init if ->init() fails
        PCI: dwc: designware: Handle ->host_init() failures
        PCI: dwc: designware: Test PCIE_ATU_ENABLE bit specifically
        PCI: dwc: designware: Make dw_pcie_prog_*_atu_unroll() static
      ee75520e
    • Bjorn Helgaas's avatar
      Merge branch 'pci/host-artpec6' into next · 199a0253
      Bjorn Helgaas authored
      * pci/host-artpec6:
        PCI: artpec6: Fix platform_get_irq() error handling
      199a0253
    • Bjorn Helgaas's avatar
      Merge branch 'pci/host-armada' into next · 9627804b
      Bjorn Helgaas authored
      * pci/host-armada:
        PCI: armada8k: Fix platform_get_irq() error handling
        PCI: armada8k: Check the return value from clk_prepare_enable()
      9627804b
    • Bjorn Helgaas's avatar
      Merge branch 'pci/host-altera' into next · a89d7e43
      Bjorn Helgaas authored
      * pci/host-altera:
        PCI: altera: Fix platform_get_irq() error handling
        PCI: altera: Use size=4 IRQ domain for legacy INTx
        PCI: altera: Remove unused num_of_vectors variable
      a89d7e43
    • Bjorn Helgaas's avatar
      Merge branch 'pci/host-aardvark' into next · 741e2237
      Bjorn Helgaas authored
      * pci/host-aardvark:
        PCI: aardvark: Use PCI_NUM_INTX
      741e2237
    • Bjorn Helgaas's avatar
      Merge branch 'pci/irq-intx' into next · 37deba45
      Bjorn Helgaas authored
      * pci/irq-intx:
        PCI: Add pci_irqd_intx_xlate()
        PCI: Move enum pci_interrupt_pin to linux/pci.h
      37deba45
  2. 05 Sep, 2017 8 commits
  3. 30 Aug, 2017 1 commit
  4. 29 Aug, 2017 11 commits
  5. 28 Aug, 2017 2 commits
    • Oza Pawandeep's avatar
      PCI: iproc: Work around Stingray CRS defects · 39b7a4ff
      Oza Pawandeep authored
      Configuration Request Retry Status ("CRS") completions are a required part
      of PCIe.  A PCIe device may respond to config a request with a CRS
      completion to indicate that it needs more time to initialize.  A Root Port
      that receives a CRS completion may automatically retry the request, or it
      may treat the request as a failed transaction.  For a failed read, it will
      likely synthesize all 1's data, i.e., 0xffffffff, to complete the read to
      the CPU.
      
      CRS Software Visibility ("CRS SV") is an optional feature.  Per PCIe r3.1,
      sec 2.3.2, if supported and enabled, a Root Port that receives a CRS
      completion for a config read of the Vendor ID will synthesize 0x0001 data
      (an invalid Vendor ID) instead of retrying or failing the transaction.  The
      0x0001 data makes the CRS completion visible to software, so it can perform
      other tasks while waiting for the device.
      
      The iProc "Stingray" PCIe controller does not support CRS completions
      correctly.  From the Stingray PCIe Controller spec:
      
        4.7.3.3. Retry Status On Configuration Cycle
      
        Endpoints are allowed to generate retry status on configuration cycles.
        In this case, the RC needs to re-issue the request. The IP does not
        handle this because the number of configuration cycles needed will
        probably be less than the total number of non-posted operations needed.
      
        When a retry status is received on the User RX interface for a
        configuration request that was sent on the User TX interface, it will be
        indicated with a completion with the CMPL_STATUS field set to 2=CRS, and
        the user will have to find the address and data values and send a new
        transaction on the User TX interface.  When the internal configuration
        space returns a retry status during a configuration cycle (user_cscfg =
        1) on the Command/Status interface, the pcie_cscrs will assert with the
        pcie_csack signal to indicate the CRS status.
      
        When the CRS Software Visibility Enable register in the Root Control
        register is enabled, the IP will return the data value to 0x0001 for the
        Vendor ID value and 0xffff  (all 1’s) for the rest of the data in the
        request for reads of offset 0 that return with CRS status.  This is true
        for both the User RX Interface and for the Command/Status interface.
        When CRS Software Visibility is enabled, the CMPL_STATUS field of the
        completion on the User RX Interface will not be 2=CRS and the pcie_cscrs
        signal will not assert on the Command/Status interface.
      
      The Stingray hardware never reissues configuration requests when it
      receives CRS completions.  Contrary to what sec 4.7.3.3 above says, when it
      receives a CRS completion, it synthesizes 0xffff0001 data regardless of the
      address of the read or the value of the CRS SV enable bit.
      
      This is broken in two ways:
      
        1) When CRS SV is disabled, the Root Port should never synthesize the
        0x0001 value.  If it receives a CRS completion, it should fail the
        transaction and synthesize all 1's data.
      
        2) When CRS SV is enabled, the Root Port should only synthesize 0x0001
        data if it receives a CRS completion for a read of the Vendor ID.  If it
        receives a CRS completion for any other read, it should fail the
        transaction and synthesize all 1's data.
      
      This breaks pci_flr_wait(), which reads the Command register and expects to
      see all 1's data if the read fails because of CRS completions.  On
      Stingray, it sees the incorrect 0xffff0001 data instead.
      
      It also breaks config registers that contain the 0xffff0001 value.  If we
      read such a register, software can't distinguish a CRS completion from the
      actual value read from the device.
      
      On Stingray, if we read 0xffff0001 data, assume this indicates a CRS
      completion and retry the read for 500ms.  If we time out, return all 1's
      (0xffffffff) data.  Note that this corrupts registers that happen to
      contain 0xffff0001.
      
      Stingray advertises CRS SV support in its Root Capabilities register, and
      the CRS SV enable bit is writable (even though the hardware ignores it).
      Mask out PCI_EXP_RTCAP_CRSVIS so software doesn't try to use CRS SV.
      Signed-off-by: default avatarOza Pawandeep <oza.oza@broadcom.com>
      [bhelgaas: changelog, add probe-time warning about corruption, don't
      advertise CRS SV support, remove duplicate pci_generic_config_read32(),
      fix alignment based on patch from Arnd Bergmann <arnd@arndb.de>]
      Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
      39b7a4ff
    • Oza Pawandeep's avatar
      PCI: iproc: Factor out memory-mapped config access address calculation · d005045b
      Oza Pawandeep authored
      Factor out the address calculation for memory-mapped config accesses as a
      separate function.  No functional change intended.
      Signed-off-by: default avatarOza Pawandeep <oza.oza@broadcom.com>
      Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
      d005045b
  6. 22 Aug, 2017 2 commits