diff options
author | Jordan Crouse <jcrouse@codeaurora.org> | 2016-01-25 16:01:58 -0700 |
---|---|---|
committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 21:18:41 -0700 |
commit | da324cf8f6ee36e5da13d543927ab6e077fb6531 (patch) | |
tree | 36726140fa3ce772660635dfcde66d49dca5021f /drivers/gpu/msm/adreno_ringbuffer.c | |
parent | 11d4029da91508ea4bc4ca66ea5bd3c333ef591b (diff) |
msm: kgsl: Add and use KGSL_DEVICE macro
Add a helper macro to convert an adreno_device pointer to a
struct kgsl_device pointer. This is mostly syntatic sugar
but it makes the code a bit cleaner and it abstracts a bit of
the ugliness away.
Change-Id: Ic0dedbadd97bda3316a58514a5a64757bd4154c7
Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
Diffstat (limited to 'drivers/gpu/msm/adreno_ringbuffer.c')
-rw-r--r-- | drivers/gpu/msm/adreno_ringbuffer.c | 45 |
1 files changed, 26 insertions, 19 deletions
diff --git a/drivers/gpu/msm/adreno_ringbuffer.c b/drivers/gpu/msm/adreno_ringbuffer.c index d038762222c2..48210f7256f9 100644 --- a/drivers/gpu/msm/adreno_ringbuffer.c +++ b/drivers/gpu/msm/adreno_ringbuffer.c @@ -44,7 +44,7 @@ static void _cff_write_ringbuffer(struct adreno_ringbuffer *rb) { struct adreno_device *adreno_dev = ADRENO_RB_DEVICE(rb); - struct kgsl_device *device = &adreno_dev->dev; + struct kgsl_device *device = KGSL_DEVICE(adreno_dev); uint64_t gpuaddr; unsigned int *hostptr; size_t size; @@ -129,7 +129,7 @@ void adreno_ringbuffer_submit(struct adreno_ringbuffer *rb, * Let the pwrscale policy know that new commands have * been submitted. */ - kgsl_pwrscale_busy(&adreno_dev->dev); + kgsl_pwrscale_busy(KGSL_DEVICE(adreno_dev)); adreno_writereg(adreno_dev, ADRENO_REG_CP_RB_WPTR, rb->wptr); } } @@ -140,7 +140,7 @@ int adreno_ringbuffer_submit_spin(struct adreno_ringbuffer *rb, struct adreno_device *adreno_dev = ADRENO_RB_DEVICE(rb); adreno_ringbuffer_submit(rb, NULL); - return adreno_spin_idle(&adreno_dev->dev, timeout); + return adreno_spin_idle(adreno_dev, timeout); } static int @@ -211,7 +211,7 @@ adreno_ringbuffer_waitspace(struct adreno_ringbuffer *rb, break; if (time_after(jiffies, wait_time)) { - KGSL_DRV_ERR((&adreno_dev->dev), + KGSL_DRV_ERR(KGSL_DEVICE(adreno_dev), "Timed out waiting for freespace in RB rptr: 0x%x, wptr: 0x%x, rb id %d\n", rptr, wptr, rb->id); return -ETIMEDOUT; @@ -220,7 +220,7 @@ adreno_ringbuffer_waitspace(struct adreno_ringbuffer *rb, done: if (wptr_ahead) { *cmds = cp_packet(adreno_dev, CP_NOP, nopcount); - kgsl_cffdump_write(&adreno_dev->dev, gpuaddr, *cmds); + kgsl_cffdump_write(KGSL_DEVICE(adreno_dev), gpuaddr, *cmds); } return 0; @@ -272,7 +272,7 @@ unsigned int *adreno_ringbuffer_allocspace(struct adreno_ringbuffer *rb, */ static void _ringbuffer_setup_common(struct adreno_device *adreno_dev) { - struct kgsl_device *device = &adreno_dev->dev; + struct kgsl_device *device = KGSL_DEVICE(adreno_dev); struct adreno_ringbuffer *rb; int i; @@ -363,17 +363,24 @@ int adreno_ringbuffer_start(struct adreno_device *adreno_dev, void adreno_ringbuffer_stop(struct adreno_device *adreno_dev) { - struct kgsl_device *device = &adreno_dev->dev; struct adreno_ringbuffer *rb; int i; + FOR_EACH_RINGBUFFER(adreno_dev, rb, i) - kgsl_cancel_events(device, &(rb->events)); + kgsl_cancel_events(KGSL_DEVICE(adreno_dev), &(rb->events)); +} + +static int _rb_readtimestamp(struct kgsl_device *device, + void *priv, enum kgsl_timestamp_type type, + unsigned int *timestamp) +{ + return adreno_rb_readtimestamp(ADRENO_DEVICE(device), priv, type, + timestamp); } static int _adreno_ringbuffer_init(struct adreno_device *adreno_dev, int id) { - struct kgsl_device *device = &adreno_dev->dev; struct adreno_ringbuffer *rb = &adreno_dev->ringbuffers[id]; int ret; char name[64]; @@ -382,7 +389,7 @@ static int _adreno_ringbuffer_init(struct adreno_device *adreno_dev, snprintf(name, sizeof(name), "rb_events-%d", id); kgsl_add_event_group(&rb->events, NULL, name, - adreno_rb_readtimestamp, rb); + _rb_readtimestamp, rb); rb->timestamp = 0; init_waitqueue_head(&rb->ts_expire_waitq); @@ -390,12 +397,12 @@ static int _adreno_ringbuffer_init(struct adreno_device *adreno_dev, * Allocate mem for storing RB pagetables and commands to * switch pagetable */ - ret = kgsl_allocate_global(device, &rb->pagetable_desc, + ret = kgsl_allocate_global(KGSL_DEVICE(adreno_dev), &rb->pagetable_desc, PAGE_SIZE, 0, KGSL_MEMDESC_PRIVILEGED); if (ret) return ret; - return kgsl_allocate_global(device, &rb->buffer_desc, + return kgsl_allocate_global(KGSL_DEVICE(adreno_dev), &rb->buffer_desc, KGSL_RB_SIZE, KGSL_MEMFLAGS_GPUREADONLY, 0); } @@ -427,7 +434,7 @@ int adreno_ringbuffer_init(struct adreno_device *adreno_dev, bool nopreempt) static void _adreno_ringbuffer_close(struct adreno_device *adreno_dev, struct adreno_ringbuffer *rb) { - struct kgsl_device *device = &adreno_dev->dev; + struct kgsl_device *device = KGSL_DEVICE(adreno_dev); kgsl_free_global(device, &rb->pagetable_desc); kgsl_free_global(device, &rb->preemption_desc); @@ -507,7 +514,7 @@ adreno_ringbuffer_addcmds(struct adreno_ringbuffer *rb, { struct adreno_device *adreno_dev = ADRENO_RB_DEVICE(rb); struct adreno_gpudev *gpudev = ADRENO_GPU_DEVICE(adreno_dev); - struct kgsl_device *device = &adreno_dev->dev; + struct kgsl_device *device = KGSL_DEVICE(adreno_dev); unsigned int *ringcmds, *start; unsigned int total_sizedwords = sizedwords; unsigned int i; @@ -925,7 +932,7 @@ static inline int _get_alwayson_counter(struct adreno_device *adreno_dev, int adreno_ringbuffer_submitcmd(struct adreno_device *adreno_dev, struct kgsl_cmdbatch *cmdbatch, struct adreno_submit_time *time) { - struct kgsl_device *device = &adreno_dev->dev; + struct kgsl_device *device = KGSL_DEVICE(adreno_dev); struct kgsl_memobj_node *ib; unsigned int numibs = 0; unsigned int *link; @@ -975,7 +982,7 @@ int adreno_ringbuffer_submitcmd(struct adreno_device *adreno_dev, set_bit(CMDBATCH_FLAG_FORCE_PREAMBLE, &cmdbatch->priv); /* if context is detached print fault recovery */ - adreno_fault_skipcmd_detached(device, drawctxt, cmdbatch); + adreno_fault_skipcmd_detached(adreno_dev, drawctxt, cmdbatch); /* clear the drawctxt flags */ clear_bit(ADRENO_CONTEXT_SKIP_CMD, &drawctxt->base.priv); @@ -1237,7 +1244,7 @@ static inline int adreno_ringbuffer_check_timestamp( struct adreno_device *adreno_dev = ADRENO_RB_DEVICE(rb); unsigned int ts; - adreno_rb_readtimestamp(&adreno_dev->dev, rb, type, &ts); + adreno_rb_readtimestamp(adreno_dev, rb, type, &ts); return (timestamp_cmp(ts, timestamp) >= 0); } @@ -1253,7 +1260,7 @@ int adreno_ringbuffer_waittimestamp(struct adreno_ringbuffer *rb, unsigned int msecs) { struct adreno_device *adreno_dev = ADRENO_RB_DEVICE(rb); - struct kgsl_device *device = &adreno_dev->dev; + struct kgsl_device *device = KGSL_DEVICE(adreno_dev); int ret; unsigned long wait_time; @@ -1300,7 +1307,7 @@ int adreno_ringbuffer_submit_preempt_token(struct adreno_ringbuffer *rb, struct adreno_ringbuffer *incoming_rb) { struct adreno_device *adreno_dev = ADRENO_RB_DEVICE(rb); - struct kgsl_device *device = &adreno_dev->dev; + struct kgsl_device *device = KGSL_DEVICE(adreno_dev); unsigned int *ringcmds, *start; struct kgsl_iommu *iommu = device->mmu.priv; struct adreno_gpudev *gpudev = ADRENO_GPU_DEVICE(adreno_dev); |