Loading drivers/media/platform/msm/ais/cam_cdm/cam_cdm_hw_core.c +14 −16 Original line number Diff line number Diff line /* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2017-2019, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -509,8 +509,8 @@ int cam_hw_cdm_submit_bl(struct cam_hw_info *cdm_hw, if (!rc) { CAM_DBG(CAM_CDM, "write BL success for cnt=%d with tag=%d", i, core->bl_tag); "write BL success for cnt=%d with tag=%d total_cnt=%d", i, core->bl_tag, req->data->cmd_arrary_count); CAM_DBG(CAM_CDM, "Now commit the BL"); if (cam_hw_cdm_commit_bl_write(cdm_hw)) { Loading Loading @@ -550,18 +550,16 @@ static void cam_hw_cdm_work(struct work_struct *work) cdm_hw = payload->hw; core = (struct cam_cdm *)cdm_hw->core_info; CAM_DBG(CAM_CDM, "IRQ status=%x", payload->irq_status); CAM_DBG(CAM_CDM, "IRQ status=0x%x", payload->irq_status); if (payload->irq_status & CAM_CDM_IRQ_STATUS_INFO_INLINE_IRQ_MASK) { struct cam_cdm_bl_cb_request_entry *node; struct cam_cdm_bl_cb_request_entry *node, *tnode; CAM_DBG(CAM_CDM, "inline IRQ data=%x", CAM_DBG(CAM_CDM, "inline IRQ data=0x%x", payload->irq_data); mutex_lock(&cdm_hw->hw_mutex); node = cam_cdm_find_request_by_bl_tag( payload->irq_data, &core->bl_request_list); if (node) { list_for_each_entry_safe(node, tnode, &core->bl_request_list, entry) { if (node->request_type == CAM_HW_CDM_BL_CB_CLIENT) { cam_cdm_notify_clients(cdm_hw, Loading @@ -574,11 +572,11 @@ static void cam_hw_cdm_work(struct work_struct *work) node->request_type); } list_del_init(&node->entry); if (node->bl_tag == payload->irq_data) { kfree(node); break; } kfree(node); } else { CAM_ERR(CAM_CDM, "Inval node, inline_irq st=%x data=%x", payload->irq_status, payload->irq_data); } mutex_unlock(&cdm_hw->hw_mutex); } Loading Loading @@ -684,7 +682,7 @@ irqreturn_t cam_hw_cdm_irq(int irq_num, void *data) CAM_ERR(CAM_CDM, "Failed to Write CDM HW IRQ cmd"); work_status = queue_work(cdm_core->work_queue, &payload->work); if (work_status == false) { CAM_ERR(CAM_CDM, "Failed to queue work for irq=%x", CAM_ERR(CAM_CDM, "Failed to queue work for irq=0x%x", payload->irq_status); kfree(payload); } Loading drivers/media/platform/msm/ais/cam_core/cam_node.c +2 −1 Original line number Diff line number Diff line /* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2017-2019, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -111,6 +111,7 @@ static int __cam_node_handle_acquire_dev(struct cam_node *node, goto err; } ctx->last_flush_req = 0; rc = cam_context_handle_acquire_dev(ctx, acquire); if (rc) { CAM_ERR(CAM_CORE, "Acquire device failed for node %s", Loading drivers/media/platform/msm/ais/cam_cpas/cam_cpas_hw.c +5 −5 Original line number Diff line number Diff line /* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2017-2019, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -934,7 +934,7 @@ static int cam_cpas_hw_start(void *hw_priv, void *start_args, } if (sizeof(struct cam_cpas_hw_cmd_start) != arg_size) { CAM_ERR(CAM_CPAS, "HW_CAPS size mismatch %ld %d", CAM_ERR(CAM_CPAS, "HW_CAPS size mismatch %zd %d", sizeof(struct cam_cpas_hw_cmd_start), arg_size); return -EINVAL; } Loading Loading @@ -1066,7 +1066,7 @@ static int cam_cpas_hw_stop(void *hw_priv, void *stop_args, } if (sizeof(struct cam_cpas_hw_cmd_stop) != arg_size) { CAM_ERR(CAM_CPAS, "HW_CAPS size mismatch %ld %d", CAM_ERR(CAM_CPAS, "HW_CAPS size mismatch %zd %d", sizeof(struct cam_cpas_hw_cmd_stop), arg_size); return -EINVAL; } Loading Loading @@ -1169,7 +1169,7 @@ static int cam_cpas_hw_init(void *hw_priv, void *init_hw_args, } if (sizeof(struct cam_cpas_hw_caps) != arg_size) { CAM_ERR(CAM_CPAS, "INIT HW size mismatch %ld %d", CAM_ERR(CAM_CPAS, "INIT HW size mismatch %zd %d", sizeof(struct cam_cpas_hw_caps), arg_size); return -EINVAL; } Loading Loading @@ -1326,7 +1326,7 @@ static int cam_cpas_hw_get_hw_info(void *hw_priv, } if (sizeof(struct cam_cpas_hw_caps) != arg_size) { CAM_ERR(CAM_CPAS, "HW_CAPS size mismatch %ld %d", CAM_ERR(CAM_CPAS, "HW_CAPS size mismatch %zd %d", sizeof(struct cam_cpas_hw_caps), arg_size); return -EINVAL; } Loading drivers/media/platform/msm/ais/cam_cpas/cpas_top/cam_cpastop_hw.c +1 −3 Original line number Diff line number Diff line /* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2017-2019, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -505,8 +505,6 @@ static int cam_cpastop_poweron(struct cam_hw_info *cpas_hw) { int i; cam_cpastop_reset_irq(cpas_hw); for (i = 0; i < camnoc_info->specific_size; i++) { if (camnoc_info->specific[i].enable) { cam_cpas_util_reg_update(cpas_hw, CAM_CPAS_REG_CAMNOC, Loading drivers/media/platform/msm/ais/cam_cpas/cpas_top/cpastop_v175_120.h +44 −5 Original line number Diff line number Diff line /* Copyright (c) 2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2018-2019, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -388,7 +388,7 @@ static struct cam_camnoc_specific .enable = true, .access_type = CAM_REG_TYPE_READ_WRITE, .offset = 0x3240, /* SPECIFIC_IFE1_DANGERLUT_LOW */ .value = 0xFFFFFF00, .value = 0x00000000, }, .safe_lut = { .enable = true, Loading Loading @@ -535,7 +535,7 @@ static struct cam_camnoc_specific .enable = true, .access_type = CAM_REG_TYPE_READ_WRITE, .masked_value = 1, .offset = 0x2E38, /* SPECIFIC_IBL_WR_URGENCY_LOW */ .offset = 0x2A38, /* SPECIFIC_IBL_WR_URGENCY_LOW */ /* SPECIFIC_IBL_WR_URGENCY_LOW_WRITE_MASK */ .mask = 0x70, /* SPECIFIC_IBL_WR_URGENCY_LOW_WRITE_SHIFT */ Loading Loading @@ -578,7 +578,7 @@ static struct cam_camnoc_specific .masked_value = 0, /* SPECIFIC_IPE_VID_DISP_PRIORITYLUT_LOW */ .offset = 0x5E30, .value = 0x33330000, .value = 0x33333333, }, .priority_lut_high = { .enable = true, Loading Loading @@ -674,7 +674,46 @@ static struct cam_camnoc_specific }, { .port_type = CAM_CAMNOC_FD, .enable = true, .priority_lut_low = { .enable = true, .access_type = CAM_REG_TYPE_READ_WRITE, .masked_value = 0, .offset = 0x3E30, /* SPECIFIC_FD_PRIORITYLUT_LOW */ .value = 0x44444444, }, .priority_lut_high = { .enable = true, .access_type = CAM_REG_TYPE_READ_WRITE, .masked_value = 0, .offset = 0x3E34, /* SPECIFIC_FD_PRIORITYLUT_HIGH */ .value = 0x44444444, }, .urgency = { .enable = true, .access_type = CAM_REG_TYPE_READ_WRITE, .masked_value = 0, .offset = 0x3E38, /* SPECIFIC_FD_URGENCY_LOW */ .value = 0x44, }, .danger_lut = { .enable = false, .access_type = CAM_REG_TYPE_READ_WRITE, .masked_value = 0, .offset = 0x3E40, /* SPECIFIC_FD_DANGERLUT_LOW */ .value = 0x0, }, .safe_lut = { .enable = false, .access_type = CAM_REG_TYPE_READ_WRITE, .masked_value = 0, .offset = 0x3E48, /* SPECIFIC_FD_SAFELUT_LOW */ .value = 0x0, }, .ubwc_ctl = { .enable = false, }, }, { /*SidebandManager_main_SidebandManager_FlagOutSet0_Low*/ Loading Loading
drivers/media/platform/msm/ais/cam_cdm/cam_cdm_hw_core.c +14 −16 Original line number Diff line number Diff line /* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2017-2019, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -509,8 +509,8 @@ int cam_hw_cdm_submit_bl(struct cam_hw_info *cdm_hw, if (!rc) { CAM_DBG(CAM_CDM, "write BL success for cnt=%d with tag=%d", i, core->bl_tag); "write BL success for cnt=%d with tag=%d total_cnt=%d", i, core->bl_tag, req->data->cmd_arrary_count); CAM_DBG(CAM_CDM, "Now commit the BL"); if (cam_hw_cdm_commit_bl_write(cdm_hw)) { Loading Loading @@ -550,18 +550,16 @@ static void cam_hw_cdm_work(struct work_struct *work) cdm_hw = payload->hw; core = (struct cam_cdm *)cdm_hw->core_info; CAM_DBG(CAM_CDM, "IRQ status=%x", payload->irq_status); CAM_DBG(CAM_CDM, "IRQ status=0x%x", payload->irq_status); if (payload->irq_status & CAM_CDM_IRQ_STATUS_INFO_INLINE_IRQ_MASK) { struct cam_cdm_bl_cb_request_entry *node; struct cam_cdm_bl_cb_request_entry *node, *tnode; CAM_DBG(CAM_CDM, "inline IRQ data=%x", CAM_DBG(CAM_CDM, "inline IRQ data=0x%x", payload->irq_data); mutex_lock(&cdm_hw->hw_mutex); node = cam_cdm_find_request_by_bl_tag( payload->irq_data, &core->bl_request_list); if (node) { list_for_each_entry_safe(node, tnode, &core->bl_request_list, entry) { if (node->request_type == CAM_HW_CDM_BL_CB_CLIENT) { cam_cdm_notify_clients(cdm_hw, Loading @@ -574,11 +572,11 @@ static void cam_hw_cdm_work(struct work_struct *work) node->request_type); } list_del_init(&node->entry); if (node->bl_tag == payload->irq_data) { kfree(node); break; } kfree(node); } else { CAM_ERR(CAM_CDM, "Inval node, inline_irq st=%x data=%x", payload->irq_status, payload->irq_data); } mutex_unlock(&cdm_hw->hw_mutex); } Loading Loading @@ -684,7 +682,7 @@ irqreturn_t cam_hw_cdm_irq(int irq_num, void *data) CAM_ERR(CAM_CDM, "Failed to Write CDM HW IRQ cmd"); work_status = queue_work(cdm_core->work_queue, &payload->work); if (work_status == false) { CAM_ERR(CAM_CDM, "Failed to queue work for irq=%x", CAM_ERR(CAM_CDM, "Failed to queue work for irq=0x%x", payload->irq_status); kfree(payload); } Loading
drivers/media/platform/msm/ais/cam_core/cam_node.c +2 −1 Original line number Diff line number Diff line /* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2017-2019, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -111,6 +111,7 @@ static int __cam_node_handle_acquire_dev(struct cam_node *node, goto err; } ctx->last_flush_req = 0; rc = cam_context_handle_acquire_dev(ctx, acquire); if (rc) { CAM_ERR(CAM_CORE, "Acquire device failed for node %s", Loading
drivers/media/platform/msm/ais/cam_cpas/cam_cpas_hw.c +5 −5 Original line number Diff line number Diff line /* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2017-2019, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -934,7 +934,7 @@ static int cam_cpas_hw_start(void *hw_priv, void *start_args, } if (sizeof(struct cam_cpas_hw_cmd_start) != arg_size) { CAM_ERR(CAM_CPAS, "HW_CAPS size mismatch %ld %d", CAM_ERR(CAM_CPAS, "HW_CAPS size mismatch %zd %d", sizeof(struct cam_cpas_hw_cmd_start), arg_size); return -EINVAL; } Loading Loading @@ -1066,7 +1066,7 @@ static int cam_cpas_hw_stop(void *hw_priv, void *stop_args, } if (sizeof(struct cam_cpas_hw_cmd_stop) != arg_size) { CAM_ERR(CAM_CPAS, "HW_CAPS size mismatch %ld %d", CAM_ERR(CAM_CPAS, "HW_CAPS size mismatch %zd %d", sizeof(struct cam_cpas_hw_cmd_stop), arg_size); return -EINVAL; } Loading Loading @@ -1169,7 +1169,7 @@ static int cam_cpas_hw_init(void *hw_priv, void *init_hw_args, } if (sizeof(struct cam_cpas_hw_caps) != arg_size) { CAM_ERR(CAM_CPAS, "INIT HW size mismatch %ld %d", CAM_ERR(CAM_CPAS, "INIT HW size mismatch %zd %d", sizeof(struct cam_cpas_hw_caps), arg_size); return -EINVAL; } Loading Loading @@ -1326,7 +1326,7 @@ static int cam_cpas_hw_get_hw_info(void *hw_priv, } if (sizeof(struct cam_cpas_hw_caps) != arg_size) { CAM_ERR(CAM_CPAS, "HW_CAPS size mismatch %ld %d", CAM_ERR(CAM_CPAS, "HW_CAPS size mismatch %zd %d", sizeof(struct cam_cpas_hw_caps), arg_size); return -EINVAL; } Loading
drivers/media/platform/msm/ais/cam_cpas/cpas_top/cam_cpastop_hw.c +1 −3 Original line number Diff line number Diff line /* Copyright (c) 2017-2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2017-2019, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -505,8 +505,6 @@ static int cam_cpastop_poweron(struct cam_hw_info *cpas_hw) { int i; cam_cpastop_reset_irq(cpas_hw); for (i = 0; i < camnoc_info->specific_size; i++) { if (camnoc_info->specific[i].enable) { cam_cpas_util_reg_update(cpas_hw, CAM_CPAS_REG_CAMNOC, Loading
drivers/media/platform/msm/ais/cam_cpas/cpas_top/cpastop_v175_120.h +44 −5 Original line number Diff line number Diff line /* Copyright (c) 2018, The Linux Foundation. All rights reserved. /* Copyright (c) 2018-2019, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -388,7 +388,7 @@ static struct cam_camnoc_specific .enable = true, .access_type = CAM_REG_TYPE_READ_WRITE, .offset = 0x3240, /* SPECIFIC_IFE1_DANGERLUT_LOW */ .value = 0xFFFFFF00, .value = 0x00000000, }, .safe_lut = { .enable = true, Loading Loading @@ -535,7 +535,7 @@ static struct cam_camnoc_specific .enable = true, .access_type = CAM_REG_TYPE_READ_WRITE, .masked_value = 1, .offset = 0x2E38, /* SPECIFIC_IBL_WR_URGENCY_LOW */ .offset = 0x2A38, /* SPECIFIC_IBL_WR_URGENCY_LOW */ /* SPECIFIC_IBL_WR_URGENCY_LOW_WRITE_MASK */ .mask = 0x70, /* SPECIFIC_IBL_WR_URGENCY_LOW_WRITE_SHIFT */ Loading Loading @@ -578,7 +578,7 @@ static struct cam_camnoc_specific .masked_value = 0, /* SPECIFIC_IPE_VID_DISP_PRIORITYLUT_LOW */ .offset = 0x5E30, .value = 0x33330000, .value = 0x33333333, }, .priority_lut_high = { .enable = true, Loading Loading @@ -674,7 +674,46 @@ static struct cam_camnoc_specific }, { .port_type = CAM_CAMNOC_FD, .enable = true, .priority_lut_low = { .enable = true, .access_type = CAM_REG_TYPE_READ_WRITE, .masked_value = 0, .offset = 0x3E30, /* SPECIFIC_FD_PRIORITYLUT_LOW */ .value = 0x44444444, }, .priority_lut_high = { .enable = true, .access_type = CAM_REG_TYPE_READ_WRITE, .masked_value = 0, .offset = 0x3E34, /* SPECIFIC_FD_PRIORITYLUT_HIGH */ .value = 0x44444444, }, .urgency = { .enable = true, .access_type = CAM_REG_TYPE_READ_WRITE, .masked_value = 0, .offset = 0x3E38, /* SPECIFIC_FD_URGENCY_LOW */ .value = 0x44, }, .danger_lut = { .enable = false, .access_type = CAM_REG_TYPE_READ_WRITE, .masked_value = 0, .offset = 0x3E40, /* SPECIFIC_FD_DANGERLUT_LOW */ .value = 0x0, }, .safe_lut = { .enable = false, .access_type = CAM_REG_TYPE_READ_WRITE, .masked_value = 0, .offset = 0x3E48, /* SPECIFIC_FD_SAFELUT_LOW */ .value = 0x0, }, .ubwc_ctl = { .enable = false, }, }, { /*SidebandManager_main_SidebandManager_FlagOutSet0_Low*/ Loading