From 9d77db3c730780c8ef5ccd4b66403ff5675cfe4e Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Mon, 13 May 2024 10:30:14 +0000 Subject: [PATCH] modify sin led gpio --- kernel/drivers/fpga/dfl-fme-pr.c | 29 ++++++++++++++--------------- 1 files changed, 14 insertions(+), 15 deletions(-) diff --git a/kernel/drivers/fpga/dfl-fme-pr.c b/kernel/drivers/fpga/dfl-fme-pr.c index 0b84053..1194c0e 100644 --- a/kernel/drivers/fpga/dfl-fme-pr.c +++ b/kernel/drivers/fpga/dfl-fme-pr.c @@ -74,6 +74,7 @@ struct dfl_fme *fme; unsigned long minsz; void *buf = NULL; + size_t length; int ret = 0; u64 v; @@ -83,9 +84,6 @@ return -EFAULT; if (port_pr.argsz < minsz || port_pr.flags) - return -EINVAL; - - if (!IS_ALIGNED(port_pr.buffer_size, 4)) return -EINVAL; /* get fme header region */ @@ -99,12 +97,13 @@ return -EINVAL; } - if (!access_ok(VERIFY_READ, - (void __user *)(unsigned long)port_pr.buffer_address, - port_pr.buffer_size)) - return -EFAULT; + /* + * align PR buffer per PR bandwidth, as HW ignores the extra padding + * data automatically. + */ + length = ALIGN(port_pr.buffer_size, 4); - buf = vmalloc(port_pr.buffer_size); + buf = vmalloc(length); if (!buf) return -ENOMEM; @@ -141,7 +140,7 @@ fpga_image_info_free(region->info); info->buf = buf; - info->count = port_pr.buffer_size; + info->count = length; info->region_id = port_pr.port_id; region->info = info; @@ -160,9 +159,6 @@ mutex_unlock(&pdata->lock); free_exit: vfree(buf); - if (copy_to_user((void __user *)arg, &port_pr, minsz)) - return -EFAULT; - return ret; } @@ -444,10 +440,8 @@ struct dfl_feature *feature) { struct dfl_feature_platform_data *pdata = dev_get_platdata(&pdev->dev); - struct dfl_fme *priv; mutex_lock(&pdata->lock); - priv = dfl_fpga_pdata_get_private(pdata); dfl_fme_destroy_regions(pdata); dfl_fme_destroy_bridges(pdata); @@ -472,7 +466,12 @@ return ret; } -const struct dfl_feature_ops pr_mgmt_ops = { +const struct dfl_feature_id fme_pr_mgmt_id_table[] = { + {.id = FME_FEATURE_ID_PR_MGMT,}, + {0} +}; + +const struct dfl_feature_ops fme_pr_mgmt_ops = { .init = pr_mgmt_init, .uinit = pr_mgmt_uinit, .ioctl = fme_pr_ioctl, -- Gitblit v1.6.2