Commit 9a262c7a authored by Andy Shevchenko's avatar Andy Shevchenko Committed by Mauro Carvalho Chehab

media: ipu3-cio2: Use macros from pfn.h

There are few nice macros in pfn.h, some of which we may use here.
Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: default avatarSakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent e186f932
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/pci.h> #include <linux/pci.h>
#include <linux/pfn.h>
#include <linux/pm_runtime.h> #include <linux/pm_runtime.h>
#include <linux/property.h> #include <linux/property.h>
#include <linux/vmalloc.h> #include <linux/vmalloc.h>
...@@ -126,7 +127,7 @@ static int cio2_fbpt_init_dummy(struct cio2_device *cio2) ...@@ -126,7 +127,7 @@ static int cio2_fbpt_init_dummy(struct cio2_device *cio2)
* Initialize each entry to dummy_page bus base address. * Initialize each entry to dummy_page bus base address.
*/ */
for (i = 0; i < CIO2_LOP_ENTRIES; i++) 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; return 0;
} }
...@@ -162,7 +163,7 @@ static void cio2_fbpt_entry_init_dummy(struct cio2_device *cio2, ...@@ -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; entry[1].second_entry.last_page_available_bytes = PAGE_SIZE - 1;
for (i = 0; i < CIO2_MAX_LOPS; i++) 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); cio2_fbpt_entry_enable(cio2, entry);
} }
...@@ -179,8 +180,7 @@ static void cio2_fbpt_entry_init_buf(struct cio2_device *cio2, ...@@ -179,8 +180,7 @@ static void cio2_fbpt_entry_init_buf(struct cio2_device *cio2,
entry[0].first_entry.first_page_offset = b->offset; entry[0].first_entry.first_page_offset = b->offset;
remaining = length + entry[0].first_entry.first_page_offset; remaining = length + entry[0].first_entry.first_page_offset;
entry[1].second_entry.num_of_pages = entry[1].second_entry.num_of_pages = PFN_UP(remaining);
DIV_ROUND_UP(remaining, PAGE_SIZE);
/* /*
* last_page_available_bytes has the offset of the last byte in the * last_page_available_bytes has the offset of the last byte in the
* last page which is still accessible by DMA. DMA cannot access * 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, ...@@ -196,7 +196,7 @@ static void cio2_fbpt_entry_init_buf(struct cio2_device *cio2,
remaining = length; remaining = length;
i = 0; i = 0;
while (remaining > 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; remaining -= CIO2_LOP_ENTRIES * PAGE_SIZE;
entry++; entry++;
i++; i++;
...@@ -205,7 +205,7 @@ static void cio2_fbpt_entry_init_buf(struct cio2_device *cio2, ...@@ -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 * 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); cio2_fbpt_entry_enable(cio2, entry);
} }
...@@ -471,8 +471,7 @@ static int cio2_hw_init(struct cio2_device *cio2, struct cio2_queue *q) ...@@ -471,8 +471,7 @@ static int cio2_hw_init(struct cio2_device *cio2, struct cio2_queue *q)
} }
/* Enable DMA */ /* Enable DMA */
writel(q->fbpt_bus_addr >> PAGE_SHIFT, writel(PFN_DOWN(q->fbpt_bus_addr), base + CIO2_REG_CDMABA(CIO2_DMA_CHAN));
base + CIO2_REG_CDMABA(CIO2_DMA_CHAN));
writel(num_buffers1 << CIO2_CDMAC0_FBPT_LEN_SHIFT | writel(num_buffers1 << CIO2_CDMAC0_FBPT_LEN_SHIFT |
FBPT_WIDTH << CIO2_CDMAC0_FBPT_WIDTH_SHIFT | FBPT_WIDTH << CIO2_CDMAC0_FBPT_WIDTH_SHIFT |
...@@ -837,7 +836,7 @@ static int cio2_vb2_buf_init(struct vb2_buffer *vb) ...@@ -837,7 +836,7 @@ static int cio2_vb2_buf_init(struct vb2_buffer *vb)
struct device *dev = &cio2->pci_dev->dev; struct device *dev = &cio2->pci_dev->dev;
struct cio2_buffer *b = struct cio2_buffer *b =
container_of(vb, struct cio2_buffer, vbb.vb2_buf); 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); unsigned int lops = DIV_ROUND_UP(pages + 1, CIO2_LOP_ENTRIES);
struct sg_table *sg; struct sg_table *sg;
struct sg_dma_page_iter sg_iter; struct sg_dma_page_iter sg_iter;
...@@ -870,7 +869,7 @@ static int cio2_vb2_buf_init(struct vb2_buffer *vb) ...@@ -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) { for_each_sg_dma_page (sg->sgl, &sg_iter, sg->nents, 0) {
if (!pages--) if (!pages--)
break; 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++; j++;
if (j == CIO2_LOP_ENTRIES) { if (j == CIO2_LOP_ENTRIES) {
i++; i++;
...@@ -878,7 +877,7 @@ static int cio2_vb2_buf_init(struct vb2_buffer *vb) ...@@ -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; return 0;
fail: fail:
while (i--) while (i--)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment