[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