mirror of
https://github.com/torvalds/linux.git
synced 2026-09-23 05:04:02 +02:00
PCI: Use standard wait times for PCIe link monitoring
Instead of defining the wait values for each driver, use common values defined in the core pci.h header file. Note that while most drivers use the usleep_range(), it looks like these were mostly cargo culted and msleep() is a better choice given the fixed delay that the specification calls for. Convert all drivers to msleep() and use the existing definition. Signed-off-by: Thierry Reding <treding@nvidia.com> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com> Reviewed-by: Aksh Garg <a-garg7@ti.com> Link: https://patch.msgid.link/20260716-tegra264-pcie-v8-3-23e51589229b@nvidia.com
This commit is contained in:
parent
dc59e4fea9
commit
9cb1b6a781
|
|
@ -16,6 +16,8 @@
|
|||
#include "pcie-cadence-host-common.h"
|
||||
#include "../pci-host-common.h"
|
||||
|
||||
#include "../../pci.h"
|
||||
|
||||
#define LINK_RETRAIN_TIMEOUT HZ
|
||||
|
||||
u64 bar_max_size[] = {
|
||||
|
|
@ -54,12 +56,12 @@ int cdns_pcie_host_wait_for_link(struct cdns_pcie *pcie,
|
|||
int retries;
|
||||
|
||||
/* Check if the link is up or not */
|
||||
for (retries = 0; retries < LINK_WAIT_MAX_RETRIES; retries++) {
|
||||
for (retries = 0; retries < PCIE_LINK_WAIT_MAX_RETRIES; retries++) {
|
||||
if (pcie_link_up(pcie)) {
|
||||
dev_info(dev, "Link up\n");
|
||||
return 0;
|
||||
}
|
||||
usleep_range(LINK_WAIT_USLEEP_MIN, LINK_WAIT_USLEEP_MAX);
|
||||
msleep(PCIE_LINK_WAIT_SLEEP_MS);
|
||||
}
|
||||
|
||||
return -ETIMEDOUT;
|
||||
|
|
|
|||
|
|
@ -10,11 +10,6 @@
|
|||
|
||||
#include <linux/bitfield.h>
|
||||
|
||||
/* Parameters for the waiting for link up routine */
|
||||
#define LINK_WAIT_MAX_RETRIES 10
|
||||
#define LINK_WAIT_USLEEP_MIN 90000
|
||||
#define LINK_WAIT_USLEEP_MAX 100000
|
||||
|
||||
/* Local Management Registers */
|
||||
#define CDNS_PCIE_LM_BASE 0x00100000
|
||||
|
||||
|
|
|
|||
|
|
@ -218,11 +218,11 @@ int mobiveil_bringup_link(struct mobiveil_pcie *pcie)
|
|||
int retries;
|
||||
|
||||
/* check if the link is up or not */
|
||||
for (retries = 0; retries < LINK_WAIT_MAX_RETRIES; retries++) {
|
||||
for (retries = 0; retries < PCIE_LINK_WAIT_MAX_RETRIES; retries++) {
|
||||
if (mobiveil_pcie_link_up(pcie))
|
||||
return 0;
|
||||
|
||||
usleep_range(LINK_WAIT_MIN, LINK_WAIT_MAX);
|
||||
msleep(PCIE_LINK_WAIT_SLEEP_MS);
|
||||
}
|
||||
|
||||
dev_err(&pcie->pdev->dev, "link never came up\n");
|
||||
|
|
|
|||
|
|
@ -122,11 +122,6 @@
|
|||
#define IB_WIN_SIZE ((u64)256 * 1024 * 1024 * 1024)
|
||||
#define MAX_PIO_WINDOWS 8
|
||||
|
||||
/* Parameters for the waiting for link up routine */
|
||||
#define LINK_WAIT_MAX_RETRIES 10
|
||||
#define LINK_WAIT_MIN 90000
|
||||
#define LINK_WAIT_MAX 100000
|
||||
|
||||
#define PAGED_ADDR_BNDRY 0xc00
|
||||
#define OFFSET_TO_PAGE_ADDR(off) \
|
||||
((off & PAGE_LO_MASK) | PAGED_ADDR_BNDRY)
|
||||
|
|
|
|||
|
|
@ -256,9 +256,6 @@ enum {
|
|||
#define PIO_RETRY_CNT 750000 /* 1.5 s */
|
||||
#define PIO_RETRY_DELAY 2 /* 2 us*/
|
||||
|
||||
#define LINK_WAIT_MAX_RETRIES 10
|
||||
#define LINK_WAIT_USLEEP_MIN 90000
|
||||
#define LINK_WAIT_USLEEP_MAX 100000
|
||||
#define RETRAIN_WAIT_MAX_RETRIES 10
|
||||
#define RETRAIN_WAIT_USLEEP_US 2000
|
||||
|
||||
|
|
@ -350,13 +347,13 @@ static int advk_pcie_wait_for_link(struct advk_pcie *pcie)
|
|||
int retries;
|
||||
|
||||
/* check if the link is up or not */
|
||||
for (retries = 0; retries < LINK_WAIT_MAX_RETRIES; retries++) {
|
||||
for (retries = 0; retries < PCIE_LINK_WAIT_MAX_RETRIES; retries++) {
|
||||
if (advk_pcie_link_up(pcie)) {
|
||||
pci_host_common_link_train_delay(pcie->link_gen);
|
||||
return 0;
|
||||
}
|
||||
|
||||
usleep_range(LINK_WAIT_USLEEP_MIN, LINK_WAIT_USLEEP_MAX);
|
||||
msleep(PCIE_LINK_WAIT_SLEEP_MS);
|
||||
}
|
||||
|
||||
return -ETIMEDOUT;
|
||||
|
|
|
|||
|
|
@ -140,11 +140,6 @@
|
|||
#define PCIE_PHY_LINKUP_BIT BIT(0)
|
||||
#define PHY_RDY_LINKUP_BIT BIT(1)
|
||||
|
||||
/* Parameters for the waiting for link up routine */
|
||||
#define LINK_WAIT_MAX_RETRIES 10
|
||||
#define LINK_WAIT_USLEEP_MIN 90000
|
||||
#define LINK_WAIT_USLEEP_MAX 100000
|
||||
|
||||
struct nwl_msi { /* MSI information */
|
||||
DECLARE_BITMAP(bitmap, INT_PCI_MSI_NR);
|
||||
struct irq_domain *dev_domain;
|
||||
|
|
@ -203,10 +198,10 @@ static int nwl_wait_for_link(struct nwl_pcie *pcie)
|
|||
int retries;
|
||||
|
||||
/* check if the link is up or not */
|
||||
for (retries = 0; retries < LINK_WAIT_MAX_RETRIES; retries++) {
|
||||
for (retries = 0; retries < PCIE_LINK_WAIT_MAX_RETRIES; retries++) {
|
||||
if (nwl_phy_link_up(pcie))
|
||||
return 0;
|
||||
usleep_range(LINK_WAIT_USLEEP_MIN, LINK_WAIT_USLEEP_MAX);
|
||||
msleep(PCIE_LINK_WAIT_SLEEP_MS);
|
||||
}
|
||||
|
||||
dev_err(dev, "PHY link never came up\n");
|
||||
|
|
|
|||
|
|
@ -45,11 +45,6 @@
|
|||
#define STG_SYSCON_LNKSTA_OFFSET 0x170
|
||||
#define DATA_LINK_ACTIVE BIT(5)
|
||||
|
||||
/* Parameters for the waiting for link up routine */
|
||||
#define LINK_WAIT_MAX_RETRIES 10
|
||||
#define LINK_WAIT_USLEEP_MIN 90000
|
||||
#define LINK_WAIT_USLEEP_MAX 100000
|
||||
|
||||
struct starfive_jh7110_pcie {
|
||||
struct plda_pcie_rp plda;
|
||||
struct reset_control *resets;
|
||||
|
|
@ -217,12 +212,12 @@ static int starfive_pcie_host_wait_for_link(struct starfive_jh7110_pcie *pcie)
|
|||
int retries;
|
||||
|
||||
/* Check if the link is up or not */
|
||||
for (retries = 0; retries < LINK_WAIT_MAX_RETRIES; retries++) {
|
||||
for (retries = 0; retries < PCIE_LINK_WAIT_MAX_RETRIES; retries++) {
|
||||
if (starfive_pcie_link_up(&pcie->plda)) {
|
||||
dev_info(pcie->plda.dev, "port link up\n");
|
||||
return 0;
|
||||
}
|
||||
usleep_range(LINK_WAIT_USLEEP_MIN, LINK_WAIT_USLEEP_MAX);
|
||||
msleep(PCIE_LINK_WAIT_SLEEP_MS);
|
||||
}
|
||||
|
||||
return -ETIMEDOUT;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user