static int32_t
imx230_plk_platform_probe(
        struct platform_device* pdev)
{
	int rc = 0;
	cam_notice("enter %s",__func__);
	if (pdev->dev.of_node) {
		rc = hw_sensor_get_dt_data(pdev, &s_imx230_plk);
		if (rc < 0) {
			cam_err("%s failed line %d\n", __func__, __LINE__);
			goto imx230_plk_sensor_probe_fail;
		}

		if (s_imx230_plk.board_info->gpios[SUSPEND].gpio == 0) {
			s_imx230_plk.power_setting_array.power_setting = hw_imx230_plk_power_setting_va;
			s_imx230_plk.power_setting_array.size = ARRAY_SIZE(hw_imx230_plk_power_setting_va);
		}

	} else {
		cam_err("%s imx230_plk of_node is NULL.\n", __func__);
		goto imx230_plk_sensor_probe_fail;
	}

	rc = hwsensor_register(pdev, &s_imx230_plk.intf);

imx230_plk_sensor_probe_fail:
	return rc;
}
static int32_t
imx328_platform_probe(
        struct platform_device* pdev)
{
	int rc = 0;
	cam_notice("enter %s",__func__);
	if (pdev->dev.of_node) {
		rc = hw_sensor_get_dt_data(pdev, &s_imx328);
		if (rc < 0) {
			cam_err("%s failed line %d\n", __func__, __LINE__);
			goto imx328_sensor_probe_fail;
		}
	} else {
		cam_err("%s imx328 of_node is NULL.\n", __func__);
		goto imx328_sensor_probe_fail;
	}

	rc = hwsensor_register(pdev, &s_imx328.intf);
imx328_sensor_probe_fail:
	return rc;
}
static int32_t
    ov8865_carrera_platform_probe(
        struct platform_device* pdev)
{
    int rc = 0;
    cam_debug("enter %s",__func__);

    if (pdev->dev.of_node) {
        rc = hw_sensor_get_dt_data(pdev, &s_ov8865_carrera);
        if (rc < 0) {
        cam_err("%s failed line %d\n", __func__, __LINE__);
        goto ov8865_carrera_sensor_probe_fail;
        }
    } else {
        cam_err("%s ov8865_carrera of_node is NULL.\n", __func__);
        goto ov8865_carrera_sensor_probe_fail;
    }

    rc = hwsensor_register(pdev, &s_ov8865_carrera.intf);
ov8865_carrera_sensor_probe_fail:
    return rc;
}
static int32_t
imx278_platform_probe(
        struct platform_device* pdev)
{
    if (NULL == pdev){
        cam_err("%s pdev is null.\n", __func__);
        return -1;
    }
	int rc = 0;
	cam_notice("enter %s",__func__);
	if (pdev->dev.of_node) {
		rc = hw_sensor_get_dt_data(pdev, &s_imx278);
		if (rc < 0) {
			cam_err("%s failed line %d\n", __func__, __LINE__);
			goto imx278_sensor_probe_fail;
		}
	} else {
		cam_err("%s imx278 of_node is NULL.\n", __func__);
		goto imx278_sensor_probe_fail;
	}

    s_imx278.dev = &pdev->dev;

	rc = hwsensor_register(pdev, &s_imx278.intf);
    if (0 != rc){
        cam_err("%s hwsensor_register fail.\n", __func__);
        goto imx278_sensor_probe_fail;
    }
	rc = rpmsg_sensor_register(pdev, (void *)&s_imx278);
    if (0 != rc){
        cam_err("%s rpmsg_sensor_register fail.\n", __func__);
        hwsensor_unregister(&s_imx278.intf);
        goto imx278_sensor_probe_fail;
    }

imx278_sensor_probe_fail:
	return rc;
}