From fbe4de5b7b75a30ead472b052ad323f9f1254057 Mon Sep 17 00:00:00 2001 From: Shubhraprakash Das <sadas@codeaurora.org> Date: Tue, 6 May 2014 17:38:00 -0700 Subject: [PATCH] msm: kgsl: Get rid of KGSL_FLAGS_STARTED The KGSL_FLAGS_STARTED is just redundant since the device start and stop already set a flag to indicate device start/stop state. Change-Id: I17f3ab7fc2aca7b58b610c3b3414c125babc273e Signed-off-by: Shubhraprakash Das <sadas@codeaurora.org> --- drivers/gpu/msm/adreno.c | 12 ++------- drivers/gpu/msm/adreno_ringbuffer.c | 21 --------------- drivers/gpu/msm/adreno_ringbuffer.h | 2 -- drivers/gpu/msm/kgsl_iommu.c | 40 +++++++++++------------------ 4 files changed, 17 insertions(+), 58 deletions(-) diff --git a/drivers/gpu/msm/adreno.c b/drivers/gpu/msm/adreno.c index 0d986b7100ec..0a8712f270a8 100644 --- a/drivers/gpu/msm/adreno.c +++ b/drivers/gpu/msm/adreno.c @@ -1761,14 +1761,12 @@ static int adreno_start(struct kgsl_device *device) kgsl_pwrctrl_irq(device, KGSL_PWRFLAGS_ON); device->ftbl->irqctrl(device, 1); + adreno_perfcounter_start(adreno_dev); + status = adreno_ringbuffer_cold_start(&adreno_dev->ringbuffer); if (status) goto error_irq_off; - status = adreno_perfcounter_start(adreno_dev); - if (status) - goto error_rb_stop; - /* Start the dispatcher */ adreno_dispatcher_start(device); @@ -1778,8 +1776,6 @@ static int adreno_start(struct kgsl_device *device) return 0; -error_rb_stop: - adreno_ringbuffer_stop(&adreno_dev->ringbuffer); error_irq_off: kgsl_pwrctrl_irq(device, KGSL_PWRFLAGS_OFF); @@ -1832,7 +1828,6 @@ static int adreno_stop(struct kgsl_device *device) adreno_dev->drawctxt_active = NULL; adreno_dispatcher_stop(adreno_dev); - adreno_ringbuffer_stop(&adreno_dev->ringbuffer); device->ftbl->irqctrl(device, 0); kgsl_pwrctrl_irq(device, KGSL_PWRFLAGS_OFF); @@ -2437,9 +2432,6 @@ int adreno_soft_reset(struct kgsl_device *device) adreno_dev->drawctxt_active = NULL; - /* Stop the ringbuffer */ - adreno_ringbuffer_stop(&adreno_dev->ringbuffer); - if (kgsl_pwrctrl_isenabled(device)) device->ftbl->irqctrl(device, 0); diff --git a/drivers/gpu/msm/adreno_ringbuffer.c b/drivers/gpu/msm/adreno_ringbuffer.c index 6b0eb7389c23..b9c7c1ca0576 100644 --- a/drivers/gpu/msm/adreno_ringbuffer.c +++ b/drivers/gpu/msm/adreno_ringbuffer.c @@ -436,9 +436,6 @@ int _ringbuffer_start_common(struct adreno_ringbuffer *rb) /* idle device to validate ME INIT */ status = adreno_idle(device); - if (status == 0) - rb->flags |= KGSL_FLAGS_STARTED; - return status; } @@ -455,9 +452,6 @@ int adreno_ringbuffer_warm_start(struct adreno_ringbuffer *rb) struct kgsl_device *device = rb->device; struct adreno_device *adreno_dev = ADRENO_DEVICE(device); - if (rb->flags & KGSL_FLAGS_STARTED) - return 0; - _ringbuffer_setup_common(rb); /* If bootstrapping if supported to load jump tables */ @@ -499,8 +493,6 @@ int adreno_ringbuffer_cold_start(struct adreno_ringbuffer *rb) struct kgsl_device *device = rb->device; struct adreno_device *adreno_dev = ADRENO_DEVICE(device); - if (rb->flags & KGSL_FLAGS_STARTED) - return 0; _ringbuffer_setup_common(rb); @@ -550,19 +542,6 @@ int adreno_ringbuffer_cold_start(struct adreno_ringbuffer *rb) return status; } -void adreno_ringbuffer_stop(struct adreno_ringbuffer *rb) -{ - struct kgsl_device *device = rb->device; - struct adreno_device *adreno_dev = ADRENO_DEVICE(device); - - if (rb->flags & KGSL_FLAGS_STARTED) { - if (adreno_is_a200(adreno_dev)) - kgsl_regwrite(rb->device, REG_CP_ME_CNTL, 0x10000000); - - rb->flags &= ~KGSL_FLAGS_STARTED; - } -} - int adreno_ringbuffer_init(struct kgsl_device *device) { int status; diff --git a/drivers/gpu/msm/adreno_ringbuffer.h b/drivers/gpu/msm/adreno_ringbuffer.h index 697e113c576d..59c60cebdfc3 100644 --- a/drivers/gpu/msm/adreno_ringbuffer.h +++ b/drivers/gpu/msm/adreno_ringbuffer.h @@ -75,8 +75,6 @@ int adreno_ringbuffer_warm_start(struct adreno_ringbuffer *rb); int adreno_ringbuffer_cold_start(struct adreno_ringbuffer *rb); -void adreno_ringbuffer_stop(struct adreno_ringbuffer *rb); - void adreno_ringbuffer_close(struct adreno_ringbuffer *rb); unsigned int adreno_ringbuffer_issuecmds(struct kgsl_device *device, diff --git a/drivers/gpu/msm/kgsl_iommu.c b/drivers/gpu/msm/kgsl_iommu.c index f8f56a8dea0b..cd2aa1c2b455 100644 --- a/drivers/gpu/msm/kgsl_iommu.c +++ b/drivers/gpu/msm/kgsl_iommu.c @@ -1256,19 +1256,17 @@ static int kgsl_iommu_setstate(struct kgsl_mmu *mmu, { int ret = 0; - if (mmu->flags & KGSL_FLAGS_STARTED) { - /* page table not current, then setup mmu to use new - * specified page table - */ - if (mmu->hwpagetable != pagetable) { - unsigned int flags = 0; - mmu->hwpagetable = pagetable; - flags |= kgsl_mmu_pt_get_flags(mmu->hwpagetable, - mmu->device->id) | - KGSL_MMUFLAGS_TLBFLUSH; - ret = kgsl_setstate(mmu, context_id, - KGSL_MMUFLAGS_PTUPDATE | flags); - } + /* page table not current, then setup mmu to use new + * specified page table + */ + if (mmu->hwpagetable != pagetable) { + unsigned int flags = 0; + mmu->hwpagetable = pagetable; + flags |= kgsl_mmu_pt_get_flags(mmu->hwpagetable, + mmu->device->id) | + KGSL_MMUFLAGS_TLBFLUSH; + ret = kgsl_setstate(mmu, context_id, + KGSL_MMUFLAGS_PTUPDATE | flags); } return ret; @@ -1660,9 +1658,6 @@ static int kgsl_iommu_start(struct kgsl_mmu *mmu) int sctlr_val = 0; struct adreno_device *adreno_dev = ADRENO_DEVICE(mmu->device); - if (mmu->flags & KGSL_FLAGS_STARTED) - return 0; - if (mmu->defaultpagetable == NULL) { status = kgsl_iommu_setup_defaultpagetable(mmu); if (status) @@ -1740,7 +1735,6 @@ static int kgsl_iommu_start(struct kgsl_mmu *mmu) cp_nop_packet(1), sizeof(unsigned int)); kgsl_iommu_disable_clk(mmu, KGSL_IOMMU_MAX_UNITS); - mmu->flags |= KGSL_FLAGS_STARTED; done: return status; @@ -1884,16 +1878,12 @@ static void kgsl_iommu_stop(struct kgsl_mmu *mmu) * stop device mmu * * call this with the global lock held + * detach iommu attachment */ - if (mmu->flags & KGSL_FLAGS_STARTED) { - /* detach iommu attachment */ - kgsl_detach_pagetable_iommu_domain(mmu); - mmu->hwpagetable = NULL; + kgsl_detach_pagetable_iommu_domain(mmu); + mmu->hwpagetable = NULL; - mmu->flags &= ~KGSL_FLAGS_STARTED; - - kgsl_iommu_pagefault_resume(mmu); - } + kgsl_iommu_pagefault_resume(mmu); /* switch off MMU clocks and cancel any events it has queued */ kgsl_cancel_events(mmu->device, mmu); } -- GitLab