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

