Having absolute address simplifies the code and also removes the
confusion around feature->msiir_offset and msi_data->msiir_offset.

Signed-off-by: Bharat Bhushan <bharat.bhus...@freescale.com>
---
 arch/powerpc/sysdev/fsl_msi.c | 9 +++------
 arch/powerpc/sysdev/fsl_msi.h | 2 +-
 2 files changed, 4 insertions(+), 7 deletions(-)

diff --git a/arch/powerpc/sysdev/fsl_msi.c b/arch/powerpc/sysdev/fsl_msi.c
index 4bbb4b8..ec3161b 100644
--- a/arch/powerpc/sysdev/fsl_msi.c
+++ b/arch/powerpc/sysdev/fsl_msi.c
@@ -157,7 +157,7 @@ static void fsl_compose_msi_msg(struct pci_dev *pdev, int 
hwirq,
        if (reg && (len == sizeof(u64)))
                address = be64_to_cpup(reg);
        else
-               address = fsl_pci_immrbar_base(hose) + msi_data->msiir_offset;
+               address = msi_data->msiir;
 
        msg->address_lo = lower_32_bits(address);
        msg->address_hi = upper_32_bits(address);
@@ -430,18 +430,15 @@ static int fsl_of_msi_probe(struct platform_device *dev)
                                dev->dev.of_node->full_name);
                        goto error_out;
                }
-               msi->msiir_offset =
-                       features->msiir_offset + (res.start & 0xfffff);
 
                /*
                 * First read the MSIIR/MSIIR1 offset from dts
                 * On failure use the hardcode MSIIR offset
                 */
                if (of_address_to_resource(dev->dev.of_node, 1, &msiir))
-                       msi->msiir_offset = features->msiir_offset +
-                                           (res.start & MSIIR_OFFSET_MASK);
+                       msi->msiir = res.start + features->msiir_offset;
                else
-                       msi->msiir_offset = msiir.start & MSIIR_OFFSET_MASK;
+                       msi->msiir = msiir.start;
        }
 
        msi->feature = features->fsl_pic_ip;
diff --git a/arch/powerpc/sysdev/fsl_msi.h b/arch/powerpc/sysdev/fsl_msi.h
index 420cfcb..9b0ab84 100644
--- a/arch/powerpc/sysdev/fsl_msi.h
+++ b/arch/powerpc/sysdev/fsl_msi.h
@@ -34,7 +34,7 @@ struct fsl_msi {
 
        unsigned long cascade_irq;
 
-       u32 msiir_offset; /* Offset of MSIIR, relative to start of CCSR */
+       phys_addr_t msiir; /* MSIIR Address in CCSR */
        u32 ibs_shift; /* Shift of interrupt bit select */
        u32 srs_shift; /* Shift of the shared interrupt register select */
        void __iomem *msi_regs;
-- 
1.9.3

_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to