static void msm_ispif_release(struct ispif_device *ispif) { BUG_ON(!ispif); if (!ispif->base) { pr_err("%s: ispif base is NULL\n", __func__); return; } if (ispif->ispif_state != ISPIF_POWER_UP) { pr_err("%s: ispif invalid state %d\n", __func__, ispif->ispif_state); return; } /* make sure no streaming going on */ msm_ispif_reset(ispif); msm_ispif_clk_ahb_enable(ispif, 0); free_irq(ispif->irq->start, ispif); iounmap(ispif->base); iounmap(ispif->clk_mux_base); ispif->ispif_state = ISPIF_POWER_DOWN; }
static void msm_ispif_release(struct ispif_device *ispif) { BUG_ON(!ispif); if (ispif->ispif_state != ISPIF_POWER_UP) { pr_err("%s: ispif invalid state %d\n", __func__, ispif->ispif_state); return; } if(of_device_is_compatible(ispif->pdev->dev.of_node, "qcom,ispif-v3.0")) { /*Currently HW reset is implemented for 8974 only*/ msm_ispif_reset_hw(ispif); } /* make sure no streaming going on */ msm_ispif_reset(ispif); msm_ispif_clk_ahb_enable(ispif, 0); free_irq(ispif->irq->start, ispif); iounmap(ispif->base); iounmap(ispif->clk_mux_base); ispif->ispif_state = ISPIF_POWER_DOWN; pr_info("%s: power down done \n", __func__); }
static void msm_ispif_release(struct ispif_device *ispif) { BUG_ON(!ispif); if (ispif->ispif_state != ISPIF_POWER_UP) { pr_err("%s: ispif invalid state %d\n", __func__, ispif->ispif_state); return; } /* make sure no streaming going on */ msm_ispif_reset(ispif); msm_ispif_clk_ahb_enable(ispif, 0); free_irq(ispif->irq->start, ispif); iounmap(ispif->base); iounmap(ispif->clk_mux_base); ispif->ispif_state = ISPIF_POWER_DOWN; pr_err(" %s:%d ISPIF_POWER_DOWN %d \n",__func__,__LINE__,ispif->ispif_state); /* */ wake_lock_timeout(&ispif->camera_wake_lock, 1*HZ); pr_err(" %s:%d Before suspend, camera release need time to work complete. \n",__func__,__LINE__); /* */ }
static void msm_ispif_release(struct ispif_device *ispif) { BUG_ON(!ispif); if (ispif->ispif_state != ISPIF_POWER_UP) { pr_err("%s: ispif invalid state %d\n", __func__, ispif->ispif_state); return; } /* make sure no streaming going on */ msm_ispif_reset(ispif); msm_ispif_clk_ahb_enable(ispif, 0); free_irq(ispif->irq->start, ispif); iounmap(ispif->base); iounmap(ispif->clk_mux_base); ispif->ispif_state = ISPIF_POWER_DOWN; /* LGE_CHANGE_S [20130622][[email protected]] : To enter the deep sleep after finish camera close */ wake_lock_timeout(&ispif->camera_wake_lock, 1*HZ); pr_err(" %s:%d Before suspend, camera release need time to work complete. \n",__func__,__LINE__); /* LGE_CHANGE_E [20130622][[email protected]] : To enter the deep sleep after finish camera close */ }
static void msm_ispif_release(struct ispif_device *ispif) { BUG_ON(!ispif); if (!ispif->base) { pr_err("%s: ispif base is NULL\n", __func__); return; } if (ispif->ispif_state != ISPIF_POWER_UP) { pr_err("%s: ispif invalid state %d\n", __func__, ispif->ispif_state); return; } /* make sure no streaming going on */ if (ispif->fs_vfe && regulator_is_enabled(ispif->fs_vfe)) { //LGE_CHANGE, vdd_vfe to check if vfe is up msm_ispif_reset(ispif); msm_ispif_reset_hw(ispif); } else pr_err("%s: failed to reset. fs_vfe is NULL \n", __func__); msm_ispif_clk_ahb_enable(ispif, 0); free_irq(ispif->irq->start, ispif); iounmap(ispif->base); iounmap(ispif->clk_mux_base); ispif->ispif_state = ISPIF_POWER_DOWN; }
static void msm_ispif_release(struct ispif_device *ispif) { int i; BUG_ON(!ispif); if (ispif->ispif_state != ISPIF_POWER_UP) { pr_err("%s: ispif invalid state %d\n", __func__, ispif->ispif_state); return; } /* make sure no streaming going on */ msm_ispif_reset(ispif); free_irq(ispif->irq->start, ispif); iounmap(ispif->base); for (i = 0; i < ispif->vfe_info.num_vfe; i++) msm_ispif_clk_enable_one(ispif, i, 0); ispif->ispif_state = ISPIF_POWER_DOWN; }
static int msm_ispif_init(struct ispif_device *ispif, uint32_t csid_version) { int rc = 0; BUG_ON(!ispif); if (ispif->ispif_state == ISPIF_POWER_UP) { pr_err("%s: ispif already initted state = %d\n", __func__, ispif->ispif_state); rc = -EPERM; return rc; } /* can we set to zero? */ ispif->applied_intf_cmd[VFE0].intf_cmd = 0xFFFFFFFF; ispif->applied_intf_cmd[VFE0].intf_cmd1 = 0xFFFFFFFF; ispif->applied_intf_cmd[VFE1].intf_cmd = 0xFFFFFFFF; ispif->applied_intf_cmd[VFE1].intf_cmd1 = 0xFFFFFFFF; memset(ispif->sof_count, 0, sizeof(ispif->sof_count)); ispif->csid_version = csid_version; if (ispif->csid_version >= CSID_VERSION_V30) { if (!ispif->clk_mux_mem || !ispif->clk_mux_io) { pr_err("%s csi clk mux mem %p io %p\n", __func__, ispif->clk_mux_mem, ispif->clk_mux_io); rc = -ENOMEM; return rc; } ispif->clk_mux_base = ioremap(ispif->clk_mux_mem->start, resource_size(ispif->clk_mux_mem)); if (!ispif->clk_mux_base) { pr_err("%s: clk_mux_mem ioremap failed\n", __func__); rc = -ENOMEM; return rc; } } ispif->base = ioremap(ispif->mem->start, resource_size(ispif->mem)); if (!ispif->base) { rc = -ENOMEM; pr_err("%s: nomem\n", __func__); goto end; } rc = request_irq(ispif->irq->start, msm_io_ispif_irq, IRQF_TRIGGER_RISING, "ispif", ispif); if (rc) { pr_err("%s: request_irq error = %d\n", __func__, rc); goto error_irq; } rc = msm_ispif_clk_ahb_enable(ispif, 1); if (rc) { pr_err("%s: ahb_clk enable failed", __func__); goto error_ahb; } if (of_device_is_compatible(ispif->pdev->dev.of_node, "qcom,ispif-v3.0")) { /* currently HW reset is implemented for 8974 only */ msm_ispif_reset_hw(ispif); } rc = msm_ispif_reset(ispif); if (rc == 0) { ispif->ispif_state = ISPIF_POWER_UP; CDBG("%s: power up done\n", __func__); goto end; } error_ahb: free_irq(ispif->irq->start, ispif); error_irq: iounmap(ispif->base); end: return rc; }
static int msm_ispif_init(struct ispif_device *ispif, uint32_t csid_version) { int rc = 0; BUG_ON(!ispif); /* */ wake_unlock(&ispif->camera_wake_lock); pr_err(" %s:%d camera_wake_lock unlock \n",__func__,__LINE__); /* */ if (ispif->ispif_state == ISPIF_POWER_UP) { pr_err("%s: ispif already initted state = %d\n", __func__, ispif->ispif_state); rc = -EPERM; return rc; } /* can we set to zero? */ ispif->applied_intf_cmd[VFE0].intf_cmd = 0xFFFFFFFF; ispif->applied_intf_cmd[VFE0].intf_cmd1 = 0xFFFFFFFF; ispif->applied_intf_cmd[VFE1].intf_cmd = 0xFFFFFFFF; ispif->applied_intf_cmd[VFE1].intf_cmd1 = 0xFFFFFFFF; memset(ispif->sof_count, 0, sizeof(ispif->sof_count)); ispif->csid_version = csid_version; if (ispif->csid_version >= CSID_VERSION_V3) { if (!ispif->clk_mux_mem || !ispif->clk_mux_io) { pr_err("%s csi clk mux mem %p io %p\n", __func__, ispif->clk_mux_mem, ispif->clk_mux_io); rc = -ENOMEM; return rc; } ispif->clk_mux_base = ioremap(ispif->clk_mux_mem->start, resource_size(ispif->clk_mux_mem)); if (!ispif->clk_mux_base) { pr_err("%s: clk_mux_mem ioremap failed\n", __func__); rc = -ENOMEM; return rc; } } ispif->base = ioremap(ispif->mem->start, resource_size(ispif->mem)); if (!ispif->base) { rc = -ENOMEM; pr_err("%s: nomem\n", __func__); goto end; } rc = request_irq(ispif->irq->start, msm_io_ispif_irq, IRQF_TRIGGER_RISING, "ispif", ispif); if (rc) { pr_err("%s: request_irq error = %d\n", __func__, rc); goto error_irq; } rc = msm_ispif_clk_ahb_enable(ispif, 1); if (rc) { pr_err("%s: ahb_clk enable failed", __func__); goto error_ahb; } rc = msm_ispif_reset(ispif); if (rc == 0) { ispif->ispif_state = ISPIF_POWER_UP; pr_err("%s: power up done\n", __func__); goto end; } error_ahb: free_irq(ispif->irq->start, ispif); error_irq: iounmap(ispif->base); end: return rc; }
static int msm_ispif_init(struct ispif_device *ispif, uint32_t csid_version) { int rc = 0; BUG_ON(!ispif); if (ispif->ispif_state == ISPIF_POWER_UP) { pr_err("%s: ispif already initted state = %d\n", __func__, ispif->ispif_state); rc = -EPERM; return rc; } /* can we set to zero? */ ispif->applied_intf_cmd[VFE0].intf_cmd = 0xFFFFFFFF; ispif->applied_intf_cmd[VFE0].intf_cmd1 = 0xFFFFFFFF; ispif->applied_intf_cmd[VFE1].intf_cmd = 0xFFFFFFFF; ispif->applied_intf_cmd[VFE1].intf_cmd1 = 0xFFFFFFFF; memset(ispif->sof_count, 0, sizeof(ispif->sof_count)); ispif->csid_version = csid_version; rc = msm_ispif_clk_enable_one(ispif, VFE0, 1); if (rc < 0) { pr_err("%s: unable to enable clocks for VFE0", __func__); goto error_clk0; } if (ispif->csid_version >= CSID_VERSION_V3 && ispif->vfe_info.num_vfe > 1) { rc = msm_ispif_clk_enable_one(ispif, VFE1, 1); if (rc < 0) { pr_err("%s: unable to enable clocks for VFE1", __func__); goto error_clk1; } } ispif->base = ioremap(ispif->mem->start, resource_size(ispif->mem)); if (!ispif->base) { rc = -ENOMEM; pr_err("%s: nomem\n", __func__); goto end; } rc = request_irq(ispif->irq->start, msm_io_ispif_irq, IRQF_TRIGGER_RISING, "ispif", ispif); if (rc) { pr_err("%s: request_irq error = %d\n", __func__, rc); goto error_irq; } rc = msm_ispif_reset(ispif); if (rc == 0) { ispif->ispif_state = ISPIF_POWER_UP; CDBG("%s: power up done\n", __func__); goto end; } free_irq(ispif->irq->start, ispif); error_irq: iounmap(ispif->base); end: if (ispif->csid_version >= CSID_VERSION_V3 && ispif->vfe_info.num_vfe > 1) msm_ispif_clk_enable_one(ispif, VFE1, 0); else return rc; error_clk1: msm_ispif_clk_enable_one(ispif, VFE0, 0); error_clk0: return rc; }