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
