msm: camera: common: Add private data in mini dump
Each driver can pass private data in mini dump callback register, so when mini dump is invoked, the mini dump handler will pass the private data to the callback associated with the driver. With the private data, ICP driver can determine which mini dump callback corresponds to which ICP device/hw mgr. CRs-Fixed: 3353541 Change-Id: I85171aa7ba31f92c5620ddbd8de8a9c168398856 Signed-off-by: Sokchetra Eung <quic_eung@quicinc.com>
This commit is contained in:

committed by
Camera Software Integration

parent
4d1434445f
commit
d2e3088296
@@ -18,7 +18,7 @@
|
||||
#include "cam_hw.h"
|
||||
#if IS_REACHABLE(CONFIG_QCOM_VA_MINIDUMP)
|
||||
#include <soc/qcom/minidump.h>
|
||||
static struct cam_common_mini_dump_dev_info g_minidump_dev_info;
|
||||
static struct cam_common_mini_dump_dev_info g_minidump_dev_info;
|
||||
#endif
|
||||
|
||||
#define CAM_PRESIL_POLL_DELAY 20
|
||||
@@ -191,7 +191,7 @@ static void cam_common_mini_dump_handler(void *dst, unsigned long len)
|
||||
strlen(g_minidump_dev_info.name[i]));
|
||||
md->waddr[i] = (void *)waddr;
|
||||
bytes_written = g_minidump_dev_info.dump_cb[i](
|
||||
(void *)waddr, remain_len);
|
||||
(void *)waddr, remain_len, g_minidump_dev_info.priv_data[i]);
|
||||
md->size[i] = bytes_written;
|
||||
if (bytes_written >= len) {
|
||||
CAM_WARN(CAM_UTIL, "No more space to dump");
|
||||
@@ -234,9 +234,10 @@ static struct notifier_block cam_common_md_notify_blk = {
|
||||
|
||||
int cam_common_register_mini_dump_cb(
|
||||
cam_common_mini_dump_cb mini_dump_cb,
|
||||
uint8_t *dev_name)
|
||||
uint8_t *dev_name, void *priv_data)
|
||||
{
|
||||
int rc = 0;
|
||||
uint32_t idx;
|
||||
|
||||
if (g_minidump_dev_info.num_devs >= CAM_COMMON_MINI_DUMP_DEV_NUM) {
|
||||
CAM_ERR(CAM_UTIL, "No free index available");
|
||||
@@ -248,10 +249,12 @@ int cam_common_register_mini_dump_cb(
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
g_minidump_dev_info.dump_cb[g_minidump_dev_info.num_devs] =
|
||||
idx = g_minidump_dev_info.num_devs;
|
||||
g_minidump_dev_info.dump_cb[idx] =
|
||||
mini_dump_cb;
|
||||
scnprintf(g_minidump_dev_info.name[g_minidump_dev_info.num_devs],
|
||||
scnprintf(g_minidump_dev_info.name[idx],
|
||||
CAM_COMMON_MINI_DUMP_DEV_NAME_LEN, dev_name);
|
||||
g_minidump_dev_info.priv_data[idx] = priv_data;
|
||||
g_minidump_dev_info.num_devs++;
|
||||
if (!g_minidump_dev_info.is_registered) {
|
||||
rc = qcom_va_md_register("Camera", &cam_common_md_notify_blk);
|
||||
|
Reference in New Issue
Block a user