Groups 1, 3, and 4 require explicitly enabling the wake-up function
before unmasking them in INTC.
Signed-off-by: Tim Crawford <tcrawford@system76.com>
Update .clang-format for LLVM 14.0, available on Ubuntu 22.04.
There is still plenty that clang-format sucks at or does wrong, so
either add some more blocks to disable it, or just put up with it.
Signed-off-by: Tim Crawford <tcrawford@system76.com>
A board may use either the LPC bus or the eSPI bus. Only include eSPI
support for boards that use it.
Signed-off-by: Tim Crawford <tcrawford@system76.com>
EC_VARIANT is only used on AVR as a parameter to avrdude.
Replace its use on ITE with 2 choices:
- CONFIG_EC_ITE_IT8587E
- CONFIG_EC_ITE_IT5570E
Replace the EC defines with a matching define for the variable.
Replace use of wildcard with list of source files to include. The `-y`
suffix is added, but has no significance since conditional compilation
has not been added yet.
Signed-off-by: Tim Crawford <tcrawford@system76.com>
Split the EC define into base and variant. Merge the 3 ATmega chips as
atmega, and the 2 ITE chips as ite.
Tested that the generated files are identical.
Signed-off-by: Tim Crawford <tcrawford@system76.com>
Add IT5570E register that controls when the down counters are updated.
Set them to update when they reach 0, instead of immediately when DCRi
is written.
Fixes keyboard color changing when changing brightness levels if not
using 0xFF for an RGB value.
Signed-off-by: Tim Crawford <tcrawford@system76.com>
Replace bare int types with stdint types. This was done with:
grep -rwl 'int' src/ | xargs sed -i 's/\<int\>/int16_t/g'
grep -rwl 'unsigned long' src/ | xargs sed -i 's/\<unsigned long\>/uint32_t/g'
grep -rwl 'unsigned char' src/ | xargs sed -i 's/\<unsigned char\>/uint8_t/g'
Then reverted for *main(), putchar(), and getchar().
The Arduino declarations for parallel_main() were also corrected to
match their definitions.
SDCC does *not* generate the same code in all instances, due to `int`
being treated different than `short int`.
Signed-off-by: Tim Crawford <tcrawford@system76.com>
Most of the code is the same between IT8587E and IT5570E.
Identical files were detected with:
diff -rs src/ec/it8587e/ src/ec/it5570e/ | egrep '^Files .+ and .+ are identical$'
Then manually moved from one variant and deleted from the other.
Signed-off-by: Tim Crawford <tcrawford@system76.com>
Per the specs, a 16-byte signature is stored at 0x40. All proprietary EC
ROMs store a space-padded 16-byte vendor string at 0x50, but it isn't
required.
Signed-off-by: Tim Crawford <tcrawford@system76.com>
By default with the large memory mode, sdcc places temp data in DSEG
(__data) and parameters in XSEG (__xdata). This causes both to be placed
on the stack instead.
Previously, the temperary variables were using up to ox69 bytes in DSEG.
After the change, temperary variables now end at 0x5D (12 bytes less).
The i2c routines were using the following XSEG bytes:
- 0x03 - 0x0b (i2c_recv - 8 bytes now on the stack)
- 0x0c - 0x14 (i2c_send - 8 bytes now on the stack)
- 0x15 - 0x1e (i2c_get - 9 bytes now on the stack)
- 0x1f - 0x2c (i2c_set - 13 bytes now on the stack)
- 0x1e2 - 0x1e5 (i2c_reset - 4 bytes now on the stack)
- 0x1e6 - ? (i2c_start - ? bytes now on the stack)
The ITE EC hardware always has the first 32KB of ram mapped, while
a second 32KB of ram is banked immediately after. By default, the
banked physical address immediately follows the fixed area in flash.
* 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
* Move configuration for battery into board.mk
* lemp9: remove tcpm code
* Move touchpad to its own module
* Add kbled_reset to all platforms, move items to run on CPU reset to a function
* Add defines for battery and charger address
* Add I2C_0 export to it5570e
* Move common system76 board functions into src/board/system76/common
Implement configuring the keyboard controller as a parallel host device
and writing to the parallel port. This allows the EC to send log
messages over the port.