diff options
Diffstat (limited to 'drivers/mxc/vpu')
-rw-r--r-- | drivers/mxc/vpu/mxc_vpu.c | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/drivers/mxc/vpu/mxc_vpu.c b/drivers/mxc/vpu/mxc_vpu.c index 9fc25edc33fa..f62e3d46a67c 100644 --- a/drivers/mxc/vpu/mxc_vpu.c +++ b/drivers/mxc/vpu/mxc_vpu.c @@ -73,7 +73,6 @@ static struct vpu_mem_desc user_data_mem = { 0 }; static struct vpu_mem_desc share_mem = { 0 }; static void __iomem *vpu_base; -static int vpu_irq; static u32 phy_vpu_base_addr; static struct mxc_vpu_platform_data *vpu_plat; @@ -540,7 +539,7 @@ static int vpu_map_mem(struct file *fp, struct vm_area_struct *vm) request_size); vm->vm_flags |= VM_IO | VM_RESERVED; - vm->vm_page_prot = pgprot_writecombine(vm->vm_page_prot); + vm->vm_page_prot = pgprot_noncached(vm->vm_page_prot); return remap_pfn_range(vm, vm->vm_start, vm->vm_pgoff, request_size, vm->vm_page_prot) ? -EAGAIN : 0; @@ -636,9 +635,8 @@ static int vpu_dev_probe(struct platform_device *pdev) err = -ENXIO; goto err_out_class; } - vpu_irq = res->start; - err = request_irq(vpu_irq, vpu_irq_handler, 0, "VPU_CODEC_IRQ", + err = request_irq(res->start, vpu_irq_handler, 0, "VPU_CODEC_IRQ", (void *)(&vpu_data)); if (err) goto err_out_class; @@ -662,7 +660,6 @@ static int vpu_dev_probe(struct platform_device *pdev) static int vpu_dev_remove(struct platform_device *pdev) { - free_irq(vpu_irq, &vpu_data); iounmap(vpu_base); iram_free(iram.start, VPU_IRAM_SIZE); @@ -693,9 +690,7 @@ static int vpu_suspend(struct platform_device *pdev, pm_message_t state) for (i = 0; i < vpu_clk_usercount; i++) clk_disable(vpu_clk); - if (!cpu_is_mx37()) - return 0; - else { + if (!cpu_is_mx53()) { clk_enable(vpu_clk); if (bitwork_mem.cpu_addr != 0) { SAVE_WORK_REGS; @@ -711,7 +706,8 @@ static int vpu_suspend(struct platform_device *pdev, pm_message_t state) clk_disable(vpu_clk); } - mxc_pg_enable(pdev); + if (cpu_is_mx37() || cpu_is_mx51()) + mxc_pg_enable(pdev); return 0; @@ -725,10 +721,11 @@ static int vpu_resume(struct platform_device *pdev) { int i; - if (cpu_is_mx37()) + if (cpu_is_mx37() || cpu_is_mx51()) mxc_pg_disable(pdev); - else - goto recover_clk; + + if (cpu_is_mx53()) + goto recover_clk; clk_enable(vpu_clk); if (bitwork_mem.cpu_addr != 0) { @@ -799,7 +796,6 @@ recover_clk: /* Recover vpu clock */ for (i = 0; i < vpu_clk_usercount; i++) clk_enable(vpu_clk); - printk("vpu_resume end\n"); return 0; } @@ -832,6 +828,7 @@ static int __init vpu_init(void) static void __exit vpu_exit(void) { + free_irq(MXC_INT_VPU, (void *)(&vpu_data)); if (vpu_major > 0) { device_destroy(vpu_class, MKDEV(vpu_major, 0)); class_destroy(vpu_class); |