void lge_battery_fet_onoff(int on) { #if 0 switch( get_ext_pwr_type() ) { case LT_CABLE_56K: case LT_CABLE_130K: case LT_CABLE_910K: on = 0; break; default : break; } #endif if(on) { printk(KERN_INFO "%s, On %d - GPIO LOW \n", __FUNCTION__, on); /* Charging */ gpio_set_value(CHAR_CONTROL, 0); } else { printk(KERN_INFO "%s, On %d - GPIO HIGH \n", __FUNCTION__, on); /* No Charging */ gpio_set_value(CHAR_CONTROL, 1); } return ; }
void set_charging_current_sub(void) { #ifdef CONFIG_LGE_BLOCK_CHARGING_MODE if ( 0 == get_block_charging_state() ) { printk(KERN_INFO "%s: Block Charging State\n", __func__); return ; } #endif switch( get_ext_pwr_type() ) { case NO_CABLE: charging_ic_active_default(); break; case LT_CABLE_56K: case LT_CABLE_130K: case LT_CABLE_910K: charging_ic_set_factory_mode(); /* mbk_temp HW Request */ setting_for_factory_mode_hw_req(); break; case TA_CABLE: case FORGED_TA_CABLE: charging_ic_set_ta_mode(); break; case USB_CABLE: case ABNORMAL_USB_100MA: case ABNORMAL_USB_400MA: charging_ic_set_usb_mode(); break; } printk("[charging_msg] %s, External Power Type %d, charging_ic_status %d \n", __FUNCTION__, get_ext_pwr_type(), charging_ic_status); return ; }
void set_charging_current(void) { static int old_status = -1; int current_status = -1; if( !get_madc_probe_done() ) return ; current_status = get_external_power_status(); if( old_status != current_status ) { /* mbk_temp */ lge_usb_acc_detect(); switch( get_ext_pwr_type() ) { case NO_CABLE: break; case LT_CABLE: // if LT_Cable, u-boot already set charing current. in kernel no need to set //charging_ic_set_factory_mode(); /* mbk_temp HW Request */ setting_for_factory_mode_hw_req(); break; case TA_CABLE: case FORGED_TA_CABLE: charging_ic_set_ta_mode(); break; } printk("[charging_msg] %s, External Power Type %d \n", __FUNCTION__, get_ext_pwr_type()); old_status = current_status; } charger_state_update_by_other(); return ; }
void lge_battery_fet_onoff(int on) { if( get_ext_pwr_type() == LT_CABLE ) on = 0; if(on) { printk(KERN_INFO "%s, On %d - GPIO LOW \n", __FUNCTION__, on); /* Charging */ gpio_set_value(CHAR_CONTROL, 0); } else { printk(KERN_INFO "%s, On %d - GPIO HIGH \n", __FUNCTION__, on); /* No Charging */ gpio_set_value(CHAR_CONTROL, 1); } return ; }
int lge_usb_dp_dm_check(struct twl4030_usb *twl) { #if 0 cable_dp_dm_short = 1; return 0; #else int ret; int is_short; u8 reg_val; u8 reg_backup[2]; //20110804 [email protected] [LS855] skipping check d+/d- when detect LT Cable. [START] #if 1 check_cable_type = get_ext_pwr_type(); if( get_external_power_status()||((check_cable_type==LT_CABLE_56K || check_cable_type==LT_CABLE_130K || check_cable_type==LT_CABLE_910K))) return 0; #else if( get_external_power_status()) return 0; #endif //20110804 [email protected] [LS855] skipping check d+/d- when detect LT Cable. [END] #if 1 /* already exist in twl4030_phy_power() */ // printk("twl : 0x%x\n", twl); // regulator_enable(twl->usb3v1); regulator_enable(twl->usb1v8); regulator_enable(twl->usb1v5); /* PHY power up */ twl_i2c_read_u8(TWL4030_MODULE_USB, ®_val, PHY_PWR_CTRL); reg_val &= ~PHY_PWR_PHYPWD; ret = twl_i2c_write_u8(TWL4030_MODULE_USB, reg_val, PHY_PWR_CTRL); if (ret) goto err_short_chk1; /* ULPI register clock gating is enable */ ret = twl_i2c_read_u8(TWL4030_MODULE_USB, ®_backup[0], PHY_CLK_CTRL); if (ret) goto err_short_chk2; ret = twl_i2c_write_u8(TWL4030_MODULE_USB, reg_backup[0] | PHY_CLK_CTRL_CLOCKGATING_EN, PHY_CLK_CTRL); if (ret) goto err_short_chk2; #endif ret = twl_i2c_write_u8(TWL4030_MODULE_USB, FUNC_CTRL_XCVRSELECT_MASK | FUNC_CTRL_OPMODE_MASK, FUNC_CTRL_CLR); if (ret) goto err_short_chk3; /* Disable D+, D- pulldown */ ret = twl_i2c_write_u8(TWL4030_MODULE_USB, OTG_CTRL_DMPULLDOWN | OTG_CTRL_DPPULLDOWN, OTG_CTRL_CLR); if (ret) goto err_short_chk4; /* Set D+ to high, D- to low */ #if 0 ret = twl_i2c_read_u8(TWL4030_MODULE_USB, ®_val, OTHER_FUNC_CTRL); if (ret) goto err_short_chk5; reg_backup[1] = reg_val & ~(DM_PULLUP | DP_PULLUP); ret = twl_i2c_write_u8(TWL4030_MODULE_USB, reg_backup[1] | DP_PULLUP, OTHER_FUNC_CTRL); #else ret = twl_i2c_read_u8(TWL4030_MODULE_USB, ®_backup[1], OTHER_FUNC_CTRL); if (ret) goto err_short_chk5; reg_val = reg_backup[1] & ~(DM_PULLUP | DP_PULLUP); ret = twl_i2c_write_u8(TWL4030_MODULE_USB, reg_val | DP_PULLUP, OTHER_FUNC_CTRL); #endif if (ret) goto err_short_chk5; /* Check D- line */ ret = twl_i2c_read_u8(TWL4030_MODULE_USB, ®_val, OTHER_INT_STS); if (ret) goto err_short_chk6; if ((reg_val & 0x60) == 0x60) is_short = 1; else is_short = 0; /* Set to default */ twl_i2c_write_u8(TWL4030_MODULE_USB, reg_backup[1], OTHER_FUNC_CTRL); twl_i2c_write_u8(TWL4030_MODULE_USB, OTG_CTRL_DMPULLDOWN | OTG_CTRL_DPPULLDOWN, OTG_CTRL_SET); twl_i2c_write_u8(TWL4030_MODULE_USB, FUNC_CTRL_XCVRSELECT_MASK | FUNC_CTRL_OPMODE_MASK, FUNC_CTRL_SET); #if 0 twl_i2c_write_u8(TWL4030_MODULE_USB, reg_backup[0], PHY_CLK_CTRL); /* ULPI register clock gating is disble */ /* LGE_CHANGE_S [VX20000:FW:[email protected]] 2009-06-08, XXX_mbk_ADC_VBATT_THRM * If below code is not present in TA Cable asserted, * we can not set SEL_MADC_MCPC to 1 in ther CARKIT_ANA_CTRL * I don't know why......*/ #if 1 /*#define REG_CARKIT_ANA_CTRL 0xBB */ ret = twl_i2c_read_u8(TWL4030_MODULE_USB, &data_temp, REG_CARKIT_ANA_CTRL); if (ret) { printk(KERN_ERR "%s: BUSY flag.\n", __func__); } #endif /* LGE_CHANGE_E [VX20000:FW:[email protected]] / 2009-06-08 */ #endif twl_i2c_read_u8(TWL4030_MODULE_USB, ®_val, PHY_PWR_CTRL); reg_val |= PHY_PWR_PHYPWD; twl_i2c_write_u8(TWL4030_MODULE_USB, reg_val, PHY_PWR_CTRL); /* PHY power down */ //twl4030_i2c_access(0); regulator_disable(twl->usb1v5); regulator_disable(twl->usb1v8); // regulator_disable(twl->usb3v1); cable_dp_dm_short = is_short; printk(KERN_DEBUG "%s: D+ and D- lines are %s\n", __func__, is_short? "short":"open"); return 0; err_short_chk6: twl_i2c_write_u8(TWL4030_MODULE_USB, reg_backup[1], OTHER_FUNC_CTRL); err_short_chk5: twl_i2c_write_u8(TWL4030_MODULE_USB, OTG_CTRL_DMPULLDOWN | OTG_CTRL_DPPULLDOWN, OTG_CTRL_SET); err_short_chk4: twl_i2c_write_u8(TWL4030_MODULE_USB, FUNC_CTRL_XCVRSELECT_MASK | FUNC_CTRL_OPMODE_MASK, FUNC_CTRL_SET); err_short_chk3: twl_i2c_write_u8(TWL4030_MODULE_USB, reg_backup[0], PHY_CLK_CTRL); err_short_chk2: twl_i2c_write_u8(TWL4030_MODULE_USB, PHY_PWR_PHYPWD, PHY_PWR_CTRL); err_short_chk1: //twl4030_i2c_access(0); regulator_disable(twl->usb1v5); regulator_disable(twl->usb1v8); // regulator_disable(twl->usb3v1); printk(KERN_ERR "%s: Error \n", __func__); return ret; #endif }