LLVM/clang is not used for any compilation due to it not supporting the
8-bit architectures we use (MCS-51, AVR). This means we are effectively
installing 250+ MiB of dependencies for a C formatting tool.
Replace it with uncrustify, which uses only ~600 KiB of space and has
more granular control of formatting (800+ options).
Signed-off-by: Tim Crawford <tcrawford@system76.com>
Add timeouts to the legacy PECI implementation to prevent the EC locking
up when PECI stops working, such as during S0ix opportunistic suspend.
This is not the optimal solution, as PECI should not be available at all
to cause the lock up in the first place, but it at least prevents the
issue.
Signed-off-by: Tim Crawford <tcrawford@system76.com>
If eSPI is used, use Virtual Wires to determine if PECI is available.
Fixes incorrectly reporting PECI as available on systems using S0ix, as
the CPU would be in C10 but `PLTRST#` would not be asserted.
Requires enabling `HOST_C10` reporting in FSP-S.
Signed-off-by: Tim Crawford <tcrawford@system76.com>
The PECI-over-eSPI implementation, like the legacy implementation, must
acknowledge when the transaction is done by clearing the bit in the
register.
Fixes a hang during shutdown on oryp11 after unplugging a TBT display.
Signed-off-by: Tim Crawford <tcrawford@system76.com>
Make all boards except oryp11 use the legacy PECI implementation. The
oryp11 removed the legacy pin (H_PECI) and must use PECI over eSPI.
All boards that use eSPI should switch to using PECI over eSPI once the
implementation is working correctly.
Signed-off-by: Tim Crawford <tcrawford@system76.com>
Per the flow charts for PECI programming guide, clear the status
register after the command has completed.
Ref: IT5570E V0.3.2 datasheet
Signed-off-by: Tim Crawford <tcrawford@system76.com>
Per the IT5570E datasheet, FINISH should be used to check if a
transaction completed, not HOBY.
> For the polling mode, software continues reading the Host Status
> Register to check whether the transaction is completed or not (the
> Finish bit in the Host Status Register will be set when the
> transaction is completed).
Ref: IT5570E V0.3.2 datasheet
Signed-off-by: Tim Crawford <tcrawford@system76.com>
Check if any hardware error bits are set instead of checking for only
command completion.
Move logging of WrPkgConfig() errors from power to peci.
Ref: IT5570E V0.3.2 datasheet
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>
S0ix does not require eSPI, and eSPI does not mandate S0ix.
Enable S0ix for:
- darp7 (TGL-U)
- darp8 (ADL-P)
- galp5 (TGL-U)
- galp6 (ADL-P)
- lemp10 (TGL-U)
- lemp11 (ADL-U)
It is also currently enabled on ADL-H due to a bug with S3:
- gaze17-3050
- gaze17-3060-b
- oryp9
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>
* SMOOTH_FANS, SMOOTH_FANS_UP, SMOOTH_FANS_DOWN build flags to smooth fan speed changes.
Defaults 40, set SMOOTH_FANS=0 to disable and keep sharp fan speed changes
* fix for ACPI CPU temperature
* allow for a floor to be set for fan smoothing and specifically configure oryp6/7 to start smoothing at 25% to mitigate fan buzzing below 25%
* update default config values for fans
* update all devices to use defaults for heatup, cooldown, update galp5 fan curves
* Decrease default cooldown time from 20 to 10
Co-authored-by: Jacob Kauffmann <jacob@system76.com>
* 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