* [PATCH v8 1/5] dt-bindings: PCI: ti,j721e-pci-*: add checks for num-lanes
2023-01-18 12:59 [PATCH v8 0/5] PCI: add 4x lane support for pci-j721e controllers Achal Verma
@ 2023-01-18 12:59 ` Achal Verma
2023-01-19 15:38 ` Krzysztof Kozlowski
2023-01-18 12:59 ` [PATCH v8 2/5] PCI: j721e: Add per platform maximum lane settings Achal Verma
` (3 subsequent siblings)
4 siblings, 1 reply; 8+ messages in thread
From: Achal Verma @ 2023-01-18 12:59 UTC (permalink / raw)
To: mranostay, rogerq, lpieralisi, robh, kw, bhelgaas,
krzysztof.kozlowski, vigneshr, tjoseph, sergio.paracuellos,
pthombar, linux-pci
Cc: devicetree, linux-arm-kernel, linux-omap, linux-kernel
From: Matt Ranostay <mranostay@ti.com>
Add num-lanes schema checks based on compatible string on available lanes
for that platform.
Signed-off-by: Matt Ranostay <mranostay@ti.com>
Signed-off-by: Achal Verma <a-verma1@ti.com>
---
.../bindings/pci/ti,j721e-pci-ep.yaml | 28 +++++++++++++++++--
.../bindings/pci/ti,j721e-pci-host.yaml | 28 +++++++++++++++++--
2 files changed, 50 insertions(+), 6 deletions(-)
diff --git a/Documentation/devicetree/bindings/pci/ti,j721e-pci-ep.yaml b/Documentation/devicetree/bindings/pci/ti,j721e-pci-ep.yaml
index 10e6eabdff53..403cd3ef1177 100644
--- a/Documentation/devicetree/bindings/pci/ti,j721e-pci-ep.yaml
+++ b/Documentation/devicetree/bindings/pci/ti,j721e-pci-ep.yaml
@@ -10,9 +10,6 @@ title: TI J721E PCI EP (PCIe Wrapper)
maintainers:
- Kishon Vijay Abraham I <kishon@ti.com>
-allOf:
- - $ref: "cdns-pcie-ep.yaml#"
-
properties:
compatible:
oneOf:
@@ -65,6 +62,31 @@ properties:
items:
- const: link_state
+allOf:
+ - $ref: cdns-pcie-ep.yaml#
+ - if:
+ properties:
+ compatible:
+ enum:
+ - ti,am64-pcie-ep
+ then:
+ properties:
+ num-lanes:
+ minimum: 1
+ maximum: 1
+
+ - if:
+ properties:
+ compatible:
+ enum:
+ - ti,j7200-pcie-ep
+ - ti,j721e-pcie-ep
+ then:
+ properties:
+ num-lanes:
+ minimum: 1
+ maximum: 2
+
required:
- compatible
- reg
diff --git a/Documentation/devicetree/bindings/pci/ti,j721e-pci-host.yaml b/Documentation/devicetree/bindings/pci/ti,j721e-pci-host.yaml
index b0513b197d08..7bd78cfca845 100644
--- a/Documentation/devicetree/bindings/pci/ti,j721e-pci-host.yaml
+++ b/Documentation/devicetree/bindings/pci/ti,j721e-pci-host.yaml
@@ -10,9 +10,6 @@ title: TI J721E PCI Host (PCIe Wrapper)
maintainers:
- Kishon Vijay Abraham I <kishon@ti.com>
-allOf:
- - $ref: "cdns-pcie-host.yaml#"
-
properties:
compatible:
oneOf:
@@ -98,6 +95,31 @@ properties:
interrupts:
maxItems: 1
+allOf:
+ - $ref: cdns-pcie-host.yaml#
+ - if:
+ properties:
+ compatible:
+ enum:
+ - ti,am64-pcie-host
+ then:
+ properties:
+ num-lanes:
+ minimum: 1
+ maximum: 1
+
+ - if:
+ properties:
+ compatible:
+ enum:
+ - ti,j7200-pcie-host
+ - ti,j721e-pcie-host
+ then:
+ properties:
+ num-lanes:
+ minimum: 1
+ maximum: 2
+
required:
- compatible
- reg
--
2.25.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* Re: [PATCH v8 1/5] dt-bindings: PCI: ti,j721e-pci-*: add checks for num-lanes
2023-01-18 12:59 ` [PATCH v8 1/5] dt-bindings: PCI: ti,j721e-pci-*: add checks for num-lanes Achal Verma
@ 2023-01-19 15:38 ` Krzysztof Kozlowski
0 siblings, 0 replies; 8+ messages in thread
From: Krzysztof Kozlowski @ 2023-01-19 15:38 UTC (permalink / raw)
To: Achal Verma, mranostay, rogerq, lpieralisi, robh, kw, bhelgaas,
vigneshr, tjoseph, sergio.paracuellos, pthombar, linux-pci
Cc: devicetree, linux-arm-kernel, linux-omap, linux-kernel
On 18/01/2023 13:59, Achal Verma wrote:
> From: Matt Ranostay <mranostay@ti.com>
>
> Add num-lanes schema checks based on compatible string on available lanes
> for that platform.
>
> Signed-off-by: Matt Ranostay <mranostay@ti.com>
> Signed-off-by: Achal Verma <a-verma1@ti.com>
> ---
> .../bindings/pci/ti,j721e-pci-ep.yaml | 28 +++++++++++++++++--
> .../bindings/pci/ti,j721e-pci-host.yaml | 28 +++++++++++++++++--
> 2 files changed, 50 insertions(+), 6 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/pci/ti,j721e-pci-ep.yaml b/Documentation/devicetree/bindings/pci/ti,j721e-pci-ep.yaml
> index 10e6eabdff53..403cd3ef1177 100644
> --- a/Documentation/devicetree/bindings/pci/ti,j721e-pci-ep.yaml
> +++ b/Documentation/devicetree/bindings/pci/ti,j721e-pci-ep.yaml
> @@ -10,9 +10,6 @@ title: TI J721E PCI EP (PCIe Wrapper)
> maintainers:
> - Kishon Vijay Abraham I <kishon@ti.com>
>
> -allOf:
> - - $ref: "cdns-pcie-ep.yaml#"
> -
> properties:
> compatible:
> oneOf:
> @@ -65,6 +62,31 @@ properties:
> items:
> - const: link_state
>
> +allOf:
> + - $ref: cdns-pcie-ep.yaml#
> + - if:
> + properties:
> + compatible:
> + enum:
> + - ti,am64-pcie-ep
> + then:
> + properties:
> + num-lanes:
> + minimum: 1
> + maximum: 1
> +
> + - if:
> + properties:
> + compatible:
> + enum:
> + - ti,j7200-pcie-ep
> + - ti,j721e-pcie-ep
> + then:
> + properties:
> + num-lanes:
> + minimum: 1
> + maximum: 2
> +
> required:
> - compatible
> - reg
> diff --git a/Documentation/devicetree/bindings/pci/ti,j721e-pci-host.yaml b/Documentation/devicetree/bindings/pci/ti,j721e-pci-host.yaml
> index b0513b197d08..7bd78cfca845 100644
> --- a/Documentation/devicetree/bindings/pci/ti,j721e-pci-host.yaml
> +++ b/Documentation/devicetree/bindings/pci/ti,j721e-pci-host.yaml
> @@ -10,9 +10,6 @@ title: TI J721E PCI Host (PCIe Wrapper)
> maintainers:
> - Kishon Vijay Abraham I <kishon@ti.com>
>
> -allOf:
> - - $ref: "cdns-pcie-host.yaml#"
> -
> properties:
> compatible:
> oneOf:
> @@ -98,6 +95,31 @@ properties:
> interrupts:
> maxItems: 1
>
> +allOf:
> + - $ref: cdns-pcie-host.yaml#
> + - if:
> + properties:
> + compatible:
> + enum:
> + - ti,am64-pcie-host
> + then:
> + properties:
> + num-lanes:
> + minimum: 1
> + maximum: 1
Why not what I asked for?
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v8 2/5] PCI: j721e: Add per platform maximum lane settings
2023-01-18 12:59 [PATCH v8 0/5] PCI: add 4x lane support for pci-j721e controllers Achal Verma
2023-01-18 12:59 ` [PATCH v8 1/5] dt-bindings: PCI: ti,j721e-pci-*: add checks for num-lanes Achal Verma
@ 2023-01-18 12:59 ` Achal Verma
2023-01-18 12:59 ` [PATCH v8 3/5] PCI: j721e: Add PCIe 4x lane selection support Achal Verma
` (2 subsequent siblings)
4 siblings, 0 replies; 8+ messages in thread
From: Achal Verma @ 2023-01-18 12:59 UTC (permalink / raw)
To: mranostay, rogerq, lpieralisi, robh, kw, bhelgaas,
krzysztof.kozlowski, vigneshr, tjoseph, sergio.paracuellos,
pthombar, linux-pci
Cc: devicetree, linux-arm-kernel, linux-omap, linux-kernel
From: Matt Ranostay <mranostay@ti.com>
Various platforms have different maximum amount of lanes that can be
selected. Add max_lanes to struct j721e_pcie to allow for detection of this
which is needed to calculate the needed bitmask size for the possible lane
count.
Signed-off-by: Matt Ranostay <mranostay@ti.com>
Signed-off-by: Vignesh Raghavendra <vigneshr@ti.com>
Signed-off-by: Achal Verma <a-verma1@ti.com>
---
drivers/pci/controller/cadence/pci-j721e.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/drivers/pci/controller/cadence/pci-j721e.c b/drivers/pci/controller/cadence/pci-j721e.c
index cc83a8925ce0..f4dc2c5abedb 100644
--- a/drivers/pci/controller/cadence/pci-j721e.c
+++ b/drivers/pci/controller/cadence/pci-j721e.c
@@ -47,8 +47,6 @@ enum link_status {
#define GENERATION_SEL_MASK GENMASK(1, 0)
-#define MAX_LANES 2
-
struct j721e_pcie {
struct cdns_pcie *cdns_pcie;
struct clk *refclk;
@@ -71,6 +69,7 @@ struct j721e_pcie_data {
unsigned int quirk_disable_flr:1;
u32 linkdown_irq_regfield;
unsigned int byte_access_allowed:1;
+ unsigned int max_lanes;
};
static inline u32 j721e_pcie_user_readl(struct j721e_pcie *pcie, u32 offset)
@@ -290,11 +289,13 @@ static const struct j721e_pcie_data j721e_pcie_rc_data = {
.quirk_retrain_flag = true,
.byte_access_allowed = false,
.linkdown_irq_regfield = LINK_DOWN,
+ .max_lanes = 2,
};
static const struct j721e_pcie_data j721e_pcie_ep_data = {
.mode = PCI_MODE_EP,
.linkdown_irq_regfield = LINK_DOWN,
+ .max_lanes = 2,
};
static const struct j721e_pcie_data j7200_pcie_rc_data = {
@@ -302,23 +303,27 @@ static const struct j721e_pcie_data j7200_pcie_rc_data = {
.quirk_detect_quiet_flag = true,
.linkdown_irq_regfield = J7200_LINK_DOWN,
.byte_access_allowed = true,
+ .max_lanes = 2,
};
static const struct j721e_pcie_data j7200_pcie_ep_data = {
.mode = PCI_MODE_EP,
.quirk_detect_quiet_flag = true,
.quirk_disable_flr = true,
+ .max_lanes = 2,
};
static const struct j721e_pcie_data am64_pcie_rc_data = {
.mode = PCI_MODE_RC,
.linkdown_irq_regfield = J7200_LINK_DOWN,
.byte_access_allowed = true,
+ .max_lanes = 1,
};
static const struct j721e_pcie_data am64_pcie_ep_data = {
.mode = PCI_MODE_EP,
.linkdown_irq_regfield = J7200_LINK_DOWN,
+ .max_lanes = 1,
};
static const struct of_device_id of_j721e_pcie_match[] = {
@@ -432,8 +437,10 @@ static int j721e_pcie_probe(struct platform_device *pdev)
pcie->user_cfg_base = base;
ret = of_property_read_u32(node, "num-lanes", &num_lanes);
- if (ret || num_lanes > MAX_LANES)
+ if (ret || num_lanes > data->max_lanes) {
+ dev_warn(dev, "num-lanes property not provided or invalid, setting num-lanes to 1\n");
num_lanes = 1;
+ }
pcie->num_lanes = num_lanes;
if (dma_set_mask_and_coherent(dev, DMA_BIT_MASK(48)))
--
2.25.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH v8 3/5] PCI: j721e: Add PCIe 4x lane selection support
2023-01-18 12:59 [PATCH v8 0/5] PCI: add 4x lane support for pci-j721e controllers Achal Verma
2023-01-18 12:59 ` [PATCH v8 1/5] dt-bindings: PCI: ti,j721e-pci-*: add checks for num-lanes Achal Verma
2023-01-18 12:59 ` [PATCH v8 2/5] PCI: j721e: Add per platform maximum lane settings Achal Verma
@ 2023-01-18 12:59 ` Achal Verma
2023-01-18 12:59 ` [PATCH v8 4/5] dt-bindings: PCI: ti,j721e-pci-*: add j784s4-pci-* compatible strings Achal Verma
2023-01-18 12:59 ` [PATCH v8 5/5] PCI: j721e: add j784s4 PCIe configuration Achal Verma
4 siblings, 0 replies; 8+ messages in thread
From: Achal Verma @ 2023-01-18 12:59 UTC (permalink / raw)
To: mranostay, rogerq, lpieralisi, robh, kw, bhelgaas,
krzysztof.kozlowski, vigneshr, tjoseph, sergio.paracuellos,
pthombar, linux-pci
Cc: devicetree, linux-arm-kernel, linux-omap, linux-kernel
From: Matt Ranostay <mranostay@ti.com>
Add support for setting of two-bit field that allows selection of 4x lane
PCIe which was previously limited to only 2x lanes.
Signed-off-by: Matt Ranostay <mranostay@ti.com>
Reviewed-by: Vignesh Raghavendra <vigneshr@ti.com>
Reviewed-by: Roger Quadros <rogerq@kernel.org>
Signed-off-by: Achal Verma <a-verma1@ti.com>
---
drivers/pci/controller/cadence/pci-j721e.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/drivers/pci/controller/cadence/pci-j721e.c b/drivers/pci/controller/cadence/pci-j721e.c
index f4dc2c5abedb..58dcac9021e4 100644
--- a/drivers/pci/controller/cadence/pci-j721e.c
+++ b/drivers/pci/controller/cadence/pci-j721e.c
@@ -42,7 +42,6 @@ enum link_status {
};
#define J721E_MODE_RC BIT(7)
-#define LANE_COUNT_MASK BIT(8)
#define LANE_COUNT(n) ((n) << 8)
#define GENERATION_SEL_MASK GENMASK(1, 0)
@@ -52,6 +51,7 @@ struct j721e_pcie {
struct clk *refclk;
u32 mode;
u32 num_lanes;
+ u32 max_lanes;
void __iomem *user_cfg_base;
void __iomem *intd_cfg_base;
u32 linkdown_irq_regfield;
@@ -205,11 +205,15 @@ static int j721e_pcie_set_lane_count(struct j721e_pcie *pcie,
{
struct device *dev = pcie->cdns_pcie->dev;
u32 lanes = pcie->num_lanes;
+ u32 mask = BIT(8);
u32 val = 0;
int ret;
+ if (pcie->max_lanes == 4)
+ mask = GENMASK(9, 8);
+
val = LANE_COUNT(lanes - 1);
- ret = regmap_update_bits(syscon, offset, LANE_COUNT_MASK, val);
+ ret = regmap_update_bits(syscon, offset, mask, val);
if (ret)
dev_err(dev, "failed to set link count\n");
@@ -441,7 +445,9 @@ static int j721e_pcie_probe(struct platform_device *pdev)
dev_warn(dev, "num-lanes property not provided or invalid, setting num-lanes to 1\n");
num_lanes = 1;
}
+
pcie->num_lanes = num_lanes;
+ pcie->max_lanes = data->max_lanes;
if (dma_set_mask_and_coherent(dev, DMA_BIT_MASK(48)))
return -EINVAL;
--
2.25.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH v8 4/5] dt-bindings: PCI: ti,j721e-pci-*: add j784s4-pci-* compatible strings
2023-01-18 12:59 [PATCH v8 0/5] PCI: add 4x lane support for pci-j721e controllers Achal Verma
` (2 preceding siblings ...)
2023-01-18 12:59 ` [PATCH v8 3/5] PCI: j721e: Add PCIe 4x lane selection support Achal Verma
@ 2023-01-18 12:59 ` Achal Verma
2023-01-18 12:59 ` [PATCH v8 5/5] PCI: j721e: add j784s4 PCIe configuration Achal Verma
4 siblings, 0 replies; 8+ messages in thread
From: Achal Verma @ 2023-01-18 12:59 UTC (permalink / raw)
To: mranostay, rogerq, lpieralisi, robh, kw, bhelgaas,
krzysztof.kozlowski, vigneshr, tjoseph, sergio.paracuellos,
pthombar, linux-pci
Cc: devicetree, linux-arm-kernel, linux-omap, linux-kernel
From: Matt Ranostay <mranostay@ti.com>
Add definition for j784s4-pci-ep + j784s4-pci-host devices along with
schema checks for num-lanes.
Signed-off-by: Matt Ranostay <mranostay@ti.com>
Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: Achal Verma <a-verma1@ti.com>
---
.../devicetree/bindings/pci/ti,j721e-pci-ep.yaml | 12 ++++++++++++
.../devicetree/bindings/pci/ti,j721e-pci-host.yaml | 12 ++++++++++++
2 files changed, 24 insertions(+)
diff --git a/Documentation/devicetree/bindings/pci/ti,j721e-pci-ep.yaml b/Documentation/devicetree/bindings/pci/ti,j721e-pci-ep.yaml
index 403cd3ef1177..0c93832e381b 100644
--- a/Documentation/devicetree/bindings/pci/ti,j721e-pci-ep.yaml
+++ b/Documentation/devicetree/bindings/pci/ti,j721e-pci-ep.yaml
@@ -14,6 +14,7 @@ properties:
compatible:
oneOf:
- const: ti,j721e-pcie-ep
+ - const: ti,j784s4-pcie-ep
- description: PCIe EP controller in AM64
items:
- const: ti,am64-pcie-ep
@@ -87,6 +88,17 @@ allOf:
minimum: 1
maximum: 2
+ - if:
+ properties:
+ compatible:
+ enum:
+ - ti,j784s4-pcie-ep
+ then:
+ properties:
+ num-lanes:
+ minimum: 1
+ maximum: 4
+
required:
- compatible
- reg
diff --git a/Documentation/devicetree/bindings/pci/ti,j721e-pci-host.yaml b/Documentation/devicetree/bindings/pci/ti,j721e-pci-host.yaml
index 7bd78cfca845..6b1521c6b607 100644
--- a/Documentation/devicetree/bindings/pci/ti,j721e-pci-host.yaml
+++ b/Documentation/devicetree/bindings/pci/ti,j721e-pci-host.yaml
@@ -14,6 +14,7 @@ properties:
compatible:
oneOf:
- const: ti,j721e-pcie-host
+ - const: ti,j784s4-pcie-host
- description: PCIe controller in AM64
items:
- const: ti,am64-pcie-host
@@ -120,6 +121,17 @@ allOf:
minimum: 1
maximum: 2
+ - if:
+ properties:
+ compatible:
+ enum:
+ - ti,j784s4-pcie-host
+ then:
+ properties:
+ num-lanes:
+ minimum: 1
+ maximum: 4
+
required:
- compatible
- reg
--
2.25.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* [PATCH v8 5/5] PCI: j721e: add j784s4 PCIe configuration
2023-01-18 12:59 [PATCH v8 0/5] PCI: add 4x lane support for pci-j721e controllers Achal Verma
` (3 preceding siblings ...)
2023-01-18 12:59 ` [PATCH v8 4/5] dt-bindings: PCI: ti,j721e-pci-*: add j784s4-pci-* compatible strings Achal Verma
@ 2023-01-18 12:59 ` Achal Verma
2023-01-18 16:56 ` Bjorn Helgaas
4 siblings, 1 reply; 8+ messages in thread
From: Achal Verma @ 2023-01-18 12:59 UTC (permalink / raw)
To: mranostay, rogerq, lpieralisi, robh, kw, bhelgaas,
krzysztof.kozlowski, vigneshr, tjoseph, sergio.paracuellos,
pthombar, linux-pci
Cc: devicetree, linux-arm-kernel, linux-omap, linux-kernel
From: Matt Ranostay <mranostay@ti.com>
Add PCIe configuration for j784s4 platform which has 4x lane support.
Tested-by: Achal Verma <a-verma1@ti.com>
Signed-off-by: Matt Ranostay <mranostay@ti.com>
Reviewed-by: Roger Quadros <rogerq@kernel.org>
Signed-off-by: Achal Verma <a-verma1@ti.com>
---
drivers/pci/controller/cadence/pci-j721e.c | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/drivers/pci/controller/cadence/pci-j721e.c b/drivers/pci/controller/cadence/pci-j721e.c
index 58dcac9021e4..cce7b391f931 100644
--- a/drivers/pci/controller/cadence/pci-j721e.c
+++ b/drivers/pci/controller/cadence/pci-j721e.c
@@ -330,6 +330,20 @@ static const struct j721e_pcie_data am64_pcie_ep_data = {
.max_lanes = 1,
};
+static const struct j721e_pcie_data j784s4_pcie_rc_data = {
+ .mode = PCI_MODE_RC,
+ .quirk_retrain_flag = true,
+ .byte_access_allowed = false,
+ .linkdown_irq_regfield = LINK_DOWN,
+ .max_lanes = 4,
+};
+
+static const struct j721e_pcie_data j784s4_pcie_ep_data = {
+ .mode = PCI_MODE_EP,
+ .linkdown_irq_regfield = LINK_DOWN,
+ .max_lanes = 4,
+};
+
static const struct of_device_id of_j721e_pcie_match[] = {
{
.compatible = "ti,j721e-pcie-host",
@@ -355,6 +369,14 @@ static const struct of_device_id of_j721e_pcie_match[] = {
.compatible = "ti,am64-pcie-ep",
.data = &am64_pcie_ep_data,
},
+ {
+ .compatible = "ti,j784s4-pcie-host",
+ .data = &j784s4_pcie_rc_data,
+ },
+ {
+ .compatible = "ti,j784s4-pcie-ep",
+ .data = &j784s4_pcie_ep_data,
+ },
{},
};
--
2.25.1
^ permalink raw reply related [flat|nested] 8+ messages in thread* Re: [PATCH v8 5/5] PCI: j721e: add j784s4 PCIe configuration
2023-01-18 12:59 ` [PATCH v8 5/5] PCI: j721e: add j784s4 PCIe configuration Achal Verma
@ 2023-01-18 16:56 ` Bjorn Helgaas
0 siblings, 0 replies; 8+ messages in thread
From: Bjorn Helgaas @ 2023-01-18 16:56 UTC (permalink / raw)
To: Achal Verma
Cc: mranostay, rogerq, lpieralisi, robh, kw, bhelgaas,
krzysztof.kozlowski, vigneshr, tjoseph, sergio.paracuellos,
pthombar, linux-pci, devicetree, linux-arm-kernel, linux-omap,
linux-kernel
If you repost for some other reason, fix the subject typo ("Add ..."
to match the others). Otherwise, Lorenzo may fix it up while
applying.
On Wed, Jan 18, 2023 at 06:29:36PM +0530, Achal Verma wrote:
> From: Matt Ranostay <mranostay@ti.com>
>
> Add PCIe configuration for j784s4 platform which has 4x lane support.
>
> Tested-by: Achal Verma <a-verma1@ti.com>
> Signed-off-by: Matt Ranostay <mranostay@ti.com>
> Reviewed-by: Roger Quadros <rogerq@kernel.org>
> Signed-off-by: Achal Verma <a-verma1@ti.com>
^ permalink raw reply [flat|nested] 8+ messages in thread