msm: camera: common: Make msg_cb for cam_subdev generic
The current implementation allows to pass uint_32 as argument in the message callback. Changing it to (void *) type so that any type of data can be passed in the future implementations. CRs-Fixed: 2847155 Change-Id: Ic52a5ccfe13efdba37bbcfdb7154ed789b1943fd Signed-off-by: Shardul Bankar <sharbank@codeaurora.org>
This commit is contained in:
@@ -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,
|
||||
|
@@ -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)
|
||||
|
@@ -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);
|
||||
|
@@ -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;
|
||||
|
@@ -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()
|
||||
|
@@ -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)
|
||||
|
Reference in New Issue
Block a user