Merge 77d80f4d6092c9319ccf47d5c10c58dc43fbed22 on remote branch
Change-Id: I63a9f0857622166abfbb863588ab7fc3e685cb0f
diff --git a/arch/arm64/boot/dts/qcom/sdm670-cdp.dtsi b/arch/arm64/boot/dts/qcom/sdm670-cdp.dtsi
index 0648c7d..bd65a05 100644
--- a/arch/arm64/boot/dts/qcom/sdm670-cdp.dtsi
+++ b/arch/arm64/boot/dts/qcom/sdm670-cdp.dtsi
@@ -1,4 +1,4 @@
-/* Copyright (c) 2017-2019, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2017-2020, 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
@@ -39,8 +39,6 @@
qcom,vddp-ref-clk-supply = <&pm660_l1>;
qcom,vddp-ref-clk-max-microamp = <100>;
- force-ufshc-probe;
-
status = "ok";
};
diff --git a/drivers/media/platform/msm/camera_v3/cam_req_mgr/cam_req_mgr_core.c b/drivers/media/platform/msm/camera_v3/cam_req_mgr/cam_req_mgr_core.c
index 4d10ea6..eb3d0de 100644
--- a/drivers/media/platform/msm/camera_v3/cam_req_mgr/cam_req_mgr_core.c
+++ b/drivers/media/platform/msm/camera_v3/cam_req_mgr/cam_req_mgr_core.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2019, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2016-2020, 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
@@ -51,6 +51,7 @@
link->initial_skip = true;
link->sof_timestamp = 0;
link->prev_sof_timestamp = 0;
+ link->num_sof_src = 0;
}
void cam_req_mgr_handle_core_shutdown(void)
@@ -2475,7 +2476,8 @@
struct cam_req_mgr_core_link *link = NULL;
struct cam_req_mgr_trigger_notify *notify_trigger;
struct crm_task_payload *task_data;
-
+ bool send_sof = true;
+ int i = 0;
if (!trigger_data) {
CAM_ERR(CAM_CRM, "sof_data is NULL");
rc = -EINVAL;
@@ -2489,6 +2491,23 @@
rc = -EINVAL;
goto end;
}
+ for (i = 0; i < link->num_sof_src; i++) {
+ if (link->dev_sof_evt[i].dev_hdl == trigger_data->dev_hdl) {
+ if (link->dev_sof_evt[i].sof_done == false)
+ link->dev_sof_evt[i].sof_done = true;
+ else
+ CAM_DBG(CAM_CRM, "Received Surious SOF");
+ } else if (link->dev_sof_evt[i].sof_done == false) {
+ send_sof = false;
+ }
+
+ }
+
+ if (!send_sof)
+ return 0;
+
+ for (i = 0; i < link->num_sof_src; i++)
+ link->dev_sof_evt[i].sof_done = false;
spin_lock_bh(&link->link_state_spin_lock);
if (link->state < CAM_CRM_LINK_STATE_READY) {
@@ -2637,6 +2656,12 @@
subscribe_event |= (uint32_t)dev->dev_info.trigger;
}
+ if (dev->dev_info.dev_id == CAM_REQ_MGR_DEVICE_IFE) {
+ link->dev_sof_evt[link->num_sof_src].dev_hdl =
+ dev->dev_hdl;
+ link->dev_sof_evt[link->num_sof_src].sof_done = false;
+ link->num_sof_src++;
+ }
}
link->subscribe_event = subscribe_event;
diff --git a/drivers/media/platform/msm/camera_v3/cam_req_mgr/cam_req_mgr_core.h b/drivers/media/platform/msm/camera_v3/cam_req_mgr/cam_req_mgr_core.h
index 679b2cf..38eff37 100644
--- a/drivers/media/platform/msm/camera_v3/cam_req_mgr/cam_req_mgr_core.h
+++ b/drivers/media/platform/msm/camera_v3/cam_req_mgr/cam_req_mgr_core.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2016-2019, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2016-2020, 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
@@ -287,6 +287,16 @@
};
/**
+ * struct cam_req_mgr_ife_sof_evt
+ * - Track SOF Events from IFE
+ * @ dev_hdl : device handle
+ * @ sof_done : tracks sof for individual IFE
+ */
+struct cam_req_mgr_dev_sof_evt {
+ int32_t dev_hdl;
+ bool sof_done;
+};
+/**
* struct cam_req_mgr_core_link
* - Link Properties
* @link_hdl : Link identifier
@@ -358,6 +368,8 @@
int64_t initial_sync_req;
uint64_t sof_timestamp;
uint64_t prev_sof_timestamp;
+ int32_t num_sof_src;
+ struct cam_req_mgr_dev_sof_evt dev_sof_evt[3];
};
/**
diff --git a/drivers/platform/msm/ipa/ipa_v2/ipa_flt.c b/drivers/platform/msm/ipa/ipa_v2/ipa_flt.c
index 50fe2a1..d69988a 100644
--- a/drivers/platform/msm/ipa/ipa_v2/ipa_flt.c
+++ b/drivers/platform/msm/ipa/ipa_v2/ipa_flt.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2012-2018, 2020, 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
@@ -1065,7 +1065,10 @@
} else {
list_add(&entry->link, &tbl->head_flt_rule_list);
}
- tbl->rule_cnt++;
+ if (tbl->rule_cnt < IPA_RULE_CNT_MAX)
+ tbl->rule_cnt++;
+ else
+ return -EINVAL;
if (entry->rt_tbl)
entry->rt_tbl->ref_cnt++;
id = ipa_id_alloc(entry);
diff --git a/drivers/platform/msm/ipa/ipa_v2/ipa_i.h b/drivers/platform/msm/ipa/ipa_v2/ipa_i.h
index 9bc80b8..92f566a 100644
--- a/drivers/platform/msm/ipa/ipa_v2/ipa_i.h
+++ b/drivers/platform/msm/ipa/ipa_v2/ipa_i.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2018, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2012-2018, 2020, 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
@@ -211,6 +211,7 @@
#define IPA2_ACTIVE_CLIENTS_LOG_LINE_LEN 96
#define IPA2_ACTIVE_CLIENTS_LOG_HASHTABLE_SIZE 50
#define IPA2_ACTIVE_CLIENTS_LOG_NAME_LEN 40
+#define IPA_RULE_CNT_MAX 512
struct ipa2_active_client_htable_entry {
struct hlist_node list;
diff --git a/drivers/platform/msm/ipa/ipa_v2/ipa_rt.c b/drivers/platform/msm/ipa/ipa_v2/ipa_rt.c
index 50bb9bc..830a097 100644
--- a/drivers/platform/msm/ipa/ipa_v2/ipa_rt.c
+++ b/drivers/platform/msm/ipa/ipa_v2/ipa_rt.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2019, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2012-2020, 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
@@ -1087,7 +1087,10 @@
list_add_tail(&entry->link, &tbl->head_rt_rule_list);
else
list_add(&entry->link, &tbl->head_rt_rule_list);
- tbl->rule_cnt++;
+ if (tbl->rule_cnt < IPA_RULE_CNT_MAX)
+ tbl->rule_cnt++;
+ else
+ return -EINVAL;
if (entry->hdr)
entry->hdr->ref_cnt++;
else if (entry->proc_ctx)
diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_flt.c b/drivers/platform/msm/ipa/ipa_v3/ipa_flt.c
index 2272f5a..1ab4934 100644
--- a/drivers/platform/msm/ipa/ipa_v3/ipa_flt.c
+++ b/drivers/platform/msm/ipa/ipa_v3/ipa_flt.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2012-2019, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2012-2020, 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
@@ -851,7 +851,10 @@
{
int id;
- tbl->rule_cnt++;
+ if (tbl->rule_cnt < IPA_RULE_CNT_MAX)
+ tbl->rule_cnt++;
+ else
+ return -EINVAL;
if (entry->rt_tbl)
entry->rt_tbl->ref_cnt++;
id = ipa3_id_alloc(entry);
diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_i.h b/drivers/platform/msm/ipa/ipa_v3/ipa_i.h
index 4c63959..83750e3 100644
--- a/drivers/platform/msm/ipa/ipa_v3/ipa_i.h
+++ b/drivers/platform/msm/ipa/ipa_v3/ipa_i.h
@@ -388,6 +388,7 @@
#define IPA_IS_4_0_AUTO_CONFIG() \
((ipa3_ctx->ipa_hw_type == IPA_HW_v4_0) && \
(ipa3_ctx->ipa_config_is_auto))
+#define IPA_RULE_CNT_MAX 512
struct ipa3_active_client_htable_entry {
struct hlist_node list;
diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_rt.c b/drivers/platform/msm/ipa/ipa_v3/ipa_rt.c
index 8981b79..22459d4 100644
--- a/drivers/platform/msm/ipa/ipa_v3/ipa_rt.c
+++ b/drivers/platform/msm/ipa/ipa_v3/ipa_rt.c
@@ -1000,7 +1000,10 @@
{
int id;
- tbl->rule_cnt++;
+ if (tbl->rule_cnt < IPA_RULE_CNT_MAX)
+ tbl->rule_cnt++;
+ else
+ return -EINVAL;
if (entry->hdr)
entry->hdr->ref_cnt++;
else if (entry->proc_ctx)
diff --git a/include/uapi/sound/compress_offload.h b/include/uapi/sound/compress_offload.h
index 4193992..1182cfe 100644
--- a/include/uapi/sound/compress_offload.h
+++ b/include/uapi/sound/compress_offload.h
@@ -135,6 +135,7 @@
#define SNDRV_COMPRESS_RENDER_MODE_AUDIO_MASTER 0
#define SNDRV_COMPRESS_RENDER_MODE_STC_MASTER 1
#define SNDRV_COMPRESS_RENDER_MODE_TTP 2
+#define SNDRV_COMPRESS_RENDER_MODE_TTP_PASS_THROUGH 3
#define SNDRV_COMPRESS_CLK_REC_MODE_NONE 0
#define SNDRV_COMPRESS_CLK_REC_MODE_AUTO 1