Example #1
0
halReturn_t HalGpioSetResource(void)
{
    int status;
    struct iomux_pin        *pIntPin = NULL; //interrupt pin "T28"
    struct iomux_pin        *pRstPin = NULL; //Reset pin "T26"
    /*Set interrupt GPIO resource*/
    pIntPin = iomux_get_pin(PIN_NAME_INT);
    if( !pIntPin )
    {
        SII_DEBUG_PRINT(SII_OSAL_DEBUG_TRACE,
                        "HalGpioSetResource: get pin of GPIO %d failed\n",
                        W_INT_GPIO);
        return HAL_RET_FAILURE;
    }
    status = pinmux_setpullupdown(pIntPin, PULLUP);
    if (status < 0)
    {
        SII_DEBUG_PRINT(SII_OSAL_DEBUG_TRACE,
                        "HalGpioSetResource: pinmux_setpullupdown of GPIO %d failed, status = %d \n",
                        W_INT_GPIO,status);
        return HAL_RET_FAILURE;
    }

    /*Set Reset GPIO resource*/
    pRstPin = iomux_get_pin(PIN_NAME_RST);
    if( !pRstPin )
    {
        SII_DEBUG_PRINT(SII_OSAL_DEBUG_TRACE,
                        "HalGpioSetResource get pin of GPIO %d failed\n",
                        W_RST_GPIO);
        return HAL_RET_FAILURE;
    }
    status = pinmux_setpullupdown(pIntPin, PULLUP);
    if (status < 0)
    {
        SII_DEBUG_PRINT(SII_OSAL_DEBUG_TRACE,
                        "HalGpioSetResource: pinmux_setpullupdown of GPIO %d failed, status = %d \n",
                        W_RST_GPIO,status);
        return HAL_RET_FAILURE;
    }

    return HAL_RET_SUCCESS;
}
/*
 **************************************************************************
 * FunctionName: camera_power_core_ldo;
 * Description : NA;
 * Input       : NA;
 * Output      : NA;
 * ReturnValue : NA;
 * Other       : NA;
 **************************************************************************
 */
int camera_power_core_ldo(camera_power_state power)
{
	int ret = 0;

        /*V9R1 do not need this to power sensor core vcc*/

#if 0
	print_debug("enter %s", __FUNCTION__);
	if (NULL == gpio_core_ldo) {
		gpio_core_ldo = iomux_get_pin(CAM_VCC_PIN);
		if (!gpio_core_ldo) {
			print_error("fail to get CAM_VCC_PIN");
			return -EINVAL;
		}
	}

	if (POWER_ON == power) {
		print_info("power on core ldo");
		ret = pinmux_setpullupdown(gpio_core_ldo, NOPULL);
		if (ret < 0)
			print_error("fail to set gpio_core_ldo to NOPULL");

		ret = gpio_request(GPIO_21_5, "cam_vcc_en");
		if (ret < 0)
			print_error("fail to get GPIO_21_5");
		ret = gpio_direction_output(GPIO_21_5, 1);
		if (ret < 0)
			print_error("fail to set GPIO_21_5 to 1");

	} else {
		print_info("power off core ldo");
		ret = gpio_direction_output(GPIO_21_5, 0);
		if (ret < 0)
			print_error("fail to set GPIO_21_5 to 0");
		gpio_free(GPIO_21_5);
	}
#endif

	return ret;
}
/*
 **************************************************************************
 * FunctionName: camera_power_id_gpio;
 * Description : NA;
 * Input       : NA;
 * Output      : NA;
 * ReturnValue : NA;
 * Other       : NA;
 **************************************************************************
 */
int camera_power_id_gpio(camera_power_state power)
{
	int ret = 0;

	print_debug("enter %s", __FUNCTION__);

	if (POWER_ON == power) {
		if (NULL == gpio_main_camera_id) {
			gpio_main_camera_id = iomux_get_pin(CAM_ID_PIN);
			if (!gpio_main_camera_id) {
				print_error("fail to get CAM_ID_PIN");
				return -EINVAL;
			}
		}

		ret = pinmux_setpullupdown(gpio_main_camera_id, PULLUP);
		if (ret < 0)
			print_error("fail to set gpio_main_camera_id to PULLUP");

		ret = gpio_request(GPIO_13_7, NULL);
		if (ret < 0)
			print_error("fail to get GPIO_13_7");
		ret = gpio_direction_input(GPIO_13_7);
		if (ret < 0) {
			print_error("fail to set GPIO_13_7 input");
		} else {
			ret = gpio_get_value(GPIO_13_7);
			if (ret < 0)
				print_error("fail to get GPIO_13_7 value");
			set_camera_timing_type(ret);
		}

		if (NULL == gpio_slave_camera_id) {
			gpio_slave_camera_id = iomux_get_pin(SCAM_ID_PIN);
			if (!gpio_slave_camera_id) {
				print_error("fail to get CAM_ID_PIN");
				return -EINVAL;
			}
		}

		ret = pinmux_setpullupdown(gpio_slave_camera_id, PULLUP);
		if (ret < 0)
			print_error("fail to set gpio_slave_camera_id to PULLUP");

		ret = gpio_request(GPIO_14_0, NULL);
		if (ret < 0)
			print_error("fail to get GPIO_14_0");
		ret = gpio_direction_input(GPIO_14_0);
		if (ret < 0)
			print_error("fail to set GPIO_14_0 input");

	} else {
		if (NULL != gpio_main_camera_id) {
			if (pinmux_setpullupdown(gpio_main_camera_id, NOPULL) < 0)
				print_error("fail to set gpio_main_camera_id to NOPULL");
			gpio_main_camera_id = NULL;
			gpio_free(GPIO_13_7);
		}

		if (NULL != gpio_slave_camera_id) {
			if (pinmux_setpullupdown(gpio_slave_camera_id, NOPULL))
				print_error("fail to set gpio_slave_camera_id to NOPULL");
			gpio_slave_camera_id = NULL;
			gpio_free(GPIO_14_0);
		}
	}

	return ret;
}