static ssize_t s3c_bat_show_attrs(struct device *dev, struct device_attribute *attr, char *buf); static ssize_t s3c_bat_store_attrs(struct device *dev, struct device_attribute *attr, const char *buf, size_t count); #define SEC_BATTERY_ATTR(_name) \ { \ .attr = {.name = #_name, .mode = 0664 }, \ .show = s3c_bat_show_attrs, \ .store = s3c_bat_store_attrs, \ } static struct device_attribute s3c_battery_attrs[] = { SEC_BATTERY_ATTR(charging_mode_booting), SEC_BATTERY_ATTR(batt_full_check), }; static int s3c_cable_status_update(struct chg_data *chg); static bool max8998_check_vdcin(struct chg_data *chg) { u8 data = 0; int ret; ret = max8998_read_reg(chg->iodev->i2c, MAX8998_REG_STATUS2, &data); if (ret < 0) { pr_err("max8998_read_reg error\n"); return ret;
default: return -EINVAL; } return 0; } #define SEC_BATTERY_ATTR(_name) \ { \ .attr = { .name = #_name, .mode = S_IRUGO | S_IWUGO, .owner = THIS_MODULE }, \ .show = s3c_bat_show_property, \ .store = s3c_bat_store, \ } static struct device_attribute s3c_battery_attrs[] = { SEC_BATTERY_ATTR(batt_vol), SEC_BATTERY_ATTR(batt_vol_adc), SEC_BATTERY_ATTR(batt_vol_adc_cal), SEC_BATTERY_ATTR(batt_temp), SEC_BATTERY_ATTR(batt_temp_adc), SEC_BATTERY_ATTR(batt_temp_adc_cal), }; enum { BATT_VOL = 0, BATT_VOL_ADC, BATT_VOL_ADC_CAL, BATT_TEMP, BATT_TEMP_ADC, BATT_TEMP_ADC_CAL, };
static ssize_t s3c_bat_show_attrs(struct device *dev, struct device_attribute *attr, char *buf); static ssize_t s3c_bat_store_attrs(struct device *dev, struct device_attribute *attr, const char *buf, size_t count); #define SEC_BATTERY_ATTR(_name) \ { \ .attr = {.name = #_name, .mode = 0664, .owner = THIS_MODULE }, \ .show = s3c_bat_show_attrs, \ .store = s3c_bat_store_attrs, \ } static struct device_attribute s3c_battery_attrs[] = { SEC_BATTERY_ATTR(batt_vol), SEC_BATTERY_ATTR(batt_vol_adc), SEC_BATTERY_ATTR(batt_temp), SEC_BATTERY_ATTR(batt_temp_adc), SEC_BATTERY_ATTR(charging_source), SEC_BATTERY_ATTR(fg_soc), SEC_BATTERY_ATTR(reset_soc), SEC_BATTERY_ATTR(charging_mode_booting), SEC_BATTERY_ATTR(batt_temp_check), SEC_BATTERY_ATTR(batt_full_check), SEC_BATTERY_ATTR(batt_type), }; static void max8998_lowbat_config(struct chg_data *chg, int on) { struct i2c_client *i2c = chg->iodev->i2c;
default: return -EINVAL; } return 0; } #define SEC_BATTERY_ATTR(_name)\ {\ .attr = { .name = #_name, .mode = S_IRUGO | (S_IWUSR | S_IWGRP) },\ .show = p3_bat_show_property,\ .store = p3_bat_store,\ } static struct device_attribute p3_battery_attrs[] = { SEC_BATTERY_ATTR(batt_vol), SEC_BATTERY_ATTR(batt_temp), #ifdef CONFIG_MACH_SAMSUNG_P5 SEC_BATTERY_ATTR(batt_temp_cels), #endif SEC_BATTERY_ATTR(charging_source), SEC_BATTERY_ATTR(fg_soc), SEC_BATTERY_ATTR(reset_soc), SEC_BATTERY_ATTR(reset_cap), SEC_BATTERY_ATTR(fg_reg), SEC_BATTERY_ATTR(batt_type), SEC_BATTERY_ATTR(batt_temp_check), SEC_BATTERY_ATTR(batt_full_check), #ifdef CONFIG_SAMSUNG_LPM_MODE SEC_BATTERY_ATTR(charging_mode_booting), SEC_BATTERY_ATTR(voltage_now),
default: return -EINVAL; } return 0; } #define SEC_BATTERY_ATTR(_name) \ { \ .attr = { .name = #_name, .mode = S_IRUGO | S_IWUGO, .owner = THIS_MODULE }, \ .show = s3c_bat_show_property, \ .store = s3c_bat_store, \ } static struct device_attribute s3c_battery_attrs[] = { SEC_BATTERY_ATTR(batt_vol), SEC_BATTERY_ATTR(batt_vol_adc), SEC_BATTERY_ATTR(batt_vol_adc_cal), SEC_BATTERY_ATTR(batt_temp), SEC_BATTERY_ATTR(batt_temp_adc), SEC_BATTERY_ATTR(batt_temp_adc_cal), SEC_BATTERY_ATTR(batt_vol_adc_aver), #ifdef __TEST_MODE_INTERFACE__ /* test mode */ SEC_BATTERY_ATTR(batt_test_mode), /* average */ SEC_BATTERY_ATTR(batt_vol_aver), SEC_BATTERY_ATTR(batt_temp_aver), SEC_BATTERY_ATTR(batt_temp_adc_aver), SEC_BATTERY_ATTR(batt_v_f_adc), #endif /* __TEST_MODE_INTERFACE__ */
static ssize_t s3c_bat_show_attrs(struct device *dev, struct device_attribute *attr, char *buf); static ssize_t s3c_bat_store_attrs(struct device *dev, struct device_attribute *attr, const char *buf, size_t count); #define SEC_BATTERY_ATTR(_name) \ { \ .attr = { .name = #_name, .mode = 0664, .owner = THIS_MODULE }, \ .show = s3c_bat_show_attrs, \ .store = s3c_bat_store_attrs, \ } static struct device_attribute s3c_battery_attrs[] = { SEC_BATTERY_ATTR(batt_vol), SEC_BATTERY_ATTR(batt_vol_adc), SEC_BATTERY_ATTR(batt_temp), SEC_BATTERY_ATTR(batt_temp_adc), SEC_BATTERY_ATTR(charging_source), SEC_BATTERY_ATTR(fg_soc), SEC_BATTERY_ATTR(reset_soc), SEC_BATTERY_ATTR(fg_point_level), // lobat pwroff SEC_BATTERY_ATTR(charging_mode_booting), SEC_BATTERY_ATTR(batt_temp_check), SEC_BATTERY_ATTR(batt_full_check), #ifdef __VZW_AUTH_CHECK__ SEC_BATTERY_ATTR(auth_battery), #endif SEC_BATTERY_ATTR(batt_chg_current_aver), SEC_BATTERY_ATTR(batt_type), //to check only
static ssize_t s3c_bat_show_attrs(struct device *dev, struct device_attribute *attr, char *buf); static ssize_t s3c_bat_store_attrs(struct device *dev, struct device_attribute *attr, const char *buf, size_t count); #define SEC_BATTERY_ATTR(_name) \ { \ .attr = {.name = #_name, .mode = 0664 }, \ .show = s3c_bat_show_attrs, \ .store = s3c_bat_store_attrs, \ } static struct device_attribute s3c_battery_attrs[] = { SEC_BATTERY_ATTR(charging_mode_booting), SEC_BATTERY_ATTR(batt_temp_check), SEC_BATTERY_ATTR(batt_full_check), SEC_BATTERY_ATTR(disable_charger) }; static bool max8998_check_vdcin(struct chg_data *chg) { u8 data = 0; int ret; ret = max8998_read_reg(chg->iodev->i2c, MAX8998_REG_STATUS2, &data); if (ret < 0) { pr_err("max8998_read_reg error\n"); return ret;