summaryrefslogtreecommitdiff
path: root/drivers/gpu/msm/adreno_ringbuffer.c
diff options
context:
space:
mode:
authorJordan Crouse <jcrouse@codeaurora.org>2016-01-25 16:01:58 -0700
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 21:18:41 -0700
commitda324cf8f6ee36e5da13d543927ab6e077fb6531 (patch)
tree36726140fa3ce772660635dfcde66d49dca5021f /drivers/gpu/msm/adreno_ringbuffer.c
parent11d4029da91508ea4bc4ca66ea5bd3c333ef591b (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.c45
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);