mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-11 07:03:09 -04:00
Merge ce9b4b3f12 on remote branch
Change-Id: I1a7b7fc87e5d535c6ec57f2baef2f8a25c874bc5
This commit is contained in:
commit
945d74685e
6 changed files with 70 additions and 15 deletions
9
Makefile
9
Makefile
|
|
@ -38,6 +38,10 @@ ifeq ($(CONFIG_ARCH_YUPIK), y)
|
|||
include $(srctree)/techpack/camera/config/yupikcamera.conf
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_ARCH_SM6150), y)
|
||||
include $(srctree)/techpack/camera/config/sm6150camera.conf
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_ARCH_KONA), y)
|
||||
LINUXINCLUDE += \
|
||||
-include $(srctree)/techpack/camera/config/konacameraconf.h
|
||||
|
|
@ -83,6 +87,11 @@ LINUXINCLUDE += \
|
|||
-include $(srctree)/techpack/camera/config/yupikcameraconf.h
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_ARCH_SM6150), y)
|
||||
LINUXINCLUDE += \
|
||||
-include $(srctree)/techpack/camera/config/sm6150cameraconf.h
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
ifneq (,$(filter $(CONFIG_SPECTRA_CAMERA), y m))
|
||||
|
|
|
|||
18
config/sm6150camera.conf
Normal file
18
config/sm6150camera.conf
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
# Copyright (c) 2021, The Linux Foundation. All rights reserved.
|
||||
|
||||
ifeq ($(CONFIG_QGKI),y)
|
||||
export CONFIG_SPECTRA_CAMERA=m
|
||||
$(info "QGKI Spectra Camera Building as DLKM")
|
||||
else
|
||||
export CONFIG_SPECTRA_CAMERA=m
|
||||
$(info "GKI Spectra Camera Building as DLKM")
|
||||
endif
|
||||
|
||||
ifneq (,$(filter $(CONFIG_SPECTRA_CAMERA), y m))
|
||||
export CONFIG_SPECTRA_ISP=y
|
||||
export CONFIG_SPECTRA_SENSOR=y
|
||||
export CONFIG_SPECTRA_ICP=y
|
||||
export CONFIG_SPECTRA_JPEG=y
|
||||
export CONFIG_SPECTRA_CUSTOM=y
|
||||
endif
|
||||
12
config/sm6150cameraconf.h
Normal file
12
config/sm6150cameraconf.h
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
/*
|
||||
* Copyright (c) 2021, The Linux Foundation. All rights reserved.
|
||||
*/
|
||||
|
||||
|
||||
#define CONFIG_SPECTRA_CAMERA 1
|
||||
#define CONFIG_SPECTRA_ISP 1
|
||||
#define CONFIG_SPECTRA_SENSOR 1
|
||||
#define CONFIG_SPECTRA_ICP 1
|
||||
#define CONFIG_SPECTRA_JPEG 1
|
||||
#define CONFIG_SPECTRA_CUSTOM 1
|
||||
|
|
@ -1809,11 +1809,9 @@ int cam_hw_cdm_handle_error_info(
|
|||
|
||||
if (node != NULL) {
|
||||
if (node->request_type == CAM_HW_CDM_BL_CB_CLIENT) {
|
||||
mutex_lock(&cdm_hw->hw_mutex);
|
||||
cam_cdm_notify_clients(cdm_hw,
|
||||
CAM_CDM_CB_STATUS_HW_ERROR,
|
||||
(void *)node);
|
||||
mutex_unlock(&cdm_hw->hw_mutex);
|
||||
} else if (node->request_type == CAM_HW_CDM_BL_CB_INTERNAL) {
|
||||
CAM_ERR(CAM_CDM, "Invalid node=%pK %d", node,
|
||||
node->request_type);
|
||||
|
|
|
|||
|
|
@ -4119,6 +4119,16 @@ static int __cam_isp_ctx_rdi_only_sof_in_bubble_state(
|
|||
CAM_DBG(CAM_ISP,
|
||||
"CDM callback detected for req: %lld, possible buf_done delay, waiting for buf_done",
|
||||
req->request_id);
|
||||
if (req_isp->num_fence_map_out ==
|
||||
req_isp->num_deferred_acks) {
|
||||
__cam_isp_handle_deferred_buf_done(ctx_isp, req,
|
||||
true,
|
||||
CAM_SYNC_STATE_SIGNALED_ERROR,
|
||||
CAM_SYNC_ISP_EVENT_BUBBLE);
|
||||
|
||||
__cam_isp_ctx_handle_buf_done_for_req_list(
|
||||
ctx_isp, req);
|
||||
}
|
||||
goto end;
|
||||
} else {
|
||||
CAM_WARN(CAM_ISP,
|
||||
|
|
|
|||
|
|
@ -1714,20 +1714,20 @@ static int __cam_req_mgr_process_req(struct cam_req_mgr_core_link *link,
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
mutex_lock(&session->lock);
|
||||
/*
|
||||
* In case if the wq is scheduled while destroying session
|
||||
* the session mutex is already taken and will cause a
|
||||
* dead lock. To avoid further processing check link state
|
||||
* and exit.
|
||||
* During session destroy/unlink the link state is updated and session
|
||||
* mutex is released when flushing the workq. In case the wq is scheduled
|
||||
* thereafter this API will then check the updated link state and exit
|
||||
*/
|
||||
spin_lock_bh(&link->link_state_spin_lock);
|
||||
if (link->state == CAM_CRM_LINK_STATE_IDLE) {
|
||||
spin_unlock_bh(&link->link_state_spin_lock);
|
||||
mutex_unlock(&session->lock);
|
||||
return -EPERM;
|
||||
}
|
||||
spin_unlock_bh(&link->link_state_spin_lock);
|
||||
|
||||
mutex_lock(&session->lock);
|
||||
in_q = link->req.in_q;
|
||||
/*
|
||||
* Check if new read index,
|
||||
|
|
@ -3786,13 +3786,17 @@ end:
|
|||
/**
|
||||
* __cam_req_mgr_unlink()
|
||||
*
|
||||
* @brief : Unlink devices on a link structure from the session
|
||||
* @link : Pointer to the link structure
|
||||
* @brief : Unlink devices on a link structure from the session
|
||||
* This API is to be invoked with session mutex held
|
||||
* @session: session of the link
|
||||
* @link : Pointer to the link structure
|
||||
*
|
||||
* @return: 0 for success, negative for failure
|
||||
*
|
||||
*/
|
||||
static int __cam_req_mgr_unlink(struct cam_req_mgr_core_link *link)
|
||||
static int __cam_req_mgr_unlink(
|
||||
struct cam_req_mgr_core_session *session,
|
||||
struct cam_req_mgr_core_link *link)
|
||||
{
|
||||
int rc;
|
||||
|
||||
|
|
@ -3808,14 +3812,16 @@ static int __cam_req_mgr_unlink(struct cam_req_mgr_core_link *link)
|
|||
}
|
||||
|
||||
mutex_lock(&link->lock);
|
||||
|
||||
spin_lock_bh(&link->link_state_spin_lock);
|
||||
/* Destroy timer of link */
|
||||
crm_timer_exit(&link->watchdog);
|
||||
spin_unlock_bh(&link->link_state_spin_lock);
|
||||
/* Release session mutex for workq processing */
|
||||
mutex_unlock(&session->lock);
|
||||
/* Destroy workq of link */
|
||||
cam_req_mgr_workq_destroy(&link->workq);
|
||||
|
||||
/* Acquire session mutex after workq flush */
|
||||
mutex_lock(&session->lock);
|
||||
/* Cleanup request tables and unlink devices */
|
||||
__cam_req_mgr_destroy_link_info(link);
|
||||
/* Free memory holding data of linked devs */
|
||||
|
|
@ -3857,6 +3863,7 @@ int cam_req_mgr_destroy_session(
|
|||
goto end;
|
||||
|
||||
}
|
||||
|
||||
mutex_lock(&cam_session->lock);
|
||||
if (cam_session->num_links) {
|
||||
CAM_DBG(CAM_CRM, "destroy session %x num_active_links %d",
|
||||
|
|
@ -3872,7 +3879,7 @@ int cam_req_mgr_destroy_session(
|
|||
link->link_hdl);
|
||||
/* Ignore return value since session is going away */
|
||||
link->is_shutdown = is_shutdown;
|
||||
__cam_req_mgr_unlink(link);
|
||||
__cam_req_mgr_unlink(cam_session, link);
|
||||
__cam_req_mgr_free_link(link);
|
||||
}
|
||||
}
|
||||
|
|
@ -4153,8 +4160,9 @@ int cam_req_mgr_unlink(struct cam_req_mgr_unlink_info *unlink_info)
|
|||
rc = -EINVAL;
|
||||
goto done;
|
||||
}
|
||||
|
||||
rc = __cam_req_mgr_unlink(link);
|
||||
mutex_lock(&cam_session->lock);
|
||||
rc = __cam_req_mgr_unlink(cam_session, link);
|
||||
mutex_unlock(&cam_session->lock);
|
||||
|
||||
/* Free curent link and put back into session's free pool of links */
|
||||
__cam_req_mgr_unreserve_link(cam_session, link);
|
||||
|
|
|
|||
Loading…
Reference in a new issue