Instead of repeating the table+offset math in every function that needs
to access the resource linked to a vdev, add a simple helper function
for that to simplify the code a bit.

No functional changes.

Signed-off-by: Francesco Valla <[email protected]>
---
 drivers/remoteproc/remoteproc_virtio.c | 54 +++++++++++++---------------------
 1 file changed, 20 insertions(+), 34 deletions(-)

diff --git a/drivers/remoteproc/remoteproc_virtio.c 
b/drivers/remoteproc/remoteproc_virtio.c
index d5e9ff045a28..dcafdfa7eab6 100644
--- a/drivers/remoteproc/remoteproc_virtio.c
+++ b/drivers/remoteproc/remoteproc_virtio.c
@@ -61,6 +61,16 @@ static  struct rproc *vdev_to_rproc(struct virtio_device 
*vdev)
        return rvdev->rproc;
 }
 
+static struct fw_rsc_vdev *vdev_to_rsc(struct virtio_device *vdev)
+{
+       struct rproc_vdev *rvdev = vdev_to_rvdev(vdev);
+       struct fw_rsc_vdev *rsc;
+
+       rsc = (void *)rvdev->rproc->table_ptr + rvdev->rsc_offset;
+
+       return rsc;
+}
+
 /* kick the remote processor, and let it know which virtqueue to poke at */
 static bool rproc_virtio_notify(struct virtqueue *vq)
 {
@@ -107,10 +117,10 @@ static struct virtqueue *rp_find_vq(struct virtio_device 
*vdev,
 {
        struct rproc_vdev *rvdev = vdev_to_rvdev(vdev);
        struct rproc *rproc = vdev_to_rproc(vdev);
+       struct fw_rsc_vdev *rsc = vdev_to_rsc(vdev);
        struct device *dev = &rproc->dev;
        struct rproc_mem_entry *mem;
        struct rproc_vring *rvring;
-       struct fw_rsc_vdev *rsc;
        struct virtqueue *vq;
        void *addr;
        int num, size;
@@ -157,7 +167,6 @@ static struct virtqueue *rp_find_vq(struct virtio_device 
*vdev,
        vq->priv = rvring;
 
        /* Update vring in resource table */
-       rsc = (void *)rproc->table_ptr + rvdev->rsc_offset;
        rsc->vring[id].da = mem->da;
 
        return vq;
@@ -212,20 +221,14 @@ static int rproc_virtio_find_vqs(struct virtio_device 
*vdev, unsigned int nvqs,
 
 static u8 rproc_virtio_get_status(struct virtio_device *vdev)
 {
-       struct rproc_vdev *rvdev = vdev_to_rvdev(vdev);
-       struct fw_rsc_vdev *rsc;
-
-       rsc = (void *)rvdev->rproc->table_ptr + rvdev->rsc_offset;
+       struct fw_rsc_vdev *rsc = vdev_to_rsc(vdev);
 
        return rsc->status;
 }
 
 static void rproc_virtio_set_status(struct virtio_device *vdev, u8 status)
 {
-       struct rproc_vdev *rvdev = vdev_to_rvdev(vdev);
-       struct fw_rsc_vdev *rsc;
-
-       rsc = (void *)rvdev->rproc->table_ptr + rvdev->rsc_offset;
+       struct fw_rsc_vdev *rsc = vdev_to_rsc(vdev);
 
        rsc->status = status;
        dev_dbg(&vdev->dev, "status: %d\n", status);
@@ -233,10 +236,7 @@ static void rproc_virtio_set_status(struct virtio_device 
*vdev, u8 status)
 
 static void rproc_virtio_reset(struct virtio_device *vdev)
 {
-       struct rproc_vdev *rvdev = vdev_to_rvdev(vdev);
-       struct fw_rsc_vdev *rsc;
-
-       rsc = (void *)rvdev->rproc->table_ptr + rvdev->rsc_offset;
+       struct fw_rsc_vdev *rsc = vdev_to_rsc(vdev);
 
        rsc->status = 0;
        dev_dbg(&vdev->dev, "reset !\n");
@@ -245,10 +245,7 @@ static void rproc_virtio_reset(struct virtio_device *vdev)
 /* provide the vdev features as retrieved from the firmware */
 static u64 rproc_virtio_get_features(struct virtio_device *vdev)
 {
-       struct rproc_vdev *rvdev = vdev_to_rvdev(vdev);
-       struct fw_rsc_vdev *rsc;
-
-       rsc = (void *)rvdev->rproc->table_ptr + rvdev->rsc_offset;
+       struct fw_rsc_vdev *rsc = vdev_to_rsc(vdev);
 
        return rsc->dfeatures;
 }
@@ -265,10 +262,7 @@ static void rproc_transport_features(struct virtio_device 
*vdev)
 
 static int rproc_virtio_finalize_features(struct virtio_device *vdev)
 {
-       struct rproc_vdev *rvdev = vdev_to_rvdev(vdev);
-       struct fw_rsc_vdev *rsc;
-
-       rsc = (void *)rvdev->rproc->table_ptr + rvdev->rsc_offset;
+       struct fw_rsc_vdev *rsc = vdev_to_rsc(vdev);
 
        /* Give virtio_ring a chance to accept features */
        vring_transport_features(vdev);
@@ -291,12 +285,8 @@ static int rproc_virtio_finalize_features(struct 
virtio_device *vdev)
 static void rproc_virtio_get(struct virtio_device *vdev, unsigned int offset,
                             void *buf, unsigned int len)
 {
-       struct rproc_vdev *rvdev = vdev_to_rvdev(vdev);
-       struct fw_rsc_vdev *rsc;
-       void *cfg;
-
-       rsc = (void *)rvdev->rproc->table_ptr + rvdev->rsc_offset;
-       cfg = &rsc->vring[rsc->num_of_vrings];
+       struct fw_rsc_vdev *rsc = vdev_to_rsc(vdev);
+       void *cfg = &rsc->vring[rsc->num_of_vrings];
 
        if (offset + len > rsc->config_len || offset + len < len) {
                dev_err(&vdev->dev, "rproc_virtio_get: access out of bounds\n");
@@ -309,12 +299,8 @@ static void rproc_virtio_get(struct virtio_device *vdev, 
unsigned int offset,
 static void rproc_virtio_set(struct virtio_device *vdev, unsigned int offset,
                             const void *buf, unsigned int len)
 {
-       struct rproc_vdev *rvdev = vdev_to_rvdev(vdev);
-       struct fw_rsc_vdev *rsc;
-       void *cfg;
-
-       rsc = (void *)rvdev->rproc->table_ptr + rvdev->rsc_offset;
-       cfg = &rsc->vring[rsc->num_of_vrings];
+       struct fw_rsc_vdev *rsc = vdev_to_rsc(vdev);
+       void *cfg = &rsc->vring[rsc->num_of_vrings];
 
        if (offset + len > rsc->config_len || offset + len < len) {
                dev_err(&vdev->dev, "rproc_virtio_set: access out of bounds\n");

-- 
2.56.0


Reply via email to