OSDN Git Service

mhi: core: add support for 64bit doorbell address
authorSujeev Dias <sdias@codeaurora.org>
Fri, 7 Apr 2017 15:53:10 +0000 (08:53 -0700)
committerSujeev Dias <sdias@codeaurora.org>
Wed, 26 Apr 2017 03:50:11 +0000 (20:50 -0700)
Doorbell pointers are 64bit addresses. Use correct
data type when passing the address.

CRs-Fixed: 2038601
Change-Id: Ie8e42d38944c0529386b90f5a6d37dcd77c19184
Signed-off-by: Sujeev Dias <sdias@codeaurora.org>
drivers/platform/msm/mhi/mhi.h
drivers/platform/msm/mhi/mhi_main.c

index 60e02fc..b4f3df4 100644 (file)
@@ -338,9 +338,8 @@ struct db_mode {
        u32 db_mode : 1;
        enum MHI_BRSTMODE brstmode;
        void (*process_db)(struct mhi_device_ctxt *mhi_dev_ctxt,
-                          void __iomem *io_addr,
-                          uintptr_t chan,
-                          u32 val);
+                          void __iomem *io_addr, unsigned int chan,
+                          dma_addr_t val);
 };
 
 struct mhi_ring {
@@ -728,15 +727,13 @@ int mhi_set_bus_request(struct mhi_device_ctxt *mhi_dev_ctxt,
                                        int index);
 int start_chan_sync(struct mhi_client_handle *client_handle);
 void mhi_process_db_brstmode(struct mhi_device_ctxt *mhi_dev_ctxt,
-                            void __iomem *io_addr,
-                            uintptr_t chan,
-                            u32 val);
+                            void __iomem *io_addr, unsigned int chan,
+                            dma_addr_t val);
 void mhi_process_db_brstmode_disable(struct mhi_device_ctxt *mhi_dev_ctxt,
-                                    void __iomem *io_addr,
-                                    uintptr_t chan,
-                                    u32 val);
+                                    void __iomem *io_addr, unsigned int chan,
+                                    dma_addr_t val);
 void mhi_process_db(struct mhi_device_ctxt *mhi_dev_ctxt, void __iomem *io_addr,
-                 uintptr_t io_offset, u32 val);
+                   unsigned int chan, dma_addr_t val);
 void mhi_reg_write_field(struct mhi_device_ctxt *mhi_dev_ctxt,
                         void __iomem *io_addr,
                         uintptr_t io_offset,
index 46baf73..78aa1be 100644 (file)
@@ -90,8 +90,9 @@ dma_pool_error:
 }
 
 static void mhi_write_db(struct mhi_device_ctxt *mhi_dev_ctxt,
-                 void __iomem *io_addr_lower,
-                 uintptr_t chan, u64 val)
+                        void __iomem *io_addr_lower,
+                        unsigned int chan,
+                        dma_addr_t val)
 {
        uintptr_t io_offset = chan * sizeof(u64);
        void __iomem *io_addr_upper =
@@ -1918,8 +1919,8 @@ EXPORT_SYMBOL(mhi_xfer_rddm);
 
 void mhi_process_db_brstmode(struct mhi_device_ctxt *mhi_dev_ctxt,
                             void __iomem *io_addr,
-                            uintptr_t chan,
-                            u32 val)
+                            unsigned int chan,
+                            dma_addr_t val)
 {
        struct mhi_ring *ring_ctxt =
                &mhi_dev_ctxt->mhi_local_chan_ctxt[chan];
@@ -1932,7 +1933,7 @@ void mhi_process_db_brstmode(struct mhi_device_ctxt *mhi_dev_ctxt,
                        mhi_local_event_ctxt[chan];
 
        mhi_log(mhi_dev_ctxt, MHI_MSG_VERBOSE,
-               "db.set addr: %p io_offset 0x%lx val:0x%x\n",
+               "db.set addr: %p io_offset %u val:0x%llx\n",
                io_addr, chan, val);
 
        mhi_update_ctxt(mhi_dev_ctxt, io_addr, chan, val);
@@ -1942,7 +1943,7 @@ void mhi_process_db_brstmode(struct mhi_device_ctxt *mhi_dev_ctxt,
                ring_ctxt->db_mode.db_mode = 0;
        } else {
                mhi_log(mhi_dev_ctxt, MHI_MSG_INFO,
-                       "Not ringing xfer db, chan %ld, brstmode %d db_mode %d\n",
+                       "Not ringing xfer db, chan %u, brstmode %d db_mode %d\n",
                        chan, ring_ctxt->db_mode.brstmode,
                        ring_ctxt->db_mode.db_mode);
        }
@@ -1950,23 +1951,24 @@ void mhi_process_db_brstmode(struct mhi_device_ctxt *mhi_dev_ctxt,
 
 void mhi_process_db_brstmode_disable(struct mhi_device_ctxt *mhi_dev_ctxt,
                             void __iomem *io_addr,
-                            uintptr_t chan,
-                            u32 val)
+                            unsigned int chan,
+                            dma_addr_t val)
 {
        mhi_log(mhi_dev_ctxt, MHI_MSG_VERBOSE,
-               "db.set addr: %p io_offset 0x%lx val:0x%x\n",
+               "db.set addr: %p io_offset %u val:0x%llx\n",
                io_addr, chan, val);
        mhi_update_ctxt(mhi_dev_ctxt, io_addr, chan, val);
        mhi_write_db(mhi_dev_ctxt, io_addr, chan, val);
 }
 
 void mhi_process_db(struct mhi_device_ctxt *mhi_dev_ctxt,
-                 void __iomem *io_addr,
-                 uintptr_t chan, u32 val)
+                   void __iomem *io_addr,
+                   unsigned int chan,
+                   dma_addr_t val)
 {
 
        mhi_log(mhi_dev_ctxt, MHI_MSG_VERBOSE,
-               "db.set addr: %p io_offset 0x%lx val:0x%x\n",
+               "db.set addr: %p io_offset %u val:0x%llx\n",
                io_addr, chan, val);
 
        mhi_update_ctxt(mhi_dev_ctxt, io_addr, chan, val);
@@ -1981,7 +1983,7 @@ void mhi_process_db(struct mhi_device_ctxt *mhi_dev_ctxt,
                        chan_ctxt->db_mode.db_mode = 0;
                } else {
                        mhi_log(mhi_dev_ctxt, MHI_MSG_INFO,
-                               "Not ringing xfer db, chan %ld, brstmode %d db_mode %d\n",
+                               "Not ringing xfer db, chan %u, brstmode %d db_mode %d\n",
                                chan, chan_ctxt->db_mode.brstmode,
                                chan_ctxt->db_mode.db_mode);
                }