Move from the deprecated mmap hook to the new mmap_prepare hook for both
the LPC control and P2A control drivers.

Both remap a range of their reserved memory region, so use the PFN remap
mmap action to do so, retaining the -EAGAIN error on failure via the action
error override.

Signed-off-by: Lorenzo Stoakes (ARM) <[email protected]>
---
 drivers/soc/aspeed/aspeed-lpc-ctrl.c | 20 +++++++++-----------
 drivers/soc/aspeed/aspeed-p2a-ctrl.c | 22 ++++++++--------------
 2 files changed, 17 insertions(+), 25 deletions(-)

diff --git a/drivers/soc/aspeed/aspeed-lpc-ctrl.c 
b/drivers/soc/aspeed/aspeed-lpc-ctrl.c
index 4d8574cac703..9258762354cc 100644
--- a/drivers/soc/aspeed/aspeed-lpc-ctrl.c
+++ b/drivers/soc/aspeed/aspeed-lpc-ctrl.c
@@ -47,22 +47,20 @@ static struct aspeed_lpc_ctrl *file_aspeed_lpc_ctrl(struct 
file *file)
                        miscdev);
 }
 
-static int aspeed_lpc_ctrl_mmap(struct file *file, struct vm_area_struct *vma)
+static int aspeed_lpc_ctrl_mmap_prepare(struct vm_area_desc *desc)
 {
-       struct aspeed_lpc_ctrl *lpc_ctrl = file_aspeed_lpc_ctrl(file);
-       unsigned long vsize = vma->vm_end - vma->vm_start;
-       pgprot_t prot = vma->vm_page_prot;
+       struct aspeed_lpc_ctrl *lpc_ctrl = file_aspeed_lpc_ctrl(desc->file);
 
-       if (vma->vm_pgoff + vma_pages(vma) > lpc_ctrl->mem_size >> PAGE_SHIFT)
+       if (desc->pgoff + vma_desc_pages(desc) >
+           lpc_ctrl->mem_size >> PAGE_SHIFT)
                return -EINVAL;
 
        /* ast2400/2500 AHB accesses are not cache coherent */
-       prot = pgprot_noncached(prot);
+       desc->page_prot = pgprot_noncached(desc->page_prot);
 
-       if (remap_pfn_range(vma, vma->vm_start,
-               (lpc_ctrl->mem_base >> PAGE_SHIFT) + vma->vm_pgoff,
-               vsize, prot))
-               return -EAGAIN;
+       mmap_action_remap_full(desc,
+               (lpc_ctrl->mem_base >> PAGE_SHIFT) + desc->pgoff);
+       desc->action.error_override = -EAGAIN;
 
        return 0;
 }
@@ -216,7 +214,7 @@ static long aspeed_lpc_ctrl_ioctl(struct file *file, 
unsigned int cmd,
 
 static const struct file_operations aspeed_lpc_ctrl_fops = {
        .owner          = THIS_MODULE,
-       .mmap           = aspeed_lpc_ctrl_mmap,
+       .mmap_prepare   = aspeed_lpc_ctrl_mmap_prepare,
        .unlocked_ioctl = aspeed_lpc_ctrl_ioctl,
 };
 
diff --git a/drivers/soc/aspeed/aspeed-p2a-ctrl.c 
b/drivers/soc/aspeed/aspeed-p2a-ctrl.c
index b6b7b80f842a..ad59ff28c013 100644
--- a/drivers/soc/aspeed/aspeed-p2a-ctrl.c
+++ b/drivers/soc/aspeed/aspeed-p2a-ctrl.c
@@ -97,29 +97,23 @@ static void aspeed_p2a_disable_bridge(struct 
aspeed_p2a_ctrl *p2a_ctrl)
        regmap_update_bits(p2a_ctrl->regmap, SCU180, SCU180_ENP2A, 0);
 }
 
-static int aspeed_p2a_mmap(struct file *file, struct vm_area_struct *vma)
+static int aspeed_p2a_mmap_prepare(struct vm_area_desc *desc)
 {
-       unsigned long vsize;
-       pgprot_t prot;
-       struct aspeed_p2a_user *priv = file->private_data;
+       struct aspeed_p2a_user *priv = desc->file->private_data;
        struct aspeed_p2a_ctrl *ctrl = priv->parent;
 
        if (ctrl->mem_base == 0 && ctrl->mem_size == 0)
                return -EINVAL;
 
-       vsize = vma->vm_end - vma->vm_start;
-       prot = vma->vm_page_prot;
-
-       if (vma->vm_pgoff + vma_pages(vma) > ctrl->mem_size >> PAGE_SHIFT)
+       if (desc->pgoff + vma_desc_pages(desc) > ctrl->mem_size >> PAGE_SHIFT)
                return -EINVAL;
 
        /* ast2400/2500 AHB accesses are not cache coherent */
-       prot = pgprot_noncached(prot);
+       desc->page_prot = pgprot_noncached(desc->page_prot);
 
-       if (remap_pfn_range(vma, vma->vm_start,
-               (ctrl->mem_base >> PAGE_SHIFT) + vma->vm_pgoff,
-               vsize, prot))
-               return -EAGAIN;
+       mmap_action_remap_full(desc,
+               (ctrl->mem_base >> PAGE_SHIFT) + desc->pgoff);
+       desc->action.error_override = -EAGAIN;
 
        return 0;
 }
@@ -308,7 +302,7 @@ static int aspeed_p2a_release(struct inode *inode, struct 
file *file)
 
 static const struct file_operations aspeed_p2a_ctrl_fops = {
        .owner = THIS_MODULE,
-       .mmap = aspeed_p2a_mmap,
+       .mmap_prepare = aspeed_p2a_mmap_prepare,
        .unlocked_ioctl = aspeed_p2a_ioctl,
        .open = aspeed_p2a_open,
        .release = aspeed_p2a_release,

-- 
2.56.0


Reply via email to