linux/drivers/power/ab8500_bmdata.c
<<
>>
Prefs
   1#include <linux/export.h>
   2#include <linux/power_supply.h>
   3#include <linux/of.h>
   4#include <linux/mfd/abx500.h>
   5#include <linux/mfd/abx500/ab8500.h>
   6#include <linux/mfd/abx500/ab8500-bm.h>
   7
   8/*
   9 * These are the defined batteries that uses a NTC and ID resistor placed
  10 * inside of the battery pack.
  11 * Note that the res_to_temp table must be strictly sorted by falling resistance
  12 * values to work.
  13 */
  14const struct abx500_res_to_temp ab8500_temp_tbl_a_thermistor[] = {
  15        {-5, 53407},
  16        { 0, 48594},
  17        { 5, 43804},
  18        {10, 39188},
  19        {15, 34870},
  20        {20, 30933},
  21        {25, 27422},
  22        {30, 24347},
  23        {35, 21694},
  24        {40, 19431},
  25        {45, 17517},
  26        {50, 15908},
  27        {55, 14561},
  28        {60, 13437},
  29        {65, 12500},
  30};
  31EXPORT_SYMBOL(ab8500_temp_tbl_a_thermistor);
  32
  33const int ab8500_temp_tbl_a_size = ARRAY_SIZE(ab8500_temp_tbl_a_thermistor);
  34EXPORT_SYMBOL(ab8500_temp_tbl_a_size);
  35
  36const struct abx500_res_to_temp ab8500_temp_tbl_b_thermistor[] = {
  37        {-5, 200000},
  38        { 0, 159024},
  39        { 5, 151921},
  40        {10, 144300},
  41        {15, 136424},
  42        {20, 128565},
  43        {25, 120978},
  44        {30, 113875},
  45        {35, 107397},
  46        {40, 101629},
  47        {45,  96592},
  48        {50,  92253},
  49        {55,  88569},
  50        {60,  85461},
  51        {65,  82869},
  52};
  53EXPORT_SYMBOL(ab8500_temp_tbl_b_thermistor);
  54
  55const int ab8500_temp_tbl_b_size = ARRAY_SIZE(ab8500_temp_tbl_b_thermistor);
  56EXPORT_SYMBOL(ab8500_temp_tbl_b_size);
  57
  58static const struct abx500_v_to_cap cap_tbl_a_thermistor[] = {
  59        {4171,  100},
  60        {4114,   95},
  61        {4009,   83},
  62        {3947,   74},
  63        {3907,   67},
  64        {3863,   59},
  65        {3830,   56},
  66        {3813,   53},
  67        {3791,   46},
  68        {3771,   33},
  69        {3754,   25},
  70        {3735,   20},
  71        {3717,   17},
  72        {3681,   13},
  73        {3664,    8},
  74        {3651,    6},
  75        {3635,    5},
  76        {3560,    3},
  77        {3408,    1},
  78        {3247,    0},
  79};
  80
  81static const struct abx500_v_to_cap cap_tbl_b_thermistor[] = {
  82        {4161,  100},
  83        {4124,   98},
  84        {4044,   90},
  85        {4003,   85},
  86        {3966,   80},
  87        {3933,   75},
  88        {3888,   67},
  89        {3849,   60},
  90        {3813,   55},
  91        {3787,   47},
  92        {3772,   30},
  93        {3751,   25},
  94        {3718,   20},
  95        {3681,   16},
  96        {3660,   14},
  97        {3589,   10},
  98        {3546,    7},
  99        {3495,    4},
 100        {3404,    2},
 101        {3250,    0},
 102};
 103
 104static const struct abx500_v_to_cap cap_tbl[] = {
 105        {4186,  100},
 106        {4163,   99},
 107        {4114,   95},
 108        {4068,   90},
 109        {3990,   80},
 110        {3926,   70},
 111        {3898,   65},
 112        {3866,   60},
 113        {3833,   55},
 114        {3812,   50},
 115        {3787,   40},
 116        {3768,   30},
 117        {3747,   25},
 118        {3730,   20},
 119        {3705,   15},
 120        {3699,   14},
 121        {3684,   12},
 122        {3672,    9},
 123        {3657,    7},
 124        {3638,    6},
 125        {3556,    4},
 126        {3424,    2},
 127        {3317,    1},
 128        {3094,    0},
 129};
 130
 131/*
 132 * Note that the res_to_temp table must be strictly sorted by falling
 133 * resistance values to work.
 134 */
 135static const struct abx500_res_to_temp temp_tbl[] = {
 136        {-5, 214834},
 137        { 0, 162943},
 138        { 5, 124820},
 139        {10,  96520},
 140        {15,  75306},
 141        {20,  59254},
 142        {25,  47000},
 143        {30,  37566},
 144        {35,  30245},
 145        {40,  24520},
 146        {45,  20010},
 147        {50,  16432},
 148        {55,  13576},
 149        {60,  11280},
 150        {65,   9425},
 151};
 152
 153/*
 154 * Note that the batres_vs_temp table must be strictly sorted by falling
 155 * temperature values to work.
 156 */
 157static const struct batres_vs_temp temp_to_batres_tbl_thermistor[] = {
 158        { 40, 120},
 159        { 30, 135},
 160        { 20, 165},
 161        { 10, 230},
 162        { 00, 325},
 163        {-10, 445},
 164        {-20, 595},
 165};
 166
 167/*
 168 * Note that the batres_vs_temp table must be strictly sorted by falling
 169 * temperature values to work.
 170 */
 171static const struct batres_vs_temp temp_to_batres_tbl_ext_thermistor[] = {
 172        { 60, 300},
 173        { 30, 300},
 174        { 20, 300},
 175        { 10, 300},
 176        { 00, 300},
 177        {-10, 300},
 178        {-20, 300},
 179};
 180
 181/* battery resistance table for LI ION 9100 battery */
 182static const struct batres_vs_temp temp_to_batres_tbl_9100[] = {
 183        { 60, 180},
 184        { 30, 180},
 185        { 20, 180},
 186        { 10, 180},
 187        { 00, 180},
 188        {-10, 180},
 189        {-20, 180},
 190};
 191
 192static struct abx500_battery_type bat_type_thermistor[] = {
 193        [BATTERY_UNKNOWN] = {
 194                /* First element always represent the UNKNOWN battery */
 195                .name = POWER_SUPPLY_TECHNOLOGY_UNKNOWN,
 196                .resis_high = 0,
 197                .resis_low = 0,
 198                .battery_resistance = 300,
 199                .charge_full_design = 612,
 200                .nominal_voltage = 3700,
 201                .termination_vol = 4050,
 202                .termination_curr = 200,
 203                .recharge_cap = 95,
 204                .normal_cur_lvl = 400,
 205                .normal_vol_lvl = 4100,
 206                .maint_a_cur_lvl = 400,
 207                .maint_a_vol_lvl = 4050,
 208                .maint_a_chg_timer_h = 60,
 209                .maint_b_cur_lvl = 400,
 210                .maint_b_vol_lvl = 4000,
 211                .maint_b_chg_timer_h = 200,
 212                .low_high_cur_lvl = 300,
 213                .low_high_vol_lvl = 4000,
 214                .n_temp_tbl_elements = ARRAY_SIZE(temp_tbl),
 215                .r_to_t_tbl = temp_tbl,
 216                .n_v_cap_tbl_elements = ARRAY_SIZE(cap_tbl),
 217                .v_to_cap_tbl = cap_tbl,
 218                .n_batres_tbl_elements = ARRAY_SIZE(temp_to_batres_tbl_thermistor),
 219                .batres_tbl = temp_to_batres_tbl_thermistor,
 220        },
 221        {
 222                .name = POWER_SUPPLY_TECHNOLOGY_LIPO,
 223                .resis_high = 53407,
 224                .resis_low = 12500,
 225                .battery_resistance = 300,
 226                .charge_full_design = 900,
 227                .nominal_voltage = 3600,
 228                .termination_vol = 4150,
 229                .termination_curr = 80,
 230                .recharge_cap = 95,
 231                .normal_cur_lvl = 700,
 232                .normal_vol_lvl = 4200,
 233                .maint_a_cur_lvl = 600,
 234                .maint_a_vol_lvl = 4150,
 235                .maint_a_chg_timer_h = 60,
 236                .maint_b_cur_lvl = 600,
 237                .maint_b_vol_lvl = 4100,
 238                .maint_b_chg_timer_h = 200,
 239                .low_high_cur_lvl = 300,
 240                .low_high_vol_lvl = 4000,
 241                .n_temp_tbl_elements = ARRAY_SIZE(ab8500_temp_tbl_a_thermistor),
 242                .r_to_t_tbl = ab8500_temp_tbl_a_thermistor,
 243                .n_v_cap_tbl_elements = ARRAY_SIZE(cap_tbl_a_thermistor),
 244                .v_to_cap_tbl = cap_tbl_a_thermistor,
 245                .n_batres_tbl_elements = ARRAY_SIZE(temp_to_batres_tbl_thermistor),
 246                .batres_tbl = temp_to_batres_tbl_thermistor,
 247
 248        },
 249        {
 250                .name = POWER_SUPPLY_TECHNOLOGY_LIPO,
 251                .resis_high = 200000,
 252                .resis_low = 82869,
 253                .battery_resistance = 300,
 254                .charge_full_design = 900,
 255                .nominal_voltage = 3600,
 256                .termination_vol = 4150,
 257                .termination_curr = 80,
 258                .recharge_cap = 95,
 259                .normal_cur_lvl = 700,
 260                .normal_vol_lvl = 4200,
 261                .maint_a_cur_lvl = 600,
 262                .maint_a_vol_lvl = 4150,
 263                .maint_a_chg_timer_h = 60,
 264                .maint_b_cur_lvl = 600,
 265                .maint_b_vol_lvl = 4100,
 266                .maint_b_chg_timer_h = 200,
 267                .low_high_cur_lvl = 300,
 268                .low_high_vol_lvl = 4000,
 269                .n_temp_tbl_elements = ARRAY_SIZE(ab8500_temp_tbl_b_thermistor),
 270                .r_to_t_tbl = ab8500_temp_tbl_b_thermistor,
 271                .n_v_cap_tbl_elements = ARRAY_SIZE(cap_tbl_b_thermistor),
 272                .v_to_cap_tbl = cap_tbl_b_thermistor,
 273                .n_batres_tbl_elements = ARRAY_SIZE(temp_to_batres_tbl_thermistor),
 274                .batres_tbl = temp_to_batres_tbl_thermistor,
 275        },
 276};
 277
 278static struct abx500_battery_type bat_type_ext_thermistor[] = {
 279        [BATTERY_UNKNOWN] = {
 280                /* First element always represent the UNKNOWN battery */
 281                .name = POWER_SUPPLY_TECHNOLOGY_UNKNOWN,
 282                .resis_high = 0,
 283                .resis_low = 0,
 284                .battery_resistance = 300,
 285                .charge_full_design = 612,
 286                .nominal_voltage = 3700,
 287                .termination_vol = 4050,
 288                .termination_curr = 200,
 289                .recharge_cap = 95,
 290                .normal_cur_lvl = 400,
 291                .normal_vol_lvl = 4100,
 292                .maint_a_cur_lvl = 400,
 293                .maint_a_vol_lvl = 4050,
 294                .maint_a_chg_timer_h = 60,
 295                .maint_b_cur_lvl = 400,
 296                .maint_b_vol_lvl = 4000,
 297                .maint_b_chg_timer_h = 200,
 298                .low_high_cur_lvl = 300,
 299                .low_high_vol_lvl = 4000,
 300                .n_temp_tbl_elements = ARRAY_SIZE(temp_tbl),
 301                .r_to_t_tbl = temp_tbl,
 302                .n_v_cap_tbl_elements = ARRAY_SIZE(cap_tbl),
 303                .v_to_cap_tbl = cap_tbl,
 304                .n_batres_tbl_elements = ARRAY_SIZE(temp_to_batres_tbl_thermistor),
 305                .batres_tbl = temp_to_batres_tbl_thermistor,
 306        },
 307/*
 308 * These are the batteries that doesn't have an internal NTC resistor to measure
 309 * its temperature. The temperature in this case is measure with a NTC placed
 310 * near the battery but on the PCB.
 311 */
 312        {
 313                .name = POWER_SUPPLY_TECHNOLOGY_LIPO,
 314                .resis_high = 76000,
 315                .resis_low = 53000,
 316                .battery_resistance = 300,
 317                .charge_full_design = 900,
 318                .nominal_voltage = 3700,
 319                .termination_vol = 4150,
 320                .termination_curr = 100,
 321                .recharge_cap = 95,
 322                .normal_cur_lvl = 700,
 323                .normal_vol_lvl = 4200,
 324                .maint_a_cur_lvl = 600,
 325                .maint_a_vol_lvl = 4150,
 326                .maint_a_chg_timer_h = 60,
 327                .maint_b_cur_lvl = 600,
 328                .maint_b_vol_lvl = 4100,
 329                .maint_b_chg_timer_h = 200,
 330                .low_high_cur_lvl = 300,
 331                .low_high_vol_lvl = 4000,
 332                .n_temp_tbl_elements = ARRAY_SIZE(temp_tbl),
 333                .r_to_t_tbl = temp_tbl,
 334                .n_v_cap_tbl_elements = ARRAY_SIZE(cap_tbl),
 335                .v_to_cap_tbl = cap_tbl,
 336                .n_batres_tbl_elements = ARRAY_SIZE(temp_to_batres_tbl_thermistor),
 337                .batres_tbl = temp_to_batres_tbl_thermistor,
 338        },
 339        {
 340                .name = POWER_SUPPLY_TECHNOLOGY_LION,
 341                .resis_high = 30000,
 342                .resis_low = 10000,
 343                .battery_resistance = 300,
 344                .charge_full_design = 950,
 345                .nominal_voltage = 3700,
 346                .termination_vol = 4150,
 347                .termination_curr = 100,
 348                .recharge_cap = 95,
 349                .normal_cur_lvl = 700,
 350                .normal_vol_lvl = 4200,
 351                .maint_a_cur_lvl = 600,
 352                .maint_a_vol_lvl = 4150,
 353                .maint_a_chg_timer_h = 60,
 354                .maint_b_cur_lvl = 600,
 355                .maint_b_vol_lvl = 4100,
 356                .maint_b_chg_timer_h = 200,
 357                .low_high_cur_lvl = 300,
 358                .low_high_vol_lvl = 4000,
 359                .n_temp_tbl_elements = ARRAY_SIZE(temp_tbl),
 360                .r_to_t_tbl = temp_tbl,
 361                .n_v_cap_tbl_elements = ARRAY_SIZE(cap_tbl),
 362                .v_to_cap_tbl = cap_tbl,
 363                .n_batres_tbl_elements = ARRAY_SIZE(temp_to_batres_tbl_thermistor),
 364                .batres_tbl = temp_to_batres_tbl_thermistor,
 365        },
 366        {
 367                .name = POWER_SUPPLY_TECHNOLOGY_LION,
 368                .resis_high = 95000,
 369                .resis_low = 76001,
 370                .battery_resistance = 300,
 371                .charge_full_design = 950,
 372                .nominal_voltage = 3700,
 373                .termination_vol = 4150,
 374                .termination_curr = 100,
 375                .recharge_cap = 95,
 376                .normal_cur_lvl = 700,
 377                .normal_vol_lvl = 4200,
 378                .maint_a_cur_lvl = 600,
 379                .maint_a_vol_lvl = 4150,
 380                .maint_a_chg_timer_h = 60,
 381                .maint_b_cur_lvl = 600,
 382                .maint_b_vol_lvl = 4100,
 383                .maint_b_chg_timer_h = 200,
 384                .low_high_cur_lvl = 300,
 385                .low_high_vol_lvl = 4000,
 386                .n_temp_tbl_elements = ARRAY_SIZE(temp_tbl),
 387                .r_to_t_tbl = temp_tbl,
 388                .n_v_cap_tbl_elements = ARRAY_SIZE(cap_tbl),
 389                .v_to_cap_tbl = cap_tbl,
 390                .n_batres_tbl_elements = ARRAY_SIZE(temp_to_batres_tbl_thermistor),
 391                .batres_tbl = temp_to_batres_tbl_thermistor,
 392        },
 393};
 394
 395static const struct abx500_bm_capacity_levels cap_levels = {
 396        .critical       = 2,
 397        .low            = 10,
 398        .normal         = 70,
 399        .high           = 95,
 400        .full           = 100,
 401};
 402
 403static const struct abx500_fg_parameters fg = {
 404        .recovery_sleep_timer = 10,
 405        .recovery_total_time = 100,
 406        .init_timer = 1,
 407        .init_discard_time = 5,
 408        .init_total_time = 40,
 409        .high_curr_time = 60,
 410        .accu_charging = 30,
 411        .accu_high_curr = 30,
 412        .high_curr_threshold = 50,
 413        .lowbat_threshold = 3100,
 414        .battok_falling_th_sel0 = 2860,
 415        .battok_raising_th_sel1 = 2860,
 416        .maint_thres = 95,
 417        .user_cap_limit = 15,
 418        .pcut_enable = 1,
 419        .pcut_max_time = 127,
 420        .pcut_flag_time = 112,
 421        .pcut_max_restart = 15,
 422        .pcut_debounce_time = 2,
 423};
 424
 425static const struct abx500_maxim_parameters ab8500_maxi_params = {
 426        .ena_maxi = true,
 427        .chg_curr = 910,
 428        .wait_cycles = 10,
 429        .charger_curr_step = 100,
 430};
 431
 432static const struct abx500_maxim_parameters abx540_maxi_params = {
 433        .ena_maxi = true,
 434        .chg_curr = 3000,
 435        .wait_cycles = 10,
 436        .charger_curr_step = 200,
 437};
 438
 439static const struct abx500_bm_charger_parameters chg = {
 440        .usb_volt_max           = 5500,
 441        .usb_curr_max           = 1500,
 442        .ac_volt_max            = 7500,
 443        .ac_curr_max            = 1500,
 444};
 445
 446/*
 447 * This array maps the raw hex value to charger output current used by the
 448 * AB8500 values
 449 */
 450static int ab8500_charge_output_curr_map[] = {
 451        100,    200,    300,    400,    500,    600,    700,    800,
 452        900,    1000,   1100,   1200,   1300,   1400,   1500,   1500,
 453};
 454
 455static int ab8540_charge_output_curr_map[] = {
 456        0,      0,      0,      75,     100,    125,    150,    175,
 457        200,    225,    250,    275,    300,    325,    350,    375,
 458        400,    425,    450,    475,    500,    525,    550,    575,
 459        600,    625,    650,    675,    700,    725,    750,    775,
 460        800,    825,    850,    875,    900,    925,    950,    975,
 461        1000,   1025,   1050,   1075,   1100,   1125,   1150,   1175,
 462        1200,   1225,   1250,   1275,   1300,   1325,   1350,   1375,
 463        1400,   1425,   1450,   1500,   1600,   1700,   1900,   2000,
 464};
 465
 466/*
 467 * This array maps the raw hex value to charger input current used by the
 468 * AB8500 values
 469 */
 470static int ab8500_charge_input_curr_map[] = {
 471        50,     98,     193,    290,    380,    450,    500,    600,
 472        700,    800,    900,    1000,   1100,   1300,   1400,   1500,
 473};
 474
 475static int ab8540_charge_input_curr_map[] = {
 476        25,     50,     75,     100,    125,    150,    175,    200,
 477        225,    250,    275,    300,    325,    350,    375,    400,
 478        425,    450,    475,    500,    525,    550,    575,    600,
 479        625,    650,    675,    700,    725,    750,    775,    800,
 480        825,    850,    875,    900,    925,    950,    975,    1000,
 481        1025,   1050,   1075,   1100,   1125,   1150,   1175,   1200,
 482        1225,   1250,   1275,   1300,   1325,   1350,   1375,   1400,
 483        1425,   1450,   1475,   1500,   1500,   1500,   1500,   1500,
 484};
 485
 486struct abx500_bm_data ab8500_bm_data = {
 487        .temp_under             = 3,
 488        .temp_low               = 8,
 489        .temp_high              = 43,
 490        .temp_over              = 48,
 491        .main_safety_tmr_h      = 4,
 492        .temp_interval_chg      = 20,
 493        .temp_interval_nochg    = 120,
 494        .usb_safety_tmr_h       = 4,
 495        .bkup_bat_v             = BUP_VCH_SEL_2P6V,
 496        .bkup_bat_i             = BUP_ICH_SEL_150UA,
 497        .no_maintenance         = false,
 498        .capacity_scaling       = false,
 499        .adc_therm              = ABx500_ADC_THERM_BATCTRL,
 500        .chg_unknown_bat        = false,
 501        .enable_overshoot       = false,
 502        .fg_res                 = 100,
 503        .cap_levels             = &cap_levels,
 504        .bat_type               = bat_type_thermistor,
 505        .n_btypes               = ARRAY_SIZE(bat_type_thermistor),
 506        .batt_id                = 0,
 507        .interval_charging      = 5,
 508        .interval_not_charging  = 120,
 509        .temp_hysteresis        = 3,
 510        .gnd_lift_resistance    = 34,
 511        .chg_output_curr        = ab8500_charge_output_curr_map,
 512        .n_chg_out_curr         = ARRAY_SIZE(ab8500_charge_output_curr_map),
 513        .maxi                   = &ab8500_maxi_params,
 514        .chg_params             = &chg,
 515        .fg_params              = &fg,
 516        .chg_input_curr         = ab8500_charge_input_curr_map,
 517        .n_chg_in_curr          = ARRAY_SIZE(ab8500_charge_input_curr_map),
 518};
 519
 520struct abx500_bm_data ab8540_bm_data = {
 521        .temp_under             = 3,
 522        .temp_low               = 8,
 523        .temp_high              = 43,
 524        .temp_over              = 48,
 525        .main_safety_tmr_h      = 4,
 526        .temp_interval_chg      = 20,
 527        .temp_interval_nochg    = 120,
 528        .usb_safety_tmr_h       = 4,
 529        .bkup_bat_v             = BUP_VCH_SEL_2P6V,
 530        .bkup_bat_i             = BUP_ICH_SEL_150UA,
 531        .no_maintenance         = false,
 532        .capacity_scaling       = false,
 533        .adc_therm              = ABx500_ADC_THERM_BATCTRL,
 534        .chg_unknown_bat        = false,
 535        .enable_overshoot       = false,
 536        .fg_res                 = 100,
 537        .cap_levels             = &cap_levels,
 538        .bat_type               = bat_type_thermistor,
 539        .n_btypes               = ARRAY_SIZE(bat_type_thermistor),
 540        .batt_id                = 0,
 541        .interval_charging      = 5,
 542        .interval_not_charging  = 120,
 543        .temp_hysteresis        = 3,
 544        .gnd_lift_resistance    = 0,
 545        .maxi                   = &abx540_maxi_params,
 546        .chg_params             = &chg,
 547        .fg_params              = &fg,
 548        .chg_output_curr        = ab8540_charge_output_curr_map,
 549        .n_chg_out_curr         = ARRAY_SIZE(ab8540_charge_output_curr_map),
 550        .chg_input_curr         = ab8540_charge_input_curr_map,
 551        .n_chg_in_curr          = ARRAY_SIZE(ab8540_charge_input_curr_map),
 552};
 553
 554int ab8500_bm_of_probe(struct device *dev,
 555                       struct device_node *np,
 556                       struct abx500_bm_data *bm)
 557{
 558        const struct batres_vs_temp *tmp_batres_tbl;
 559        struct device_node *battery_node;
 560        const char *btech;
 561        int i;
 562
 563        /* get phandle to 'battery-info' node */
 564        battery_node = of_parse_phandle(np, "battery", 0);
 565        if (!battery_node) {
 566                dev_err(dev, "battery node or reference missing\n");
 567                return -EINVAL;
 568        }
 569
 570        btech = of_get_property(battery_node, "stericsson,battery-type", NULL);
 571        if (!btech) {
 572                dev_warn(dev, "missing property battery-name/type\n");
 573                return -EINVAL;
 574        }
 575
 576        if (strncmp(btech, "LION", 4) == 0) {
 577                bm->no_maintenance  = true;
 578                bm->chg_unknown_bat = true;
 579                bm->bat_type[BATTERY_UNKNOWN].charge_full_design = 2600;
 580                bm->bat_type[BATTERY_UNKNOWN].termination_vol    = 4150;
 581                bm->bat_type[BATTERY_UNKNOWN].recharge_cap       = 95;
 582                bm->bat_type[BATTERY_UNKNOWN].normal_cur_lvl     = 520;
 583                bm->bat_type[BATTERY_UNKNOWN].normal_vol_lvl     = 4200;
 584        }
 585
 586        if (of_property_read_bool(battery_node, "thermistor-on-batctrl")) {
 587                if (strncmp(btech, "LION", 4) == 0)
 588                        tmp_batres_tbl = temp_to_batres_tbl_9100;
 589                else
 590                        tmp_batres_tbl = temp_to_batres_tbl_thermistor;
 591        } else {
 592                bm->n_btypes   = 4;
 593                bm->bat_type   = bat_type_ext_thermistor;
 594                bm->adc_therm  = ABx500_ADC_THERM_BATTEMP;
 595                tmp_batres_tbl = temp_to_batres_tbl_ext_thermistor;
 596        }
 597
 598        /* select the battery resolution table */
 599        for (i = 0; i < bm->n_btypes; ++i)
 600                bm->bat_type[i].batres_tbl = tmp_batres_tbl;
 601
 602        of_node_put(battery_node);
 603
 604        return 0;
 605}
 606
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.