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>
The previous commit incorrectly enabled power while off. Model PD_EN
after VA_EC_EN, which it replaced on galp6 for TCP0.
Fixes: a6a6c5fba4 ("galp6: Fix TCP0 power")
Signed-off-by: Tim Crawford <tcrawford@system76.com>
The schematics incorrectly show the pin as `USB_PWR_EN#`. There is a
comment on the port side clarifying that it is actually active high.
Signed-off-by: Tim Crawford <tcrawford@system76.com>
Fix all smart charger values by having boards provide the RSENSE values
and perform the register calculations in the code.
The galp3-c, galp5, gaze16, and gaze17 do not seem to have the same
behavior as the rest of the boards, and further investigation is needed.
In the mean time, reduce their charge current values to preserve current
behavior.
Ref: OZ26786-DS v1.0
Ref: bq24780S Rev. C datasheet
Signed-off-by: Tim Crawford <tcrawford@system76.com
In proprietary firmware and QMK, the Break key by itself is always just
Pause. They produce the same scan code, but Ctrl must be held for the OS
to recognize it as Break.
Behavior tested with xev.
Signed-off-by: Tim Crawford <tcrawford@system76.com>
Calculating diffs with *unsigned* integers will always produce the
correct result, as long as the diff is less than the type max.
For example, suppose we read 254 and 2 for an 8 bit value:
2 - 254 = 4
Using this property, simplify diffs on time_get() comparisons.
Signed-off-by: Tim Crawford <tcrawford@system76.com>
Explicitly affix the literal with `U` so SDCC will directly call
`moduint()` instead of `modsint()`.
Signed-off-by: Tim Crawford <tcrawford@system76.com>
Use u8/u16 instead of i16 as the value will never be negative and the
bounds are known at compile time.
Use a decrementing loop as SDCC generates more efficient code.
Signed-off-by: Tim Crawford <tcrawford@system76.com>
The length will never be negative. Change it from i16 to u16 so
SDCC will generate more efficient code.
Signed-off-by: Tim Crawford <tcrawford@system76.com>
The index will never be negative and will never exceed 255. Change them
from i16 to u8 so SDCC will generate more efficient code.
Signed-off-by: Tim Crawford <tcrawford@system76.com>
The index will never be negative and will never exceed 255. Change them
from i16 to u8 so SDCC will generate more efficient code.
Signed-off-by: Tim Crawford <tcrawford@system76.com>
The index will never be negative and will never exceed 255. Change them
from i16 to u8 so SDCC will generate more efficient code.
Signed-off-by: Tim Crawford <tcrawford@system76.com>
The index will never be negative and will never exceed 255. Change them
from i16 to u8 so SDCC will generate more efficient code.
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>
Per the charger for the 3050 variants:
DC OUTPUT (输出/輸出): 19.5V⎓7.7A 150W
The 3060 charger does list 9.23A.
Signed-off-by: Tim Crawford <tcrawford@system76.com>