Author: rsmith Date: 2009-12-07 15:11:06 +0100 (Mon, 07 Dec 2009) New Revision: 1546
Modified: cpu/x86/pc/olpc/via/fw.bth dev/olpc/kb3700/battery.fth dev/olpc/kb3700/ecio.fth Log: Add several new battery debug words and the enable-serial word
Modified: cpu/x86/pc/olpc/via/fw.bth =================================================================== --- cpu/x86/pc/olpc/via/fw.bth 2009-12-06 22:52:21 UTC (rev 1545) +++ cpu/x86/pc/olpc/via/fw.bth 2009-12-07 14:11:06 UTC (rev 1546) @@ -732,6 +732,13 @@ warning ! previous previous definitions
+: enable-serial ( -- ) + serial-enabled? if exit then + 40 8846 config-b! + " com1" open-dev add-input + " com1" open-dev add-output +; + tag-file @ fclose tag-file off
.( --- Saving fw.dic ...)
Modified: dev/olpc/kb3700/battery.fth =================================================================== --- dev/olpc/kb3700/battery.fth 2009-12-06 22:52:21 UTC (rev 1545) +++ dev/olpc/kb3700/battery.fth 2009-12-07 14:11:06 UTC (rev 1546) @@ -6,10 +6,30 @@ : ec! wbsplit h# 381 pc! h# 382 pc! h# 383 pc! ; [then]
+\ Names try to match the variable names in EC code +h# FA00 constant ec-rambase +h# 01 constant ec-pwr_limit +h# 09 constant ec-va2 +h# 20 constant ec-platformID + +h# FC00 constant ec-gpiobase +h# 00 constant ec-gpiofs00 +h# 12 constant ec-gpio-0A + +h# FE00 constant ec-pwmbase +h# 08 constant ec-pwmhigh2 +h# 09 constant ec-pwmhigh3 +h# 0A constant ec-pwmhigh4 + +h# F900 constant ec-batrambase +h# 15 constant ec-debugflag4 + +: ec-ram@ ec-rambase + ec@ ; : wextend ( w -- n ) dup h# 8000 and if h# ffff.0000 or then ; : rr ec@ . ; : ww ec! ; -: bat-b@ h# f900 + ec@ ; +: bat-b@ ec-batrambase + ec@ ; +: bat-b! ec-batrambase + ec! ; : bat-w@ dup 1+ bat-b@ swap bat-b@ bwjoin ; : eram-w@ h# f400 + dup 1+ ec@ swap ec@ bwjoin ; \ Base unit for temperature is 1/256 degrees C @@ -137,20 +157,17 @@ \ (stdout off) this will miss some state changes. \
-h# FA00 constant ec-rambase -h# 20 constant ec-platformID +: .mppt + ec-pwr_limit ec-ram@ ( pwr_limit ) + ec-rambase ec-va2 + ecw@ ( pwr_limit VA2 ) + ." VA2: " .d ." PWM: " . +;
-h# FC00 constant ec-gpiobase -h# 00 constant ec-gpiofs00 -h# 12 constant ec-gpio-0A +: watch-mppt ( -- ) + begin (cr .mppt kill-line d# 500 ms key? until + key drop +;
-h# FE00 constant ec-pwmbase -h# 08 constant ec-pwmhigh2 -h# 09 constant ec-pwmhigh3 -h# 0A constant ec-pwmhigh4 - -: ec-ram@ ec-rambase + ec@ ; - : next-bstate begin f780 ec@ tuck <> @@ -356,20 +373,36 @@ \ buffer for reading bank data h# 20 constant /ds-bank \ Bytes per bank in the battery sensor chip h# 60 constant /ds-eeprom \ Bytes in the eeprom + h# 01 constant ni-mh h# 02 constant li-fe h# 00 constant ds-regs h# 10 constant ds-acr + h# 20 constant ds-bank0 h# 25 constant ds-bat-misc-flag h# 2d constant ds-last-dis-soc h# 2e constant ds-last-dis-acr-msb h# 2f constant ds-last-dis-acr-lsb +h# 31 constant ds-default-status + h# 40 constant ds-bank1 +h# 5f constant ds-batid + h# 60 constant ds-bank2 +h# 60 constant ds_bat_serial_num_1 +h# 61 constant ds_bat_serial_num_2 +h# 62 constant ds_bat_serial_num_3 +h# 63 constant ds_bat_serial_num_4 +h# 64 constant ds_bat_serial_num_5 h# 68 constant ds-remain-acr-msb -h# 69 constant ds-remain-acr-lsb -h# 5f constant ds-batid +h# 69 constant ds-remain-acr-lsb +h# 6a constant ds_bat_charge_msb +h# 6b constant ds_bat_charge_lsb +h# 6c constant ds_bat_charge_soc +h# 6d constant ds_bat_discharge_msb +h# 6e constant ds_bat_discharge_lsb +h# 6f constant ds_bat_discharge_soc
h# 01 constant ds-bat-low-volt h# 20 constant ds-bat-full @@ -515,6 +548,31 @@ r> base ! ;
+: bat-set-default-status ( val -- ) + ds-bank0 1w-recall + ds-default-status 1w-write-start + 1w-write-byte + ds-bank0 1w-copy + 1w-reset +; + +: bat-get-default-status ( -- val ) + ds-bank0 1w-recall + ds-bank-buf 1 ds-default-status 1w-read + ds-bank-buf c@ ( pack info ) +; + +: bat-fix-error-2 + batman-init? + bat-get-default-status + dup h# 6a = + if ." Pack info is already correct" drop + else + ." Fixing bad pack info: " . + h# 6a bat-set-default-status + then +; + \ Retrieve the key battery stats in bulk and put it on the stack \ sign extending the values that are 2's complement. : bg-charge-info@ @@ -637,6 +695,23 @@ bg-V>V >sd.ddd type ;
+0 value bg-last-acr +0 value bg-v_avg + +: bg-watch ( -- ) + bg-acr@ + begin + bg-charge-info@ + dup to bg-last-acr + ." ACR:" .bg-acr ." I:" .bg-current ." V:" .bg-volt + dup bg-last-acr swap - ." Chg:" .bg-acr + cr + 500 ms + key? + until + drop +; + : bat-debug begin bat-lfp-dataf@ @@ -660,9 +735,6 @@ ;
-0 value bg-last-acr -0 value bg-v_avg - : bat-charge ( -- ) batman-init? bat-enable-charge @@ -680,6 +752,26 @@ bat-disable-charge ;
+: bat-enable-ecdbg + ec-debugflag4 bat-b@ + h# 8 dup rot and or ec-debugflag4 bat-b! +; + +: bat-enable-ecdbg-short + ec-debugflag4 bat-b@ + h# 18 or ec-debugflag4 bat-b! +; + +: bat-disable-ecdbg + ec-debugflag4 bat-b@ + h# 18 invert and ec-debugflag4 bat-b! +; + +: bat-disable-ecdbg-short + ec-debugflag4 bat-b@ + h# 10 invert and ec-debugflag4 bat-b! +; + dev / new-device " battery" device-name
Modified: dev/olpc/kb3700/ecio.fth =================================================================== --- dev/olpc/kb3700/ecio.fth 2009-12-06 22:52:21 UTC (rev 1545) +++ dev/olpc/kb3700/ecio.fth 2009-12-07 14:11:06 UTC (rev 1546) @@ -20,9 +20,45 @@ iobase 3 + pc! ;
+\ Read a word from an EC index +: ecw@ ( index -- data ) + dup ec@ 8 << swap ( msb index ) + 1+ ec@ or ( data ) +; + : kbc-debug-on ( -- ) 1 fbfe ec! ; : kbc-debug-off ( -- ) 0 fbfe ec! ;
+: kbc-regs + ." KBCCB: " + fc80 ec@ dup . cr + dup 20 and ." Aux " if ." Dis" else ." Enb" then cr + 10 and ." Kbc " if ." Dis" else ." Enb" then cr + ." KBCIF: " + fc82 ec@ dup . cr + dup 2 and if ." OBF" cr then + 1 and if ." IBF" cr then + ." KBSTS: " + fc86 ec@ dup . cr + dup 2 and if ." IBF" cr then + 1 and if ." OBF" cr then + ." PS2PF: " + fee1 ec@ dup . cr + dup 8 and if ." Perr" cr then + dup 4 and if ." TxOut" cr then + dup 2 and if ." TxD" cr then + 1 and if ." RxD" cr then + fee2 ec@ + ." PS2CTRL: " . cr + f501 ec@ + ." SrvPS2: " . cr + 64 pc@ + ." p64: " . cr + 60 pc@ + ." p60: " . cr + +; + : ec-dump ( offset len -- ) ." Addr 0 1 2 3 4 5 6 7 8 9 a b c d e f" cr cr push-hex