Пример #1
0
 static void hw_bc11_init(void)
 {
 	 msleep(300);
	 Charger_Detect_Init();
		 
	 //RG_BC11_BIAS_EN=1	
	 upmu_set_rg_bc11_bias_en(0x1);
	 //RG_BC11_VSRC_EN[1:0]=00
	 upmu_set_rg_bc11_vsrc_en(0x0);
	 //RG_BC11_VREF_VTH = [1:0]=00
	 upmu_set_rg_bc11_vref_vth(0x0);
	 //RG_BC11_CMP_EN[1.0] = 00
	 upmu_set_rg_bc11_cmp_en(0x0);
	 //RG_BC11_IPU_EN[1.0] = 00
	 upmu_set_rg_bc11_ipu_en(0x0);
	 //RG_BC11_IPD_EN[1.0] = 00
	 upmu_set_rg_bc11_ipd_en(0x0);
	 //BC11_RST=1
	 upmu_set_rg_bc11_rst(0x1);
	 //BC11_BB_CTRL=1
	 upmu_set_rg_bc11_bb_ctrl(0x1);
 
 	 //msleep(10);
 	 mdelay(50);

	 if(Enable_BATDRV_LOG == BAT_LOG_FULL)
	 {
    		battery_xlog_printk(BAT_LOG_FULL, "hw_bc11_init() \r\n");
		hw_bc11_dump_register();
	 }	
	 
 }
Пример #2
0
 static kal_uint32 charging_hw_init(void *data)
 {
 	kal_uint32 status = STATUS_OK;
	
   	upmu_set_rg_chrwdt_td(0x0);           // CHRWDT_TD, 4s
    upmu_set_rg_chrwdt_int_en(1);         // CHRWDT_INT_EN
    upmu_set_rg_chrwdt_en(1);             // CHRWDT_EN
    upmu_set_rg_chrwdt_wr(1);             // CHRWDT_WR

    upmu_set_rg_vcdt_mode(0);       //VCDT_MODE
    upmu_set_rg_vcdt_hv_en(1);      //VCDT_HV_EN    

	upmu_set_rg_usbdl_rst(1);		//force leave USBDL mode

    upmu_set_rg_bc11_bb_ctrl(1);    //BC11_BB_CTRL
    upmu_set_rg_bc11_rst(1);        //BC11_RST
    
    upmu_set_rg_csdac_mode(1);      //CSDAC_MODE
    upmu_set_rg_vbat_ov_en(1);      //VBAT_OV_EN
#ifdef HIGH_BATTERY_VOLTAGE_SUPPORT
	upmu_set_rg_vbat_ov_vth(0x2);   //VBAT_OV_VTH, 4.4V,
#else
    upmu_set_rg_vbat_ov_vth(0x1);   //VBAT_OV_VTH, 4.3V,
#endif
    upmu_set_rg_baton_en(1);        //BATON_EN

    //Tim, for TBAT
    //upmu_set_rg_buf_pwd_b(1);       //RG_BUF_PWD_B
    upmu_set_rg_baton_ht_en(0);     //BATON_HT_EN
    
    upmu_set_rg_ulc_det_en(1);      // RG_ULC_DET_EN=1
    upmu_set_rg_low_ich_db(1);      // RG_LOW_ICH_DB=000001'b

	return status;
 }
Пример #3
0
// ============================================================ //
static kal_uint32 charging_hw_init_bq24196(void *data)
{
	kal_uint32 status = STATUS_OK;

	upmu_set_rg_bc11_bb_ctrl(1);    //BC11_BB_CTRL
	upmu_set_rg_bc11_rst(1);        //BC11_RST

	bq24196_set_en_hiz(0x0);
	bq24196_set_vindpm(0xA); //VIN DPM check 4.68V
	bq24196_set_reg_rst(0x0);
	bq24196_set_wdt_rst(0x1); //Kick watchdog
	bq24196_set_sys_min(0x5); //Minimum system voltage 3.5V
	bq24196_set_iprechg(0x3); //Precharge current 512mA
	bq24196_set_iterm(0x0); //Termination current 128mA

	bq24196_set_vreg(0x2C); //VREG 4.208V

	bq24196_set_batlowv(0x1); //BATLOWV 3.0V
	bq24196_set_vrechg(0x0); //VRECHG 0.1V (4.108V)
	bq24196_set_en_term(0x1); //Enable termination
	bq24196_set_term_stat(0x0); //Match ITERM
	bq24196_set_watchdog(0x1); //WDT 40s
	bq24196_set_en_timer(0x0); //Disable charge timer
	bq24196_set_int_mask(0x0); //Disable fault interrupt

	return status;
}
 static kal_uint32 charging_hw_init(void *data)
 {
 	kal_uint32 status = STATUS_OK;
	
	upmu_set_rg_bc11_bb_ctrl(1);    //BC11_BB_CTRL    
    upmu_set_rg_bc11_rst(1);        //BC11_RST
	
#if 0 //no use
    //pull PSEL low
    mt_set_gpio_mode(GPIO_CHR_PSEL_PIN,GPIO_MODE_GPIO);  
    mt_set_gpio_dir(GPIO_CHR_PSEL_PIN,GPIO_DIR_OUT);
    mt_set_gpio_out(GPIO_CHR_PSEL_PIN,GPIO_OUT_ZERO);
#endif    
    
    //pull CE low
    mt_set_gpio_mode(GPIO_SWCHARGER_EN_PIN,GPIO_MODE_GPIO);  
    mt_set_gpio_dir(GPIO_SWCHARGER_EN_PIN,GPIO_DIR_OUT);
    mt_set_gpio_out(GPIO_SWCHARGER_EN_PIN,GPIO_OUT_ZERO);    

    //battery_xlog_printk(BAT_LOG_FULL, "gpio_number=0x%x,gpio_on_mode=%d,gpio_off_mode=%d\n", gpio_number, gpio_on_mode, gpio_off_mode);	

	bq24196_set_en_hiz(0x0);
	if (get_usb_current_unlimited()) {
		bq24196_set_vindpm(0x7); //VIN DPM check 4.44V
		battery_xlog_printk(BAT_LOG_CRTI, "[charging_hw_init] VIN DPM check 4.44V\n");
	}else{
		bq24196_set_vindpm(0xA); //VIN DPM check 4.68V
	}    
	bq24196_set_reg_rst(0x0);
	bq24196_set_wdt_rst(0x1); //Kick watchdog	
	bq24196_set_sys_min(0x5); //Minimum system voltage 3.5V	
	bq24196_set_iprechg(0x3); //Precharge current 512mA
	bq24196_set_iterm(0x0); //Termination current 128mA

	bq24196_set_batlowv(0x1); //BATLOWV 3.0V
	bq24196_set_vrechg(0x0); //VRECHG 0.1V (4.108V)
	bq24196_set_en_term(0x1); //Enable termination
	bq24196_set_term_stat(0x0); //Match ITERM
	bq24196_set_watchdog(0x1); //WDT 40s
	bq24196_set_en_timer(0x0); //Disable charge timer
	bq24196_set_int_mask(0x0); //Disable fault interrupt
    
	return status;
 }
 static kal_uint32 charging_hw_init(void *data)
{
    kal_uint32 ncp1854_status;
 	kal_uint32 status = STATUS_OK;

    if (Enable_BATDRV_LOG == 1) {
		battery_log(BAT_LOG_CRTI, "[BATTERY:ncp1854] ChargerHwInit_ncp1854\n");
    }

    ncp1854_status = ncp1854_get_chip_status();

    upmu_set_rg_bc11_bb_ctrl(1);    //BC11_BB_CTRL
    upmu_set_rg_bc11_rst(1);        //BC11_RST

    ncp1854_set_otg_en(0x0);
    ncp1854_set_trans_en(0);
    ncp1854_set_tj_warn_opt(0x1);
//  ncp1854_set_int_mask(0x0); //disable all interrupt
    ncp1854_set_int_mask(0x1); //enable all interrupt for boost mode status monitor
    ncp1854_set_tchg_rst(0x1); //reset charge timer
#ifdef NCP1854_PWR_PATH
    ncp1854_set_pwr_path(0x1);
#else
    ncp1854_set_pwr_path(0x0);
#endif

    if((ncp1854_status == 0x8) || (ncp1854_status == 0x9) || (ncp1854_status == 0xA)) //WEAK WAIT, WEAK SAFE, WEAK CHARGE
        ncp1854_set_ctrl_vbat(0x1C); //VCHG = 4.0V
    else if(ncp1854_status == 0x4)
        ncp1854_set_ctrl_vbat(0x28); //VCHG = 4.3V to decrease charge time
    else
        ncp1854_set_ctrl_vbat(0x24); //VCHG = 4.2V

    ncp1854_set_ieoc(0x4); // terminate current = 200mA for ICS optimized suspend power

    ncp1854_set_iweak(0x3); //weak charge current = 300mA

    ncp1854_set_ctrl_vfet(0x3); // VFET = 3.4V

	return status;
}