Commit Graph

762 Commits

Author SHA1 Message Date
Michał Kopeć
cc3effb6a4 board/system76/common: use SLP_S0# pin for modern standby detection
Previously, CPU_C10_GATE# was used for detecting entry into s0ix /
Modern Standby.

Intel documentation says that SLP_S0# should be used for s0ix detection
instead, and CPU_C10_GATE# is intended for VCCSTG power gating, so
switch the pin to improve s0ix detection reliability.

Fixes https://github.com/system76/firmware-open/issues/199

References:

- Intel docs #575570 rev 0.5, #607872 rev 2.2
- Chromium EC: https://chromium.googlesource.com/chromiumos/platform/ec/+/master/power/intel_x86.c#41

Signed-off-by: Michał Kopeć <michal.kopec@3mdeb.com>
2022-08-30 08:47:30 -06:00
Tim Crawford
49abf83c08 Add config for using S0ix
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>
2022-08-30 08:47:30 -06:00
Tim Crawford
b78631e316 oryp10: Symlink to oryp9
Signed-off-by: Tim Crawford <tcrawford@system76.com>
2022-08-26 11:38:49 -06:00
Tim Crawford
a8213311b1 galp6: Do not provide power while off
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>
2022-08-03 11:11:28 -06:00
Tim Crawford
a6a6c5fba4 galp6: Fix TCP0 power
galp6 uses `PD_EN` instead of `VA_EC_EN` for enabling power to TCP0.

Signed-off-by: Tim Crawford <tcrawford@system76.com>
2022-08-02 16:02:06 -06:00
Tim Crawford
cd86c1e7d7 galp6: Fix USB power
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>
2022-08-02 16:02:06 -06:00
Tim Crawford
371f6d3047 galp6: Add Galago Pro 6
Signed-off-by: Tim Crawford <tcrawford@system76.com>
2022-08-01 19:26:36 -06:00
Tim Crawford
6295f60172 Fix smart charger values
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
2022-08-01 19:26:36 -06:00
Tim Crawford
20d40f3477 gaze17-3050: Adjust fan points
Signed-off-by: Tim Crawford <tcrawford@system76.com>
2022-07-26 09:27:44 -06:00
Tim Crawford
22fa2769ad gaze17-3050: Update configs
- Add to CI
- Correct smart charger values
- Enable WLAN power
- Enable USB power
- Disable mute

Signed-off-by: Tim Crawford <tcrawford@system76.com>
2022-07-26 09:27:44 -06:00
Tim Crawford
7ab91e9f1d oryp9: Sync fans
Signed-off-by: Tim Crawford <tcrawford@system76.com>
2022-07-20 14:20:31 -06:00
Tim Crawford
e8d91e5c2d oryp9: Add Oryx Pro 9
Signed-off-by: Tim Crawford <tcrawford@system76.com>
2022-07-12 15:31:35 -06:00
Tim Crawford
60dfb62f90 lemp11: Add Lemur Pro 11
Signed-off-by: Tim Crawford <tcrawford@system76.com>
2022-06-28 13:22:30 -06:00
Tim Crawford
7b9b91187a darp8: Add Darter Pro 8
Signed-off-by: Tim Crawford <tcrawford@system76.com>
2022-06-22 09:17:21 -06:00
Tim Crawford
158ec124fe Add Pause key
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>
2022-05-23 13:08:31 -06:00
Jeremy Soller
375d11f4ed Add gaze17 2022-05-16 11:16:33 -07:00
Jeremy Soller
a70ea4558c Fix battery TRACE macro 2022-04-27 07:13:48 -06:00
Tim Crawford
b70a09e205 Disable clang-format for sensitive blocks
Things like macro blocks should not be auto-formatted.

Signed-off-by: Tim Crawford <tcrawford@system76.com>
2022-03-22 12:52:47 -06:00
Tim Crawford
f21cc6d602 battery: Group battery info in a struct
Signed-off-by: Tim Crawford <tcrawford@system76.com>
2022-03-18 12:47:59 -06:00
Tim Crawford
ee8ba5b72e fan: Replace 'static const' with defines
SDCC is not able to optimize statics [1]. Replace their use with defines
so significantly better code is generated.

[1]: https://sourceforge.net/p/sdcc/feature-requests/414/

Signed-off-by: Tim Crawford <tcrawford@system76.com>
2022-03-18 12:47:20 -06:00
Jeremy Soller
84f9aad7d8 Add force console mode to arduino firmware 2022-02-14 18:55:14 -07:00
Jeremy Soller
cb341cfb2b Add power_init function 2022-02-14 18:55:14 -07:00
Jeremy Soller
474b1c2191 Remove unused power states, rename power on/off functions 2022-02-14 18:55:14 -07:00
Jeremy Soller
2262097c2b Add missing newline 2022-02-14 18:55:14 -07:00
Jeremy Soller
4bab1cc00d Ensure that system powers off S5 plane if it fails to power on S5 plane 2022-02-14 18:55:14 -07:00
Jeremy Soller
c31ef33101 Remove DEEP_SX, no boards use it 2022-02-14 18:55:14 -07:00
Ian Douglas Scott
85595a8d4c tool: Add a system76_ec command to disable input events
For testing Launch keyboards.

Could easily support in EC firmware as well if we had a use for that,
but not adding that for now.
2021-11-18 13:08:05 -08:00
Tim Crawford
55a617f2e0 gaze16-3060-b: Symlink new variant to gaze16-3060 2021-11-01 11:01:34 -06:00
Jeremy Soller
9fa83ad359 gaze16-3050, gaze16-3060: set PCH_DPWROK_EC low on EC boot to ensure PCH is off 2021-09-30 12:29:24 -06:00
Jeremy Soller
9046f1e527 Add oryp8 2021-09-20 10:50:53 -06:00
Ian Douglas Scott
15c5f936b5 Read cycle count from battery and expose for ACPI 2021-09-15 07:49:50 -06:00
Jeremy Soller
646a6436a7 Attempt to fix power_peci_limit issues
- Return false when power_peci_limit fails
- Allow power_peci_limit to be retried indefinitely from power_set_limit
2021-09-08 13:39:54 -06:00
Tim Crawford
f55e493001 Remove overflow check for unsigned diffs
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>
2021-08-16 09:52:08 -06:00
Tim Crawford
73c6bd986d main: Use unsigned modulo
Explicitly affix the literal with `U` so SDCC will directly call
`moduint()` instead of `modsint()`.

Signed-off-by: Tim Crawford <tcrawford@system76.com>
2021-08-02 14:37:08 -06:00
Tim Crawford
d99ea41259 power: Use u8/u16 for loop index
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>
2021-08-02 14:37:08 -06:00
Tim Crawford
37fa06ebc8 parallel: Use u16 for data length
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>
2021-08-02 14:37:08 -06:00
Tim Crawford
5599c02e83 keymap: Use u8 for array access
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>
2021-08-02 14:37:08 -06:00
Tim Crawford
458cb000f3 kbscan: Use u8 for array access
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>
2021-08-02 14:37:08 -06:00
Tim Crawford
571316a4ea kbled: Use u8 for array access
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>
2021-08-02 14:37:08 -06:00
Tim Crawford
f27d6350f2 kbc: Use u16 for timeout
The timeout will never be negative.

Signed-off-by: Tim Crawford <tcrawford@system76.com>
2021-08-02 14:37:08 -06:00
Tim Crawford
2a3830fb57 i2c: Use u16 for data length
The length will never be negative.

Signed-off-by: Tim Crawford <tcrawford@system76.com>
2021-08-02 14:37:08 -06:00
Tim Crawford
784202383e fan: Use u8 for array access
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>
2021-08-02 14:37:08 -06:00
Tim Crawford
99af8a35f5 Use explicitly sized types from stdint
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>
2021-08-02 07:46:44 -06:00
Tim Crawford
38b2a628f9 gaze16-3050: Correct charger input current
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>
2021-07-31 06:15:05 -06:00
Jeremy Soller
ff53939a56 Add gaze16 2021-07-20 10:49:08 -06:00
Jeremy Soller
2720bb9037 Use PME virtual wire for suspend/resume 2021-07-20 10:49:08 -06:00
Jeremy Soller
90057df94f Change repetitive prints from DEBUG to TRACE 2021-07-20 10:49:08 -06:00
Jeremy Soller
913b0dfc44 Expose pnp_read and pnp_write 2021-07-20 10:49:08 -06:00
Tim Crawford
9aab239f0a keyboard: Set scroll lock in default layouts
Not added to 14in_83 as it is not printed on the key.

Signed-off-by: Tim Crawford <tcrawford@system76.com>
2021-07-19 18:20:49 -06:00
Tim Crawford
701adb2f27 keymap: Define scroll lock
Signed-off-by: Tim Crawford <tcrawford@system76.com>
2021-07-19 18:20:49 -06:00