msm: kgsl: Cleanup a superfluous structure in kgsl_device.h
struct kgsl_memregion was used to store the MMIO and GMEM
addressing for KGSL and adreno but it didn't serve much
purpose other than another level of redirection in the
structures. Remove it and add the necessary pointer and
size members directly to the KGSL and adreno structs.
Change-Id: Ic0dedbad8ec3f0a2c63383fa451cc39a25cab087
Signed-off-by: Jordan Crouse <jcrouse@codeaurora.org>
diff --git a/drivers/gpu/msm/adreno.c b/drivers/gpu/msm/adreno.c
index bc35b86..76b577d 100644
--- a/drivers/gpu/msm/adreno.c
+++ b/drivers/gpu/msm/adreno.c
@@ -106,10 +106,8 @@
},
#endif
},
- .gmemspace = {
- .gpu_base = 0,
- .sizebytes = SZ_256K,
- },
+ .gmem_base = 0,
+ .gmem_size = SZ_256K,
.pfp_fw = NULL,
.pm4_fw = NULL,
.wait_timeout = 10000, /* in milliseconds */
@@ -472,7 +470,7 @@
adreno_dev->istore_size = adreno_gpulist[i].istore_size;
adreno_dev->pix_shader_start = adreno_gpulist[i].pix_shader_start;
adreno_dev->instruction_size = adreno_gpulist[i].instruction_size;
- adreno_dev->gmemspace.sizebytes = adreno_gpulist[i].gmem_size;
+ adreno_dev->gmem_size = adreno_gpulist[i].gmem_size;
}
static int __devinit
@@ -792,10 +790,8 @@
devinfo.chip_id = adreno_dev->chip_id;
devinfo.mmu_enabled = kgsl_mmu_enabled();
devinfo.gpu_id = adreno_dev->gpurev;
- devinfo.gmem_gpubaseaddr = adreno_dev->gmemspace.
- gpu_base;
- devinfo.gmem_sizebytes = adreno_dev->gmemspace.
- sizebytes;
+ devinfo.gmem_gpubaseaddr = adreno_dev->gmem_base;
+ devinfo.gmem_sizebytes = adreno_dev->gmem_size;
if (copy_to_user(value, &devinfo, sizeof(devinfo)) !=
0) {
@@ -1065,9 +1061,8 @@
unsigned int *value)
{
unsigned int *reg;
- BUG_ON(offsetwords*sizeof(uint32_t) >= device->regspace.sizebytes);
- reg = (unsigned int *)(device->regspace.mmio_virt_base
- + (offsetwords << 2));
+ BUG_ON(offsetwords*sizeof(uint32_t) >= device->reg_len);
+ reg = (unsigned int *)(device->reg_virt + (offsetwords << 2));
if (!in_interrupt())
kgsl_pre_hwaccess(device);
@@ -1083,14 +1078,13 @@
{
unsigned int *reg;
- BUG_ON(offsetwords*sizeof(uint32_t) >= device->regspace.sizebytes);
+ BUG_ON(offsetwords*sizeof(uint32_t) >= device->reg_len);
if (!in_interrupt())
kgsl_pre_hwaccess(device);
kgsl_cffdump_regwrite(device->id, offsetwords << 2, value);
- reg = (unsigned int *)(device->regspace.mmio_virt_base
- + (offsetwords << 2));
+ reg = (unsigned int *)(device->reg_virt + (offsetwords << 2));
/*ensure previous writes post before this one,
* i.e. act like normal writel() */
diff --git a/drivers/gpu/msm/adreno.h b/drivers/gpu/msm/adreno.h
index 48e70c8..491cf62 100644
--- a/drivers/gpu/msm/adreno.h
+++ b/drivers/gpu/msm/adreno.h
@@ -62,7 +62,8 @@
struct kgsl_device dev; /* Must be first field in this struct */
unsigned int chip_id;
enum adreno_gpurev gpurev;
- struct kgsl_memregion gmemspace;
+ unsigned long gmem_base;
+ unsigned int gmem_size;
struct adreno_context *drawctxt_active;
const char *pfp_fwfile;
unsigned int *pfp_fw;
diff --git a/drivers/gpu/msm/adreno_a2xx.c b/drivers/gpu/msm/adreno_a2xx.c
index 18d0e83..6fa053b 100644
--- a/drivers/gpu/msm/adreno_a2xx.c
+++ b/drivers/gpu/msm/adreno_a2xx.c
@@ -1325,9 +1325,8 @@
{
int result;
- calc_gmemsize(&drawctxt->context_gmem_shadow,
- adreno_dev->gmemspace.sizebytes);
- tmp_ctx.gmem_base = adreno_dev->gmemspace.gpu_base;
+ calc_gmemsize(&drawctxt->context_gmem_shadow, adreno_dev->gmem_base);
+ tmp_ctx.gmem_base = adreno_dev->gmem_base;
result = kgsl_allocate(&drawctxt->context_gmem_shadow.gmemshadow,
drawctxt->pagetable, drawctxt->context_gmem_shadow.size);
@@ -1849,12 +1848,8 @@
unsigned int gmem_size;
unsigned int edram_value = 0;
- /* make sure edram range is aligned to size */
- BUG_ON(adreno_dev->gmemspace.gpu_base &
- (adreno_dev->gmemspace.sizebytes - 1));
-
/* get edram_size value equivalent */
- gmem_size = (adreno_dev->gmemspace.sizebytes >> 14);
+ gmem_size = (adreno_dev->gmem_size >> 14);
while (gmem_size >>= 1)
edram_value++;
@@ -1864,7 +1859,7 @@
rb_edram_info.f.edram_mapping_mode = 0; /* EDRAM_MAP_UPPER */
/* must be aligned to size */
- rb_edram_info.f.edram_range = (adreno_dev->gmemspace.gpu_base >> 14);
+ rb_edram_info.f.edram_range = (adreno_dev->gmem_base >> 14);
adreno_regwrite(device, REG_RB_EDRAM_INFO, rb_edram_info.val);
}
diff --git a/drivers/gpu/msm/adreno_a3xx.c b/drivers/gpu/msm/adreno_a3xx.c
index 32603bd..6b58545 100644
--- a/drivers/gpu/msm/adreno_a3xx.c
+++ b/drivers/gpu/msm/adreno_a3xx.c
@@ -2138,9 +2138,8 @@
{
int result;
- calc_gmemsize(&drawctxt->context_gmem_shadow,
- adreno_dev->gmemspace.sizebytes);
- tmp_ctx.gmem_base = adreno_dev->gmemspace.gpu_base;
+ calc_gmemsize(&drawctxt->context_gmem_shadow, adreno_dev->gmem_size);
+ tmp_ctx.gmem_base = adreno_dev->gmem_base;
result = kgsl_allocate(&drawctxt->context_gmem_shadow.gmemshadow,
drawctxt->pagetable, drawctxt->context_gmem_shadow.size);
diff --git a/drivers/gpu/msm/kgsl.c b/drivers/gpu/msm/kgsl.c
index a93529a..9e9bbf2 100644
--- a/drivers/gpu/msm/kgsl.c
+++ b/drivers/gpu/msm/kgsl.c
@@ -2426,7 +2426,6 @@
{
int result;
int status = -EINVAL;
- struct kgsl_memregion *regspace = NULL;
struct resource *res;
struct platform_device *pdev =
container_of(device->parentdev, struct platform_device, dev);
@@ -2447,26 +2446,25 @@
goto error_pwrctrl_close;
}
if (res->start == 0 || resource_size(res) == 0) {
- KGSL_DRV_ERR(device, "dev %d invalid regspace\n", device->id);
+ KGSL_DRV_ERR(device, "dev %d invalid register region\n",
+ device->id);
status = -EINVAL;
goto error_pwrctrl_close;
}
- regspace = &device->regspace;
- regspace->mmio_phys_base = res->start;
- regspace->sizebytes = resource_size(res);
+ device->reg_phys = res->start;
+ device->reg_len = resource_size(res);
- if (!request_mem_region(regspace->mmio_phys_base,
- regspace->sizebytes, device->name)) {
+ if (!request_mem_region(device->reg_phys, device->reg_len,
+ device->name)) {
KGSL_DRV_ERR(device, "request_mem_region failed\n");
status = -ENODEV;
goto error_pwrctrl_close;
}
- regspace->mmio_virt_base = ioremap(regspace->mmio_phys_base,
- regspace->sizebytes);
+ device->reg_virt = ioremap(device->reg_phys, device->reg_len);
- if (regspace->mmio_virt_base == NULL) {
+ if (device->reg_virt == NULL) {
KGSL_DRV_ERR(device, "ioremap failed\n");
status = -ENODEV;
goto error_release_mem;
@@ -2483,9 +2481,9 @@
disable_irq(device->pwrctrl.interrupt_num);
KGSL_DRV_INFO(device,
- "dev_id %d regs phys 0x%08x size 0x%08x virt %p\n",
- device->id, regspace->mmio_phys_base,
- regspace->sizebytes, regspace->mmio_virt_base);
+ "dev_id %d regs phys 0x%08lx size 0x%08x virt %p\n",
+ device->id, device->reg_phys, device->reg_len,
+ device->reg_virt);
result = kgsl_drm_init(pdev);
if (result)
@@ -2498,10 +2496,10 @@
free_irq(device->pwrctrl.interrupt_num, NULL);
device->pwrctrl.have_irq = 0;
error_iounmap:
- iounmap(regspace->mmio_virt_base);
- regspace->mmio_virt_base = NULL;
+ iounmap(device->reg_virt);
+ device->reg_virt = NULL;
error_release_mem:
- release_mem_region(regspace->mmio_phys_base, regspace->sizebytes);
+ release_mem_region(device->reg_phys, device->reg_len);
error_pwrctrl_close:
kgsl_pwrctrl_close(device);
error:
@@ -2511,15 +2509,12 @@
void kgsl_device_platform_remove(struct kgsl_device *device)
{
- struct kgsl_memregion *regspace = &device->regspace;
-
kgsl_unregister_device(device);
- if (regspace->mmio_virt_base != NULL) {
- iounmap(regspace->mmio_virt_base);
- regspace->mmio_virt_base = NULL;
- release_mem_region(regspace->mmio_phys_base,
- regspace->sizebytes);
+ if (device->reg_virt != NULL) {
+ iounmap(device->reg_virt);
+ device->reg_virt = NULL;
+ release_mem_region(device->reg_phys, device->reg_len);
}
kgsl_pwrctrl_close(device);
diff --git a/drivers/gpu/msm/kgsl_device.h b/drivers/gpu/msm/kgsl_device.h
index fece715..7d3cfca 100644
--- a/drivers/gpu/msm/kgsl_device.h
+++ b/drivers/gpu/msm/kgsl_device.h
@@ -110,13 +110,6 @@
unsigned int sizebytes);
};
-struct kgsl_memregion {
- unsigned char *mmio_virt_base;
- unsigned int mmio_phys_base;
- uint32_t gpu_base;
- unsigned int sizebytes;
-};
-
/* MH register values */
struct kgsl_mh {
unsigned int mharb;
@@ -143,7 +136,9 @@
unsigned int ver_minor;
uint32_t flags;
enum kgsl_deviceid id;
- struct kgsl_memregion regspace;
+ unsigned long reg_phys;
+ void *reg_virt;
+ unsigned int reg_len;
struct kgsl_memdesc memstore;
const char *iomemname;
diff --git a/drivers/gpu/msm/z180.c b/drivers/gpu/msm/z180.c
index bc5c960..cff7fec 100644
--- a/drivers/gpu/msm/z180.c
+++ b/drivers/gpu/msm/z180.c
@@ -700,10 +700,9 @@
{
unsigned int *reg;
- BUG_ON(offsetwords * sizeof(uint32_t) >= device->regspace.sizebytes);
+ BUG_ON(offsetwords * sizeof(uint32_t) >= device->reg_len);
- reg = (unsigned int *)(device->regspace.mmio_virt_base
- + (offsetwords << 2));
+ reg = (unsigned int *)(device->reg_virt + (offsetwords << 2));
/*ensure this read finishes before the next one.
* i.e. act like normal readl() */
@@ -718,10 +717,9 @@
{
unsigned int *reg;
- BUG_ON(offsetwords*sizeof(uint32_t) >= device->regspace.sizebytes);
+ BUG_ON(offsetwords*sizeof(uint32_t) >= device->reg_len);
- reg = (unsigned int *)(device->regspace.mmio_virt_base
- + (offsetwords << 2));
+ reg = (unsigned int *)(device->reg_virt + (offsetwords << 2));
kgsl_cffdump_regwrite(device->id, offsetwords << 2, value);
/*ensure previous writes post before this one,
* i.e. act like normal writel() */