]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
arm: mvebu: a38x: serdes: Don't overwrite PCI device ID
authorPali Rohár <pali@kernel.org>
Fri, 24 Sep 2021 20:59:19 +0000 (22:59 +0200)
committerStefan Roese <sr@denx.de>
Fri, 8 Oct 2021 06:33:52 +0000 (08:33 +0200)
PCI device ID is part of the PCIe controller SoC / revision. For Root
Complex mode (which is the default and the only mode supported currently
by U-Boot and Linux kernel), it is PCI device ID of PCIe Root Port device.

If there is some issue with this device ID, it should be set / updated by
PCIe controller driver (pci_mvebu.c), as this register resides in address
space of the controller. It shouldn't be done in SerDes initialization
code.

In the worst case (a specific board for example) it could be done via
U-Boot's weak function board_pex_config().

But it should not be overwritten globally for all A38x devices.

Signed-off-by: Pali Rohár <pali@kernel.org>
Reviewed-by: Marek Behún <marek.behun@nic.cz>
Reviewed-by: Stefan Roese <sr@denx.de>
arch/arm/mach-mvebu/serdes/a38x/ctrl_pex.c

index 7c18df8113a20d66b0f2bb61106ee37af4513591..a7e45a5550ddcfbf9a3365e2e3e1c5b9e6b095b4 100644 (file)
@@ -186,33 +186,6 @@ int hws_pex_config(const struct serdes_map *serdes_map, u8 count)
                        (": Link upgraded to Gen2 based on client capabilities\n");
        }
 
-       /* Update pex DEVICE ID */
-       ctrl_mode = sys_env_model_get();
-
-       for (idx = 0; idx < count; idx++) {
-               serdes_type = serdes_map[idx].serdes_type;
-               /* configuration for PEX only */
-               if ((serdes_type != PEX0) && (serdes_type != PEX1) &&
-                   (serdes_type != PEX2) && (serdes_type != PEX3))
-                       continue;
-
-               if ((serdes_type != PEX0) &&
-                   ((serdes_map[idx].serdes_mode == PEX_ROOT_COMPLEX_X4) ||
-                    (serdes_map[idx].serdes_mode == PEX_END_POINT_X4))) {
-                       /* for PEX by4 - relevant for the first port only */
-                       continue;
-               }
-
-               pex_idx = serdes_type - PEX0;
-               dev_id = reg_read(PEX_CFG_DIRECT_ACCESS
-                                 (pex_idx, PEX_DEVICE_AND_VENDOR_ID));
-               dev_id &= 0xffff;
-               dev_id |= ((ctrl_mode << 16) & 0xffff0000);
-               reg_write(PEX_CFG_DIRECT_ACCESS
-                         (pex_idx, PEX_DEVICE_AND_VENDOR_ID), dev_id);
-       }
-       DEBUG_INIT_FULL_C("Update PEX Device ID ", ctrl_mode, 4);
-
        return MV_OK;
 }