From c8770955edd4d0e2596664d16eb178f0a425be92 Mon Sep 17 00:00:00 2001 From: xcq Date: Thu, 20 Apr 2017 16:27:16 +0800 Subject: [PATCH] camera: rockchip: fix some compiled errors and warn fix spin_unlock error use and some potential problems. Change-Id: I860c225f2acb5e28827ad3f6b702b0dc7828bb0f Signed-off-by: xcq --- drivers/media/video/rk_camsys/camsys_drv.c | 50 +++++++++++-------- drivers/media/video/rk_camsys/camsys_marvin.c | 37 +++++++------- .../ext_flashled_drv/rk_ext_fshled_ctl.c | 18 +++---- 3 files changed, 56 insertions(+), 49 deletions(-) mode change 100755 => 100644 drivers/media/video/rk_camsys/camsys_drv.c diff --git a/drivers/media/video/rk_camsys/camsys_drv.c b/drivers/media/video/rk_camsys/camsys_drv.c old mode 100755 new mode 100644 index 11d77f54b86e..8b74b7efd79c --- a/drivers/media/video/rk_camsys/camsys_drv.c +++ b/drivers/media/video/rk_camsys/camsys_drv.c @@ -244,7 +244,7 @@ static int camsys_extdev_register(camsys_devio_name_t *devio, camsys_dev_t for (i = (CamSys_Gpio_Start_Tag+1); i < CamSys_Gpio_End_Tag; i++) { if (strcmp(gpio_info->name, "NC")) { gpio->io = camsys_gpio_get(gpio_info->name); - if (gpio->io < 0) { + if (!gpio_is_valid(gpio->io)) { camsys_err( "Get %s gpio for dev_id 0x%x failed!", gpio_info->name, @@ -424,11 +424,12 @@ static int camsys_sysctl_external(camsys_sysctrl_t *devctl, continue; extdev = camsys_find_extdev((1 << (i+24)), camsys_dev); - if (extdev == NULL) + if (!extdev) { camsys_err("Can not find dev_id 0x%x device in %s!", (1<<(i+24)), dev_name(camsys_dev->miscdev.this_device)); - + return -EINVAL; + } camsys_sysctl_extdev( extdev, devctl, camsys_dev); @@ -569,8 +570,9 @@ static int camsys_irq_connect(camsys_irqcnnt_t *irqcnnt, camsys_dev_t list_for_each_entry(irqpool, &camsys_dev->irq.irq_pool, list) { if (irqpool->pid == irqcnnt->pid) { camsys_warn("this thread(pid: %d) had been connect irq!", - current->pid); - spin_unlock(&camsys_dev->irq.lock); + current->pid); + spin_unlock_irqrestore(&camsys_dev->irq.lock, + flags); goto end; } } @@ -578,6 +580,10 @@ static int camsys_irq_connect(camsys_irqcnnt_t *irqcnnt, camsys_dev_t spin_unlock_irqrestore(&camsys_dev->irq.lock, flags); irqpool = kzalloc(sizeof(camsys_irqpool_t), GFP_KERNEL); + if (!irqpool) { + err = -ENOMEM; + goto end; + } if (irqpool) { spin_lock_init(&irqpool->lock); irqpool->pid = irqcnnt->pid; @@ -931,7 +937,7 @@ static long camsys_ioctl_compat(struct file *filp, unsigned int cmd, unsigned "iommu status not consistent," "check the dts file !isp:%d,vpu:%d", iommu_enabled, vpu_iommu_enabled); - return -EFAULT; + return -EFAULT; } } @@ -1388,7 +1394,7 @@ static int camsys_platform_probe(struct platform_device *pdev) struct resource register_res; struct device *dev = &pdev->dev; unsigned long i2cmem; - camsys_meminfo_t *meminfo; + camsys_meminfo_t *meminfo, *meminfo_fail; unsigned int irq_id; const char *compatible = NULL; @@ -1420,9 +1426,9 @@ static int camsys_platform_probe(struct platform_device *pdev) /* map irqs */ irq_id = irq_of_parse_and_map(dev->of_node, 0); - if (irq_id < 0) { + if (!irq_id) { camsys_err("Get irq resource from %s platform device failed!", - pdev->name); + pdev->name); err = -ENODEV; goto fail_end; } @@ -1559,25 +1565,25 @@ static int camsys_platform_probe(struct platform_device *pdev) request_mem_fail: if (camsys_dev != NULL) { while (!list_empty(&camsys_dev->devmems.memslist)) { - meminfo = list_first_entry( + meminfo_fail = list_first_entry( &camsys_dev->devmems.memslist, camsys_meminfo_t, list); - if (!meminfo) + if (!meminfo_fail) continue; - list_del_init(&meminfo->list); - if (strcmp(meminfo->name, - CAMSYS_REGISTER_MEM_NAME) == 0) { - iounmap((void __iomem *)meminfo->vir_base); + list_del_init(&meminfo_fail->list); + if (strcmp(meminfo_fail->name, + CAMSYS_REGISTER_MEM_NAME) == 0) { + iounmap((void __iomem *)meminfo_fail->vir_base); release_mem_region( - meminfo->phy_base, - meminfo->size); - } else if (strcmp(meminfo->name, + meminfo_fail->phy_base, + meminfo_fail->size); + } else if (strcmp(meminfo_fail->name, CAMSYS_I2C_MEM_NAME) == 0) { - kfree((void *)meminfo->vir_base); + kfree((void *)meminfo_fail->vir_base); } - kfree(meminfo); - meminfo = NULL; + kfree(meminfo_fail); + meminfo_fail = NULL; } kfree(camsys_dev); @@ -1596,7 +1602,7 @@ static int camsys_platform_remove(struct platform_device *pdev) meminfo = list_first_entry( &camsys_dev->devmems.memslist, camsys_meminfo_t, list); - if (meminfo) + if (!meminfo) continue; list_del_init(&meminfo->list); diff --git a/drivers/media/video/rk_camsys/camsys_marvin.c b/drivers/media/video/rk_camsys/camsys_marvin.c index 1d99790d2439..fa3475fe3f9a 100644 --- a/drivers/media/video/rk_camsys/camsys_marvin.c +++ b/drivers/media/video/rk_camsys/camsys_marvin.c @@ -568,13 +568,14 @@ static int camsys_mrv_clkin_cb(void *ptr, unsigned int on) clk_prepare_enable(clk->pclk_dphy_ref); } - clk->in_on = true; + clk->in_on = true; - camsys_trace(1, "%s clock(f: %ld Hz) in turn on", - dev_name(camsys_dev->miscdev.this_device), isp_clk); - camsys_mrv_reset_cb(ptr, 1); - udelay(100); - camsys_mrv_reset_cb(ptr, 0); + camsys_trace(1, "%s clock(f: %ld Hz) in turn on", + dev_name(camsys_dev->miscdev.this_device), + isp_clk); + camsys_mrv_reset_cb(ptr, 1); + udelay(100); + camsys_mrv_reset_cb(ptr, 0); } else if (!on && clk->in_on) { if (strstr(camsys_dev->miscdev.name, "camsys_marvin1")) { @@ -601,11 +602,11 @@ static int camsys_mrv_clkin_cb(void *ptr, unsigned int on) clk_disable_unprepare(clk->pclk_dphy_ref); } - /* rockchip_clear_system_status(SYS_STATUS_ISP); */ - clk->in_on = false; - camsys_trace(1, "%s clock in turn off", - dev_name(camsys_dev->miscdev.this_device)); - } + /* rockchip_clear_system_status(SYS_STATUS_ISP); */ + clk->in_on = false; + camsys_trace(1, "%s clock in turn off", + dev_name(camsys_dev->miscdev.this_device)); + } } else{ if (on && !clk->in_on) { /* rockchip_set_system_status(SYS_STATUS_ISP); */ @@ -630,7 +631,7 @@ static int camsys_mrv_clkin_cb(void *ptr, unsigned int on) } else { clk_prepare_enable(clk->clk_mipi_24m); } - clk->in_on = true; + clk->in_on = true; camsys_trace(1, "%s clock(f: %ld Hz) in turn on", dev_name(camsys_dev->miscdev.this_device), isp_clk); @@ -1189,13 +1190,13 @@ clk_failed: if (!IS_ERR_OR_NULL(mrv_clk->cif_clk_out)) clk_put(mrv_clk->cif_clk_out); - if (CHIP_TYPE == 3368 || CHIP_TYPE == 3366) { - if (!IS_ERR_OR_NULL(mrv_clk->pclk_dphyrx)) - clk_put(mrv_clk->pclk_dphyrx); + if (CHIP_TYPE == 3368 || CHIP_TYPE == 3366) { + if (!IS_ERR_OR_NULL(mrv_clk->pclk_dphyrx)) + clk_put(mrv_clk->pclk_dphyrx); - if (!IS_ERR_OR_NULL(mrv_clk->clk_vio0_noc)) - clk_put(mrv_clk->clk_vio0_noc); - } + if (!IS_ERR_OR_NULL(mrv_clk->clk_vio0_noc)) + clk_put(mrv_clk->clk_vio0_noc); + } kfree(mrv_clk); mrv_clk = NULL; diff --git a/drivers/media/video/rk_camsys/ext_flashled_drv/rk_ext_fshled_ctl.c b/drivers/media/video/rk_camsys/ext_flashled_drv/rk_ext_fshled_ctl.c index c7fef6e008f1..24aed21abac1 100644 --- a/drivers/media/video/rk_camsys/ext_flashled_drv/rk_ext_fshled_ctl.c +++ b/drivers/media/video/rk_camsys/ext_flashled_drv/rk_ext_fshled_ctl.c @@ -15,14 +15,14 @@ struct ext_fsh_dev_list_s{ static struct ext_fsh_dev_list_s g_ext_fsh_devs; -int camsys_init_ext_fsh_module() +int camsys_init_ext_fsh_module(void) { camsys_trace(1,"init external flash module"); INIT_LIST_HEAD(&g_ext_fsh_devs.dev_list); return 0; } -int camsys_deinit_ext_fsh_module() +int camsys_deinit_ext_fsh_module(void) { ext_fsh_info_t* cur_fsh_info = NULL; camsys_trace(1,"deinit external flash module"); @@ -58,7 +58,7 @@ void* camsys_register_ext_fsh_dev(camsys_flash_info_t *fsh_info) goto fail0; } - new_rt_dev = kzalloc(sizeof(*new_rt_dev), GFP_KERNEL); + new_rt_dev = kzalloc(sizeof(*new_rt_dev), GFP_KERNEL); if(!new_rt_dev){ camsys_err("register new ext flash dev erro !"); goto fail1; @@ -66,7 +66,7 @@ void* camsys_register_ext_fsh_dev(camsys_flash_info_t *fsh_info) new_dev->pdev.id = -1; new_dev->pdev.name = fsh_info->fl_drv_name; - new_dev->pdev.dev.release = camsys_ext_fsh_release; + new_dev->pdev.dev.release = camsys_ext_fsh_release; new_dev->pdev.dev.platform_data = (void*)new_rt_dev; new_dev->dev_model = "rt-flash-led"; @@ -78,7 +78,7 @@ void* camsys_register_ext_fsh_dev(camsys_flash_info_t *fsh_info) camsys_trace(1,"flset name :%s, gpio %d, active %d \n",fsh_info->fl.name,new_rt_dev->flset_gpio,new_rt_dev->flset_active); new_rt_dev->ctl_gpio = -1; new_rt_dev->def_lvp = RT8547_LVP_3V; - new_rt_dev->def_tol = RT8547_TOL_100mA; + new_rt_dev->def_tol = RT8547_TOL_100mA; // new_rt_dev->def_lvp = RT8547_LVP_MAX; // new_rt_dev->def_tol = RT8547_TOL_MAX; @@ -113,7 +113,7 @@ int camsys_deregister_ext_fsh_dev(void* dev) /* free after unregister device ?*/ kfree(cur_fsh_info->pdev.dev.platform_data); kfree(cur_fsh_info); - return 0; + return 0; } } } @@ -140,8 +140,8 @@ int camsys_ext_fsh_ctrl(void* dev,int mode,unsigned int on) } } if(cur_fsh_info == NULL){ - camsys_err("this flash dev have not been registered !"); - return -1; + camsys_err("this flash dev have not been registered !"); + return -1; } fled_dev = find_flashlight_by_name(cur_fsh_info->dev_model); @@ -163,7 +163,7 @@ int camsys_ext_fsh_ctrl(void* dev,int mode,unsigned int on) /* set flashlight mode to Strobe */ flashlight_set_mode(fled_dev, FLASHLIGHT_MODE_FLASH); flashlight_strobe(fled_dev); - break; + break; case 5: /* torch */ /* set the torch brightness index 2 (75mA), refer to the datasheet for index current value. */ flashlight_set_torch_brightness(fled_dev, 2); -- 2.34.1