[PATCH v3 1/5] PCI: dwc: Determine whether iMSI is used before calling .init

Manivannan Sadhasivam mani at kernel.org
Mon Jul 6 09:43:44 PDT 2026


On Wed, Jul 01, 2026 at 10:37:44PM +0200, Marek Vasut wrote:
> The R-Car Gen4 PCIe controller integration configures MSI registers
> in the controller driver .init callback, because those registers
> have to be configured while PERST signal is asserted, and the PERST
> signal is asserted across the controller driver .init callback.
> 
> The registers have to be configured differently in case the iMSI is
> or is not used. Assign pp->use_imsi_rx before the controller driver
> .init callback is called, so the controller driver .init callback
> implementation can use the pp->use_imsi_rx value.
> 
> Signed-off-by: Marek Vasut <marek.vasut+renesas at mailbox.org>

LGTM!

- Mani

> ---
> Cc: "Krzysztof Wilczyński" <kwilczynski at kernel.org>
> Cc: Bjorn Helgaas <bhelgaas at google.com>
> Cc: Catalin Marinas <catalin.marinas at arm.com>
> Cc: Conor Dooley <conor+dt at kernel.org>
> Cc: Geert Uytterhoeven <geert+renesas at glider.be>
> Cc: Krzysztof Kozlowski <krzk+dt at kernel.org>
> Cc: Lorenzo Pieralisi <lpieralisi at kernel.org>
> Cc: Manivannan Sadhasivam <mani at kernel.org>
> Cc: Marc Zyngier <maz at kernel.org>
> Cc: Rob Herring <robh at kernel.org>
> Cc: Yoshihiro Shimoda <yoshihiro.shimoda.uh at renesas.com>
> Cc: devicetree at vger.kernel.org
> Cc: linux-arm-kernel at lists.infradead.org
> Cc: linux-doc at vger.kernel.org
> Cc: linux-kernel at vger.kernel.org
> Cc: linux-pci at vger.kernel.org
> Cc: linux-renesas-soc at vger.kernel.org
> ---
> V3: New patch
> ---
>  drivers/pci/controller/dwc/pcie-designware-host.c | 10 ++++++----
>  1 file changed, 6 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c b/drivers/pci/controller/dwc/pcie-designware-host.c
> index 06722259d2e37..f5a38e6fd8d79 100644
> --- a/drivers/pci/controller/dwc/pcie-designware-host.c
> +++ b/drivers/pci/controller/dwc/pcie-designware-host.c
> @@ -587,6 +587,12 @@ int dw_pcie_host_init(struct dw_pcie_rp *pp)
>  	if (ret)
>  		return ret;
>  
> +	if (pci_msi_enabled()) {
> +		pp->use_imsi_rx = !(pp->ops->msi_init ||
> +				    of_property_present(np, "msi-parent") ||
> +				    of_property_present(np, "msi-map"));
> +	}
> +
>  	if (pp->ops->init) {
>  		ret = pp->ops->init(pp);
>  		if (ret)
> @@ -594,10 +600,6 @@ int dw_pcie_host_init(struct dw_pcie_rp *pp)
>  	}
>  
>  	if (pci_msi_enabled()) {
> -		pp->use_imsi_rx = !(pp->ops->msi_init ||
> -				     of_property_present(np, "msi-parent") ||
> -				     of_property_present(np, "msi-map"));
> -
>  		/*
>  		 * For the use_imsi_rx case the default assignment is handled
>  		 * in the dw_pcie_msi_host_init().
> -- 
> 2.53.0
> 

-- 
மணிவண்ணன் சதாசிவம்



More information about the linux-arm-kernel mailing list