39cd014f7bdad47f9319cf0d4277658e423c9090
* Add addw2 board * Set charge params and update gpio.h * Set VGA fan to 100% when entering scratch rom * Implement keyboard LEDs * Turn off keyboard LEDs in gpio defaults * Default airplane mode LED to off * Enable GPU power and fan control * Add NVIDIA GPU power and temp to power.csv * Add NVIDIA GPU fan value to power.sh * Move GPU init back to coreboot * Do not turn on GPU fan if GPU is off * Show POST codes * Add timestamps to console_external * Accept port 81 cycles * Move setting RSTS into ec_init * Move post code debugging to system76/common * Move some GPIO init from system76/common to boards * Make some power signals optional * Remove POST code support - it only works on IT5570
System76 EC
System76 EC is a GPLv3 licensed embedded controller firmware for System76 laptops. It is designed to be portable to boards using several 8-bit microcontrollers, such as:
| Board | Embedded Controller | Architecture |
|---|---|---|
| System76 ecsim | Simulated ITE EC | 8051 |
| System76 Laptops | ITE IT8587E | 8051 |
| System76 Thelio Io | Atmel ATMEGA32U4 | AVR |
| Arduino Mega 2560 | Atmel ATMEGA2560 | AVR |
Shared features (that can be used across different micro-controllers):
| Acronym | Feature | Description |
|---|---|---|
| ADC | Analog-digital converter | Reads voltages from batteries and temperature from thermistors |
| DAC | Digital-analog converter | Brightness control of keyboard backlight |
| GPIO | General purpose input/output | Control of LED's, buttons, and enable lines for other hardware |
| KBSC | Keyboard scan controller | Detects laptop keyboard presses. Keyboard scanning can be done using GPIOs, the ITE EC has hardware acceleration |
| PS/2 | Keyboard and mouse bus | Interfaces with touchpad. PS/2 can be done using GPIOs, the ITE EC has hardware acceleration |
| PWM | Pulse-width modulation | Fan control and brightness control of LED's |
| SMBUS | System management bus | Reads battery information |
| SPI | Serial peripheral interface | Reads and programs the EC's firmware |
| UART | Universal asynchronous receiver-transmitter | Provides EC console input/output |
Features specific to ITE embedded controllers:
| Acronym | Feature | Description |
|---|---|---|
| LPC | Low pin count | Forwards memory and I/O access to EC. Most EC functions are exposed to the host through this interface. High frequency makes a GPIO implementation not possible. Simulation is provided by System76 ecsim |
| PECI | Platform environment control interface | Reads CPU temperature (relative to throttle point). Proprietary nature means a GPIO implementation is unlikely, though not technically impossible |
Features specific to Atmel embedded controllers:
| Acronym | Feature | Description |
|---|---|---|
| USB | Universal serial bus | Can be used to provide access to EC functions either to the host or to a remote machine |
Flashing
Requirements:
Internal programmer
Use this method for flashing a system already running System76 EC.
make BOARD=<vendor>/<model> flash_internal
External programmer
Use this method for first-time flashing or flashing a bricked controller.
The system must not have any power!
- Turn off the computer
- Unplug the AC adapter
- Remove the bottom panel
- Disconnect the battery
- Ground the laptop to the programmer
- Disconnect the keyboard from its port
- Attach the programmer to the keyboard port
- Flash the firmware
make BOARD=<vendor>/<model> flash_external
Description
Languages
C
81.5%
Makefile
9.2%
Rust
8.1%
Shell
1.2%