u-boot/drivers/pci
Pali Rohár 4cd61c43fd arm: a37xx: pci: Fix handling PIO config error responses
Returning fabricated CRS value (0xFFFF0001) by PCIe Root Complex to OS is
allowed only for 4-byte PCI_VENDOR_ID config read request and only when
CRSSVE bit in Root Port PCIe device is enabled. In all other error PCIe
Root Complex must return all-ones.

So implement this logic in pci-aardvark.c driver properly.

aardvark HW does not have Root Port PCIe device and U-Boot does not
implement emulation of this device. So expect that CRSSVE bit is set as
U-Boot can already handle CRS value for PCI_VENDOR_ID config read request.

More callers of pci_bus_read_config() function in U-Boot do not check for
return value, but check readback value. Therefore always fill readback
value in pcie_advk_read_config() function. On error fill all-ones of
correct size as it is required for PCIe Root Complex.

And also correctly propagates error from failed config write request to
return value of pcie_advk_write_config() function. Most U-Boot callers
ignores this return value, but it is a good idea to return correct value
from function.

These issues about return value of failed config read requests, including
special handling of CRS were reported by Lorenzo and Bjorn for Linux kernel
driver pci-aardvark together with quotes from PCIe r4.0 spec, see details:
https://lore.kernel.org/linux-pci/20210624213345.3617-1-pali@kernel.org/t/#u

Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Stefan Roese <sr@denx.de>
2021-08-11 08:42:26 +02:00
..
fsl_pci_init.c pci: fsl_pci_init: Dynamically allocate the PCI regions 2021-03-05 10:25:42 +05:30
Kconfig pci: Require DM_PCI 2021-07-18 21:06:08 -04:00
Makefile pci: ppc: Drop ftpci100 driver 2021-08-06 08:26:48 -04:00
pci-aardvark.c arm: a37xx: pci: Fix handling PIO config error responses 2021-08-11 08:42:26 +02:00
pci-emul-uclass.c dm: Use access methods for dev/uclass private data 2021-01-05 12:24:40 -07:00
pci-rcar-gen2.c dm: treewide: Rename ofdata_to_platdata() to of_to_plat() 2020-12-13 16:51:09 -07:00
pci-rcar-gen3.c pci: renesas: Fix BAR mapping on Gen3 2021-02-20 22:38:28 +01:00
pci-uclass.c dm: pci: add option to map virtual system memory base address 2021-07-18 20:37:39 +02:00
pci_auto.c ppc: Remove caddy2 / vme8349 boards 2021-07-07 19:52:23 -04:00
pci_auto_common.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
pci_common.c pci: Drop DM_PCI check from pci_common 2021-08-05 16:14:36 -04:00
pci_compat.c common: Drop log.h from common header 2020-05-18 21:19:18 -04:00
pci_gt64120.c pci: gt64120: Drop use of DM_PCI 2021-08-05 19:46:35 -04:00
pci_indirect.c pci: Don't use pci_indirect when DM is active 2018-05-08 18:50:23 -04:00
pci_internal.h SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
pci_mpc85xx.c pci: mpc85xx: Support 64-bit bus and cpu address 2021-03-05 10:25:43 +05:30
pci_msc01.c pci: msc01: Drop use of DM_PCI 2021-08-05 19:46:35 -04:00
pci_mvebu.c pci: pci_mvebu: set local dev to number 1 2021-02-26 10:22:29 +01:00
pci_octeontx.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
pci_rom.c video: Fix video on coreboot with the copy buffer 2021-03-27 15:04:30 +13:00
pci_sandbox.c dm: treewide: Rename ..._platdata variables to just ..._plat 2020-12-13 16:51:09 -07:00
pci_sh4.c common: Drop linux/delay.h from common header 2020-05-18 21:19:23 -04:00
pci_sh7751.c common: Drop linux/bitops.h from common header 2020-05-18 21:19:23 -04:00
pci_sh7780.c common: Drop linux/delay.h from common header 2020-05-18 21:19:23 -04:00
pci_tegra.c dm: treewide: Rename ofdata_to_platdata() to of_to_plat() 2020-12-13 16:51:09 -07:00
pci_x86.c dm: pci: Update the PCI read_config() method to const dev * 2020-02-05 19:33:45 -07:00
pcie_brcmstb.c pci: pcie-brcmstb: Fix inbound window configurations 2021-02-18 11:56:25 +01:00
pcie_dw_common.c drivers: pci: pcie_dw_common: fix Werror compilation error 2021-05-31 16:35:55 +08:00
pcie_dw_common.h pci: add common Designware PCIe functions 2021-04-15 10:43:17 +08:00
pcie_dw_meson.c pci: add Amlogic Meson Designware PCIe controller 2021-04-15 10:43:17 +08:00
pcie_dw_mvebu.c pcie: designware: mvebu: do not configure ATU for IO when not used 2021-05-16 06:48:45 +02:00
pcie_dw_rockchip.c pci: pcie_dw_rockchip: Replace msleep occurences by udelay 2021-06-18 14:36:54 +08:00
pcie_dw_sifive.c drivers: pci: add pcie support for fu740 2021-05-31 16:35:54 +08:00
pcie_dw_ti.c pci: pcie_dw_ti: migrate to common Designware PCIe functions 2021-04-15 10:43:17 +08:00
pcie_ecam_generic.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
pcie_ecam_synquacer.c pci: synquacer: Add SynQuacer ECAM based PCIe driver 2021-07-06 14:07:36 -04:00
pcie_fsl.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
pcie_fsl.h dm: pci: fsl: Correct the workaround of erratum A-007815 2020-10-23 16:52:09 +05:30
pcie_fsl_fixup.c treewide: convert bd_t to struct bd_info by coccinelle 2020-07-17 09:30:13 -04:00
pcie_imx.c pci: imx: Drop use of DM_PCI 2021-08-05 19:46:35 -04:00
pcie_intel_fpga.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
pcie_iproc.c dm: pci: Correct use of wrong flag name 2021-02-03 03:38:41 -07:00
pcie_layerscape.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
pcie_layerscape.h pci: layerscape: Remove the shadow SVR definitions 2021-02-08 14:01:18 +05:30
pcie_layerscape_ep.c pci: layerscape-ep: Add check of the PCIe controller enablement 2021-06-17 11:46:11 +05:30
pcie_layerscape_fixup.c dm: Avoid accessing seq directly 2020-12-18 20:32:21 -07:00
pcie_layerscape_fixup_common.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
pcie_layerscape_fixup_common.h treewide: convert bd_t to struct bd_info by coccinelle 2020-07-17 09:30:13 -04:00
pcie_layerscape_gen4.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
pcie_layerscape_gen4.h pci: Drop dm.h inclusion from header file 2020-08-03 22:19:54 -04:00
pcie_layerscape_gen4_fixup.c dm: Avoid accessing seq directly 2020-12-18 20:32:21 -07:00
pcie_layerscape_rc.c pci: layerscape: Change to allocate zeroed memery for struct ls_pcie 2021-03-23 18:06:07 +05:30
pcie_mediatek.c dm: Avoid accessing seq directly 2020-12-18 20:32:21 -07:00
pcie_octeon.c mips: octeon: Add Octeon PCIe host controller driver 2021-04-28 10:05:12 +02:00
pcie_phytium.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
pcie_rockchip.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00
pcie_uniphier.c pci: uniphier: Add UniPhier PCIe controller driver 2021-07-14 16:48:08 -04:00
pcie_xilinx.c common: Drop asm/global_data.h from common header 2021-02-02 15:33:42 -05:00