From: Marek Vasut <marek.vasut+rene...@gmail.com>

The MSI address can be 64bit. Switch the data type used to hold the
result of virt_to_phys() to phys_addr_t to reflect its properties
correctly and program the top 32bits of PA into PCIEMSIAUR.

Signed-off-by: Marek Vasut <marek.vasut+rene...@gmail.com>
Cc: Geert Uytterhoeven <geert+rene...@glider.be>
Cc: Phil Edworthy <phil.edwor...@renesas.com>
Cc: Simon Horman <horms+rene...@verge.net.au>
Cc: Wolfram Sang <w...@the-dreams.de>
Cc: linux-renesas-soc@vger.kernel.org
To: linux-...@vger.kernel.org
Reviewed-by: Geert Uytterhoeven <geert+rene...@glider.be>
---
V2: - s/it's/its/ in commit message
    - Add R-B from Geert
---
 drivers/pci/controller/pcie-rcar.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/pci/controller/pcie-rcar.c 
b/drivers/pci/controller/pcie-rcar.c
index 989b7b73ed61..75ac83f21035 100644
--- a/drivers/pci/controller/pcie-rcar.c
+++ b/drivers/pci/controller/pcie-rcar.c
@@ -889,7 +889,7 @@ static int rcar_pcie_enable_msi(struct rcar_pcie *pcie)
 {
        struct device *dev = pcie->dev;
        struct rcar_msi *msi = &pcie->msi;
-       unsigned long base;
+       phys_addr_t base;
        int err, i;
 
        mutex_init(&msi->lock);
@@ -931,7 +931,7 @@ static int rcar_pcie_enable_msi(struct rcar_pcie *pcie)
        base = virt_to_phys((void *)msi->pages);
 
        rcar_pci_write_reg(pcie, base | MSIFE, PCIEMSIALR);
-       rcar_pci_write_reg(pcie, 0, PCIEMSIAUR);
+       rcar_pci_write_reg(pcie, base >> 32, PCIEMSIAUR);
 
        /* enable all MSI interrupts */
        rcar_pci_write_reg(pcie, 0xffffffff, PCIEMSIIER);
-- 
2.20.1

Reply via email to