Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * SharpSL Battery/PM Driver
0004  *
0005  * Copyright (c) 2004-2005 Richard Purdie
0006  */
0007 #ifndef _MACH_SHARPSL_PM
0008 #define _MACH_SHARPSL_PM
0009 
0010 struct sharpsl_charger_machinfo {
0011     void (*init)(void);
0012     void (*exit)(void);
0013     int gpio_acin;
0014     int gpio_batfull;
0015     int batfull_irq;
0016     int gpio_batlock;
0017     int gpio_fatal;
0018     void (*discharge)(int);
0019     void (*discharge1)(int);
0020     void (*charge)(int);
0021     void (*measure_temp)(int);
0022     void (*presuspend)(void);
0023     void (*postsuspend)(void);
0024     void (*earlyresume)(void);
0025     unsigned long (*read_devdata)(int);
0026 #define SHARPSL_BATT_VOLT       1
0027 #define SHARPSL_BATT_TEMP       2
0028 #define SHARPSL_ACIN_VOLT       3
0029 #define SHARPSL_STATUS_ACIN     4
0030 #define SHARPSL_STATUS_LOCK     5
0031 #define SHARPSL_STATUS_CHRGFULL 6
0032 #define SHARPSL_STATUS_FATAL    7
0033     bool (*charger_wakeup)(void);
0034     int (*should_wakeup)(unsigned int resume_on_alarm);
0035     void (*backlight_limit)(int);
0036     int (*backlight_get_status) (void);
0037     int charge_on_volt;
0038     int charge_on_temp;
0039     int charge_acin_high;
0040     int charge_acin_low;
0041     int fatal_acin_volt;
0042     int fatal_noacin_volt;
0043     int bat_levels;
0044     struct battery_thresh *bat_levels_noac;
0045     struct battery_thresh *bat_levels_acin;
0046     struct battery_thresh *bat_levels_noac_bl;
0047     struct battery_thresh *bat_levels_acin_bl;
0048     int status_high_acin;
0049     int status_low_acin;
0050     int status_high_noac;
0051     int status_low_noac;
0052 };
0053 
0054 struct battery_thresh {
0055     int voltage;
0056     int percentage;
0057 };
0058 
0059 struct battery_stat {
0060     int ac_status;         /* APM AC Present/Not Present */
0061     int mainbat_status;    /* APM Main Battery Status */
0062     int mainbat_percent;   /* Main Battery Percentage Charge */
0063     int mainbat_voltage;   /* Main Battery Voltage */
0064 };
0065 
0066 struct sharpsl_pm_status {
0067     struct device *dev;
0068     struct timer_list ac_timer;
0069     struct timer_list chrg_full_timer;
0070 
0071     int charge_mode;
0072 #define CHRG_ERROR    (-1)
0073 #define CHRG_OFF      (0)
0074 #define CHRG_ON       (1)
0075 #define CHRG_DONE     (2)
0076 
0077     unsigned int flags;
0078 #define SHARPSL_SUSPENDED       (1 << 0)  /* Device is Suspended */
0079 #define SHARPSL_ALARM_ACTIVE    (1 << 1)  /* Alarm is for charging event (not user) */
0080 #define SHARPSL_BL_LIMIT        (1 << 2)  /* Backlight Intensity Limited */
0081 #define SHARPSL_APM_QUEUED      (1 << 3)  /* APM Event Queued */
0082 #define SHARPSL_DO_OFFLINE_CHRG (1 << 4)  /* Trigger the offline charger */
0083 
0084     int full_count;
0085     unsigned long charge_start_time;
0086     struct sharpsl_charger_machinfo *machinfo;
0087     struct battery_stat battstat;
0088 };
0089 
0090 extern struct sharpsl_pm_status sharpsl_pm;
0091 
0092 extern struct battery_thresh sharpsl_battery_levels_acin[];
0093 extern struct battery_thresh sharpsl_battery_levels_noac[];
0094 
0095 #define SHARPSL_LED_ERROR  2
0096 #define SHARPSL_LED_ON     1
0097 #define SHARPSL_LED_OFF    0
0098 
0099 void sharpsl_battery_kick(void);
0100 void sharpsl_pm_led(int val);
0101 
0102 /* MAX1111 Channel Definitions */
0103 #define MAX1111_BATT_VOLT   4u
0104 #define MAX1111_BATT_TEMP   2u
0105 #define MAX1111_ACIN_VOLT   6u
0106 int sharpsl_pm_pxa_read_max1111(int channel);
0107 
0108 void corgi_lcd_limit_intensity(int limit);
0109 #endif