Loading drivers/media/platform/msm/camera/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_bus/cam_vfe_bus_ver2.c +16 −2 Original line number Diff line number Diff line Loading @@ -106,6 +106,7 @@ struct cam_vfe_bus_ver2_common_data { struct cam_vfe_bus_irq_evt_payload evt_payload[ CAM_VFE_BUS_VER2_PAYLOAD_MAX]; struct list_head free_payload_list; spinlock_t spin_lock; struct mutex bus_mutex; uint32_t secure_mode; uint32_t num_sec_out; Loading Loading @@ -214,16 +215,23 @@ static int cam_vfe_bus_get_evt_payload( struct cam_vfe_bus_ver2_common_data *common_data, struct cam_vfe_bus_irq_evt_payload **evt_payload) { int rc; spin_lock(&common_data->spin_lock); if (list_empty(&common_data->free_payload_list)) { *evt_payload = NULL; CAM_ERR_RATE_LIMIT(CAM_ISP, "No free payload"); return -ENODEV; rc = -ENODEV; goto done; } *evt_payload = list_first_entry(&common_data->free_payload_list, struct cam_vfe_bus_irq_evt_payload, list); list_del_init(&(*evt_payload)->list); return 0; rc = 0; done: spin_unlock(&common_data->spin_lock); return rc; } static enum cam_vfe_bus_comp_grp_id Loading Loading @@ -254,6 +262,7 @@ static int cam_vfe_bus_put_evt_payload(void *core_info, struct cam_vfe_bus_ver2_common_data *common_data = NULL; uint32_t *ife_irq_regs = NULL; uint32_t status_reg0, status_reg1, status_reg2; unsigned long flags; if (!core_info) { CAM_ERR(CAM_ISP, "Invalid param core_info NULL"); Loading @@ -276,8 +285,12 @@ static int cam_vfe_bus_put_evt_payload(void *core_info, } common_data = core_info; spin_lock_irqsave(&common_data->spin_lock, flags); list_add_tail(&(*evt_payload)->list, &common_data->free_payload_list); spin_unlock_irqrestore(&common_data->spin_lock, flags); *evt_payload = NULL; return 0; Loading Loading @@ -2975,6 +2988,7 @@ int cam_vfe_bus_ver2_init( } } spin_lock_init(&bus_priv->common_data.spin_lock); INIT_LIST_HEAD(&bus_priv->common_data.free_payload_list); for (i = 0; i < CAM_VFE_BUS_VER2_PAYLOAD_MAX; i++) { INIT_LIST_HEAD(&bus_priv->common_data.evt_payload[i].list); Loading Loading
drivers/media/platform/msm/camera/cam_isp/isp_hw_mgr/isp_hw/vfe_hw/vfe_bus/cam_vfe_bus_ver2.c +16 −2 Original line number Diff line number Diff line Loading @@ -106,6 +106,7 @@ struct cam_vfe_bus_ver2_common_data { struct cam_vfe_bus_irq_evt_payload evt_payload[ CAM_VFE_BUS_VER2_PAYLOAD_MAX]; struct list_head free_payload_list; spinlock_t spin_lock; struct mutex bus_mutex; uint32_t secure_mode; uint32_t num_sec_out; Loading Loading @@ -214,16 +215,23 @@ static int cam_vfe_bus_get_evt_payload( struct cam_vfe_bus_ver2_common_data *common_data, struct cam_vfe_bus_irq_evt_payload **evt_payload) { int rc; spin_lock(&common_data->spin_lock); if (list_empty(&common_data->free_payload_list)) { *evt_payload = NULL; CAM_ERR_RATE_LIMIT(CAM_ISP, "No free payload"); return -ENODEV; rc = -ENODEV; goto done; } *evt_payload = list_first_entry(&common_data->free_payload_list, struct cam_vfe_bus_irq_evt_payload, list); list_del_init(&(*evt_payload)->list); return 0; rc = 0; done: spin_unlock(&common_data->spin_lock); return rc; } static enum cam_vfe_bus_comp_grp_id Loading Loading @@ -254,6 +262,7 @@ static int cam_vfe_bus_put_evt_payload(void *core_info, struct cam_vfe_bus_ver2_common_data *common_data = NULL; uint32_t *ife_irq_regs = NULL; uint32_t status_reg0, status_reg1, status_reg2; unsigned long flags; if (!core_info) { CAM_ERR(CAM_ISP, "Invalid param core_info NULL"); Loading @@ -276,8 +285,12 @@ static int cam_vfe_bus_put_evt_payload(void *core_info, } common_data = core_info; spin_lock_irqsave(&common_data->spin_lock, flags); list_add_tail(&(*evt_payload)->list, &common_data->free_payload_list); spin_unlock_irqrestore(&common_data->spin_lock, flags); *evt_payload = NULL; return 0; Loading Loading @@ -2975,6 +2988,7 @@ int cam_vfe_bus_ver2_init( } } spin_lock_init(&bus_priv->common_data.spin_lock); INIT_LIST_HEAD(&bus_priv->common_data.free_payload_list); for (i = 0; i < CAM_VFE_BUS_VER2_PAYLOAD_MAX; i++) { INIT_LIST_HEAD(&bus_priv->common_data.evt_payload[i].list); Loading