diff --git a/drivers/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_hw_ver1.c b/drivers/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_hw_ver1.c index cc2a88c084..ac35442d1e 100644 --- a/drivers/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_hw_ver1.c +++ b/drivers/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_hw_ver1.c @@ -3275,6 +3275,7 @@ static int cam_ife_csid_ver1_sof_irq_debug( bool sof_irq_enable = false; struct cam_hw_soc_info *soc_info; struct cam_ife_csid_ver1_reg_info *csid_reg; + uint32_t data_idx; if (*((uint32_t *)cmd_args) == 1) sof_irq_enable = true; @@ -3287,6 +3288,7 @@ static int cam_ife_csid_ver1_sof_irq_debug( return 0; } + data_idx = csid_hw->rx_cfg.phy_sel; soc_info = &csid_hw->hw_info->soc_info; csid_reg = (struct cam_ife_csid_ver1_reg_info *) csid_hw->core_info->csid_reg; @@ -3353,7 +3355,7 @@ static int cam_ife_csid_ver1_sof_irq_debug( cam_subdev_notify_message(CAM_CSIPHY_DEVICE_TYPE, CAM_SUBDEV_MESSAGE_IRQ_ERR, - (csid_hw->rx_cfg.phy_sel)); + (void *)&data_idx); return 0; } @@ -3948,6 +3950,7 @@ static int cam_ife_csid_ver1_rx_bottom_half_handler( uint32_t event_type = 0; size_t len = 0; struct cam_hw_soc_info *soc_info; + uint32_t data_idx; if (!csid_hw || !evt_payload) { CAM_ERR(CAM_ISP, @@ -3956,6 +3959,7 @@ static int cam_ife_csid_ver1_rx_bottom_half_handler( return -EINVAL; } + data_idx = csid_hw->rx_cfg.phy_sel; soc_info = &csid_hw->hw_info->soc_info; csid_reg = (struct cam_ife_csid_ver1_reg_info *) csid_hw->core_info->csid_reg; @@ -4067,7 +4071,7 @@ static int cam_ife_csid_ver1_rx_bottom_half_handler( event_type |= CAM_ISP_HW_ERROR_CSID_FATAL; cam_subdev_notify_message(CAM_CSIPHY_DEVICE_TYPE, CAM_SUBDEV_MESSAGE_IRQ_ERR, - (csid_hw->rx_cfg.phy_sel)); + (void *)&data_idx); } if (event_type) cam_ife_csid_ver1_handle_event_err(csid_hw, diff --git a/drivers/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_hw_ver2.c b/drivers/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_hw_ver2.c index f1f1f2c404..ad8927a53e 100644 --- a/drivers/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_hw_ver2.c +++ b/drivers/cam_isp/isp_hw_mgr/isp_hw/ife_csid_hw/cam_ife_csid_hw_ver2.c @@ -134,6 +134,7 @@ static int cam_ife_csid_ver2_sof_irq_debug( struct cam_ife_csid_ver2_path_cfg *path_cfg; struct cam_isp_resource_node *res; uint32_t irq_mask[CAM_IFE_CSID_IRQ_REG_MAX] = {0}; + uint32_t data_idx; if (*((uint32_t *)cmd_args) == 1) sof_irq_enable = true; @@ -147,6 +148,7 @@ static int cam_ife_csid_ver2_sof_irq_debug( return 0; } + data_idx = csid_hw->rx_cfg.phy_sel - 1; csid_reg = (struct cam_ife_csid_ver2_reg_info *) csid_hw->core_info->csid_reg; @@ -185,8 +187,7 @@ static int cam_ife_csid_ver2_sof_irq_debug( csid_hw->rx_cfg.phy_sel - 1); cam_subdev_notify_message(CAM_CSIPHY_DEVICE_TYPE, - CAM_SUBDEV_MESSAGE_IRQ_ERR, - (csid_hw->rx_cfg.phy_sel - 1)); + CAM_SUBDEV_MESSAGE_IRQ_ERR, (void *)&data_idx); return 0; } @@ -952,6 +953,7 @@ static int cam_ife_csid_ver2_rx_err_bottom_half( uint32_t event_type = 0; uint32_t long_pkt_ftr_val; uint32_t total_crc; + uint32_t data_idx; if (!handler_priv || !evt_payload_priv) { CAM_ERR(CAM_ISP, "Invalid params"); @@ -961,6 +963,7 @@ static int cam_ife_csid_ver2_rx_err_bottom_half( payload = evt_payload_priv; csid_hw = handler_priv; soc_info = &csid_hw->hw_info->soc_info; + data_idx = csid_hw->rx_cfg.phy_sel -1; log_buf = csid_hw->log_buf; memset(log_buf, 0, sizeof(csid_hw->log_buf)); @@ -1106,8 +1109,7 @@ static int cam_ife_csid_ver2_rx_err_bottom_half( if (csid_hw->flags.fatal_err_detected) { event_type |= CAM_ISP_HW_ERROR_CSID_FATAL; cam_subdev_notify_message(CAM_CSIPHY_DEVICE_TYPE, - CAM_SUBDEV_MESSAGE_IRQ_ERR, - (csid_hw->rx_cfg.phy_sel -1)); + CAM_SUBDEV_MESSAGE_IRQ_ERR, (void *)&data_idx); } if (event_type) diff --git a/drivers/cam_isp/isp_hw_mgr/isp_hw/tfe_csid_hw/cam_tfe_csid_core.c b/drivers/cam_isp/isp_hw_mgr/isp_hw/tfe_csid_hw/cam_tfe_csid_core.c index 5340de3622..73c04cec11 100644 --- a/drivers/cam_isp/isp_hw_mgr/isp_hw/tfe_csid_hw/cam_tfe_csid_core.c +++ b/drivers/cam_isp/isp_hw_mgr/isp_hw/tfe_csid_hw/cam_tfe_csid_core.c @@ -3258,6 +3258,7 @@ irqreturn_t cam_tfe_csid_irq(int irq_num, void *data) uint32_t sof_irq_debug_en = 0, log_en = 0; unsigned long flags; uint32_t i, val, val1; + uint32_t data_idx; if (!data) { CAM_ERR(CAM_ISP, "CSID: Invalid arguments"); @@ -3265,6 +3266,7 @@ irqreturn_t cam_tfe_csid_irq(int irq_num, void *data) } csid_hw = (struct cam_tfe_csid_hw *)data; + data_idx = csid_hw->csi2_rx_cfg.phy_sel - 1; CAM_DBG(CAM_ISP, "CSID %d IRQ Handling", csid_hw->hw_intf->hw_idx); csid_reg = csid_hw->csid_info->csid_reg; @@ -3397,8 +3399,7 @@ handle_fatal_error: /* phy_sel starts from 1 and should never be zero*/ if (csid_hw->csi2_rx_cfg.phy_sel > 0) { cam_subdev_notify_message(CAM_CSIPHY_DEVICE_TYPE, - CAM_SUBDEV_MESSAGE_IRQ_ERR, - (csid_hw->csi2_rx_cfg.phy_sel - 1)); + CAM_SUBDEV_MESSAGE_IRQ_ERR, (void *)&data_idx); } cam_tfe_csid_handle_hw_err_irq(csid_hw, CAM_ISP_HW_ERROR_CSID_FATAL, irq_status); diff --git a/drivers/cam_req_mgr/cam_req_mgr_dev.c b/drivers/cam_req_mgr/cam_req_mgr_dev.c index 4e52581e33..f2d35b20a8 100644 --- a/drivers/cam_req_mgr/cam_req_mgr_dev.c +++ b/drivers/cam_req_mgr/cam_req_mgr_dev.c @@ -662,7 +662,7 @@ void cam_video_device_cleanup(void) void cam_subdev_notify_message(u32 subdev_type, enum cam_subdev_message_type_t message_type, - uint32_t data) + void *data) { struct v4l2_subdev *sd = NULL; struct cam_subdev *csd = NULL; diff --git a/drivers/cam_req_mgr/cam_subdev.h b/drivers/cam_req_mgr/cam_subdev.h index f4f09b815d..38d2850e2f 100644 --- a/drivers/cam_req_mgr/cam_subdev.h +++ b/drivers/cam_req_mgr/cam_subdev.h @@ -65,7 +65,7 @@ struct cam_subdev { void (*msg_cb)( struct v4l2_subdev *sd, enum cam_subdev_message_type_t msg_type, - uint32_t data); + void *data); struct list_head list; enum cam_subdev_close_seq_priority close_seq_prior; }; @@ -82,7 +82,7 @@ struct cam_subdev { */ void cam_subdev_notify_message(u32 subdev_type, enum cam_subdev_message_type_t message_type, - uint32_t data); + void *data); /** * cam_subdev_probe() diff --git a/drivers/cam_sensor_module/cam_csiphy/cam_csiphy_dev.c b/drivers/cam_sensor_module/cam_csiphy/cam_csiphy_dev.c index aaacf3c35f..5313e41504 100644 --- a/drivers/cam_sensor_module/cam_csiphy/cam_csiphy_dev.c +++ b/drivers/cam_sensor_module/cam_csiphy/cam_csiphy_dev.c @@ -16,15 +16,17 @@ static struct dentry *root_dentry; static void cam_csiphy_subdev_handle_message( struct v4l2_subdev *sd, enum cam_subdev_message_type_t message_type, - uint32_t data) + void *data) { struct csiphy_device *csiphy_dev = v4l2_get_subdevdata(sd); + uint32_t data_idx; switch (message_type) { case CAM_SUBDEV_MESSAGE_IRQ_ERR: + data_idx = *(uint32_t *)data; CAM_INFO(CAM_CSIPHY, "subdev index : %d CSIPHY index: %d", - csiphy_dev->soc_info.index, data); - if (data == csiphy_dev->soc_info.index) { + csiphy_dev->soc_info.index, data_idx); + if (data_idx == csiphy_dev->soc_info.index) { cam_csiphy_common_status_reg_dump(csiphy_dev); if (csiphy_dev->en_full_phy_reg_dump)