Loading Documentation/devicetree/bindings/media/video/msm-cam-icp.txt +12 −0 Original line number Original line Diff line number Diff line Loading @@ -37,6 +37,16 @@ of A5, IPE and BPS devices present on the hardware. Value type: <u32> Value type: <u32> Definition: Number of supported BPS HW blocks. Definition: Number of supported BPS HW blocks. - icp_pc_en Usage: optional Value type: boolean Definition: Specifies ICP power collapse enablement - ipe_bps_pc_en Usage: optional Value type: boolean Definition: Specifies IPE/BPS power collapse enablement Example: Example: qcom,cam-icp { qcom,cam-icp { compatible = "qcom,cam-icp"; compatible = "qcom,cam-icp"; Loading @@ -44,6 +54,8 @@ Example: num-a5 = <1>; num-a5 = <1>; num-ipe = <2>; num-ipe = <2>; num-bps = <1>; num-bps = <1>; icp_pc_en; ipe_bps_pc_en; status = "ok"; status = "ok"; }; }; Loading arch/arm64/boot/dts/qcom/sm6150-camera.dtsi +1 −0 Original line number Original line Diff line number Diff line Loading @@ -850,6 +850,7 @@ num-a5 = <1>; num-a5 = <1>; num-ipe = <1>; num-ipe = <1>; num-bps = <1>; num-bps = <1>; icp_pc_en; status = "ok"; status = "ok"; }; }; Loading arch/arm64/boot/dts/qcom/sm8150-camera.dtsi +2 −0 Original line number Original line Diff line number Diff line Loading @@ -982,6 +982,8 @@ num-a5 = <1>; num-a5 = <1>; num-ipe = <2>; num-ipe = <2>; num-bps = <1>; num-bps = <1>; icp_pc_en; ipe_bps_pc_en; status = "ok"; status = "ok"; }; }; Loading drivers/media/platform/msm/camera/cam_core/cam_context.c +0 −2 Original line number Original line Diff line number Diff line Loading @@ -44,7 +44,6 @@ int cam_context_shutdown(struct cam_context *ctx) int rc = 0; int rc = 0; struct cam_release_dev_cmd cmd; struct cam_release_dev_cmd cmd; mutex_lock(&ctx->ctx_mutex); if (ctx->state > CAM_CTX_AVAILABLE && ctx->state < CAM_CTX_STATE_MAX) { if (ctx->state > CAM_CTX_AVAILABLE && ctx->state < CAM_CTX_STATE_MAX) { cmd.session_handle = ctx->session_hdl; cmd.session_handle = ctx->session_hdl; cmd.dev_handle = ctx->dev_hdl; cmd.dev_handle = ctx->dev_hdl; Loading @@ -61,7 +60,6 @@ int cam_context_shutdown(struct cam_context *ctx) ctx->dev_name, ctx->ctx_id, ctx->state); ctx->dev_name, ctx->ctx_id, ctx->state); rc = -EINVAL; rc = -EINVAL; } } mutex_unlock(&ctx->ctx_mutex); rc = cam_destroy_device_hdl(ctx->dev_hdl); rc = cam_destroy_device_hdl(ctx->dev_hdl); if (rc) if (rc) Loading drivers/media/platform/msm/camera/cam_core/cam_node.c +5 −2 Original line number Original line Diff line number Diff line Loading @@ -31,7 +31,7 @@ static void cam_node_print_ctx_state( for (i = 0; i < node->ctx_size; i++) { for (i = 0; i < node->ctx_size; i++) { ctx = &node->ctx_list[i]; ctx = &node->ctx_list[i]; spin_lock(&ctx->lock); spin_lock_bh(&ctx->lock); CAM_INFO(CAM_CORE, CAM_INFO(CAM_CORE, "[%s][%d] : state=%d, refcount=%d, active_req_list=%d, pending_req_list=%d, wait_req_list=%d, free_req_list=%d", "[%s][%d] : state=%d, refcount=%d, active_req_list=%d, pending_req_list=%d, wait_req_list=%d, free_req_list=%d", ctx->dev_name ? ctx->dev_name : "null", ctx->dev_name ? ctx->dev_name : "null", Loading @@ -41,7 +41,7 @@ static void cam_node_print_ctx_state( list_empty(&ctx->pending_req_list), list_empty(&ctx->pending_req_list), list_empty(&ctx->wait_req_list), list_empty(&ctx->wait_req_list), list_empty(&ctx->free_req_list)); list_empty(&ctx->free_req_list)); spin_unlock(&ctx->lock); spin_unlock_bh(&ctx->lock); } } mutex_unlock(&node->list_mutex); mutex_unlock(&node->list_mutex); } } Loading Loading @@ -657,6 +657,7 @@ int cam_node_handle_ioctl(struct cam_node *node, struct cam_control *cmd) "acquire device failed(rc = %d)", rc); "acquire device failed(rc = %d)", rc); goto acquire_kfree; goto acquire_kfree; } } CAM_INFO(CAM_CORE, "Acquire HW successful"); } } if (copy_to_user((void __user *)cmd->handle, acquire_ptr, if (copy_to_user((void __user *)cmd->handle, acquire_ptr, Loading Loading @@ -763,6 +764,8 @@ int cam_node_handle_ioctl(struct cam_node *node, struct cam_control *cmd) "release device failed(rc = %d)", rc); "release device failed(rc = %d)", rc); } } CAM_INFO(CAM_CORE, "Release HW done(rc = %d)", rc); release_kfree: release_kfree: kfree(release_ptr); kfree(release_ptr); break; break; Loading Loading
Documentation/devicetree/bindings/media/video/msm-cam-icp.txt +12 −0 Original line number Original line Diff line number Diff line Loading @@ -37,6 +37,16 @@ of A5, IPE and BPS devices present on the hardware. Value type: <u32> Value type: <u32> Definition: Number of supported BPS HW blocks. Definition: Number of supported BPS HW blocks. - icp_pc_en Usage: optional Value type: boolean Definition: Specifies ICP power collapse enablement - ipe_bps_pc_en Usage: optional Value type: boolean Definition: Specifies IPE/BPS power collapse enablement Example: Example: qcom,cam-icp { qcom,cam-icp { compatible = "qcom,cam-icp"; compatible = "qcom,cam-icp"; Loading @@ -44,6 +54,8 @@ Example: num-a5 = <1>; num-a5 = <1>; num-ipe = <2>; num-ipe = <2>; num-bps = <1>; num-bps = <1>; icp_pc_en; ipe_bps_pc_en; status = "ok"; status = "ok"; }; }; Loading
arch/arm64/boot/dts/qcom/sm6150-camera.dtsi +1 −0 Original line number Original line Diff line number Diff line Loading @@ -850,6 +850,7 @@ num-a5 = <1>; num-a5 = <1>; num-ipe = <1>; num-ipe = <1>; num-bps = <1>; num-bps = <1>; icp_pc_en; status = "ok"; status = "ok"; }; }; Loading
arch/arm64/boot/dts/qcom/sm8150-camera.dtsi +2 −0 Original line number Original line Diff line number Diff line Loading @@ -982,6 +982,8 @@ num-a5 = <1>; num-a5 = <1>; num-ipe = <2>; num-ipe = <2>; num-bps = <1>; num-bps = <1>; icp_pc_en; ipe_bps_pc_en; status = "ok"; status = "ok"; }; }; Loading
drivers/media/platform/msm/camera/cam_core/cam_context.c +0 −2 Original line number Original line Diff line number Diff line Loading @@ -44,7 +44,6 @@ int cam_context_shutdown(struct cam_context *ctx) int rc = 0; int rc = 0; struct cam_release_dev_cmd cmd; struct cam_release_dev_cmd cmd; mutex_lock(&ctx->ctx_mutex); if (ctx->state > CAM_CTX_AVAILABLE && ctx->state < CAM_CTX_STATE_MAX) { if (ctx->state > CAM_CTX_AVAILABLE && ctx->state < CAM_CTX_STATE_MAX) { cmd.session_handle = ctx->session_hdl; cmd.session_handle = ctx->session_hdl; cmd.dev_handle = ctx->dev_hdl; cmd.dev_handle = ctx->dev_hdl; Loading @@ -61,7 +60,6 @@ int cam_context_shutdown(struct cam_context *ctx) ctx->dev_name, ctx->ctx_id, ctx->state); ctx->dev_name, ctx->ctx_id, ctx->state); rc = -EINVAL; rc = -EINVAL; } } mutex_unlock(&ctx->ctx_mutex); rc = cam_destroy_device_hdl(ctx->dev_hdl); rc = cam_destroy_device_hdl(ctx->dev_hdl); if (rc) if (rc) Loading
drivers/media/platform/msm/camera/cam_core/cam_node.c +5 −2 Original line number Original line Diff line number Diff line Loading @@ -31,7 +31,7 @@ static void cam_node_print_ctx_state( for (i = 0; i < node->ctx_size; i++) { for (i = 0; i < node->ctx_size; i++) { ctx = &node->ctx_list[i]; ctx = &node->ctx_list[i]; spin_lock(&ctx->lock); spin_lock_bh(&ctx->lock); CAM_INFO(CAM_CORE, CAM_INFO(CAM_CORE, "[%s][%d] : state=%d, refcount=%d, active_req_list=%d, pending_req_list=%d, wait_req_list=%d, free_req_list=%d", "[%s][%d] : state=%d, refcount=%d, active_req_list=%d, pending_req_list=%d, wait_req_list=%d, free_req_list=%d", ctx->dev_name ? ctx->dev_name : "null", ctx->dev_name ? ctx->dev_name : "null", Loading @@ -41,7 +41,7 @@ static void cam_node_print_ctx_state( list_empty(&ctx->pending_req_list), list_empty(&ctx->pending_req_list), list_empty(&ctx->wait_req_list), list_empty(&ctx->wait_req_list), list_empty(&ctx->free_req_list)); list_empty(&ctx->free_req_list)); spin_unlock(&ctx->lock); spin_unlock_bh(&ctx->lock); } } mutex_unlock(&node->list_mutex); mutex_unlock(&node->list_mutex); } } Loading Loading @@ -657,6 +657,7 @@ int cam_node_handle_ioctl(struct cam_node *node, struct cam_control *cmd) "acquire device failed(rc = %d)", rc); "acquire device failed(rc = %d)", rc); goto acquire_kfree; goto acquire_kfree; } } CAM_INFO(CAM_CORE, "Acquire HW successful"); } } if (copy_to_user((void __user *)cmd->handle, acquire_ptr, if (copy_to_user((void __user *)cmd->handle, acquire_ptr, Loading Loading @@ -763,6 +764,8 @@ int cam_node_handle_ioctl(struct cam_node *node, struct cam_control *cmd) "release device failed(rc = %d)", rc); "release device failed(rc = %d)", rc); } } CAM_INFO(CAM_CORE, "Release HW done(rc = %d)", rc); release_kfree: release_kfree: kfree(release_ptr); kfree(release_ptr); break; break; Loading