• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/arch/arm/common/

Lines Matching refs:sharpsl_pm

34 #include <asm/hardware/sharpsl_pm.h>
70 struct sharpsl_pm_status sharpsl_pm;
78 int i = sharpsl_pm.machinfo->bat_levels - 1;
79 int bl_status = sharpsl_pm.machinfo->backlight_get_status ? sharpsl_pm.machinfo->backlight_get_status() : 0;
82 if (sharpsl_pm.charge_mode == CHRG_ON)
83 thresh = bl_status ? sharpsl_pm.machinfo->bat_levels_acin_bl : sharpsl_pm.machinfo->bat_levels_acin;
85 thresh = bl_status ? sharpsl_pm.machinfo->bat_levels_noac_bl : sharpsl_pm.machinfo->bat_levels_noac;
97 if (sharpsl_pm.charge_mode == CHRG_ON) {
98 high_thresh = sharpsl_pm.machinfo->status_high_acin;
99 low_thresh = sharpsl_pm.machinfo->status_low_acin;
101 high_thresh = sharpsl_pm.machinfo->status_high_noac;
102 low_thresh = sharpsl_pm.machinfo->status_low_noac;
123 if (!sharpsl_pm.machinfo)
126 sharpsl_pm.battstat.ac_status = (sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN) ? APM_AC_ONLINE : APM_AC_OFFLINE);
129 if (!sharpsl_pm.machinfo->batfull_irq && (sharpsl_pm.charge_mode == CHRG_ON)
130 && time_after(jiffies, sharpsl_pm.charge_start_time + SHARPSL_CHARGE_ON_TIME_INTERVAL))
134 voltage = sharpsl_pm.machinfo->read_devdata(SHARPSL_BATT_VOLT);
138 voltage = sharpsl_pm.machinfo->bat_levels_noac[0].voltage;
139 dev_warn(sharpsl_pm.dev, "Warning: Cannot read main battery!\n");
150 if ((sharpsl_pm.battstat.ac_status == APM_AC_ONLINE) || (apm_status == APM_BATTERY_STATUS_HIGH) || percent <= sharpsl_pm.battstat.mainbat_percent) {
151 sharpsl_pm.battstat.mainbat_voltage = voltage;
152 sharpsl_pm.battstat.mainbat_status = apm_status;
153 sharpsl_pm.battstat.mainbat_percent = percent;
156 dev_dbg(sharpsl_pm.dev, "Battery: voltage: %d, status: %d, percentage: %d, time: %ld\n", voltage,
157 sharpsl_pm.battstat.mainbat_status, sharpsl_pm.battstat.mainbat_percent, jiffies);
160 if ((sharpsl_pm.battstat.ac_status != APM_AC_ONLINE)
161 && ((sharpsl_pm.battstat.mainbat_status == APM_BATTERY_STATUS_LOW) ||
162 (sharpsl_pm.battstat.mainbat_status == APM_BATTERY_STATUS_CRITICAL))) {
163 if (!(sharpsl_pm.flags & SHARPSL_BL_LIMIT)) {
164 sharpsl_pm.machinfo->backlight_limit(1);
165 sharpsl_pm.flags |= SHARPSL_BL_LIMIT;
167 } else if (sharpsl_pm.flags & SHARPSL_BL_LIMIT) {
168 sharpsl_pm.machinfo->backlight_limit(0);
169 sharpsl_pm.flags &= ~SHARPSL_BL_LIMIT;
173 if ((sharpsl_pm.battstat.ac_status != APM_AC_ONLINE)
174 && (sharpsl_pm.battstat.mainbat_status == APM_BATTERY_STATUS_CRITICAL)
175 && !(sharpsl_pm.flags & SHARPSL_APM_QUEUED)) {
176 sharpsl_pm.flags |= SHARPSL_APM_QUEUED;
177 dev_err(sharpsl_pm.dev, "Fatal Off\n");
187 dev_err(sharpsl_pm.dev, "Charging Error!\n");
189 dev_dbg(sharpsl_pm.dev, "Charge LED On\n");
192 dev_dbg(sharpsl_pm.dev, "Charge LED Off\n");
199 dev_dbg(sharpsl_pm.dev, "Turning Charger On\n");
201 sharpsl_pm.full_count = 0;
202 sharpsl_pm.charge_mode = CHRG_ON;
209 dev_dbg(sharpsl_pm.dev, "Turning Charger Off\n");
211 sharpsl_pm.machinfo->charge(0);
213 sharpsl_pm.charge_mode = CHRG_OFF;
221 sharpsl_pm.machinfo->charge(0);
222 sharpsl_pm.charge_mode = CHRG_ERROR;
227 dev_dbg(sharpsl_pm.dev, "Toogling Charger at time: %lx\n", jiffies);
229 if (!sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN)) {
238 sharpsl_pm.machinfo->charge(0);
240 sharpsl_pm.machinfo->charge(1);
242 sharpsl_pm.charge_start_time = jiffies;
247 int acin = sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN);
249 dev_dbg(sharpsl_pm.dev, "AC Status: %d\n",acin);
252 if (acin && (sharpsl_pm.charge_mode != CHRG_ON))
254 else if (sharpsl_pm.charge_mode == CHRG_ON)
265 mod_timer(&sharpsl_pm.ac_timer, jiffies + msecs_to_jiffies(250));
272 dev_dbg(sharpsl_pm.dev, "Charge Full at time: %lx\n", jiffies);
274 sharpsl_pm.full_count++;
276 if (!sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN)) {
277 dev_dbg(sharpsl_pm.dev, "Charge Full: AC removed - stop charging!\n");
278 if (sharpsl_pm.charge_mode == CHRG_ON)
280 } else if (sharpsl_pm.full_count < 2) {
281 dev_dbg(sharpsl_pm.dev, "Charge Full: Count too low\n");
283 } else if (time_after(jiffies, sharpsl_pm.charge_start_time + SHARPSL_CHARGE_FINISH_TIME)) {
284 dev_dbg(sharpsl_pm.dev, "Charge Full: Interrupt generated too slowly - retry.\n");
288 sharpsl_pm.charge_mode = CHRG_DONE;
289 dev_dbg(sharpsl_pm.dev, "Charge Full: Charging Finished\n");
298 if (sharpsl_pm.flags & SHARPSL_SUSPENDED)
302 mod_timer(&sharpsl_pm.chrg_full_timer, jiffies + msecs_to_jiffies(500));
311 if (!sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_LOCK)) {
312 dev_err(sharpsl_pm.dev, "Battery now Unlocked! Suspending.\n");
316 if (!sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_FATAL)) {
317 dev_err(sharpsl_pm.dev, "Fatal Batt Error! Suspending.\n");
321 if (!(sharpsl_pm.flags & SHARPSL_APM_QUEUED) && is_fatal) {
322 sharpsl_pm.flags |= SHARPSL_APM_QUEUED;
345 if (sharpsl_pm.battstat.mainbat_status != APM_BATTERY_STATUS_HIGH) {
395 dev_dbg(sharpsl_pm.dev, "Average: %d from values: %d, %d, %d, %d, %d\n", sum/3, val[0], val[1], val[2], val[3], val[4]);
407 sharpsl_pm.machinfo->measure_temp(1);
409 buff[i] = sharpsl_pm.machinfo->read_devdata(SHARPSL_BATT_TEMP);
410 sharpsl_pm.machinfo->measure_temp(0);
415 dev_dbg(sharpsl_pm.dev, "Temperature: %d\n", val);
416 if (val > sharpsl_pm.machinfo->charge_on_temp) {
429 sharpsl_pm.machinfo->charge(0);
430 sharpsl_pm.machinfo->discharge(1);
433 if (sharpsl_pm.machinfo->discharge1)
434 sharpsl_pm.machinfo->discharge1(1);
438 buff[i] = sharpsl_pm.machinfo->read_devdata(SHARPSL_BATT_VOLT);
442 if (sharpsl_pm.machinfo->discharge1)
443 sharpsl_pm.machinfo->discharge1(0);
445 sharpsl_pm.machinfo->discharge(0);
448 dev_dbg(sharpsl_pm.dev, "Battery Voltage: %d\n", val);
450 if (val < sharpsl_pm.machinfo->charge_on_volt)
461 buff[i] = sharpsl_pm.machinfo->read_devdata(SHARPSL_ACIN_VOLT);
466 dev_dbg(sharpsl_pm.dev, "AC Voltage: %d\n",temp);
468 if ((temp > sharpsl_pm.machinfo->charge_acin_high) || (temp < sharpsl_pm.machinfo->charge_acin_low)) {
469 dev_err(sharpsl_pm.dev, "Error: AC check failed.\n");
479 sharpsl_pm.flags |= SHARPSL_SUSPENDED;
482 if (sharpsl_pm.charge_mode == CHRG_ON)
483 sharpsl_pm.flags |= SHARPSL_DO_OFFLINE_CHRG;
485 sharpsl_pm.flags &= ~SHARPSL_DO_OFFLINE_CHRG;
495 sharpsl_pm.flags &= ~SHARPSL_APM_QUEUED;
496 sharpsl_pm.flags &= ~SHARPSL_SUSPENDED;
503 dev_dbg(sharpsl_pm.dev, "Time is: %08x\n",RCNR);
505 dev_dbg(sharpsl_pm.dev, "Offline Charge Activate = %d\n",sharpsl_pm.flags & SHARPSL_DO_OFFLINE_CHRG);
508 if ((sharpsl_pm.flags & SHARPSL_DO_OFFLINE_CHRG) && (sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN))) {
509 dev_dbg(sharpsl_pm.dev, "Activating Offline Charger...\n");
510 sharpsl_pm.charge_mode = CHRG_OFF;
511 sharpsl_pm.flags &= ~SHARPSL_DO_OFFLINE_CHRG;
515 sharpsl_pm.machinfo->presuspend();
519 sharpsl_pm.flags &= ~SHARPSL_ALARM_ACTIVE;
520 if ((sharpsl_pm.charge_mode == CHRG_ON) && ((alarm_enable && ((alarm_time - RCNR) > (SHARPSL_BATCHK_TIME_SUSPEND + 30))) || !alarm_enable)) {
523 dev_dbg(sharpsl_pm.dev, "Charging alarm at: %08x\n",RTAR);
524 sharpsl_pm.flags |= SHARPSL_ALARM_ACTIVE;
528 dev_dbg(sharpsl_pm.dev, "User alarm at: %08x\n",RTAR);
530 dev_dbg(sharpsl_pm.dev, "No alarms set.\n");
535 sharpsl_pm.machinfo->postsuspend();
537 dev_dbg(sharpsl_pm.dev, "Corgi woken up from suspend: %08x\n",PEDR);
542 if (!sharpsl_pm.machinfo->should_wakeup(!(sharpsl_pm.flags & SHARPSL_ALARM_ACTIVE) && alarm_enable) )
544 if (!(sharpsl_pm.flags & SHARPSL_ALARM_ACTIVE)) {
545 dev_dbg(sharpsl_pm.dev, "No user triggered wakeup events and not charging. Strange. Suspend.\n");
550 dev_dbg(sharpsl_pm.dev, "Charging. Suspend...\n");
554 dev_dbg(sharpsl_pm.dev, "User triggered wakeup in offline charger.\n");
557 if ((!sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_LOCK)) || (sharpsl_fatal_check() < 0) )
559 dev_err(sharpsl_pm.dev, "Fatal condition. Suspend.\n");
572 dev_dbg(sharpsl_pm.dev, "SharpSL suspending for first time.\n");
579 if (sharpsl_pm.machinfo->earlyresume)
580 sharpsl_pm.machinfo->earlyresume();
582 dev_dbg(sharpsl_pm.dev, "SharpSL resuming...\n");
597 dev_dbg(sharpsl_pm.dev, "sharpsl_fatal_check entered\n");
600 acin = sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN);
602 if (acin && (sharpsl_pm.charge_mode == CHRG_ON)) {
603 sharpsl_pm.machinfo->charge(0);
605 sharpsl_pm.machinfo->discharge(1); /* enable discharge */
609 if (sharpsl_pm.machinfo->discharge1)
610 sharpsl_pm.machinfo->discharge1(1);
614 buff[i] = sharpsl_pm.machinfo->read_devdata(SHARPSL_BATT_VOLT);
618 if (sharpsl_pm.machinfo->discharge1)
619 sharpsl_pm.machinfo->discharge1(0);
621 if (acin && (sharpsl_pm.charge_mode == CHRG_ON)) {
623 sharpsl_pm.machinfo->charge(1);
624 sharpsl_pm.machinfo->discharge(0);
628 dev_dbg(sharpsl_pm.dev, "sharpsl_fatal_check: acin: %d, discharge voltage: %d, no discharge: %ld\n", acin, temp, sharpsl_pm.machinfo->read_devdata(SHARPSL_BATT_VOLT));
630 if ((acin && (temp < sharpsl_pm.machinfo->fatal_acin_volt)) ||
631 (!acin && (temp < sharpsl_pm.machinfo->fatal_noacin_volt)))
638 dev_err(sharpsl_pm.dev, "Offline Charger: Error occurred.\n");
639 sharpsl_pm.machinfo->charge(0);
641 sharpsl_pm.charge_mode = CHRG_ERROR;
654 dev_dbg(sharpsl_pm.dev, "Charge Mode: %d\n", sharpsl_pm.charge_mode);
656 if (sharpsl_pm.charge_mode == CHRG_OFF) {
657 dev_dbg(sharpsl_pm.dev, "Offline Charger: Step 1\n");
665 sharpsl_pm.machinfo->charge(0);
667 sharpsl_pm.machinfo->charge(1);
669 sharpsl_pm.charge_mode = CHRG_ON;
670 sharpsl_pm.full_count = 0;
673 } else if (sharpsl_pm.charge_mode != CHRG_ON) {
677 if (sharpsl_pm.full_count == 0) {
680 dev_dbg(sharpsl_pm.dev, "Offline Charger: Step 2\n");
685 sharpsl_pm.machinfo->charge(0);
687 sharpsl_pm.machinfo->charge(1);
688 sharpsl_pm.charge_mode = CHRG_ON;
695 if (sharpsl_pm.machinfo->charger_wakeup() != 0)
700 if (sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_CHRGFULL)) {
701 dev_dbg(sharpsl_pm.dev, "Offline Charger: Charge full occurred. Retrying to check\n");
702 sharpsl_pm.full_count++;
703 sharpsl_pm.machinfo->charge(0);
705 sharpsl_pm.machinfo->charge(1);
711 dev_dbg(sharpsl_pm.dev, "Offline Charger: Step 3\n");
718 if (sharpsl_pm.machinfo->charger_wakeup() != 0)
722 if (sharpsl_pm.full_count > SHARPSL_CHARGE_RETRY_CNT) {
723 dev_dbg(sharpsl_pm.dev, "Offline Charger: Not charged sufficiently. Retrying.\n");
724 sharpsl_pm.full_count = 0;
726 sharpsl_pm.full_count++;
729 if (sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_CHRGFULL)) {
730 dev_dbg(sharpsl_pm.dev, "Offline Charger: Charging complete.\n");
732 sharpsl_pm.machinfo->charge(0);
733 sharpsl_pm.charge_mode = CHRG_DONE;
742 return sprintf(buf, "%d\n",sharpsl_pm.battstat.mainbat_percent);
747 return sprintf(buf, "%d\n",sharpsl_pm.battstat.mainbat_voltage);
757 info->ac_line_status = sharpsl_pm.battstat.ac_status;
759 if (sharpsl_pm.charge_mode == CHRG_ON)
762 info->battery_status = sharpsl_pm.battstat.mainbat_status;
765 info->battery_life = sharpsl_pm.battstat.mainbat_percent;
782 sharpsl_pm.dev = &pdev->dev;
783 sharpsl_pm.machinfo = pdev->dev.platform_data;
784 sharpsl_pm.charge_mode = CHRG_OFF;
785 sharpsl_pm.flags = 0;
787 init_timer(&sharpsl_pm.ac_timer);
788 sharpsl_pm.ac_timer.function = sharpsl_ac_timer;
790 init_timer(&sharpsl_pm.chrg_full_timer);
791 sharpsl_pm.chrg_full_timer.function = sharpsl_chrg_full_timer;
795 sharpsl_pm.machinfo->init();
806 mod_timer(&sharpsl_pm.ac_timer, jiffies + msecs_to_jiffies(250));
820 sharpsl_pm.machinfo->exit();
822 del_timer_sync(&sharpsl_pm.chrg_full_timer);
823 del_timer_sync(&sharpsl_pm.ac_timer);