diff options
author | Chris Larson <clarson@kergoth.com> | 2004-12-09 09:47:41 +0000 |
---|---|---|
committer | Chris Larson <clarson@kergoth.com> | 2004-12-09 09:47:41 +0000 |
commit | 2c5b8ec6d95cf68650265941530e5ce38c8dd6d9 (patch) | |
tree | bf879bea7ef8517ba8c3d1286ef300401d3d484c /linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/battery.patch | |
parent | 101e2f1623def0a355d20aacb8bd93810703e834 (diff) |
Merge oe-devel@oe-devel.bkbits.net:openembedded
into hyperion.kergoth.com:/home/kergoth/code/openembedded
2004/12/09 03:39:39-06:00 kergoth.com!kergoth
Break people's builds again.. this time moving the packages into a packages/ subdir to clean things up a bit.
BKrev: 41b81f3dvlp3rU7_8MUXLcI8LDdDoA
Diffstat (limited to 'linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/battery.patch')
-rw-r--r-- | linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/battery.patch | 326 |
1 files changed, 0 insertions, 326 deletions
diff --git a/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/battery.patch b/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/battery.patch deleted file mode 100644 index 1912b33328..0000000000 --- a/linux/openzaurus-sa-2.4.18-rmk7-pxa3-embedix20030509/battery.patch +++ /dev/null @@ -1,326 +0,0 @@ - ---- linux/arch/arm/mach-sa1100/collie_battery.c Tue Jul 22 02:24:32 2003 -+++ linux/arch/arm/mach-sa1100/collie_battery.c Tue Jul 22 03:07:56 2003 -@@ -14,10 +14,11 @@ - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * ChangeLog: -+ * Nov 2002 Dietz Proepper: improved battery status. - * 12-Nov-2001 Lineo Japan, Inc. - * 30-Jul-2002 Lineo Japan, Inc. for 2.4.18 - * 29-Jan-2003 Sharp Corporation modify for new QT I/F - * - */ -@@ -79,10 +80,11 @@ int collie_read_BackBattery(void); - int collie_read_Temp(void); - int collie_check_temp(void); - int collie_check_voltage(void); - static void collie_charge_on(void); - static void collie_charge_off(void); -+static void do_main_battery(void); - int set_led_status(int which,int status); - int GetMainLevel( int Volt ); - int GetBackLevel( int Volt ); - int collie_get_main_battery(void); - unsigned short GetBackupBatteryAD(void); -@@ -91,40 +93,35 @@ int suspend_collie_read_Temp(void); - /*** extern ***********************************************************************/ - extern u32 apm_wakeup_src_mask; - extern int counter_step_contrast; - - --/*** gloabal variables ************************************************************/ --int charge_status = 0; /* charge status 1 : charge 0: not charge */ -- --typedef struct BatteryThresh { -- int high; -- int low; -- int verylow; --} BATTERY_THRESH; -+/* defines */ -+#define COLLIE_BATTERY_STATUS_HIGH APM_BATTERY_STATUS_HIGH -+#define COLLIE_BATTERY_STATUS_LOW APM_BATTERY_STATUS_LOW -+#define COLLIE_BATTERY_STATUS_VERYLOW APM_BATTERY_STATUS_VERY_LOW -+#define COLLIE_BATTERY_STATUS_CRITICAL APM_BATTERY_STATUS_CRITICAL - -+/*** gloabal variables ************************************************************/ -+int charge_status = 0; /* charge status 1 : charge 0: not charge */ - --#if defined(CONFIG_COLLIE_TS) || defined(CONFIG_COLLIE_TR0) || \ -- defined(CONFIG_COLLIE_TR1) || defined(CONFIG_COLLIE_DEV) --BATTERY_THRESH collie_main_battery_thresh_fl = { -- 368, 358, 356 --}; -- --BATTERY_THRESH collie_main_battery_thresh_nofl = { -- 378, 364, 362 --}; --#else --BATTERY_THRESH collie_main_battery_thresh_fl = { -- 368, 358, 356 --}; -- --BATTERY_THRESH collie_main_battery_thresh_nofl = { -- 378, 365, 363 -+typedef struct { -+ int voltage_thres[2]; /* 0: nofl 1: fl */ -+ int percent; -+ int state; -+} main_battery_thres; -+ -+#define MAIN_BATTERY_THRES 4 -+ -+main_battery_thres main_batt_thres[MAIN_BATTERY_THRES+2] = { -+ {{5000, 5000}, 100, COLLIE_BATTERY_STATUS_HIGH }, /* do not remove! */ -+ {{412,408}, 100, COLLIE_BATTERY_STATUS_HIGH}, -+ {{378,368}, 40, COLLIE_BATTERY_STATUS_HIGH}, -+ {{364,358}, 5, COLLIE_BATTERY_STATUS_LOW}, -+ {{362,356}, 1, COLLIE_BATTERY_STATUS_CRITICAL}, -+ {{0, 0}, 1, COLLIE_BATTERY_STATUS_CRITICAL } /* do not remove, too! */ - }; --#endif -- -- - - typedef struct ChargeThresh { - int bar1; - int bar2; - int bar3; -@@ -180,24 +177,18 @@ static struct miscdevice battery_device - #define GetBackADCtoPower(x) (( 330 * x * 2 ) / 1024 ) // MAX 3.3V - #define ConvRevise(x) ( ( ad_revise * x ) / 652 ) - #define MAIN_DIFF 50 // 0.5V - #define DIFF_CNT ( 3 - 1 ) - --#define COLLIE_BATTERY_STATUS_HIGH APM_BATTERY_STATUS_HIGH --#define COLLIE_BATTERY_STATUS_LOW APM_BATTERY_STATUS_LOW --#define COLLIE_BATTERY_STATUS_VERYLOW APM_BATTERY_STATUS_VERY_LOW --#define COLLIE_BATTERY_STATUS_CRITICAL APM_BATTERY_STATUS_CRITICAL -- - #define COLLIE_AC_LINE_STATUS (!( GPLR & GPIO_AC_IN ) ? APM_AC_OFFLINE : APM_AC_ONLINE) - -- - #define COLLIE_PM_TICK ( 1000 / 10 ) // 1sec - #define COLLIE_APO_TICKTIME ( 5 * COLLIE_PM_TICK ) // 5sec - #define COLLIE_LPO_TICKTIME COLLIE_APO_TICKTIME - #define COLLIE_APO_DEFAULT ( ( 3 * 60 ) * COLLIE_PM_TICK ) // 3 min - #define COLLIE_LPO_DEFAULT ( 20 * COLLIE_PM_TICK ) // 20 sec --#define COLLIE_MAIN_GOOD_COUNT ( 10*60 / ( COLLIE_APO_TICKTIME / COLLIE_PM_TICK ) ) -+#define COLLIE_MAIN_GOOD_COUNT ( 1*60 / ( COLLIE_APO_TICKTIME / COLLIE_PM_TICK ) ) - #define COLLIE_MAIN_NOGOOD_COUNT ( 1*60 / ( COLLIE_APO_TICKTIME / COLLIE_PM_TICK ) ) - - #define COLLIE_BACKUP_BATTERY_CK_TIME ( 10*60*1*100 ) // 10min - #define COLLIE_BACKUP_BATTERY_LOW ( 190 ) - -@@ -212,10 +203,11 @@ unsigned int LPOCntWk = 0; - static DECLARE_WAIT_QUEUE_HEAD(queue); - static int msglevel; - - int collie_backup_battery = COLLIE_BATTERY_STATUS_HIGH; - int collie_main_battery = COLLIE_BATTERY_STATUS_HIGH; -+int collie_main_battery_percent = 100; - int collie_main_charge_battery = 100; - int collie_ac_status = APM_AC_OFFLINE; - int ad_revise = 0; - - static int MainCntWk = COLLIE_MAIN_GOOD_COUNT; -@@ -229,10 +221,11 @@ static struct pm_dev *battery_pm_dev; / - - static int battery_off_flag = 0; /* charge : suspend while get adc */ - static int collie_charge_temp = 973; - static int collie_charge_volt = 465; /* charge : check charge 3.0V */ - static int charge_off_mode = 0; /* charge : check volt or non */ -+static int collie_main_battery_voltage = 400; - - static DECLARE_WAIT_QUEUE_HEAD(wq_on); - static DECLARE_WAIT_QUEUE_HEAD(wq_off); - #if 1 // 2003.1.29 - static DECLARE_WAIT_QUEUE_HEAD(battery_waitqueue); -@@ -276,28 +269,11 @@ int collie_apm_get_power_status(u_char * - } - collie_battery_status = *battery_status; - #endif - - // main battery status to percentage -- switch (*battery_status) -- { -- case COLLIE_BATTERY_STATUS_HIGH: -- *battery_percentage = 100; -- break; -- case COLLIE_BATTERY_STATUS_LOW: -- *battery_percentage = 40; -- break; -- case COLLIE_BATTERY_STATUS_VERYLOW: -- *battery_percentage = 5; -- break; -- case COLLIE_BATTERY_STATUS_CRITICAL: -- *battery_percentage = 1; -- break; -- default: -- *battery_percentage = 100; -- break; -- } -+ *battery_percentage = collie_main_battery_percent; - - if ( *ac_line_status == APM_AC_ONLINE ) - *battery_percentage = 100; - - // good or ac in --> GOOD_COUNT -@@ -529,12 +505,13 @@ int collie_get_main_battery(void) - voltage = collie_read_MainBattery(); - if ( voltage > 0 ) break; - if ( i++ > 5 ) { voltage = 380; break; } - } - -- collie_main_battery = GetMainLevel(GetMainADCtoPower(voltage)); -- collie_main_charge_battery = GetMainChargePercent(GetMainADCtoPower(voltage)); -+ collie_main_battery_voltage = GetMainADCtoPower(voltage); -+ do_main_battery(); -+ collie_main_charge_battery = GetMainChargePercent(collie_main_battery_voltage); - - DPRINTK2("charge percent = %d ( at %d ) \n",collie_main_charge_battery,jiffies); - - DPRINTK(" get Main battery status %d\n",collie_main_battery); - -@@ -562,36 +539,36 @@ int GetMainChargePercent( int Volt ) - } else { - return 5; - } - } - --int GetMainLevel( int Volt ) -+static void do_main_battery() - { -- -- DPRINTK(" volt = %d \n",Volt); -- -- -- if ( counter_step_contrast ) { -- if ( Volt > collie_main_battery_thresh_fl.high ) -- return COLLIE_BATTERY_STATUS_HIGH; -- else if ( Volt > collie_main_battery_thresh_fl.low ) -- return COLLIE_BATTERY_STATUS_LOW; -- else if ( Volt > collie_main_battery_thresh_fl.verylow ) -- return COLLIE_BATTERY_STATUS_VERYLOW; -- else -- return COLLIE_BATTERY_STATUS_CRITICAL; -- } else { -- if ( Volt > collie_main_battery_thresh_nofl.high ) -- return COLLIE_BATTERY_STATUS_HIGH; -- else if ( Volt > collie_main_battery_thresh_nofl.low ) -- return COLLIE_BATTERY_STATUS_LOW; -- else if ( Volt > collie_main_battery_thresh_nofl.verylow ) -- return COLLIE_BATTERY_STATUS_VERYLOW; -- else -- return COLLIE_BATTERY_STATUS_CRITICAL; -- } -- -+ int i = MAIN_BATTERY_THRES; -+ int fl = (counter_step_contrast)? 1 : 0; -+ -+ while ( i > 0 && -+ ( collie_main_battery_voltage > main_batt_thres[i].voltage_thres[fl] ) ) -+ i--; -+ /* i is now between 0 and MAIN_BATTERY_THRES. That means -+ * we can safely access main_batt_thres[i] and -+ * main_batt_thres[i+1] */ -+ -+ collie_main_battery = main_batt_thres[i].state; -+ { /* perhaps we should put that deltas to our table, too? */ -+ long deltav = main_batt_thres[i].voltage_thres[fl] - -+ main_batt_thres[i+1].voltage_thres[fl]; -+ long deltap = main_batt_thres[i].percent - -+ main_batt_thres[i+1].percent; -+ -+ collie_main_battery_percent = /* (1) */ -+ main_batt_thres[i+1].percent + -+ deltap * (collie_main_battery_voltage - -+ main_batt_thres[i+1].voltage_thres[fl]) / -+ deltav; -+ DPRINTK("Battery stuff: v=%i i=%i , dv=%li , dp=%li , p=%i",collie_main_battery_voltage , i, deltav, deltap, collie_main_battery_percent ); -+ } - } - - - int GetBackLevel( int Volt ) - { -@@ -834,20 +811,18 @@ unsigned short chkFatalBatt(void) - GEDR = GPIO_CO; - // printk("CO = %x\n",GEDR&GPIO_CO); - } - - -- if ( volt < collie_main_battery_thresh_nofl.verylow ) -+ if ( volt < main_batt_thres[MAIN_BATTERY_THRES].voltage_thres[0] ) - return 0; - else - return 1; - #endif - } - - -- -- - int suspend_collie_check_temp(void) - { - unsigned short temp , i = 0; - - while(1) { -@@ -1032,10 +1007,11 @@ struct proc_dir_entry *proc_batt; - typedef struct collie_battery_entry { - int* addr; - int def_value; - char* name; - char* description; -+ char readonly; - unsigned short low_ino; - } collie_battery_entry_t; - - #if 1 // 2003.1.29 - static collie_battery_entry_t collie_battery_params[] = { -@@ -1044,11 +1020,13 @@ static collie_battery_entry_t collie_bat - { &collie_change_battery_status , 0 , "chg_status", "Change status" } - }; - #else - static collie_battery_entry_t collie_battery_params[] = { - /* { addr, def_value, name, description }*/ -- { &msglevel, 0, "msglevel", "debug message output level" } -+/* { &msglevel, 0, "msglevel", "debug message output level" } */ -+ { &msglevel, 0, "msglevel", "debug message output level", 0 }, -+ { &collie_main_battery_voltage, -1, "main_voltage", "main battery voltage", 1 } - }; - #endif - #define NUM_OF_BATTERY_ENTRY (sizeof(collie_battery_params)/sizeof(collie_battery_entry_t)) - - static ssize_t collie_battery_read_params(struct file *file, char *buf, -@@ -1069,11 +1047,12 @@ static ssize_t collie_battery_read_param - } - } - if (current_param==NULL) { - return -EINVAL; - } -- count = sprintf(outputbuf, "0x%08X\n", -+// count = sprintf(outputbuf, "0x%08X\n", -+ count = sprintf(outputbuf, "%04i\n", - *((volatile Word *) current_param->addr)); - *ppos += count; - if (count>nbytes) /* Assume output can be read at one time */ - return -EINVAL; - if (copy_to_user(buf, outputbuf, count)) -@@ -1094,11 +1073,12 @@ static ssize_t collie_battery_write_para - if(collie_battery_params[i].low_ino==i_ino) { - current_param = &collie_battery_params[i]; - break; - } - } -- if (current_param==NULL) { -+// if (current_param==NULL) { -+ if (current_param==NULL || current_param->readonly) { - return -EINVAL; - } - - param = simple_strtoul(buf,&endp,0); - if (param == -1) { - |