void mt_power_off(void)
{
#ifdef CONFIG_MTK_PMIC_MT6397
	int ret_val=0;
	int reg_val=0;
#endif

	printk("mt_power_off\n");

#ifdef CONFIG_MTK_PMIC_MT6397
	//Enable CA15 by default for different PMIC behavior
	pmic_config_interface(VCA15_CON7, 0x1, PMIC_VCA15_EN_MASK, PMIC_VCA15_EN_SHIFT);
	pmic_config_interface(VSRMCA15_CON7, 0x1, PMIC_VSRMCA15_EN_MASK, PMIC_VSRMCA15_EN_SHIFT);
	udelay(200);
         
	ret_val=pmic_read_interface(VCA15_CON7, &reg_val, 0xFFFF, 0);
	printk("Reg[0x%x]=0x%x\n", VCA15_CON7, reg_val);
	ret_val=pmic_read_interface(VSRMCA15_CON7, &reg_val, 0xFFFF, 0);
	printk("Reg[0x%x]=0x%x\n", VSRMCA15_CON7, reg_val);
#endif
	/* pull PWRBB low */
	rtc_bbpu_power_down();

	while (1) {
#if defined(CONFIG_POWER_EXT)
		//EVB
		printk("EVB without charger\n");
#else	
		//Phone	
		printk("Phone with charger\n");
		if (pmic_chrdet_status() == KAL_TRUE)
			arch_reset(0, "power_off_with_charger");
#endif
    }
}
void hal_rtc_bbpu_pwdn(void)
{
	u16 ret_val, con;

	/* disable 32K export if there are no RTC_GPIO users */
	if (!(rtc_read(RTC_PDN1) & RTC_GPIO_USER_MASK)) {
		con = rtc_read(RTC_CON) | RTC_CON_F32KOB;
		rtc_write(RTC_CON, con);
		rtc_write_trigger();
	}
	ret_val = hal_rtc_get_spare_register(RTC_32K_LESS);
#if !defined(CONFIG_MTK_FPGA)
	if (!ret_val && pmic_chrdet_status() == KAL_FALSE) {
		/* 1.   Set SRCLKENAs GPIO GPIO as Output Mode, Output Low */
		mt_set_gpio_dir(GPIO_SRCLKEN_PIN, GPIO_DIR_OUT);
		mt_set_gpio_out(GPIO_SRCLKEN_PIN, GPIO_OUT_ZERO);
		/* 2. pull PWRBB low */
		rtc_bbpu_pwrdown(true);

		/* 3.   Switch SRCLKENAs GPIO MUX function to GPIO Mode */
		mt_set_gpio_mode(GPIO_SRCLKEN_PIN, GPIO_MODE_GPIO);
	} else
#endif
	{
		rtc_bbpu_pwrdown(true);
	}
}
void mt_power_off(void)
{
	printk("mt_power_off\n");
	/* pull PWRBB low */
	rtc_bbpu_power_down();

	while (1) {
		printk("mt_power_off : check charger\n");
		if (pmic_chrdet_status() == KAL_TRUE)
			arch_reset(0, "charger");
	}
}
void mt6575_power_off(void)
{
	//printf("mt_power_off\n");

	/* pull PWRBB low */
	rtc_bbpu_power_down();

	while (1) {
		//printf("mt_power_off : check charger\n");
		if (pmic_chrdet_status() == KAL_TRUE)
			mtk_arch_reset(0);
	}
}
void mt_power_off(void)
{
	printk("mt_power_off\n");
#ifdef MTK_NCP1851_SUPPORT
 //Set SPM = 0, for lenovo platform, GPIO83
  mt_set_gpio_mode(GPIO83, GPIO_MODE_00);
  mt_set_gpio_dir(GPIO83, GPIO_DIR_OUT);
  mt_set_gpio_out(GPIO83, GPIO_OUT_ZERO);
#endif

	/* pull PWRBB low */
	rtc_bbpu_power_down();

	while (1) {
		printk("mt_power_off : check charger\n");
		if (pmic_chrdet_status() == KAL_TRUE)
			arch_reset(0, "charger");
	}
}
Beispiel #6
0
void mt_power_off(void)
{
	printk("mt_power_off\n");

	/* pull PWRBB low */
	rtc_bbpu_power_down();

	while (1) {
#if defined(CONFIG_POWER_EXT)
		//EVB
		printk("EVB without charger\n");
#else	
		//Phone	
		printk("Phone with charger\n");
		if (pmic_chrdet_status() == KAL_TRUE)
			arch_reset(0, "power_off_with_charger");
#endif
    }
}
Beispiel #7
0
void mt_power_off(void)
{
	printk("mt_power_off\n");

	// enable VRTC PWM if needed
	rtc_pwm_enable_check();

	/* pull PWRBB low */
	/*Hong-Rong: FIXME for early porting*/
	rtc_bbpu_power_down();

	while (1) {
#if defined(CONFIG_POWER_EXT)
		//EVB
		printk("EVB without charger\n");
#else	
		//Phone	
		printk("Phone with charger\n");
		if (pmic_chrdet_status() == KAL_TRUE)
			arch_reset(0, "power_off_with_charger");
#endif
    }
}
Beispiel #8
0
void mt_power_off(void)
{
	int count = 0;
	printk("mt_power_off\n");

	/* pull PWRBB low */
	rtc_bbpu_power_down();

	while (1) {
#if defined(CONFIG_POWER_EXT)
		//EVB
		printk("EVB without charger\n");
#else	
		//Phone
		mdelay(100);	
		printk("Phone with charger\n");
		if (pmic_chrdet_status() == KAL_TRUE || count > 10)
			arch_reset(0, "charger");

		count++;
#endif
    }
}