Skip to contentSkip to conversation

PCI: Add support for J7200 and AM64

PATCH Applied Kishon Vijay Abraham I 2 participants 10 messages Aug 11, 2021 – Aug 19, 2021

Subsystems (6)
lore
Share & tools
lore
#0 lore raw

v3 cover PCI: Add support for J7200 and AM64

This series adds the compatible specific to J7200 and AM64 and applies the erratas and configuration specific to them.

This series also includes Nadeem's patch that adds a quirk in Cadence driver which is used by J7200 [1].

The DT binding for both J7200 and AM64 is already merged.

v1 of the patch series can be found at [2]
v2 of the patch series can be found at [3]

Changes from v2:
1) Drop the patch that does not request or allocate IRQs in probe for J721E/AM654
2) Fix other minor comments given by Lorenzo

Changes from v1:
1) As suggested by Bjorn, used unsigned int :1, instead of bool for structure members
2) Removed using unnecessary local variables and also fixed some code alignment

[1] -> https://lore.kernel.org/r/[email protected]
[2] -> https://lore.kernel.org/r/[email protected]
[3] -> https://lore.kernel.org/r/[email protected]

Kishon Vijay Abraham I (4):
PCI: cadence: Use bitfield for *quirk_retrain_flag* instead of bool
PCI: j721e: Add PCIe support for J7200
PCI: j721e: Add PCIe support for AM64
misc: pci_endpoint_test: Add deviceID for AM64 and J7200

Nadeem Athani (1):
PCI: cadence: Add quirk flag to set minimum delay in LTSSM
Detect.Quiet state

 drivers/misc/pci_endpoint_test.c              |  8 +++
 drivers/pci/controller/cadence/pci-j721e.c    | 61 +++++++++++++++++--
 .../pci/controller/cadence/pcie-cadence-ep.c  |  4 ++
 .../controller/cadence/pcie-cadence-host.c    |  3 +
 drivers/pci/controller/cadence/pcie-cadence.c | 16 +++++
 drivers/pci/controller/cadence/pcie-cadence.h | 17 +++++-
 6 files changed, 103 insertions(+), 6 deletions(-)
Signature · 1 line
2.17.1
#1 lore raw

PATCH v3 1/5 PCI: cadence: Use bitfield for *quirk_retrain_flag* instead of bool

No functional change. As we are intending to add additional 1-bit members in struct j721e_pcie_data/struct cdns_pcie_rc, use bitfields instead of bool since it takes less space. As discussed in [1], the preference is to use bitfileds instead of bool inside structures.

[1] -> https://lore.kernel.org/linux-fsdevel/CA+55aFzKQ6Pj18TB8p4Yr0M4t+S+BsiHH=BJNmn=76-NcjTj-g@mail.gmail.com/

---
 drivers/pci/controller/cadence/pci-j721e.c    | 2 +-
 drivers/pci/controller/cadence/pcie-cadence.h | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
drivers/pci/controller/cadence/pci-j721e.c +1 -1
index 35e61048e133..0c5813b230b4 100644
@@ -66,7 +66,7 @@ enum j721e_pcie_mode {
 
 struct j721e_pcie_data {
 	enum j721e_pcie_mode	mode;
-	bool quirk_retrain_flag;
+	unsigned int		quirk_retrain_flag:1;
 };
 
 static inline u32 j721e_pcie_user_readl(struct j721e_pcie *pcie, u32 offset)
drivers/pci/controller/cadence/pcie-cadence.h +1 -1
index b72de578b996..6f97fb4e58a6 100644
@@ -312,7 +312,7 @@ struct cdns_pcie_rc {
 	u32			vendor_id;
 	u32			device_id;
 	bool			avail_ib_bar[CDNS_PCIE_RP_MAX_IB];
-	bool                    quirk_retrain_flag;
+	unsigned int		quirk_retrain_flag:1;
 };
 
 /**
Signature · 1 line
2.17.1
#2 lore raw

PATCH v3 2/5 PCI: cadence: Add quirk flag to set minimum delay in LTSSM Detect.Quiet state

In reply to Kishon Vijay Abraham I

From: Nadeem Athani <[email protected]>

PCIe fails to link up if SERDES lanes not used by PCIe are assigned to another protocol. For example, link training fails if lanes 2 and 3 are assigned to another protocol while lanes 0 and 1 are used for PCIe to form a two lane link. This failure is due to an incorrect tie-off on an internal status signal indicating electrical idle.

Status signals going from SERDES to PCIe Controller are tied-off when a lane is not assigned to PCIe. Signal indicating electrical idle is incorrectly tied-off to a state that indicates non-idle. As a result, PCIe sees unused lanes to be out of electrical idle and this causes LTSSM to exit Detect.Quiet state without waiting for 12ms timeout to occur. If a receiver is not detected on the first receiver detection attempt in Detect.Active state, LTSSM goes back to Detect.Quiet and again moves forward to Detect.Active state without waiting for 12ms as required by PCIe base specification. Since wait time in Detect.Quiet is skipped, multiple receiver detect operations are performed back-to-back without allowing time for capacitance on the transmit lines to discharge. This causes subsequent receiver detection to always fail even if a receiver gets connected eventually.

Add a quirk flag "quirk_detect_quiet_flag" to program the minimum time the LTSSM should wait on entering Detect.Quiet state here. This has to be set for J7200 as it has an incorrect tie-off on unused lanes.

---
 drivers/pci/controller/cadence/pcie-cadence-ep.c |  4 ++++
 .../pci/controller/cadence/pcie-cadence-host.c   |  3 +++
 drivers/pci/controller/cadence/pcie-cadence.c    | 16 ++++++++++++++++
 drivers/pci/controller/cadence/pcie-cadence.h    | 15 +++++++++++++++
 4 files changed, 38 insertions(+)
drivers/pci/controller/cadence/pcie-cadence-ep.c +4 -0
index 443dd06dfcfc..f021ca0b5f01 100644
@@ -711,6 +711,10 @@ int cdns_pcie_ep_setup(struct cdns_pcie_ep *ep)
 	ep->irq_pci_addr = CDNS_PCIE_EP_IRQ_PCI_ADDR_NONE;
 	/* Reserve region 0 for IRQs */
 	set_bit(0, &ep->ob_region_map);
+
+	if (ep->quirk_detect_quiet_flag)
+		cdns_pcie_detect_quiet_min_delay_set(&ep->pcie);
+
 	spin_lock_init(&ep->lock);
 
 	return 0;
drivers/pci/controller/cadence/pcie-cadence-host.c +3 -0
index ae1c55503513..fb96d37a135c 100644
@@ -498,6 +498,9 @@ int cdns_pcie_host_setup(struct cdns_pcie_rc *rc)
 		return PTR_ERR(rc->cfg_base);
 	rc->cfg_res = res;
 
+	if (rc->quirk_detect_quiet_flag)
+		cdns_pcie_detect_quiet_min_delay_set(&rc->pcie);
+
 	ret = cdns_pcie_start_link(pcie);
 	if (ret) {
 		dev_err(dev, "Failed to start link\n");
drivers/pci/controller/cadence/pcie-cadence.c +16 -0
index 3c3646502d05..52767f26048f 100644
@@ -7,6 +7,22 @@
 
 #include "pcie-cadence.h"
 
+void cdns_pcie_detect_quiet_min_delay_set(struct cdns_pcie *pcie)
+{
+	u32 delay = 0x3;
+	u32 ltssm_control_cap;
+
+	/*
+	 * Set the LTSSM Detect Quiet state min. delay to 2ms.
+	 */
+	ltssm_control_cap = cdns_pcie_readl(pcie, CDNS_PCIE_LTSSM_CONTROL_CAP);
+	ltssm_control_cap = ((ltssm_control_cap &
+			    ~CDNS_PCIE_DETECT_QUIET_MIN_DELAY_MASK) |
+			    CDNS_PCIE_DETECT_QUIET_MIN_DELAY(delay));
+
+	cdns_pcie_writel(pcie, CDNS_PCIE_LTSSM_CONTROL_CAP, ltssm_control_cap);
+}
+
 void cdns_pcie_set_outbound_region(struct cdns_pcie *pcie, u8 busnr, u8 fn,
 				   u32 r, bool is_io,
 				   u64 cpu_addr, u64 pci_addr, size_t size)
drivers/pci/controller/cadence/pcie-cadence.h +15 -0
index 6f97fb4e58a6..5bad4542b8a9 100644
@@ -198,6 +198,14 @@
 /* AXI link down register */
 #define CDNS_PCIE_AT_LINKDOWN (CDNS_PCIE_AT_BASE + 0x0824)
 
+/* LTSSM Capabilities register */
+#define CDNS_PCIE_LTSSM_CONTROL_CAP             (CDNS_PCIE_LM_BASE + 0x0054)
+#define  CDNS_PCIE_DETECT_QUIET_MIN_DELAY_MASK  GENMASK(2, 1)
+#define  CDNS_PCIE_DETECT_QUIET_MIN_DELAY_SHIFT 1
+#define  CDNS_PCIE_DETECT_QUIET_MIN_DELAY(delay) \
+	 (((delay) << CDNS_PCIE_DETECT_QUIET_MIN_DELAY_SHIFT) & \
+	 CDNS_PCIE_DETECT_QUIET_MIN_DELAY_MASK)
+
 enum cdns_pcie_rp_bar {
 	RP_BAR_UNDEFINED = -1,
 	RP_BAR0,
@@ -304,6 +312,7 @@ struct cdns_pcie {
  * @avail_ib_bar: Satus of RP_BAR0, RP_BAR1 and	RP_NO_BAR if it's free or
  *                available
  * @quirk_retrain_flag: Retrain link as quirk for PCIe Gen2
+ * @quirk_detect_quiet_flag: LTSSM Detect Quiet min delay set as quirk
  */
 struct cdns_pcie_rc {
 	struct cdns_pcie	pcie;
@@ -313,6 +322,7 @@ struct cdns_pcie_rc {
 	u32			device_id;
 	bool			avail_ib_bar[CDNS_PCIE_RP_MAX_IB];
 	unsigned int		quirk_retrain_flag:1;
+	unsigned int		quirk_detect_quiet_flag:1;
 };
 
 /**
@@ -345,6 +355,7 @@ struct cdns_pcie_epf {
  *        registers fields (RMW) accessible by both remote RC and EP to
  *        minimize time between read and write
  * @epf: Structure to hold info about endpoint function
+ * @quirk_detect_quiet_flag: LTSSM Detect Quiet min delay set as quirk
  */
 struct cdns_pcie_ep {
 	struct cdns_pcie	pcie;
@@ -359,6 +370,7 @@ struct cdns_pcie_ep {
 	/* protect writing to PCI_STATUS while raising legacy interrupts */
 	spinlock_t		lock;
 	struct cdns_pcie_epf	*epf;
+	unsigned int		quirk_detect_quiet_flag:1;
 };
 
 
@@ -519,6 +531,9 @@ static inline int cdns_pcie_ep_setup(struct cdns_pcie_ep *ep)
 	return 0;
 }
 #endif
+
+void cdns_pcie_detect_quiet_min_delay_set(struct cdns_pcie *pcie);
+
 void cdns_pcie_set_outbound_region(struct cdns_pcie *pcie, u8 busnr, u8 fn,
 				   u32 r, bool is_io,
 				   u64 cpu_addr, u64 pci_addr, size_t size);
Signature · 1 line
2.17.1
#3 lore raw

PATCH v3 3/5 PCI: j721e: Add PCIe support for J7200

In reply to Kishon Vijay Abraham I

J7200 has the same PCIe IP as in J721E with minor changes in the wrapper. J7200 allows byte access of bridge configuration space registers and the register field for LINK_DOWN interrupt is different. J7200 also requires "quirk_detect_quiet_flag" to be set. Configure these changes as part of driver data applicable only to J7200.

---
 drivers/pci/controller/cadence/pci-j721e.c | 40 +++++++++++++++++++---
 1 file changed, 36 insertions(+), 4 deletions(-)
drivers/pci/controller/cadence/pci-j721e.c +36 -4
index 0c5813b230b4..10b13b728284 100644
@@ -27,6 +27,7 @@
 #define STATUS_REG_SYS_2	0x508
 #define STATUS_CLR_REG_SYS_2	0x708
 #define LINK_DOWN		BIT(1)
+#define J7200_LINK_DOWN		BIT(10)
 
 #define J721E_PCIE_USER_CMD_STATUS	0x4
 #define LINK_TRAINING_ENABLE		BIT(0)
@@ -57,6 +58,7 @@ struct j721e_pcie {
 	struct cdns_pcie	*cdns_pcie;
 	void __iomem		*user_cfg_base;
 	void __iomem		*intd_cfg_base;
+	u32			linkdown_irq_regfield;
 };
 
 enum j721e_pcie_mode {
@@ -67,6 +69,9 @@ enum j721e_pcie_mode {
 struct j721e_pcie_data {
 	enum j721e_pcie_mode	mode;
 	unsigned int		quirk_retrain_flag:1;
+	unsigned int		quirk_detect_quiet_flag:1;
+	u32			linkdown_irq_regfield;
+	unsigned int		byte_access_allowed:1;
 };
 
 static inline u32 j721e_pcie_user_readl(struct j721e_pcie *pcie, u32 offset)
@@ -98,12 +103,12 @@ static irqreturn_t j721e_pcie_link_irq_handler(int irq, void *priv)
 	u32 reg;
 
 	reg = j721e_pcie_intd_readl(pcie, STATUS_REG_SYS_2);
-	if (!(reg & LINK_DOWN))
+	if (!(reg & pcie->linkdown_irq_regfield))
 		return IRQ_NONE;
 
 	dev_err(dev, "LINK DOWN!\n");
 
-	j721e_pcie_intd_writel(pcie, STATUS_CLR_REG_SYS_2, LINK_DOWN);
+	j721e_pcie_intd_writel(pcie, STATUS_CLR_REG_SYS_2, pcie->linkdown_irq_regfield);
 	return IRQ_HANDLED;
 }
 
@@ -112,7 +117,7 @@ static void j721e_pcie_config_link_irq(struct j721e_pcie *pcie)
 	u32 reg;
 
 	reg = j721e_pcie_intd_readl(pcie, ENABLE_REG_SYS_2);
-	reg |= LINK_DOWN;
+	reg |= pcie->linkdown_irq_regfield;
 	j721e_pcie_intd_writel(pcie, ENABLE_REG_SYS_2, reg);
 }
 
@@ -284,10 +289,25 @@ static struct pci_ops cdns_ti_pcie_host_ops = {
 static const struct j721e_pcie_data j721e_pcie_rc_data = {
 	.mode = PCI_MODE_RC,
 	.quirk_retrain_flag = true,
+	.byte_access_allowed = false,
+	.linkdown_irq_regfield = LINK_DOWN,
 };
 
 static const struct j721e_pcie_data j721e_pcie_ep_data = {
 	.mode = PCI_MODE_EP,
+	.linkdown_irq_regfield = LINK_DOWN,
+};
+
+static const struct j721e_pcie_data j7200_pcie_rc_data = {
+	.mode = PCI_MODE_RC,
+	.quirk_detect_quiet_flag = true,
+	.linkdown_irq_regfield = J7200_LINK_DOWN,
+	.byte_access_allowed = true,
+};
+
+static const struct j721e_pcie_data j7200_pcie_ep_data = {
+	.mode = PCI_MODE_EP,
+	.quirk_detect_quiet_flag = true,
 };
 
 static const struct of_device_id of_j721e_pcie_match[] = {
@@ -299,6 +319,14 @@ static const struct of_device_id of_j721e_pcie_match[] = {
 		.compatible = "ti,j721e-pcie-ep",
 		.data = &j721e_pcie_ep_data,
 	},
+	{
+		.compatible = "ti,j7200-pcie-host",
+		.data = &j7200_pcie_rc_data,
+	},
+	{
+		.compatible = "ti,j7200-pcie-ep",
+		.data = &j7200_pcie_ep_data,
+	},
 	{},
 };
 
@@ -332,6 +360,7 @@ static int j721e_pcie_probe(struct platform_device *pdev)
 
 	pcie->dev = dev;
 	pcie->mode = mode;
+	pcie->linkdown_irq_regfield = data->linkdown_irq_regfield;
 
 	base = devm_platform_ioremap_resource_byname(pdev, "intd_cfg");
 	if (IS_ERR(base))
@@ -391,9 +420,11 @@ static int j721e_pcie_probe(struct platform_device *pdev)
 			goto err_get_sync;
 		}
 
-		bridge->ops = &cdns_ti_pcie_host_ops;
+		if (!data->byte_access_allowed)
+			bridge->ops = &cdns_ti_pcie_host_ops;
 		rc = pci_host_bridge_priv(bridge);
 		rc->quirk_retrain_flag = data->quirk_retrain_flag;
+		rc->quirk_detect_quiet_flag = data->quirk_detect_quiet_flag;
 
 		cdns_pcie = &rc->pcie;
 		cdns_pcie->dev = dev;
@@ -459,6 +490,7 @@ static int j721e_pcie_probe(struct platform_device *pdev)
 			ret = -ENOMEM;
 			goto err_get_sync;
 		}
+		ep->quirk_detect_quiet_flag = data->quirk_detect_quiet_flag;
 
 		cdns_pcie = &ep->pcie;
 		cdns_pcie->dev = dev;
Signature · 1 line
2.17.1
#4 lore raw

PATCH v3 4/5 PCI: j721e: Add PCIe support for AM64

In reply to Kishon Vijay Abraham I

AM64 has the same PCIe IP as in J7200 with certain erratas not applicable (quirk_detect_quiet_flag). Add support for "ti,am64-pcie-host" compatible and "ti,am64-pcie-ep" compatible that is specific to AM64.

---
 drivers/pci/controller/cadence/pci-j721e.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)
drivers/pci/controller/cadence/pci-j721e.c +19 -0
index 10b13b728284..ffb176d288cd 100644
@@ -310,6 +310,17 @@ static const struct j721e_pcie_data j7200_pcie_ep_data = {
 	.quirk_detect_quiet_flag = true,
 };
 
+static const struct j721e_pcie_data am64_pcie_rc_data = {
+	.mode = PCI_MODE_RC,
+	.linkdown_irq_regfield = J7200_LINK_DOWN,
+	.byte_access_allowed = true,
+};
+
+static const struct j721e_pcie_data am64_pcie_ep_data = {
+	.mode = PCI_MODE_EP,
+	.linkdown_irq_regfield = J7200_LINK_DOWN,
+};
+
 static const struct of_device_id of_j721e_pcie_match[] = {
 	{
 		.compatible = "ti,j721e-pcie-host",
@@ -327,6 +338,14 @@ static const struct of_device_id of_j721e_pcie_match[] = {
 		.compatible = "ti,j7200-pcie-ep",
 		.data = &j7200_pcie_ep_data,
 	},
+	{
+		.compatible = "ti,am64-pcie-host",
+		.data = &am64_pcie_rc_data,
+	},
+	{
+		.compatible = "ti,am64-pcie-ep",
+		.data = &am64_pcie_ep_data,
+	},
 	{},
 };
 
Signature · 1 line
2.17.1
#5 lore raw

PATCH v3 5/5 misc: pci_endpoint_test: Add deviceID for AM64 and J7200

In reply to Kishon Vijay Abraham I

Add device ID specific to AM64 and J7200 in pci_endpoint_test so that endpoints configured with those deviceIDs can use pci_endpoint_test driver.

---
 drivers/misc/pci_endpoint_test.c | 8 ++++++++
 1 file changed, 8 insertions(+)
drivers/misc/pci_endpoint_test.c +8 -0
index c7ee34013485..8811a98fa9ab 100644
@@ -69,6 +69,8 @@
 #define FLAG_USE_DMA				BIT(0)
 
 #define PCI_DEVICE_ID_TI_AM654			0xb00c
+#define PCI_DEVICE_ID_TI_J7200			0xb00f
+#define PCI_DEVICE_ID_TI_AM64			0xb010
 #define PCI_DEVICE_ID_LS1088A			0x80c0
 
 #define is_am654_pci_dev(pdev)		\
@@ -969,6 +971,12 @@ static const struct pci_device_id pci_endpoint_test_tbl[] = {
 	{ PCI_DEVICE(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_J721E),
 	  .driver_data = (kernel_ulong_t)&j721e_data,
 	},
+	{ PCI_DEVICE(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_J7200),
+	  .driver_data = (kernel_ulong_t)&j721e_data,
+	},
+	{ PCI_DEVICE(PCI_VENDOR_ID_TI, PCI_DEVICE_ID_TI_AM64),
+	  .driver_data = (kernel_ulong_t)&j721e_data,
+	},
 	{ }
 };
 MODULE_DEVICE_TABLE(pci, pci_endpoint_test_tbl);
Signature · 1 line
2.17.1
#6 lore raw
In reply to Kishon Vijay Abraham I

Hi Lorenzo,

Quoted 10 lines · Kishon Vijay Abraham I

This series adds the compatible specific to J7200 and AM64 and applies the erratas and configuration specific to them.

This series also includes Nadeem's patch that adds a quirk in Cadence driver which is used by J7200 [1].

The DT binding for both J7200 and AM64 is already merged.

v1 of the patch series can be found at [2]
v2 of the patch series can be found at [3]

Gentle ping on this series.

I've dropped "misc: pci_endpoint_test: Do not request or allocate IRQs in probe" [A] from the previous version of the series which you had concerns with.

[A] -> http://lore.kernel.org/r/[email protected]

Thanks
Kishon

Quoted 34 lines

Changes from v2:
1) Drop the patch that does not request or allocate IRQs in probe for J721E/AM654
2) Fix other minor comments given by Lorenzo

Changes from v1:
1) As suggested by Bjorn, used unsigned int :1, instead of bool for structure members
2) Removed using unnecessary local variables and also fixed some code alignment

[1] -> https://lore.kernel.org/r/[email protected]
[2] -> https://lore.kernel.org/r/[email protected]
[3] -> https://lore.kernel.org/r/[email protected]

Kishon Vijay Abraham I (4):
PCI: cadence: Use bitfield for *quirk_retrain_flag* instead of bool
PCI: j721e: Add PCIe support for J7200
PCI: j721e: Add PCIe support for AM64
misc: pci_endpoint_test: Add deviceID for AM64 and J7200

Nadeem Athani (1):
PCI: cadence: Add quirk flag to set minimum delay in LTSSM
Detect.Quiet state

 drivers/misc/pci_endpoint_test.c              |  8 +++
 drivers/pci/controller/cadence/pci-j721e.c    | 61 +++++++++++++++++--
 .../pci/controller/cadence/pcie-cadence-ep.c  |  4 ++
 .../controller/cadence/pcie-cadence-host.c    |  3 +
 drivers/pci/controller/cadence/pcie-cadence.c | 16 +++++
 drivers/pci/controller/cadence/pcie-cadence.h | 17 +++++-
 6 files changed, 103 insertions(+), 6 deletions(-)
#7 lore raw
Quoted 14 lines · Kishon Vijay Abraham I

Hi Lorenzo,

Quoted 10 lines · Kishon Vijay Abraham I

This series adds the compatible specific to J7200 and AM64 and applies the erratas and configuration specific to them.

This series also includes Nadeem's patch that adds a quirk in Cadence driver which is used by J7200 [1].

The DT binding for both J7200 and AM64 is already merged.

v1 of the patch series can be found at [2]
v2 of the patch series can be found at [3]

Quoted 7 lines

Gentle ping on this series.

I've dropped "misc: pci_endpoint_test: Do not request or allocate IRQs in probe" [A] from the previous version of the series which you had concerns with.

[A] -> http://lore.kernel.org/r/[email protected]

Understood. The question is, how did you solve the issue that was forcing you to have that patch in place in the updated series.

Thanks,
Lorenzo

Quoted 38 lines

Thanks
Kishon

Quoted 34 lines

Changes from v2:
1) Drop the patch that does not request or allocate IRQs in probe for J721E/AM654
2) Fix other minor comments given by Lorenzo

Changes from v1:
1) As suggested by Bjorn, used unsigned int :1, instead of bool for structure members
2) Removed using unnecessary local variables and also fixed some code alignment

[1] -> https://lore.kernel.org/r/[email protected]
[2] -> https://lore.kernel.org/r/[email protected]
[3] -> https://lore.kernel.org/r/[email protected]

Kishon Vijay Abraham I (4):
PCI: cadence: Use bitfield for *quirk_retrain_flag* instead of bool
PCI: j721e: Add PCIe support for J7200
PCI: j721e: Add PCIe support for AM64
misc: pci_endpoint_test: Add deviceID for AM64 and J7200

Nadeem Athani (1):
PCI: cadence: Add quirk flag to set minimum delay in LTSSM
Detect.Quiet state

 drivers/misc/pci_endpoint_test.c              |  8 +++
 drivers/pci/controller/cadence/pci-j721e.c    | 61 +++++++++++++++++--
 .../pci/controller/cadence/pcie-cadence-ep.c  |  4 ++
 .../controller/cadence/pcie-cadence-host.c    |  3 +
 drivers/pci/controller/cadence/pcie-cadence.c | 16 +++++
 drivers/pci/controller/cadence/pcie-cadence.h | 17 +++++-
 6 files changed, 103 insertions(+), 6 deletions(-)
#8 lore raw

Hi Lorenzo,

Quoted 17 lines · Lorenzo Pieralisi
Quoted 16 lines · Kishon Vijay Abraham I

Hi Lorenzo,

Quoted 10 lines · Kishon Vijay Abraham I

This series adds the compatible specific to J7200 and AM64 and applies the erratas and configuration specific to them.

This series also includes Nadeem's patch that adds a quirk in Cadence driver which is used by J7200 [1].

The DT binding for both J7200 and AM64 is already merged.

v1 of the patch series can be found at [2]
v2 of the patch series can be found at [3]

Gentle ping on this series.

Quoted 8 lines
Quoted 5 lines

I've dropped "misc: pci_endpoint_test: Do not request or allocate IRQs in probe" [A] from the previous version of the series which you had concerns with.

[A] -> http://lore.kernel.org/r/[email protected]

Understood. The question is, how did you solve the issue that was forcing you to have that patch in place in the updated series.

That issue only prevents more than 5 pci-endpoint-test devices to be tested simultaneously.

For the GIC ITS issue, I'm planning to post the workaround mentioned in the errata document.

Errata ID #i2101 GIC: ITS Misbehavior
(https://www.ti.com/lit/er/sprz455a/sprz455a.pdf).

Also the GIC ITS issue is not present in J7200 and AM64 which this series is planning to address. It's present only in J721E and AM65.

Thanks
Kishon

Quoted 42 lines

Thanks,
Lorenzo

Quoted 38 lines

Thanks
Kishon

Quoted 34 lines

Changes from v2:
1) Drop the patch that does not request or allocate IRQs in probe for J721E/AM654
2) Fix other minor comments given by Lorenzo

Changes from v1:
1) As suggested by Bjorn, used unsigned int :1, instead of bool for structure members
2) Removed using unnecessary local variables and also fixed some code alignment

[1] -> https://lore.kernel.org/r/[email protected]
[2] -> https://lore.kernel.org/r/[email protected]
[3] -> https://lore.kernel.org/r/[email protected]

Kishon Vijay Abraham I (4):
PCI: cadence: Use bitfield for *quirk_retrain_flag* instead of bool
PCI: j721e: Add PCIe support for J7200
PCI: j721e: Add PCIe support for AM64
misc: pci_endpoint_test: Add deviceID for AM64 and J7200

Nadeem Athani (1):
PCI: cadence: Add quirk flag to set minimum delay in LTSSM
Detect.Quiet state

 drivers/misc/pci_endpoint_test.c              |  8 +++
 drivers/pci/controller/cadence/pci-j721e.c    | 61 +++++++++++++++++--
 .../pci/controller/cadence/pcie-cadence-ep.c  |  4 ++
 .../controller/cadence/pcie-cadence-host.c    |  3 +
 drivers/pci/controller/cadence/pcie-cadence.c | 16 +++++
 drivers/pci/controller/cadence/pcie-cadence.h | 17 +++++-
 6 files changed, 103 insertions(+), 6 deletions(-)
#9 lore raw
In reply to Kishon Vijay Abraham I
Quoted 9 lines · Kishon Vijay Abraham I

This series adds the compatible specific to J7200 and AM64 and applies the erratas and configuration specific to them.

This series also includes Nadeem's patch that adds a quirk in Cadence driver which is used by J7200 [1].

The DT binding for both J7200 and AM64 is already merged.

[...]

Applied to pci/cadence, thanks!

[1/5] PCI: cadence: Use bitfield for *quirk_retrain_flag* instead of bool

      https://git.kernel.org/lpieralisi/pci/c/f4455748b2
[2/5] PCI: cadence: Add quirk flag to set minimum delay in LTSSM Detect.Quiet state
      https://git.kernel.org/lpieralisi/pci/c/09c24094b2
[3/5] PCI: j721e: Add PCIe support for J7200
      https://git.kernel.org/lpieralisi/pci/c/f1de58802f
[4/5] PCI: j721e: Add PCIe support for AM64
      https://git.kernel.org/lpieralisi/pci/c/c8a375a8e1
[5/5] misc: pci_endpoint_test: Add deviceID for AM64 and J7200
      https://git.kernel.org/lpieralisi/pci/c/7c52009d94

Thanks,
Lorenzo