e636c16909
PCI: kirin: Add Kirin 970 compatible
...
Now that everything is in place, add a compatible for Kirin 970.
Link: https://lore.kernel.org/r/ac8c730c0300b90d96bdaaf387d458d8949241a9.1634812676.git.mchehab+huawei@kernel.org
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org >
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com >
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com >
Acked-by: Xiaowei Song <songxiaowei@hisilicon.com >
2021-11-04 14:34:23 -05:00
b22dbbb245
PCI: kirin: Support PERST# GPIOs for HiKey970 external PEX 8606 bridge
...
On HiKey970, there's a PEX 8606 PCI bridge on its PHY with 6 lanes. Only 4
lanes are connected:
lane 0 - connected to Kirin 970 (upstream)
lane 4 - M.2 slot
lane 5 - mini PCIe slot
lane 6 - on-board Ethernet controller
Each lane has its own PERST# GPIO pin and needs a clock request.
Add support to parse a DT schema containing the above data.
HiKey 970 requires a little more waiting time for the PCI bridge - which is
outside the SoC - to finish the PERST# reset, and then initialize the eye
diagram.
Increase the waiting time for the PERST# signals accordingly.
[bhelgaas: squash refcount fix from Wan Jiabing <wanjiabing@vivo.com >:
https://lore.kernel.org/r/20211103062518.25695-1-wanjiabing@vivo.com
and drop "parent" refcount per
https://lore.kernel.org/all/20211103143059.GA683503@bhelgaas/ ]
Link: https://lore.kernel.org/r/bb391a0e0f0863b66e645048315fab1a4f63f277.1634812676.git.mchehab+huawei@kernel.org
Link: https://lore.kernel.org/all/9a365cffe5af9ec5a1f79638968c3a2efa979b65.1634622716.git.mchehab+huawei@kernel.org/
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org >
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com >
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com >
Acked-by: Xiaowei Song <songxiaowei@hisilicon.com >
Cc: Kishon Vijay Abraham I <kishon@ti.com >
2021-11-04 14:32:21 -05:00
d19afe7be1
PCI: kirin: Use regmap for APB registers
...
The PHY layer need to access APB registers too, for Kirin 970. So place
them into a named regmap.
Link: https://lore.kernel.org/r/daf0e4bda5a69a5ac8484e70f09351a959805c8c.1634812676.git.mchehab+huawei@kernel.org
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org >
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com >
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com >
Acked-by: Xiaowei Song <songxiaowei@hisilicon.com >
2021-11-02 10:43:59 -05:00
000f60db78
PCI: kirin: Add support for a PHY layer
...
The pcie-kirin driver contains both PHY and generic PCI driver.
The best would be, instead, to support a PCI PHY driver, making the driver
more generic.
However, it is too late to remove the Kirin 960 PHY, as a change like that
would make the DT schema incompatible with past versions.
So, add support for an external PHY driver without removing the existing
Kirin 960 PHY from it.
Link: https://lore.kernel.org/r/f38361df2e9d0dc5a38ff942b631f7fef64cdc12.1634812676.git.mchehab+huawei@kernel.org
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org >
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com >
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com >
Reviewed-by: Kishon Vijay Abraham I <kishon@ti.com >
Acked-by: Xiaowei Song <songxiaowei@hisilicon.com >
2021-11-02 10:43:37 -05:00
61d3754743
PCI: kirin: Reorganize the PHY logic inside the driver
...
The pcie-kirin PCIe driver contains internally a PHY interface for
Kirin 960.
As the next patches will add support for using an external PHY driver,
reorganize the driver in a way that the PHY part will be self-contained.
This could be moved to a separate PHY driver, but a change like that would
mean a non-backward-compatible DT schema change.
Link: https://lore.kernel.org/r/ad2f4aa6bbb71d5c9af0139704672f75f12644fc.1634812676.git.mchehab+huawei@kernel.org
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org >
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com >
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com >
Acked-by: Xiaowei Song <songxiaowei@hisilicon.com >
Cc: Kishon Vijay Abraham I <kishon@ti.com >
2021-11-02 10:43:13 -05:00
6e129176c3
Merge branch 'remotes/lorenzo/pci/endpoint'
...
- Add max-virtual-functions to endpoint binding (Kishon Vijay Abraham I)
- Add pci_epf_add_vepf() API to add virtual function to endpoint (Kishon
Vijay Abraham I)
- Add pci_epf_vepf_link() to link virtual function to endpoint physical
function (Kishon Vijay Abraham I)
- Add virtual function number to pci_epc_ops endpoint ops interfaces
(Kishon Vijay Abraham I)
- Simplify register base address computation for endpoint BAR configuration
(Kishon Vijay Abraham I)
- Add support to configure virtual functions in cadence endpoint driver
(Kishon Vijay Abraham I)
- Add SR-IOV configuration to endpoint test driver (Kishon Vijay Abraham I)
- Document configfs usage to create virtual functions for endpoints (Kishon
Vijay Abraham I)
* remotes/lorenzo/pci/endpoint:
Documentation: PCI: endpoint/pci-endpoint-cfs: Guide to use SR-IOV
misc: pci_endpoint_test: Populate sriov_configure ops to configure SR-IOV device
PCI: cadence: Add support to configure virtual functions
PCI: cadence: Simplify code to get register base address for configuring BAR
PCI: endpoint: Add virtual function number in pci_epc ops
PCI: endpoint: Add support to link a physical function to a virtual function
PCI: endpoint: Add support to add virtual function in endpoint core
dt-bindings: PCI: pci-ep: Add binding to specify virtual function
2021-09-02 14:56:51 -05:00
4a4547db56
Merge branch 'remotes/lorenzo/pci/tegra194'
...
- Fix handling BME_CHGED event (Om Prakash Singh)
- Fix MSI-X programming (Om Prakash Singh)
- Disable interrupts before entering L2 (Om Prakash Singh)
- Don't allow suspend when Tegra PCIe is in EP mode (Om Prakash Singh)
* remotes/lorenzo/pci/tegra194:
PCI: tegra194: Cleanup unused code
PCI: tegra194: Don't allow suspend when Tegra PCIe is in EP mode
PCI: tegra194: Disable interrupts before entering L2
PCI: tegra194: Fix MSI-X programming
PCI: tegra194: Fix handling BME_CHGED event
2021-09-02 14:56:50 -05:00
af42a0d4a8
Merge branch 'remotes/lorenzo/pci/keembay'
...
- Add Intel Keem Bay PCIe controller driver and DT binding (Srikanth
Thokala)
* remotes/lorenzo/pci/keembay:
PCI: keembay: Add support for Intel Keem Bay
dt-bindings: PCI: Add Intel Keem Bay PCIe controller
2021-09-02 14:56:48 -05:00
a549a33c37
Merge branch 'pci/visconti'
...
- Add Toshiba Visconti PCIe host controller driver (Nobuhiro Iwamatsu)
* pci/visconti:
MAINTAINERS: Add entries for Toshiba Visconti PCIe controller
PCI: visconti: Add Toshiba Visconti PCIe host controller driver
2021-09-02 14:56:46 -05:00
0e52059a82
Merge branch 'pci/rockchip-dwc'
...
- Add Rockchip RK356X host controller driver (Simon Xue)
* pci/rockchip-dwc:
PCI: rockchip-dwc: Add Rockchip RK356X host controller driver
2021-09-02 14:56:45 -05:00
bd8bb4d097
Merge branch 'pci/dwc'
...
- Remove surplus break statement (Krzysztof Wilczyński)
* pci/dwc:
PCI: dwc: Remove surplus break statement after return
2021-09-02 14:56:45 -05:00
dbf0b9bad0
Merge branch 'pci/artpec6'
...
- Remove surplus break statement and local code block (Krzysztof
Wilczyński)
* pci/artpec6:
PCI: artpec6: Remove local code block from switch statement
PCI: artpec6: Remove surplus break statement after return
2021-09-02 14:56:45 -05:00
0e898eb8df
PCI: rockchip-dwc: Add Rockchip RK356X host controller driver
...
Add a driver for the DesignWare-based PCIe controller found on
RK356X. The existing pcie-rockchip-host driver is only used for
the Rockchip-designed IP found on RK3399.
Link: https://lore.kernel.org/r/20210625065511.1096935-1-xxm@rock-chips.com
Tested-by: Peter Geis <pgwipeout@gmail.com >
Signed-off-by: Simon Xue <xxm@rock-chips.com >
Signed-off-by: Shawn Lin <shawn.lin@rock-chips.com >
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com >
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com >
Reviewed-by: Kever Yang <kever.yang@rock-chips.com >
Reviewed-by: Rob Herring <robh@kernel.org >
2021-08-31 14:58:20 -05:00
71121fdd79
PCI: dwc: Remove surplus break statement after return
...
As part of code refactoring completed in a0fd361db8
("PCI: dwc: Move
"dbi", "dbi2", and "addr_space" resource setup into common code"),
dw_plat_add_pcie_ep() was removed and the call to the dw_pcie_ep_init() was
moved into dw_plat_pcie_probe().
This left a break statement behind that is not needed any more as as
dw_plat_pcie_probe() returns immediately after calling dw_pcie_ep_init().
Remove this surplus break statement that became dead code.
Suggested-by: Bjorn Helgaas <bhelgaas@google.com >
Link: https://lore.kernel.org/r/20210701210252.1638709-1-kw@linux.com
Signed-off-by: Krzysztof Wilczyński <kw@linux.com >
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com >
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com >
2021-08-31 14:56:43 -05:00
30492c12d2
PCI: artpec6: Remove local code block from switch statement
...
The switch statement in the artpec6_pcie_probe() has a local code block
where "val" is defined and immediately used by the artpec6_pcie_readl().
This extra code block adds brackets at the same indentation level as the
switch statement itself which can hinder readability of the code.
Move the "val" declaration to the top of the function and remove
the extra code block from the switch statement.
Suggested-by: Bjorn Helgaas <bhelgaas@google.com >
Link: https://lore.kernel.org/r/20210701204401.1636562-2-kw@linux.com
Signed-off-by: Krzysztof Wilczyński <kw@linux.com >
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com >
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com >
Acked-by: Jesper Nilsson <jesper.nilsson@axis.com >
2021-08-31 14:54:33 -05:00
ee6f85683e
PCI: artpec6: Remove surplus break statement after return
...
As part of code refactoring completed in a0fd361db8
("PCI: dwc: Move
"dbi", "dbi2", and "addr_space" resource setup into common code"),
artpec6_add_pcie_ep() was removed and the call to the dw_pcie_ep_init()
was moved into artpec6_pcie_probe().
This left a break statement behind that is not needed any more as
artpec6_pcie_probe() returns immediately after calling dw_pcie_ep_init().
Remove this surplus break statement that became dead code.
Link: https://lore.kernel.org/r/20210701204401.1636562-1-kw@linux.com
Signed-off-by: Krzysztof Wilczyński <kw@linux.com >
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com >
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com >
Acked-by: Jesper Nilsson <jesper.nilsson@axis.com >
2021-08-31 14:53:06 -05:00
da36024a4e
PCI: visconti: Add Toshiba Visconti PCIe host controller driver
...
Add support for the PCIe RC controller on Toshiba Visconti ARM SoCs. This
PCIe controller is based on the Synopsys DesignWare PCIe core.
Link: https://lore.kernel.org/r/20210811083830.784065-3-nobuhiro1.iwamatsu@toshiba.co.jp
Signed-off-by: Yuji Ishikawa <yuji2.ishikawa@toshiba.co.jp >
Signed-off-by: Nobuhiro Iwamatsu <nobuhiro1.iwamatsu@toshiba.co.jp >
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com >
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com >
Reviewed-by: Rob Herring <robh@kernel.org >
2021-08-31 14:52:05 -05:00
0c87f90b4c
PCI: keembay: Add support for Intel Keem Bay
...
Add driver for Intel Keem Bay SoC PCIe controller. This controller
is based on DesignWare PCIe core.
In Root Complex mode, only internal reference clock is possible for
Keem Bay A0. For Keem Bay B0, external reference clock can be used
and will be the default configuration. Currently, keembay_pcie_of_data
structure has one member. It will be expanded later to handle this
difference.
Endpoint mode link initialization is handled by the boot firmware.
Link: https://lore.kernel.org/r/20210805211010.29484-3-srikanth.thokala@intel.com
Signed-off-by: Wan Ahmad Zainie <wan.ahmad.zainie.wan.mohamad@intel.com >
Signed-off-by: Srikanth Thokala <srikanth.thokala@intel.com >
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com >
Reviewed-by: Krzysztof Wilczyński <kw@linux.com >
Reviewed-by: Rob Herring <robh@kernel.org >
Acked-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com >
2021-08-20 13:47:05 +01:00
53fd3cbe5e
PCI: endpoint: Add virtual function number in pci_epc ops
...
Add virtual function number in pci_epc ops. EPC controller driver
can perform virtual function specific initialization based on the
virtual function number.
Link: https://lore.kernel.org/r/20210819123343.1951-5-kishon@ti.com
Signed-off-by: Kishon Vijay Abraham I <kishon@ti.com >
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com >
2021-08-19 14:13:28 +01:00
f62750e691
PCI: tegra194: Cleanup unused code
...
Remove unused code from function tegra_pcie_config_ep.
Link: https://lore.kernel.org/r/20210623100525.19944-6-omp@nvidia.com
Signed-off-by: Om Prakash Singh <omp@nvidia.com >
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com >
Reviewed-by: Bjorn Helgaas <bhelgaas@google.com >
Acked-by: Vidya Sagar <vidyas@nvidia.com >
2021-08-04 12:28:17 +01:00
de2bbf2b71
PCI: tegra194: Don't allow suspend when Tegra PCIe is in EP mode
...
When Tegra PCIe is in endpoint mode it should be available for root port.
PCIe link up by root port fails if it is in suspend state. So, don't allow
Tegra to suspend when endpoint mode is enabled.
Link: https://lore.kernel.org/r/20210623100525.19944-5-omp@nvidia.com
Signed-off-by: Om Prakash Singh <omp@nvidia.com >
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com >
Reviewed-by: Bjorn Helgaas <bhelgaas@google.com >
Acked-by: Vidya Sagar <vidyas@nvidia.com >
2021-08-04 12:28:17 +01:00
834c5cf2b5
PCI: tegra194: Disable interrupts before entering L2
...
In suspend_noirq() call if link doesn't goto L2, PERST# is asserted
to bring link to detect state. However, this is causing surprise
link down AER error. Since Kernel is executing noirq suspend calls,
AER interrupt is not processed. PME and AER are shared interrupts
and PCIe subsystem driver enables wake capability of PME irq during
suspend. So this AER will cause suspend failure due to pending
AER interrupt.
After PCIe link is in L2, interrupts are not expected since PCIe
controller will be in reset state. Disable PCIe interrupts before
going to L2 state to avoid pending AER interrupt.
Link: https://lore.kernel.org/r/20210623100525.19944-4-omp@nvidia.com
Signed-off-by: Om Prakash Singh <omp@nvidia.com >
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com >
Reviewed-by: Bjorn Helgaas <bhelgaas@google.com >
Acked-by: Vidya Sagar <vidyas@nvidia.com >
2021-08-04 12:28:17 +01:00
43537cf7e3
PCI: tegra194: Fix MSI-X programming
...
Lower order MSI-X address is programmed in MSIX_ADDR_MATCH_HIGH_OFF
DBI register instead of higher order address. This patch fixes this
programming mistake.
Link: https://lore.kernel.org/r/20210623100525.19944-3-omp@nvidia.com
Signed-off-by: Om Prakash Singh <omp@nvidia.com >
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com >
Reviewed-by: Bjorn Helgaas <bhelgaas@google.com >
Acked-by: Vidya Sagar <vidyas@nvidia.com >
2021-08-04 12:28:17 +01:00
ceb1412c1c
PCI: tegra194: Fix handling BME_CHGED event
...
In tegra_pcie_ep_hard_irq(), APPL_INTR_STATUS_L0 is stored in val and again
APPL_INTR_STATUS_L1_0_0 is also stored in val. So when execution reaches
"if (val & APPL_INTR_STATUS_L0_PCI_CMD_EN_INT)", val is not correct.
Link: https://lore.kernel.org/r/20210623100525.19944-2-omp@nvidia.com
Signed-off-by: Om Prakash Singh <omp@nvidia.com >
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com >
Reviewed-by: Bjorn Helgaas <bhelgaas@google.com >
Acked-by: Vidya Sagar <vidyas@nvidia.com >
2021-08-04 12:28:16 +01:00
d21faba116
PCI: Bulk conversion to generic_handle_domain_irq()
...
Wherever possible, replace constructs that match either
generic_handle_irq(irq_find_mapping()) or
generic_handle_irq(irq_linear_revmap()) to a single call to
generic_handle_domain_irq().
Link: https://lore.kernel.org/r/20210802162630.2219813-4-maz@kernel.org
Signed-off-by: Marc Zyngier <maz@kernel.org >
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com >
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com >
2021-08-02 11:53:05 -05:00
316a2c9b6a
Merge tag 'pci-v5.14-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci
...
Pull pci updates from Bjorn Helgaas:
"Enumeration:
- Fix dsm_label_utf16s_to_utf8s() buffer overrun (Krzysztof
Wilczyński)
- Rely on lengths from scnprintf(), dsm_label_utf16s_to_utf8s()
(Krzysztof Wilczyński)
- Use sysfs_emit() and sysfs_emit_at() in "show" functions (Krzysztof
Wilczyński)
- Fix 'resource_alignment' newline issues (Krzysztof Wilczyński)
- Add 'devspec' newline (Krzysztof Wilczyński)
- Dynamically map ECAM regions (Russell King)
Resource management:
- Coalesce host bridge contiguous apertures (Kai-Heng Feng)
PCIe native device hotplug:
- Ignore Link Down/Up caused by DPC (Lukas Wunner)
Power management:
- Leave Apple Thunderbolt controllers on for s2idle or standby
(Konstantin Kharlamov)
Virtualization:
- Work around Huawei Intelligent NIC VF FLR erratum (Chiqijun)
- Clarify error message for unbound IOV devices (Moritz Fischer)
- Add pci_reset_bus_function() Secondary Bus Reset interface (Raphael
Norwitz)
Peer-to-peer DMA:
- Simplify distance calculation (Christoph Hellwig)
- Finish RCU conversion of pdev->p2pdma (Eric Dumazet)
- Rename upstream_bridge_distance() and rework doc (Logan Gunthorpe)
- Collect acs list in stack buffer to avoid sleeping (Logan
Gunthorpe)
- Use correct calc_map_type_and_dist() return type (Logan Gunthorpe)
- Warn if host bridge not in whitelist (Logan Gunthorpe)
- Refactor pci_p2pdma_map_type() (Logan Gunthorpe)
- Avoid pci_get_slot(), which may sleep (Logan Gunthorpe)
Altera PCIe controller driver:
- Add Joyce Ooi as Altera PCIe maintainer (Joyce Ooi)
Broadcom iProc PCIe controller driver:
- Fix multi-MSI base vector number allocation (Sandor Bodo-Merle)
- Support multi-MSI only on uniprocessor kernel (Sandor Bodo-Merle)
Freescale i.MX6 PCIe controller driver:
- Limit DBI register length for imx6qp PCIe (Richard Zhu)
- Add "vph-supply" for PHY supply voltage (Richard Zhu)
- Enable PHY internal regulator when supplied >3V (Richard Zhu)
- Remove imx6_pcie_probe() redundant error message (Zhen Lei)
Intel Gateway PCIe controller driver:
- Fix INTx enable (Martin Blumenstingl)
Marvell Aardvark PCIe controller driver:
- Fix checking for PIO Non-posted Request (Pali Rohár)
- Implement workaround for the readback value of VEND_ID (Pali Rohár)
MediaTek PCIe controller driver:
- Remove redundant error printing in mtk_pcie_subsys_powerup() (Zhen
Lei)
MediaTek PCIe Gen3 controller driver:
- Add missing MODULE_DEVICE_TABLE (Zou Wei)
Microchip PolarFlare PCIe controller driver:
- Make struct event_descs static (Krzysztof Wilczyński)
Microsoft Hyper-V host bridge driver:
- Fix race condition when removing the device (Long Li)
- Remove bus device removal unused refcount/functions (Long Li)
Mobiveil PCIe controller driver:
- Remove unused readl and writel functions (Krzysztof Wilczyński)
NVIDIA Tegra PCIe controller driver:
- Add missing MODULE_DEVICE_TABLE (Zou Wei)
NVIDIA Tegra194 PCIe controller driver:
- Fix tegra_pcie_ep_raise_msi_irq() ill-defined shift (Jon Hunter)
- Fix host initialization during resume (Vidya Sagar)
Rockchip PCIe controller driver:
- Register IRQ handlers after device and data are ready (Javier
Martinez Canillas)"
* tag 'pci-v5.14-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (48 commits)
PCI/P2PDMA: Finish RCU conversion of pdev->p2pdma
PCI: xgene: Annotate __iomem pointer
PCI: Fix kernel-doc formatting
PCI: cpcihp: Declare cpci_debug in header file
MAINTAINERS: Add Joyce Ooi as Altera PCIe maintainer
PCI: rockchip: Register IRQ handlers after device and data are ready
PCI: tegra194: Fix tegra_pcie_ep_raise_msi_irq() ill-defined shift
PCI: aardvark: Implement workaround for the readback value of VEND_ID
PCI: aardvark: Fix checking for PIO Non-posted Request
PCI: tegra194: Fix host initialization during resume
PCI: tegra: Add missing MODULE_DEVICE_TABLE
PCI: imx6: Enable PHY internal regulator when supplied >3V
dt-bindings: imx6q-pcie: Add "vph-supply" for PHY supply voltage
PCI: imx6: Limit DBI register length for imx6qp PCIe
PCI: imx6: Remove imx6_pcie_probe() redundant error message
PCI: intel-gw: Fix INTx enable
PCI: iproc: Support multi-MSI only on uniprocessor kernel
PCI: iproc: Fix multi-MSI base vector number allocation
PCI: mediatek-gen3: Add missing MODULE_DEVICE_TABLE
PCI: Dynamically map ECAM regions
...
2021-07-08 12:06:20 -07:00
5a57de58a3
Merge branch 'pci/host/tegra194'
...
- Fix host init during resume (Vidya Sagar)
- Fix ill-defined MSI IRQ shift behavior (Jon Hunter)
* pci/host/tegra194:
PCI: tegra194: Fix tegra_pcie_ep_raise_msi_irq() ill-defined shift
PCI: tegra194: Fix host initialization during resume
2021-07-06 10:56:28 -05:00
364a716bd7
Merge branch 'pci/host/intel-gw'
...
- Fix INTx enable (Martin Blumenstingl)
* pci/host/intel-gw:
PCI: intel-gw: Fix INTx enable
2021-07-06 10:56:26 -05:00
f67092eff2
PCI: tegra194: Fix tegra_pcie_ep_raise_msi_irq() ill-defined shift
...
tegra_pcie_ep_raise_msi_irq() shifted a signed 32-bit value left by 31
bits. The behavior of this is implementation-defined.
Replace the shift by BIT(), which is well-defined.
Found by cppcheck:
$ cppcheck --enable=all drivers/pci/controller/dwc/pcie-tegra194.c
Checking drivers/pci/controller/dwc/pcie-tegra194.c ...
drivers/pci/controller/dwc/pcie-tegra194.c:1829:23: portability: Shifting signed 32-bit value by 31 bits is implementation-defined behaviour. See condition at line 1826. [shiftTooManyBitsSigned]
appl_writel(pcie, (1 << irq), APPL_MSI_CTRL_1);
^
[bhelgaas: commit log]
Link: https://lore.kernel.org/r/20210618160219.303092-1-jonathanh@nvidia.com
Fixes: c57247f940
("PCI: tegra: Add support for PCIe endpoint mode in Tegra194")
Signed-off-by: Jon Hunter <jonathanh@nvidia.com >
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com >
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com >
2021-06-28 18:26:46 -05:00
c4bf1f25c6
PCI: tegra194: Fix host initialization during resume
...
Commit 275e88b06a
("PCI: tegra: Fix host link initialization") broke
host initialization during resume as it misses out calling the API
dw_pcie_setup_rc() which is required for host and MSI initialization.
Link: https://lore.kernel.org/r/20210504172157.29712-1-vidyas@nvidia.com
Fixes: 275e88b06a
("PCI: tegra: Fix host link initialization")
Tested-by: Jon Hunter <jonathanh@nvidia.com >
Signed-off-by: Vidya Sagar <vidyas@nvidia.com >
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com >
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com >
2021-06-24 17:45:23 -05:00
d2ce69ca25
PCI: imx6: Enable PHY internal regulator when supplied >3V
...
The i.MX8MQ PCIe PHY needs 1.8V in default but can be supplied by either a
1.8V or a 3.3V regulator.
The "vph-supply" DT property tells us which external regulator supplies the
PHY. If that regulator supplies anything over 3V, enable the PHY's internal
3.3V-to-1.8V regulator.
Link: https://lore.kernel.org/r/1622771269-13844-3-git-send-email-hongxing.zhu@nxp.com
Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com >
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com >
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com >
Reviewed-by: Lucas Stach <l.stach@pengutronix.de >
2021-06-24 14:50:34 -05:00
7a289a164c
PCI: imx6: Limit DBI register length for imx6qp PCIe
...
Define the length of the DBI registers and limit config space to its
length. This makes sure that the kernel does not access registers beyond
that point that otherwise would lead to an abort on the i.MX 6QuadPlus.
See commit 075af61c19
("PCI: imx6: Limit DBI register length") that
resolves a similar issue on the i.MX 6Quad PCIe.
Link: https://lore.kernel.org/r/1613789388-2495-2-git-send-email-hongxing.zhu@nxp.com
Signed-off-by: Richard Zhu <hongxing.zhu@nxp.com >
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com >
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com >
Reviewed-by: Lucas Stach <l.stach@pengutronix.de >
Reviewed-by: Krzysztof Wilczyński <kw@linux.com >
2021-06-24 14:50:34 -05:00
fd6403756f
PCI: imx6: Remove imx6_pcie_probe() redundant error message
...
When devm_ioremap_resource() fails, __devm_ioremap_resource() prints an
error message including the device name, failure cause, and possibly
resource information.
Remove the error message from imx6_pcie_probe() since it's redundant.
Link: https://lore.kernel.org/r/20210511114547.5601-1-thunder.leizhen@huawei.com
Reported-by: Hulk Robot <hulkci@huawei.com >
Signed-off-by: Zhen Lei <thunder.leizhen@huawei.com >
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com >
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com >
Reviewed-by: Krzysztof Wilczyński <kw@linux.com >
Acked-by: Richard Zhu <hongxing.zhu@nxp.com >
2021-06-24 14:49:46 -05:00
655832d12f
PCI: intel-gw: Fix INTx enable
...
The legacy PCI interrupt lines need to be enabled using PCIE_APP_IRNEN bits
13 (INTA), 14 (INTB), 15 (INTC) and 16 (INTD). The old code however was
taking (for example) "13" as raw value instead of taking BIT(13). Define
the legacy PCI interrupt bits using the BIT() macro and then use these in
PCIE_APP_IRN_INT.
Link: https://lore.kernel.org/r/20210106135540.48420-1-martin.blumenstingl@googlemail.com
Fixes: ed22aaaede
("PCI: dwc: intel: PCIe RC controller driver")
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com >
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com >
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com >
Acked-by: Rahul Tanwar <rtanwar@maxlinear.com >
2021-06-24 14:44:13 -05:00
a512360f45
PCI: tegra194: Fix MCFG quirk build regressions
...
7f10074474
("PCI: tegra: Add Tegra194 MCFG quirks for ECAM errata")
caused a few build regressions:
- 7f10074474
removed the Makefile rule for CONFIG_PCIE_TEGRA194, so
pcie-tegra.c can no longer be built as a module. Restore that rule.
- 7f10074474
added "#ifdef CONFIG_PCIE_TEGRA194" around the native
driver, but that's only set when the driver is built-in (for a module,
CONFIG_PCIE_TEGRA194_MODULE is defined).
The ACPI quirk is completely independent of the rest of the native
driver, so move the quirk to its own file and remove the #ifdef in the
native driver.
- 7f10074474
added symbols that are always defined but used only when
CONFIG_PCIEASPM, which causes warnings when CONFIG_PCIEASPM is not set:
drivers/pci/controller/dwc/pcie-tegra194.c:259:18: warning: ‘event_cntr_data_offset’ defined but not used [-Wunused-const-variable=]
drivers/pci/controller/dwc/pcie-tegra194.c:250:18: warning: ‘event_cntr_ctrl_offset’ defined but not used [-Wunused-const-variable=]
drivers/pci/controller/dwc/pcie-tegra194.c:243:27: warning: ‘pcie_gen_freq’ defined but not used [-Wunused-const-variable=]
Fixes: 7f10074474
("PCI: tegra: Add Tegra194 MCFG quirks for ECAM errata")
Link: https://lore.kernel.org/r/20210610064134.336781-1-jonathanh@nvidia.com
Signed-off-by: Jon Hunter <jonathanh@nvidia.com >
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com >
Reviewed-by: Thierry Reding <treding@nvidia.com >
2021-06-18 10:32:34 -05:00
57151b502c
Merge tag 'pci-v5.13-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci
...
Pull pci updates from Bjorn Helgaas:
"Enumeration:
- Release OF node when pci_scan_device() fails (Dmitry Baryshkov)
- Add pci_disable_parity() (Bjorn Helgaas)
- Disable Mellanox Tavor parity reporting (Heiner Kallweit)
- Disable N2100 r8169 parity reporting (Heiner Kallweit)
- Fix RCiEP device to RCEC association (Qiuxu Zhuo)
- Convert sysfs "config", "rom", "reset", "label", "index",
"acpi_index" to static attributes to help fix races in device
enumeration (Krzysztof Wilczyński)
- Convert sysfs "vpd" to static attribute (Heiner Kallweit, Krzysztof
Wilczyński)
- Use sysfs_emit() in "show" functions (Krzysztof Wilczyński)
- Remove unused alloc_pci_root_info() return value (Krzysztof
Wilczyński)
PCI device hotplug:
- Fix acpiphp reference count leak (Feilong Lin)
Power management:
- Fix acpi_pci_set_power_state() debug message (Rafael J. Wysocki)
- Fix runtime PM imbalance (Dinghao Liu)
Virtualization:
- Increase delay after FLR to work around Intel DC P4510 NVMe erratum
(Raphael Norwitz)
MSI:
- Convert rcar, tegra, xilinx to MSI domains (Marc Zyngier)
- For rcar, xilinx, use controller address as MSI doorbell (Marc
Zyngier)
- Remove unused hv msi_controller struct (Marc Zyngier)
- Remove unused PCI core msi_controller support (Marc Zyngier)
- Remove struct msi_controller altogether (Marc Zyngier)
- Remove unused default_teardown_msi_irqs() (Marc Zyngier)
- Let host bridges declare their reliance on MSI domains (Marc
Zyngier)
- Make pci_host_common_probe() declare its reliance on MSI domains
(Marc Zyngier)
- Advertise mediatek lack of built-in MSI handling (Thomas Gleixner)
- Document ways of ending up with NO_MSI (Marc Zyngier)
- Refactor HT advertising of NO_MSI flag (Marc Zyngier)
VPD:
- Remove obsolete Broadcom NIC VPD length-limiting quirk (Heiner
Kallweit)
- Remove sysfs VPD size checking dead code (Heiner Kallweit)
- Convert VPF sysfs file to static attribute (Heiner Kallweit)
- Remove unnecessary pci_set_vpd_size() (Heiner Kallweit)
- Tone down "missing VPD" message (Heiner Kallweit)
Endpoint framework:
- Fix NULL pointer dereference when epc_features not implemented
(Shradha Todi)
- Add missing destroy_workqueue() in endpoint test (Yang Yingliang)
Amazon Annapurna Labs PCIe controller driver:
- Fix compile testing without CONFIG_PCI_ECAM (Arnd Bergmann)
- Fix "no symbols" warnings when compile testing with
CONFIG_TRIM_UNUSED_KSYMS (Arnd Bergmann)
APM X-Gene PCIe controller driver:
- Fix cfg resource mapping regression (Dejin Zheng)
Broadcom iProc PCIe controller driver:
- Return zero for success of iproc_msi_irq_domain_alloc() (Pali
Rohár)
Broadcom STB PCIe controller driver:
- Add reset_control_rearm() stub for !CONFIG_RESET_CONTROLLER (Jim
Quinlan)
- Fix use of BCM7216 reset controller (Jim Quinlan)
- Use reset/rearm for Broadcom STB pulse reset instead of
deassert/assert (Jim Quinlan)
- Fix brcm_pcie_probe() error return for unsupported revision (Wei
Yongjun)
Cavium ThunderX PCIe controller driver:
- Fix compile testing (Arnd Bergmann)
- Fix "no symbols" warnings when compile testing with
CONFIG_TRIM_UNUSED_KSYMS (Arnd Bergmann)
Freescale Layerscape PCIe controller driver:
- Fix ls_pcie_ep_probe() syntax error (comma for semicolon)
(Krzysztof Wilczyński)
- Remove layerscape-gen4 dependencies on OF and ARM64, add dependency
on ARCH_LAYERSCAPE (Geert Uytterhoeven)
HiSilicon HIP PCIe controller driver:
- Remove obsolete HiSilicon PCIe DT description (Dongdong Liu)
Intel Gateway PCIe controller driver:
- Remove unused pcie_app_rd() (Jiapeng Chong)
Intel VMD host bridge driver:
- Program IRTE with Requester ID of VMD endpoint, not child device
(Jon Derrick)
- Disable VMD MSI-X remapping when possible so children can use more
MSI-X vectors (Jon Derrick)
MediaTek PCIe controller driver:
- Configure FC and FTS for functions other than 0 (Ryder Lee)
- Add YAML schema for MediaTek (Jianjun Wang)
- Export pci_pio_to_address() for module use (Jianjun Wang)
- Add MediaTek MT8192 PCIe controller driver (Jianjun Wang)
- Add MediaTek MT8192 INTx support (Jianjun Wang)
- Add MediaTek MT8192 MSI support (Jianjun Wang)
- Add MediaTek MT8192 system power management support (Jianjun Wang)
- Add missing MODULE_DEVICE_TABLE (Qiheng Lin)
Microchip PolarFlare PCIe controller driver:
- Make several symbols static (Wei Yongjun)
NVIDIA Tegra PCIe controller driver:
- Add MCFG quirks for Tegra194 ECAM errata (Vidya Sagar)
- Make several symbols const (Rikard Falkeborn)
- Fix Kconfig host/endpoint typo (Wesley Sheng)
SiFive FU740 PCIe controller driver:
- Add pcie_aux clock to prci driver (Greentime Hu)
- Use reset-simple in prci driver for PCIe (Greentime Hu)
- Add SiFive FU740 PCIe host controller driver and DT binding (Paul
Walmsley, Greentime Hu)
Synopsys DesignWare PCIe controller driver:
- Move MSI Receiver init to dw_pcie_host_init() so it is
re-initialized along with the RC in resume (Jisheng Zhang)
- Move iATU detection earlier to fix regression (Hou Zhiqiang)
TI J721E PCIe driver:
- Add DT binding and TI j721e support for refclk to PCIe connector
(Kishon Vijay Abraham I)
- Add host mode and endpoint mode DT bindings for TI AM64 SoC (Kishon
Vijay Abraham I)
TI Keystone PCIe controller driver:
- Use generic config accessors for TI AM65x (K3) to fix regression
(Kishon Vijay Abraham I)
Xilinx NWL PCIe controller driver:
- Add support for coherent PCIe DMA traffic using CCI (Bharat Kumar
Gogada)
- Add optional "dma-coherent" DT property (Bharat Kumar Gogada)
Miscellaneous:
- Fix kernel-doc warnings (Krzysztof Wilczyński)
- Remove unused MicroGate SyncLink device IDs (Jiri Slaby)
- Remove redundant dev_err() for devm_ioremap_resource() failure
(Chen Hui)
- Remove redundant initialization (Colin Ian King)
- Drop redundant dev_err() for platform_get_irq() errors (Krzysztof
Wilczyński)"
* tag 'pci-v5.13-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (98 commits)
riscv: dts: Add PCIe support for the SiFive FU740-C000 SoC
PCI: fu740: Add SiFive FU740 PCIe host controller driver
dt-bindings: PCI: Add SiFive FU740 PCIe host controller
MAINTAINERS: Add maintainers for SiFive FU740 PCIe driver
clk: sifive: Use reset-simple in prci driver for PCIe driver
clk: sifive: Add pcie_aux clock in prci driver for PCIe driver
PCI: brcmstb: Use reset/rearm instead of deassert/assert
ata: ahci_brcm: Fix use of BCM7216 reset controller
reset: add missing empty function reset_control_rearm()
PCI: Allow VPD access for QLogic ISP2722
PCI/VPD: Add helper pci_get_func0_dev()
PCI/VPD: Remove pci_vpd_find_tag() SRDT handling
PCI/VPD: Remove pci_vpd_find_tag() 'offset' argument
PCI/VPD: Change pci_vpd_init() return type to void
PCI/VPD: Make missing VPD message less alarming
PCI/VPD: Remove pci_set_vpd_size()
x86/PCI: Remove unused alloc_pci_root_info() return value
MAINTAINERS: Add Jianjun Wang as MediaTek PCI co-maintainer
PCI: mediatek-gen3: Add system PM support
PCI: mediatek-gen3: Add MSI support
...
2021-05-05 13:24:11 -07:00
882862aaac
Merge branch 'pci/tegra'
...
- Add MCFG quirks for Tegra194 ECAM errata (Vidya Sagar)
* pci/tegra:
PCI: tegra: Add Tegra194 MCFG quirks for ECAM errata
2021-05-04 10:43:32 -05:00
5b8dafa1e3
Merge branch 'remotes/lorenzo/pci/tegra'
...
- Make several tegra symbols const (Rikard Falkeborn)
- Fix tegra Kconfig host/endpoint typo (Wesley Sheng)
- Fix runtime PM imbalance (Dinghao Liu)
* remotes/lorenzo/pci/tegra:
PCI: tegra: Fix runtime PM imbalance in pex_ep_event_pex_rst_deassert()
PCI: tegra: Fix typo for PCIe endpoint mode in Tegra194
PCI: tegra: Constify static structs
2021-05-04 10:43:29 -05:00
98d771eb3d
Merge branch 'remotes/lorenzo/pci/risc-v'
...
- sifive: Add pcie_aux clock to prci driver (Greentime Hu)
- sifive: Use reset-simple in prci driver for PCIe (Greentime Hu)
- Add SiFive FU740 PCIe host controller driver and DT binding (Paul
Walmsley, Greentime Hu)
* remotes/lorenzo/pci/risc-v:
riscv: dts: Add PCIe support for the SiFive FU740-C000 SoC
PCI: fu740: Add SiFive FU740 PCIe host controller driver
dt-bindings: PCI: Add SiFive FU740 PCIe host controller
MAINTAINERS: Add maintainers for SiFive FU740 PCIe driver
clk: sifive: Use reset-simple in prci driver for PCIe driver
clk: sifive: Add pcie_aux clock in prci driver for PCIe driver
2021-05-04 10:43:28 -05:00
586fbe90f8
Merge branch 'remotes/lorenzo/pci/layerscape'
...
- Fix ls_pcie_ep_probe() syntax error (comma for semicolon) (Krzysztof
Wilczyński)
* remotes/lorenzo/pci/layerscape:
PCI: layerscape: Correct syntax by changing comma to semicolon
2021-05-04 10:43:27 -05:00
a5166a194e
Merge branch 'remotes/lorenzo/pci/dwc'
...
- Use generic config accessors for TI AM65x (K3) to fix regression (Kishon
Vijay Abraham I)
- Move MSI Receiver init to dw_pcie_host_init() so it is re-initialized
along with the RC in resume (Jisheng Zhang)
- Remove unused pcie_app_rd() (Jiapeng Chong)
- Move iATU detection earlier to fix regression (Hou Zhiqiang)
* remotes/lorenzo/pci/dwc:
PCI: dwc: Move iATU detection earlier
PCI: dwc/intel-gw: Remove unused function
PCI: dwc: Move dw_pcie_msi_init() to dw_pcie_setup_rc()
PCI: keystone: Let AM65 use the pci_ops defined in pcie-designware-host.c
2021-05-04 10:43:26 -05:00
ccfc1d5570
Merge branch 'pci/misc'
...
- Fix compile testing of al driver without CONFIG_PCI_ECAM (Arnd Bergmann)
- Fix compile testing of thunder drivers (Arnd Bergmann)
- Fix "no symbols" warnings when compile testing al, thunder driver with
CONFIG_TRIM_UNUSED_KSYMS (Arnd Bergmann)
- Remove unused MicroGate SyncLink device IDs (Jiri Slaby)
- Remove unused alloc_pci_root_info() return value (Krzysztof Wilczyński)
* pci/misc:
x86/PCI: Remove unused alloc_pci_root_info() return value
PCI: Remove MicroGate SyncLink device IDs
PCI: Avoid building empty drivers
PCI: thunder: Fix compile testing
PCI: al: Select CONFIG_PCI_ECAM
2021-05-04 10:43:25 -05:00
e7e21b3a33
PCI: fu740: Add SiFive FU740 PCIe host controller driver
...
Add driver for the SiFive FU740 PCIe host controller.
This controller is based on the DesignWare PCIe core.
Co-developed-by: Henry Styles <hes@sifive.com >
Co-developed-by: Erik Danie <erik.danie@sifive.com >
Co-developed-by: Greentime Hu <greentime.hu@sifive.com >
Link: https://lore.kernel.org/r/20210504105940.100004-6-greentime.hu@sifive.com
Signed-off-by: Paul Walmsley <paul.walmsley@sifive.com >
Signed-off-by: Henry Styles <hes@sifive.com >
Signed-off-by: Erik Danie <erik.danie@sifive.com >
Signed-off-by: Greentime Hu <greentime.hu@sifive.com >
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com >
2021-05-04 14:58:22 +01:00
8bcca26585
PCI: dwc: Move iATU detection earlier
...
dw_pcie_ep_init() depends on the detected iATU region numbers to allocate
the in/outbound window management bitmap. It fails after 281f1f99cf
("PCI: dwc: Detect number of iATU windows").
Move the iATU region detection into a new function, move the detection to
the very beginning of dw_pcie_host_init() and dw_pcie_ep_init(). Also
remove it from the dw_pcie_setup(), since it's more like a software
initialization step than hardware setup.
Link: https://lore.kernel.org/r/20210125044803.4310-1-Zhiqiang.Hou@nxp.com
Link: https://lore.kernel.org/linux-pci/20210407131255.702054-1-dmitry.baryshkov@linaro.org
Link: https://lore.kernel.org/r/20210413142219.2301430-1-dmitry.baryshkov@linaro.org
Fixes: 281f1f99cf
("PCI: dwc: Detect number of iATU windows")
Tested-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com >
Tested-by: Marek Szyprowski <m.szyprowski@samsung.com >
Tested-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org >
Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com >
[DB: moved dw_pcie_iatu_detect to happen after host_init callback]
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org >
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com >
Reviewed-by: Rob Herring <robh@kernel.org >
Cc: stable@vger.kernel.org # v5.11+
Cc: Marek Szyprowski <m.szyprowski@samsung.com >
2021-04-29 17:05:59 +01:00
7d499169f7
PCI: dwc/intel-gw: Remove unused function
...
Fix the following clang warning:
drivers/pci/controller/dwc/pcie-intel-gw.c:84:19: warning: unused
function 'pcie_app_rd' [-Wunused-function].
Link: https://lore.kernel.org/r/1618475577-99198-1-git-send-email-jiapeng.chong@linux.alibaba.com
Reported-by: Abaci Robot <abaci@linux.alibaba.com >
Signed-off-by: Jiapeng Chong <jiapeng.chong@linux.alibaba.com >
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com >
Reviewed-by: Krzysztof Wilczyński <kw@linux.com >
2021-04-29 17:05:59 +01:00
294353d950
PCI: dwc: Move dw_pcie_msi_init() to dw_pcie_setup_rc()
...
If the host which makes use of IP's integrated MSI Receiver losts
power during suspend, we need to reinit the RC and MSI Receiver in
resume. But after we move dw_pcie_msi_init() into the core, we have no
API to do so. Usually the dwc users need to call dw_pcie_setup_rc() to
reinit the RC, we can solve this problem by moving dw_pcie_msi_init()
to dw_pcie_setup_rc().
Link: https://lore.kernel.org/r/20210325152604.6e79deba@xhacker.debian
Signed-off-by: Jisheng Zhang <Jisheng.Zhang@synaptics.com >
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com >
Reviewed-by: Rob Herring <robh@kernel.org >
2021-04-29 17:05:58 +01:00
7f10074474
PCI: tegra: Add Tegra194 MCFG quirks for ECAM errata
...
The PCIe controller in Tegra194 SoC is not ECAM-compliant. With the
current hardware design, ECAM can be enabled only for one controller (the
C5 controller) with bus numbers starting from 160 instead of 0. A different
approach is taken to avoid this abnormal way of enabling ECAM for just one
controller but to enable configuration space access for all the other
controllers. In this approach, ops are added through MCFG quirk mechanism
which access the configuration spaces by dynamically programming iATU
(internal AddressTranslation Unit) to generate respective configuration
accesses just like the way it is done in DesignWare core sub-system.
This issue is specific to Tegra194 and it would be fixed in the future
generations of Tegra SoCs.
Link: https://lore.kernel.org/r/20210416134537.19474-1-vidyas@nvidia.com
Signed-off-by: Vidya Sagar <vidyas@nvidia.com >
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com >
2021-04-16 11:34:17 -05:00
5859c926d1
PCI: tegra: Fix runtime PM imbalance in pex_ep_event_pex_rst_deassert()
...
pm_runtime_get_sync() will increase the runtime PM counter
even it returns an error. Thus a pairing decrement is needed
to prevent refcount leak. Fix this by replacing this API with
pm_runtime_resume_and_get(), which will not change the runtime
PM counter on error.
Link: https://lore.kernel.org/r/20210408072700.15791-1-dinghao.liu@zju.edu.cn
Signed-off-by: Dinghao Liu <dinghao.liu@zju.edu.cn >
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com >
Acked-by: Thierry Reding <treding@nvidia.com >
2021-04-08 18:10:35 +01:00
10739e2a5e
PCI: tegra: Fix typo for PCIe endpoint mode in Tegra194
...
In config PCIE_TEGRA194_EP the mode incorrectly is referred to as
host mode. Fix it.
Link: https://lore.kernel.org/r/20201231032539.22322-1-wesley.sheng@amd.com
Signed-off-by: Wesley Sheng <wesley.sheng@amd.com >
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com >
Reviewed-by: Krzysztof Wilczyński <kw@linux.com >
Acked-by: Vidya Sagar <vidyas@nvidia.com >
2021-03-22 18:18:30 +00:00
1b7996a528
PCI: layerscape: Correct syntax by changing comma to semicolon
...
Replace command with a semicolon to correct syntax and to prevent
potential unspecified behaviour and/or unintended side effects.
Related:
https://lore.kernel.org/linux-pci/20201216131944.14990-1-zhengyongjun3@huawei.com/
Co-authored-by: Zheng Yongjun <zhengyongjun3@huawei.com >
Link: https://lore.kernel.org/r/20210311033745.1547044-1-kw@linux.com
Signed-off-by: Krzysztof Wilczyński <kw@linux.com >
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com >
Acked-by: Roy Zang <roy.zang@nxp.com >
2021-03-22 17:24:19 +00:00