All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bjorn Helgaas <helgaas@kernel.org>
To: Stanimir Varbanov <svarbanov@suse.de>
Cc: linux-kernel@vger.kernel.org, devicetree@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-rpi-kernel@lists.infradead.org, linux-pci@vger.kernel.org,
	Broadcom internal kernel review list
	<bcm-kernel-feedback-list@broadcom.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	Florian Fainelli <florian.fainelli@broadcom.com>,
	Jim Quinlan <jim2101024@gmail.com>,
	Nicolas Saenz Julienne <nsaenz@kernel.org>,
	Bjorn Helgaas <bhelgaas@google.com>,
	Lorenzo Pieralisi <lpieralisi@kernel.org>,
	kw@linux.com, Philipp Zabel <p.zabel@pengutronix.de>,
	Andrea della Porta <andrea.porta@suse.com>,
	Phil Elwell <phil@raspberrypi.com>,
	Jonathan Bell <jonathan@raspberrypi.com>,
	Dave Stevenson <dave.stevenson@raspberrypi.com>
Subject: Re: [PATCH v5 -next 06/11] PCI: brcmstb: Add bcm2712 support
Date: Wed, 12 Feb 2025 12:02:37 -0600	[thread overview]
Message-ID: <20250212180237.GA85622@bhelgaas> (raw)
In-Reply-To: <20250120130119.671119-7-svarbanov@suse.de>

On Mon, Jan 20, 2025 at 03:01:14PM +0200, Stanimir Varbanov wrote:
> Add bare minimum amount of changes in order to support PCIe RC hardware
> IP found on RPi5. The PCIe controller on bcm2712 is based on bcm7712 and
> as such it inherits register offsets, perst, bridge_reset ops and inbound
> windows count.

Add blank line between paragraphs.  We can fix when merging if you
don't repost for other reasons.

> Although, the implementation for bcm2712 needs a workaround related to the
> control of the bridge_reset where turning off of the root port must not
> shutdown the bridge_reset and this must be avoided. To implement this
> workaround a quirks field is introduced in pcie_cfg_data struct.
> 
> Signed-off-by: Stanimir Varbanov <svarbanov@suse.de>
> Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
> ---
> v4 -> v5:
>  - No changes.
> 
>  drivers/pci/controller/pcie-brcmstb.c | 25 +++++++++++++++++++++++--
>  1 file changed, 23 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/pci/controller/pcie-brcmstb.c b/drivers/pci/controller/pcie-brcmstb.c
> index 59190d8be0fb..50607df34a66 100644
> --- a/drivers/pci/controller/pcie-brcmstb.c
> +++ b/drivers/pci/controller/pcie-brcmstb.c
> @@ -234,10 +234,20 @@ struct inbound_win {
>  	u64 cpu_addr;
>  };
>  
> +/*
> + * The RESCAL block is tied to PCIe controller #1, regardless of the number of
> + * controllers, and turning off PCIe controller #1 prevents access to the RESCAL
> + * register blocks, therefore no other controller can access this register
> + * space, and depending upon the bus fabric we may get a timeout (UBUS/GISB),
> + * or a hang (AXI).
> + */
> +#define CFG_QUIRK_AVOID_BRIDGE_SHUTDOWN		BIT(0)
> +
>  struct pcie_cfg_data {
>  	const int *offsets;
>  	const enum pcie_soc_base soc_base;
>  	const bool has_phy;
> +	const u32 quirks;
>  	u8 num_inbound_wins;
>  	int (*perst_set)(struct brcm_pcie *pcie, u32 val);
>  	int (*bridge_sw_init_set)(struct brcm_pcie *pcie, u32 val);
> @@ -1488,8 +1498,9 @@ static int brcm_pcie_turn_off(struct brcm_pcie *pcie)
>  	u32p_replace_bits(&tmp, 1, PCIE_MISC_HARD_PCIE_HARD_DEBUG_SERDES_IDDQ_MASK);
>  	writel(tmp, base + HARD_DEBUG(pcie));
>  
> -	/* Shutdown PCIe bridge */
> -	ret = pcie->bridge_sw_init_set(pcie, 1);
> +	if (!(pcie->cfg->quirks & CFG_QUIRK_AVOID_BRIDGE_SHUTDOWN))
> +		/* Shutdown PCIe bridge */
> +		ret = pcie->cfg->bridge_sw_init_set(pcie, 1);
>  
>  	return ret;
>  }
> @@ -1699,6 +1710,15 @@ static const struct pcie_cfg_data bcm2711_cfg = {
>  	.num_inbound_wins = 3,
>  };
>  
> +static const struct pcie_cfg_data bcm2712_cfg = {
> +	.offsets	= pcie_offsets_bcm7712,
> +	.soc_base	= BCM7712,
> +	.perst_set	= brcm_pcie_perst_set_7278,
> +	.bridge_sw_init_set = brcm_pcie_bridge_sw_init_set_generic,
> +	.quirks		= CFG_QUIRK_AVOID_BRIDGE_SHUTDOWN,
> +	.num_inbound_wins = 10,
> +};
> +
>  static const struct pcie_cfg_data bcm4908_cfg = {
>  	.offsets	= pcie_offsets,
>  	.soc_base	= BCM4908,
> @@ -1750,6 +1770,7 @@ static const struct pcie_cfg_data bcm7712_cfg = {
>  
>  static const struct of_device_id brcm_pcie_match[] = {
>  	{ .compatible = "brcm,bcm2711-pcie", .data = &bcm2711_cfg },
> +	{ .compatible = "brcm,bcm2712-pcie", .data = &bcm2712_cfg },
>  	{ .compatible = "brcm,bcm4908-pcie", .data = &bcm4908_cfg },
>  	{ .compatible = "brcm,bcm7211-pcie", .data = &generic_cfg },
>  	{ .compatible = "brcm,bcm7216-pcie", .data = &bcm7216_cfg },
> -- 
> 2.47.0
> 


  parent reply	other threads:[~2025-02-12 18:04 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-01-20 13:01 [PATCH v5 -next 00/11] Add PCIe support for bcm2712 Stanimir Varbanov
2025-01-20 13:01 ` [PATCH v5 -next 01/11] dt-bindings: interrupt-controller: Add bcm2712 MSI-X DT bindings Stanimir Varbanov
2025-01-21 18:28   ` Florian Fainelli
2025-01-20 13:01 ` [PATCH v5 -next 02/11] dt-bindings: PCI: brcmstb: Update bindings for PCIe on bcm2712 Stanimir Varbanov
2025-01-21 18:28   ` Florian Fainelli
2025-01-27 17:59   ` Rob Herring (Arm)
2025-01-20 13:01 ` [PATCH v5 -next 03/11] irqchip: Add Broadcom bcm2712 MSI-X interrupt controller Stanimir Varbanov
2025-01-27 18:10   ` Thomas Gleixner
2025-01-28 17:55     ` Florian Fainelli
2025-01-29 10:43       ` Stanimir Varbanov
2025-02-21 16:26         ` Krzysztof Wilczyński
2025-02-21 16:23       ` Krzysztof Wilczyński
2025-01-20 13:01 ` [PATCH v5 -next 04/11] PCI: brcmstb: Reuse config structure Stanimir Varbanov
2025-01-31 16:10   ` Jim Quinlan
2025-02-21 15:36     ` Jim Quinlan
2025-02-21 16:41       ` Krzysztof Wilczyński
2025-02-21 16:44       ` Stanimir Varbanov
2025-02-21 16:50         ` Krzysztof Wilczyński
2025-01-20 13:01 ` [PATCH v5 -next 05/11] PCI: brcmstb: Expand inbound window size up to 64GB Stanimir Varbanov
2025-01-31 16:03   ` Jim Quinlan
2025-02-12 18:00   ` Bjorn Helgaas
2025-02-21 16:18     ` Krzysztof Wilczyński
2025-01-20 13:01 ` [PATCH v5 -next 06/11] PCI: brcmstb: Add bcm2712 support Stanimir Varbanov
2025-01-31 16:05   ` Jim Quinlan
2025-02-12 18:02   ` Bjorn Helgaas [this message]
2025-02-21 16:16     ` Krzysztof Wilczyński
2025-01-20 13:01 ` [PATCH v5 -next 07/11] PCI: brcmstb: Adjust PHY PLL setup to use a 54MHz input refclk Stanimir Varbanov
2025-01-31 16:08   ` Jim Quinlan
2025-02-03 11:27     ` Stanimir Varbanov
2025-02-21 21:33   ` Bjorn Helgaas
2025-02-23  9:50     ` Stanimir Varbanov
2025-01-20 13:01 ` [PATCH v5 -next 08/11] PCI: brcmstb: Adding a softdep to MIP MSI-X driver Stanimir Varbanov
2025-01-21 18:29   ` Florian Fainelli
2025-02-21 21:40   ` Bjorn Helgaas
2025-02-23  9:58     ` Stanimir Varbanov
2025-01-20 13:01 ` [PATCH v5 -next 09/11] PCI: brcmstb: Fix for missing of_node_put Stanimir Varbanov
2025-01-21 18:32   ` Florian Fainelli
2025-01-22 16:20     ` Stanimir Varbanov
2025-01-27 16:04       ` Stanimir Varbanov
2025-01-20 13:01 ` [PATCH v5 -next 10/11] arm64: dts: broadcom: bcm2712: Add PCIe DT nodes Stanimir Varbanov
2025-01-28 21:52   ` Florian Fainelli
2025-04-23  9:13     ` Stanimir Varbanov
2025-04-23  9:16       ` Florian Fainelli
2025-01-20 13:01 ` [PATCH v5 -next 11/11] arm64: dts: broadcom: bcm2712-rpi-5-b: Enable " Stanimir Varbanov
2025-01-28 21:53   ` Florian Fainelli
2025-01-27 11:32 ` [PATCH v5 -next 00/11] Add PCIe support for bcm2712 Ivan T. Ivanov
2025-02-11 13:30 ` Stanimir Varbanov
2025-02-12 18:04   ` Bjorn Helgaas
2025-02-13  8:38     ` Stanimir Varbanov
2025-02-21 16:28 ` Krzysztof Wilczyński

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250212180237.GA85622@bhelgaas \
    --to=helgaas@kernel.org \
    --cc=andrea.porta@suse.com \
    --cc=bcm-kernel-feedback-list@broadcom.com \
    --cc=bhelgaas@google.com \
    --cc=conor+dt@kernel.org \
    --cc=dave.stevenson@raspberrypi.com \
    --cc=devicetree@vger.kernel.org \
    --cc=florian.fainelli@broadcom.com \
    --cc=jim2101024@gmail.com \
    --cc=jonathan@raspberrypi.com \
    --cc=krzk+dt@kernel.org \
    --cc=kw@linux.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linux-rpi-kernel@lists.infradead.org \
    --cc=lpieralisi@kernel.org \
    --cc=nsaenz@kernel.org \
    --cc=p.zabel@pengutronix.de \
    --cc=phil@raspberrypi.com \
    --cc=robh@kernel.org \
    --cc=svarbanov@suse.de \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.