media: ipu3-cio2: Use macros from pfn.h
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Mon, 17 Aug 2020 16:07:27 +0000 (18:07 +0200)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Thu, 10 Sep 2020 12:12:56 +0000 (14:12 +0200)
There are few nice macros in pfn.h, some of which we may use here.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/media/pci/intel/ipu3/ipu3-cio2.c

index 8641018..a9a2572 100644 (file)
@@ -16,6 +16,7 @@
 #include <linux/interrupt.h>
 #include <linux/module.h>
 #include <linux/pci.h>
+#include <linux/pfn.h>
 #include <linux/pm_runtime.h>
 #include <linux/property.h>
 #include <linux/vmalloc.h>
@@ -126,7 +127,7 @@ static int cio2_fbpt_init_dummy(struct cio2_device *cio2)
         * Initialize each entry to dummy_page bus base address.
         */
        for (i = 0; i < CIO2_LOP_ENTRIES; i++)
-               cio2->dummy_lop[i] = cio2->dummy_page_bus_addr >> PAGE_SHIFT;
+               cio2->dummy_lop[i] = PFN_DOWN(cio2->dummy_page_bus_addr);
 
        return 0;
 }
@@ -162,7 +163,7 @@ static void cio2_fbpt_entry_init_dummy(struct cio2_device *cio2,
        entry[1].second_entry.last_page_available_bytes = PAGE_SIZE - 1;
 
        for (i = 0; i < CIO2_MAX_LOPS; i++)
-               entry[i].lop_page_addr = cio2->dummy_lop_bus_addr >> PAGE_SHIFT;
+               entry[i].lop_page_addr = PFN_DOWN(cio2->dummy_lop_bus_addr);
 
        cio2_fbpt_entry_enable(cio2, entry);
 }
@@ -179,8 +180,7 @@ static void cio2_fbpt_entry_init_buf(struct cio2_device *cio2,
 
        entry[0].first_entry.first_page_offset = b->offset;
        remaining = length + entry[0].first_entry.first_page_offset;
-       entry[1].second_entry.num_of_pages =
-               DIV_ROUND_UP(remaining, PAGE_SIZE);
+       entry[1].second_entry.num_of_pages = PFN_UP(remaining);
        /*
         * last_page_available_bytes has the offset of the last byte in the
         * last page which is still accessible by DMA. DMA cannot access
@@ -196,7 +196,7 @@ static void cio2_fbpt_entry_init_buf(struct cio2_device *cio2,
        remaining = length;
        i = 0;
        while (remaining > 0) {
-               entry->lop_page_addr = b->lop_bus_addr[i] >> PAGE_SHIFT;
+               entry->lop_page_addr = PFN_DOWN(b->lop_bus_addr[i]);
                remaining -= CIO2_LOP_ENTRIES * PAGE_SIZE;
                entry++;
                i++;
@@ -205,7 +205,7 @@ static void cio2_fbpt_entry_init_buf(struct cio2_device *cio2,
        /*
         * The first not meaningful FBPT entry should point to a valid LOP
         */
-       entry->lop_page_addr = cio2->dummy_lop_bus_addr >> PAGE_SHIFT;
+       entry->lop_page_addr = PFN_DOWN(cio2->dummy_lop_bus_addr);
 
        cio2_fbpt_entry_enable(cio2, entry);
 }
@@ -471,8 +471,7 @@ static int cio2_hw_init(struct cio2_device *cio2, struct cio2_queue *q)
        }
 
        /* Enable DMA */
-       writel(q->fbpt_bus_addr >> PAGE_SHIFT,
-              base + CIO2_REG_CDMABA(CIO2_DMA_CHAN));
+       writel(PFN_DOWN(q->fbpt_bus_addr), base + CIO2_REG_CDMABA(CIO2_DMA_CHAN));
 
        writel(num_buffers1 << CIO2_CDMAC0_FBPT_LEN_SHIFT |
               FBPT_WIDTH << CIO2_CDMAC0_FBPT_WIDTH_SHIFT |
@@ -837,7 +836,7 @@ static int cio2_vb2_buf_init(struct vb2_buffer *vb)
        struct device *dev = &cio2->pci_dev->dev;
        struct cio2_buffer *b =
                container_of(vb, struct cio2_buffer, vbb.vb2_buf);
-       unsigned int pages = DIV_ROUND_UP(vb->planes[0].length, PAGE_SIZE);
+       unsigned int pages = PFN_UP(vb->planes[0].length);
        unsigned int lops = DIV_ROUND_UP(pages + 1, CIO2_LOP_ENTRIES);
        struct sg_table *sg;
        struct sg_dma_page_iter sg_iter;
@@ -870,7 +869,7 @@ static int cio2_vb2_buf_init(struct vb2_buffer *vb)
        for_each_sg_dma_page (sg->sgl, &sg_iter, sg->nents, 0) {
                if (!pages--)
                        break;
-               b->lop[i][j] = sg_page_iter_dma_address(&sg_iter) >> PAGE_SHIFT;
+               b->lop[i][j] = PFN_DOWN(sg_page_iter_dma_address(&sg_iter));
                j++;
                if (j == CIO2_LOP_ENTRIES) {
                        i++;
@@ -878,7 +877,7 @@ static int cio2_vb2_buf_init(struct vb2_buffer *vb)
                }
        }
 
-       b->lop[i][j] = cio2->dummy_page_bus_addr >> PAGE_SHIFT;
+       b->lop[i][j] = PFN_DOWN(cio2->dummy_page_bus_addr);
        return 0;
 fail:
        while (i--)