Loading drivers/media/platform/msm/camera/cam_sensor_module/cam_csiphy/cam_csiphy_core.c +4 −3 Original line number Diff line number Diff line Loading @@ -18,11 +18,12 @@ #include <soc/qcom/scm.h> #include <cam_mem_mgr.h> static int cam_csiphy_mem_dmp_param; module_param(cam_csiphy_mem_dmp_param, int, 0644); #define SCM_SVC_CAMERASS 0x18 #define SECURE_SYSCALL_ID 0x6 static int csiphy_dump; module_param(csiphy_dump, int, 0644); static int cam_csiphy_notify_secure_mode(int phy, bool protect) { struct scm_desc desc = {0}; Loading Loading @@ -572,7 +573,7 @@ int32_t cam_csiphy_core_cfg(void *phy_dev, goto release_mutex; } rc = cam_csiphy_config_dev(csiphy_dev); if (cam_csiphy_mem_dmp_param == 1) if (csiphy_dump == 1) cam_csiphy_mem_dmp(&csiphy_dev->soc_info); if (rc < 0) { Loading drivers/media/platform/msm/camera/cam_sensor_module/cam_csiphy/cam_csiphy_soc.c +42 −1 Original line number Diff line number Diff line Loading @@ -14,6 +14,47 @@ #include "cam_csiphy_core.h" #include "include/cam_csiphy_1_0_hwreg.h" #define BYTES_PER_REGISTER 4 #define NUM_REGISTER_PER_LINE 4 #define REG_OFFSET(__start, __i) ((__start) + ((__i) * BYTES_PER_REGISTER)) static int cam_io_phy_dump(void __iomem *base_addr, uint32_t start_offset, int size) { char line_str[128]; char *p_str; int i; uint32_t data; CAM_INFO(CAM_CSIPHY, "addr=%pK offset=0x%x size=%d", base_addr, start_offset, size); if (!base_addr || (size <= 0)) return -EINVAL; line_str[0] = '\0'; p_str = line_str; for (i = 0; i < size; i++) { if (i % NUM_REGISTER_PER_LINE == 0) { snprintf(p_str, 12, "0x%08x: ", REG_OFFSET(start_offset, i)); p_str += 11; } data = readl_relaxed(base_addr + REG_OFFSET(start_offset, i)); snprintf(p_str, 9, "%08x ", data); p_str += 8; if ((i + 1) % NUM_REGISTER_PER_LINE == 0) { CAM_ERR(CAM_CSIPHY, "%s", line_str); line_str[0] = '\0'; p_str = line_str; } } if (line_str[0] != '\0') CAM_ERR(CAM_CSIPHY, "%s", line_str); return 0; } int32_t cam_csiphy_mem_dmp(struct cam_hw_soc_info *soc_info) { int32_t rc = 0; Loading @@ -27,7 +68,7 @@ int32_t cam_csiphy_mem_dmp(struct cam_hw_soc_info *soc_info) } addr = soc_info->reg_map[0].mem_base; size = resource_size(soc_info->mem_block[0]); rc = cam_io_dump(addr, 0, (size >> 2)); rc = cam_io_phy_dump(addr, 0, (size >> 2)); if (rc < 0) { CAM_ERR(CAM_CSIPHY, "generating dump failed %d", rc); return rc; Loading Loading
drivers/media/platform/msm/camera/cam_sensor_module/cam_csiphy/cam_csiphy_core.c +4 −3 Original line number Diff line number Diff line Loading @@ -18,11 +18,12 @@ #include <soc/qcom/scm.h> #include <cam_mem_mgr.h> static int cam_csiphy_mem_dmp_param; module_param(cam_csiphy_mem_dmp_param, int, 0644); #define SCM_SVC_CAMERASS 0x18 #define SECURE_SYSCALL_ID 0x6 static int csiphy_dump; module_param(csiphy_dump, int, 0644); static int cam_csiphy_notify_secure_mode(int phy, bool protect) { struct scm_desc desc = {0}; Loading Loading @@ -572,7 +573,7 @@ int32_t cam_csiphy_core_cfg(void *phy_dev, goto release_mutex; } rc = cam_csiphy_config_dev(csiphy_dev); if (cam_csiphy_mem_dmp_param == 1) if (csiphy_dump == 1) cam_csiphy_mem_dmp(&csiphy_dev->soc_info); if (rc < 0) { Loading
drivers/media/platform/msm/camera/cam_sensor_module/cam_csiphy/cam_csiphy_soc.c +42 −1 Original line number Diff line number Diff line Loading @@ -14,6 +14,47 @@ #include "cam_csiphy_core.h" #include "include/cam_csiphy_1_0_hwreg.h" #define BYTES_PER_REGISTER 4 #define NUM_REGISTER_PER_LINE 4 #define REG_OFFSET(__start, __i) ((__start) + ((__i) * BYTES_PER_REGISTER)) static int cam_io_phy_dump(void __iomem *base_addr, uint32_t start_offset, int size) { char line_str[128]; char *p_str; int i; uint32_t data; CAM_INFO(CAM_CSIPHY, "addr=%pK offset=0x%x size=%d", base_addr, start_offset, size); if (!base_addr || (size <= 0)) return -EINVAL; line_str[0] = '\0'; p_str = line_str; for (i = 0; i < size; i++) { if (i % NUM_REGISTER_PER_LINE == 0) { snprintf(p_str, 12, "0x%08x: ", REG_OFFSET(start_offset, i)); p_str += 11; } data = readl_relaxed(base_addr + REG_OFFSET(start_offset, i)); snprintf(p_str, 9, "%08x ", data); p_str += 8; if ((i + 1) % NUM_REGISTER_PER_LINE == 0) { CAM_ERR(CAM_CSIPHY, "%s", line_str); line_str[0] = '\0'; p_str = line_str; } } if (line_str[0] != '\0') CAM_ERR(CAM_CSIPHY, "%s", line_str); return 0; } int32_t cam_csiphy_mem_dmp(struct cam_hw_soc_info *soc_info) { int32_t rc = 0; Loading @@ -27,7 +68,7 @@ int32_t cam_csiphy_mem_dmp(struct cam_hw_soc_info *soc_info) } addr = soc_info->reg_map[0].mem_base; size = resource_size(soc_info->mem_block[0]); rc = cam_io_dump(addr, 0, (size >> 2)); rc = cam_io_phy_dump(addr, 0, (size >> 2)); if (rc < 0) { CAM_ERR(CAM_CSIPHY, "generating dump failed %d", rc); return rc; Loading