EC 1.75 Firmware: Difference between revisions

From OLPC
Jump to navigation Jump to search
 
(32 intermediate revisions by 5 users not shown)
Line 1: Line 1:
= Production =
== Ver: 4 1.0.01 ==
* Check EEPROM bank 0 magic values and fix if wrong
* Print out the ACR value on entry into suspend
* Re-implement SD2 power control. EC Command 0x6f Argument u8. Non-zero to to power up 0 to power down.
* released in [[OLPC_Firmware_q4d26|Q4D26]].
== Ver: 4 1.0.00 ==
* Turn off run-in enabled battery debugging messages on powerup
* released in [[OLPC_Firmware_q4d25|Q4D25]].
== Ver: 4 0.5.00 ==
* Hack to allow the mmp2 A1 board to be supported
* Remove support for A3 boards, and version 1 of the power limit code
* Remove A1/A2 support, no reason to support non-ISL charger
* Rework A/D reading for less code when only 8-bit values are needed this simplifies the board identification code as well

= C2/Ramp =
== Ver: 4 0.4.03 ==
* Automatically turn off USB hub power when host is suspended
* Add power off USB hub SDI command
* Increase stop mode entry timer to 3s when power is off
* Add new SDI command for retrieving power while suspended
* Fix trac #11760. EC always charges battery after reset
* Clear battery full flag on runin discharge
* Set max sys voltage (battery CV) to 7.44V
* Set battery full taper current to 120mA via human readable macro
* Fix battery low voltage count reset
* Lower minimum system/battery voltage to 4.950
== Ver: 0.4.02 ==
* handle upstream command responses before events
* add command for sending repetitive events, for stress testing
* eliminate extra AC-changed events
* set the default event_mask to all-unmasked
* implement a mask to control upstream event delivery
* shorten EC_IRQ assertion
* ifdef the EC_IRQ exerciser command
== Ver: 0.4.01 ==
* Add timestamp on SDI: waking message
* Add _tst to the make RELEASE file name output
* Disable RUNIN discharge if battery goes critical
* broaden EC's notion of "suspend"
* add timestamp to suspend_hint and SOC_SLEEP transitions
== Ver: 0.4.00 ==
* Add HOST NOT READY checking into all the SDI wait states
* Fix CP flag power ups
* Log last 4 bytes of the suspend hint as a suspend identifier
* Log all suspend_hint and SOC_SLEEP transitions
* New status check, returns suspend hint status

Download: [http://dev.laptop.org/pub/ec/cl2-4_0_4_00.img 0.4.00]

= C1 Prototype =
== Ver: 0.3.07 ==
* Protect against 8051 core CPU bug involving MOVC/CJNE pairs
* Prevent buffer overflow from internally generated version strings
* Neuter the useless and annoying boot checksum

== Ver: 0.3.06 ==
* add code to assist preserving the keystroke that wakes SoC from sleep
* Update board ID for C2 Ramp
* Make sure battery state timer is initialized on battery insert
* Reduce system hard power off voltage to 5.4V
* Prevent ACR sync from exceeding SOC bounds
* Adjust the 1% tick ACR value based on a calibrations from pwr logs
* Fix Trac #11420 problem 2 -- Power up failure after critical shutdown

== Ver: 0.3.05 ==
* Correct OLS event reporting
* Decrease the maximum input wattage to compensate for tolerance.
* Add EC protocol support for OLS commands
* Add support for OLS hysteresis, and bright/dark events
* Add new OLS commands and event identifiers

== Ver: 0.3.04 ==
* Implement timed wakeups
* Configure GPIO_CMD to wake us when SOC_SLEEP is unavailable. This lets us stop the EC on B3 and earlier boards.
* Use the full resolution of the watchdog timer
* Don't switch to internal oscillator during stop mode

== Ver: 0.3.03 ==

* Don't enter stop mode if battery debug is active
* Don't configure SOC_SLEEP for wakeups when board isn't powered otherwise the it may cause continuous wakeups.
* Disable serial RX wakeups
* Add command to let B-series boards know SoC is suspending
* Send different events for waking/running power button presses
* use EC_IRQ# to wake the SoC from suspend before upstream events

== Ver: 0.3.02 ==

* Work around PWR_LMT_ON glitch when charging starts
* Increase the min system voltage to 7.45V

== Ver: 0.3.01 ==
* Drop max system voltage to 7.4V
* Restore lost ACR print in battery 'b3' debug
* Give low battery power off command time to complete
* Make a full battery SOC = 100%
* Clear battery stats on battery reset
* Increase max power draw to 24W/25W
* Don't print MPPT enabled/disabled twice
* Add bat debug print of the PWR_LMT_ON signal for wad
* Add missing default settings for 0x1c1
* add code to allow a power button press in suspend to interrupt SoC
* Augment battery debug info with whether laptop is sleeping or not.
* Implement ability to interrupt SoC with EC_IRQ#
* Fix delay loop timing (slightly)
* Sync sdcc makefile's file list with keil makefile
* Calibrate serial baud rate at boot
* Retune 1ms tick, now we're properly using external crystal
* Fix CRY32CR settings to use external oscillator
* Add an incrementing build index to developer-build version strings

== Ver: 0.3.00 ==

* Fully implement suspend power blinking
* rename *_SLEEP_IND functions to *_VCXO_EN, and invert level
* Rework SDI host (ACK state) handling
* Enable touchpad by default for < 0x1B1
* Introduce workaround for ljmp bug
* Fully init the gpwu on every reboot

Download: [http://dev.laptop.org/pub/ec/cl2-4_0_3_00.img 0.3.00]

= B1 Prototype =

== Ver: 0.2.04 ==

Download: [http://dev.laptop.org/pub/ec/cl2-4_0_2_04.img 0.2.04]

* Workaround for EC hang after EDI reset.
* Add support for 0x1b4 boards
* Use SLEEP_IND input to put the EC into stop mode when SoC suspends
* Differentiate between manual and automatic enter_stop_mode() calls
* Fix watchdog duration to compensate for interrupt at half the configured timeout.
for that.
* Replace double-stop hack w/ EnE's fix for powering down A/D module
* Add check against low-valued stack pointer bug
* Do a more complete init/deinit of the ADC module
* Disable PS/2 clock when not using PS/2
* Renumber a few (unused) EC commands to fix conflicts with previous generations.
* Fix keil environment stack bug
* New Vin scaled and battery power min, max, reset commands
* Remove dead code from MPPT dropping support for < 0x1b3 boards
* Add UART RX to wakeup signals
* Make other debug output integrate with MPPT debug output
* makefile tweak
* Enhanced MPPT (plimit_v2) via LV_SET.
* Makefile update to reserve EC flags area
* Add power limit to battery debug display
* Remove usage of legacy TurnOffSystemPower
* Drop SDI upstream packets if host is not ready
* Fix compile breakage if the PS/2 code is removed
* Format SDI debug output so its easier to read
* Clear cmdresp queue when starting up SDI
* Make power sequencing come up in TURN_OFF mode
* Enable EC flags
* Handle OLS# moving on > 1B2 board IDs
* Add support board 1B3 and LV_SET on PWM 2
* Fast resolve of external ACR changes on battery insert
* modify calculation of EnE checksum to exclude new tag area
* Fix board identification to allow full use of 64 different id values

== Ver: 0.2.03 ==

* Several new monitor debugging commands
* Support and enable power limit v2 circuitry
* Fix charger functions to update last_charge_current
* Re-Init battery debug timer on settings change
* Make sure runin is disabled on startup
* Disable battery LED output when we sleep
* Prepare for PS/2 code removal
* Add more power sequencing debug output
* implement CMD_SET_DCON_POWER, to power the DCON down

== Ver: 0.2.02 ==

== Ver: 0.2.01 ==

== Ver: 0.2.00 ==

(seen in OFW svn 2350 no other data yet)

== Ver: 0.1.04 ==

Download: [http://dev.laptop.org/pub/ec/cl2-4_0_1_04.img 0.1.04]

* Fix broken charging on A2 boards.

== Ver: 0.1.03 ==

Download: [http://dev.laptop.org/pub/ec/cl2-4_0_1_03.img 0.1.03]

* Decrease the OLS sample rate to 500ms
* Rework the OLS SMT test for OFW control
* Make B phase boards no-op the KBD power GPIO.

(Also functions on A3).

(Incompatible with A2, causes excess charge voltage).

= A3 Prototype =

== Ver: 0.1.02 ==

Download: [http://dev.laptop.org/pub/ec/cl2-4_0_1_02.img 0.1.02]

* OFW error: "rxavail = 4" fix
* Fix building with io as macros turned off
* Support reading the PWR_LMT_ON signal
* Add SMT and ASSEMBLY testing modes to OLS
* Add support for auto power up after reflash.
* Report power button presses to the soc via an event
* Make keyboard/touchpad debug output runtime controllable

== Ver: 0.1.01 ==

Download: [http://dev.laptop.org/pub/ec/cl2-4_0_1_01.img 0.1.01]

* Keep OLS LED from blinking
* Fix small error in keymaping for mechanical keyboard
* Rename ALS to OLS per wad's request
* update to latest development version naming scheme
* notify the kernel when we artifically disable charging
* implement a new upstream channel for command error reporting
* implement support for battery status event reporting
* implement SOC change event reporting
* fix AC status change reporting
* fix event reporting for abnormal battery conditions
* Add keymapping.csv into reppository

== Ver: 0.0.11 ==

Download: [http://dev.laptop.org/pub/ec/cl2-4_0_0_11.img 0.0.11]

*fix missing battery current in mA calculation
*reduce nominal input power to about 18 watts
*fix sporadic ISL communication errors
*fix MAIN_PWR to VCORE enable timing
*drop I1 from mppt debug print
*add EC cmd to get the EC version hash
*ambient light sensor support
*fix CHG statement in LiFe debug print
*fix missing battery LED state if MPPT stops charging
*add serial EC boot message

== Ver: 0.0.10 (never released) ==

* fix GPWU register save/restore
* don't clear the ADC interrupt flag
* update ambient light sensor pins for A3
* add A3 board id
* new charger chip support
* solar maximum power point tracking merge from XO-1.5

= A2 Prototype =
= A2 Prototype =

== Ver: 0.0.9 ==

Download: [http://dev.laptop.org/pub/ec/cl2-4_0_0_9.img 0.0.9]

* reset keyboard module state when powering up the board
* add quick blink when power button has been debounced
* add ambient light sensor prototype code (requires custom hardware, or wait for A3)
* implement CMD_POWER_CYCLE

== Ver: 0.0.8 ==

Download: [http://dev.laptop.org/pub/ec/cl2-4_0_0_8.img 0.0.8]

* fix typo affecting initial state of EN_3_3V_SOC
* disable power controls during stop mode (safe, since we know the board is off at this point), to reduce leakage
* add git hash to version info
* fix handling of uppercase hex digits in tohex(), and "make format"
* disable more internal clocks, guided by new EnE docs
* add CMD_RESET_EC and CMD_RESET_EC_SOFT protocol commands, for resetting the 8051 core, and the whole chip, respectively.
* add 'r'eset command, and rearrange watchdog exercise commands.
* use internal oscillator for watchdog, so it runs in stop mode, and add watchdog_reboot() routine.
* fix bug in enable/disable_EN_SD[12] macros
* turn off trim_tune() debug output, and enable stop mode.
* turn off stop mode debug output
* disable the spi host controller in powerdown state, to reduce leakage.
* add commands for more watchdog control, for debug
* reintroduce failsave recover loop at top of main.
* configure the EDI CS input to wake us, so we can program the EC when in STOP mode.
* make the AC input wakeup work, by switching to edge-triggered from toggle-triggered. toggle-triggered should have worked.
* get rid of extra wakeup PF flag, by setting GPIO2D (TP167, used for the gpt3 timer output heartbeat) to output-only. also ifdef the stop-mode debug code. AC jack wakeups are still disabled.
* Add delay prior to entering stop mode.
* Make main_io3731 the default main.c via symlink
* fix initial copyright

== Ver: 0.0.7 ==

* Internal non-released test version.

== Ver: 0.0.6 ==

Download: [http://dev.laptop.org/pub/ec/cl2-4_0_0_6.img 0.0.6]

* Fix touchpad


== Ver: 0.0.5 ==
== Ver: 0.0.5 ==
Line 27: Line 325:
* Enable/Fix EC<->Host communication
* Enable/Fix EC<->Host communication
* Enable/Fix Keyboard stream.
* Enable/Fix Keyboard stream.

= Source =

* http://dev.laptop.org/git/users/rsmith/ec-1.75/

Latest revision as of 21:05, 24 March 2014

Production

Ver: 4 1.0.01

  • Check EEPROM bank 0 magic values and fix if wrong
  • Print out the ACR value on entry into suspend
  • Re-implement SD2 power control. EC Command 0x6f Argument u8. Non-zero to to power up 0 to power down.
  • released in Q4D26.

Ver: 4 1.0.00

  • Turn off run-in enabled battery debugging messages on powerup
  • released in Q4D25.

Ver: 4 0.5.00

  • Hack to allow the mmp2 A1 board to be supported
  • Remove support for A3 boards, and version 1 of the power limit code
  • Remove A1/A2 support, no reason to support non-ISL charger
  • Rework A/D reading for less code when only 8-bit values are needed this simplifies the board identification code as well

C2/Ramp

Ver: 4 0.4.03

  • Automatically turn off USB hub power when host is suspended
  • Add power off USB hub SDI command
  • Increase stop mode entry timer to 3s when power is off
  • Add new SDI command for retrieving power while suspended
  • Fix trac #11760. EC always charges battery after reset
  • Clear battery full flag on runin discharge
  • Set max sys voltage (battery CV) to 7.44V
  • Set battery full taper current to 120mA via human readable macro
  • Fix battery low voltage count reset
  • Lower minimum system/battery voltage to 4.950

Ver: 0.4.02

  • handle upstream command responses before events
  • add command for sending repetitive events, for stress testing
  • eliminate extra AC-changed events
  • set the default event_mask to all-unmasked
  • implement a mask to control upstream event delivery
  • shorten EC_IRQ assertion
  • ifdef the EC_IRQ exerciser command

Ver: 0.4.01

  • Add timestamp on SDI: waking message
  • Add _tst to the make RELEASE file name output
  • Disable RUNIN discharge if battery goes critical
  • broaden EC's notion of "suspend"
  • add timestamp to suspend_hint and SOC_SLEEP transitions

Ver: 0.4.00

  • Add HOST NOT READY checking into all the SDI wait states
  • Fix CP flag power ups
  • Log last 4 bytes of the suspend hint as a suspend identifier
  • Log all suspend_hint and SOC_SLEEP transitions
  • New status check, returns suspend hint status

Download: 0.4.00

C1 Prototype

Ver: 0.3.07

  • Protect against 8051 core CPU bug involving MOVC/CJNE pairs
  • Prevent buffer overflow from internally generated version strings
  • Neuter the useless and annoying boot checksum

Ver: 0.3.06

  • add code to assist preserving the keystroke that wakes SoC from sleep
  • Update board ID for C2 Ramp
  • Make sure battery state timer is initialized on battery insert
  • Reduce system hard power off voltage to 5.4V
  • Prevent ACR sync from exceeding SOC bounds
  • Adjust the 1% tick ACR value based on a calibrations from pwr logs
  • Fix Trac #11420 problem 2 -- Power up failure after critical shutdown

Ver: 0.3.05

  • Correct OLS event reporting
  • Decrease the maximum input wattage to compensate for tolerance.
  • Add EC protocol support for OLS commands
  • Add support for OLS hysteresis, and bright/dark events
  • Add new OLS commands and event identifiers

Ver: 0.3.04

  • Implement timed wakeups
  • Configure GPIO_CMD to wake us when SOC_SLEEP is unavailable. This lets us stop the EC on B3 and earlier boards.
  • Use the full resolution of the watchdog timer
  • Don't switch to internal oscillator during stop mode

Ver: 0.3.03

  • Don't enter stop mode if battery debug is active
  • Don't configure SOC_SLEEP for wakeups when board isn't powered otherwise the it may cause continuous wakeups.
  • Disable serial RX wakeups
  • Add command to let B-series boards know SoC is suspending
  • Send different events for waking/running power button presses
  • use EC_IRQ# to wake the SoC from suspend before upstream events

Ver: 0.3.02

  • Work around PWR_LMT_ON glitch when charging starts
  • Increase the min system voltage to 7.45V

Ver: 0.3.01

  • Drop max system voltage to 7.4V
  • Restore lost ACR print in battery 'b3' debug
  • Give low battery power off command time to complete
  • Make a full battery SOC = 100%
  • Clear battery stats on battery reset
  • Increase max power draw to 24W/25W
  • Don't print MPPT enabled/disabled twice
  • Add bat debug print of the PWR_LMT_ON signal for wad
  • Add missing default settings for 0x1c1
  • add code to allow a power button press in suspend to interrupt SoC
  • Augment battery debug info with whether laptop is sleeping or not.
  • Implement ability to interrupt SoC with EC_IRQ#
  • Fix delay loop timing (slightly)
  • Sync sdcc makefile's file list with keil makefile
  • Calibrate serial baud rate at boot
  • Retune 1ms tick, now we're properly using external crystal
  • Fix CRY32CR settings to use external oscillator
  • Add an incrementing build index to developer-build version strings

Ver: 0.3.00

  • Fully implement suspend power blinking
  • rename *_SLEEP_IND functions to *_VCXO_EN, and invert level
  • Rework SDI host (ACK state) handling
  • Enable touchpad by default for < 0x1B1
  • Introduce workaround for ljmp bug
  • Fully init the gpwu on every reboot

Download: 0.3.00

B1 Prototype

Ver: 0.2.04

Download: 0.2.04

  • Workaround for EC hang after EDI reset.
  • Add support for 0x1b4 boards
  • Use SLEEP_IND input to put the EC into stop mode when SoC suspends
  • Differentiate between manual and automatic enter_stop_mode() calls
  • Fix watchdog duration to compensate for interrupt at half the configured timeout.

for that.

  • Replace double-stop hack w/ EnE's fix for powering down A/D module
  • Add check against low-valued stack pointer bug
  • Do a more complete init/deinit of the ADC module
  • Disable PS/2 clock when not using PS/2
  • Renumber a few (unused) EC commands to fix conflicts with previous generations.
  • Fix keil environment stack bug
  • New Vin scaled and battery power min, max, reset commands
  • Remove dead code from MPPT dropping support for < 0x1b3 boards
  • Add UART RX to wakeup signals
  • Make other debug output integrate with MPPT debug output
  • makefile tweak
  • Enhanced MPPT (plimit_v2) via LV_SET.
  • Makefile update to reserve EC flags area
  • Add power limit to battery debug display
  • Remove usage of legacy TurnOffSystemPower
  • Drop SDI upstream packets if host is not ready
  • Fix compile breakage if the PS/2 code is removed
  • Format SDI debug output so its easier to read
  • Clear cmdresp queue when starting up SDI
  • Make power sequencing come up in TURN_OFF mode
  • Enable EC flags
  • Handle OLS# moving on > 1B2 board IDs
  • Add support board 1B3 and LV_SET on PWM 2
  • Fast resolve of external ACR changes on battery insert
  • modify calculation of EnE checksum to exclude new tag area
  • Fix board identification to allow full use of 64 different id values

Ver: 0.2.03

  • Several new monitor debugging commands
  • Support and enable power limit v2 circuitry
  • Fix charger functions to update last_charge_current
  • Re-Init battery debug timer on settings change
  • Make sure runin is disabled on startup
  • Disable battery LED output when we sleep
  • Prepare for PS/2 code removal
  • Add more power sequencing debug output
  • implement CMD_SET_DCON_POWER, to power the DCON down

Ver: 0.2.02

Ver: 0.2.01

Ver: 0.2.00

(seen in OFW svn 2350 no other data yet)

Ver: 0.1.04

Download: 0.1.04

  • Fix broken charging on A2 boards.

Ver: 0.1.03

Download: 0.1.03

  • Decrease the OLS sample rate to 500ms
  • Rework the OLS SMT test for OFW control
  • Make B phase boards no-op the KBD power GPIO.

(Also functions on A3).

(Incompatible with A2, causes excess charge voltage).

A3 Prototype

Ver: 0.1.02

Download: 0.1.02

  • OFW error: "rxavail = 4" fix
  • Fix building with io as macros turned off
  • Support reading the PWR_LMT_ON signal
  • Add SMT and ASSEMBLY testing modes to OLS
  • Add support for auto power up after reflash.
  • Report power button presses to the soc via an event
  • Make keyboard/touchpad debug output runtime controllable

Ver: 0.1.01

Download: 0.1.01

  • Keep OLS LED from blinking
  • Fix small error in keymaping for mechanical keyboard
  • Rename ALS to OLS per wad's request
  • update to latest development version naming scheme
  • notify the kernel when we artifically disable charging
  • implement a new upstream channel for command error reporting
  • implement support for battery status event reporting
  • implement SOC change event reporting
  • fix AC status change reporting
  • fix event reporting for abnormal battery conditions
  • Add keymapping.csv into reppository

Ver: 0.0.11

Download: 0.0.11

  • fix missing battery current in mA calculation
  • reduce nominal input power to about 18 watts
  • fix sporadic ISL communication errors
  • fix MAIN_PWR to VCORE enable timing
  • drop I1 from mppt debug print
  • add EC cmd to get the EC version hash
  • ambient light sensor support
  • fix CHG statement in LiFe debug print
  • fix missing battery LED state if MPPT stops charging
  • add serial EC boot message

Ver: 0.0.10 (never released)

  • fix GPWU register save/restore
  • don't clear the ADC interrupt flag
  • update ambient light sensor pins for A3
  • add A3 board id
  • new charger chip support
  • solar maximum power point tracking merge from XO-1.5

A2 Prototype

Ver: 0.0.9

Download: 0.0.9

  • reset keyboard module state when powering up the board
  • add quick blink when power button has been debounced
  • add ambient light sensor prototype code (requires custom hardware, or wait for A3)
  • implement CMD_POWER_CYCLE

Ver: 0.0.8

Download: 0.0.8

  • fix typo affecting initial state of EN_3_3V_SOC
  • disable power controls during stop mode (safe, since we know the board is off at this point), to reduce leakage
  • add git hash to version info
  • fix handling of uppercase hex digits in tohex(), and "make format"
  • disable more internal clocks, guided by new EnE docs
  • add CMD_RESET_EC and CMD_RESET_EC_SOFT protocol commands, for resetting the 8051 core, and the whole chip, respectively.
  • add 'r'eset command, and rearrange watchdog exercise commands.
  • use internal oscillator for watchdog, so it runs in stop mode, and add watchdog_reboot() routine.
  • fix bug in enable/disable_EN_SD[12] macros
  • turn off trim_tune() debug output, and enable stop mode.
  • turn off stop mode debug output
  • disable the spi host controller in powerdown state, to reduce leakage.
  • add commands for more watchdog control, for debug
  • reintroduce failsave recover loop at top of main.
  • configure the EDI CS input to wake us, so we can program the EC when in STOP mode.
  • make the AC input wakeup work, by switching to edge-triggered from toggle-triggered. toggle-triggered should have worked.
  • get rid of extra wakeup PF flag, by setting GPIO2D (TP167, used for the gpt3 timer output heartbeat) to output-only. also ifdef the stop-mode debug code. AC jack wakeups are still disabled.
  • Add delay prior to entering stop mode.
  • Make main_io3731 the default main.c via symlink
  • fix initial copyright

Ver: 0.0.7

  • Internal non-released test version.

Ver: 0.0.6

Download: 0.0.6

  • Fix touchpad

Ver: 0.0.5

Download: 0.0.5

  • Initial cut at adding stop mode. disabled by default for now.
  • fix the clearing of the power-off command flag
  • Shorten the cycle_led times.
  • add a bunch of debugging output for the trim registers
  • add io support for the RESTORE pin, and an sfr for the PCON register. also formatting.
  • Enable board ID reading
  • Wait for the flash trim read to complete before reading the data
  • Fix battery error LED state not set on battery error

Ver: 0.0.4

Download: 0.0.4

  • Enable battery charging
  • Implement api for poweroff add debug code for showing power states.

Ver: 0.0.2

Download: 0.0.2

  • Enable/Fix EC<->Host communication
  • Enable/Fix Keyboard stream.

Source