Commit Graph

89 Commits

Author SHA1 Message Date
Jeremy Soller
34ef03b19a Fix ESPI vw_get and vw_set 2023-04-03 13:06:16 -06:00
Jeremy Soller
35d3c4f161 Fix style 2023-04-03 13:06:16 -06:00
Jeremy Soller
cea89a78d8 Use ESPI VW signals wherever possible 2023-04-03 13:06:16 -06:00
Jeremy Soller
9abd9d853a common: peci: WIP peci_get_temp over espi 2023-04-03 13:06:16 -06:00
Jeremy Soller
83f40c643f ite: Add more eSPI registers 2023-04-03 13:06:16 -06:00
Tim Crawford
ddb19e8738 ec/ite: Add Wake-Up Control registers
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>
2023-02-07 10:47:24 -07:00
Tim Crawford
084aefd506 ec/ite: Add Interrupt Controller registers
- IT8587E has groups 0-18
- IT5570E has groups 0-21
- IT81202E has groups 0-23

Signed-off-by: Tim Crawford <tcrawford@system76.com>
2023-02-07 10:47:24 -07:00
Tim Crawford
59c386ec12 Move gpio_debug from board to EC code
The gpio_debug() functionality depends on the ITE registers and not
anything board-specific.

Signed-off-by: Tim Crawford <tcrawford@system76.com>
2023-01-23 14:26:30 -07:00
Tim Crawford
e032c5f0f2 Update .clang-format and apply
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>
2023-01-10 12:02:21 -07:00
Tim Crawford
d687df482a Conditionally compile eSPI support
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>
2023-01-06 12:47:54 -07:00
Tim Crawford
861f1f2cc8 make: Add config for each ITE EC
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.
2022-11-17 14:19:39 -07:00
Tim Crawford
ac9631f948 make: Specify source files to include
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>
2022-11-17 14:19:39 -07:00
Tim Crawford
69f97fe149 Merge common EC directories
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>
2022-10-27 09:42:45 -06:00
Tim Crawford
f8d1123934 pwm: Reload counters when they reach 0
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>
2022-10-14 08:38:34 -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
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
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
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
f9e4e25b05 ec/it*: Merge remaining ITE EC files
Signed-off-by: Tim Crawford <tcrawford@system76.com>
2021-07-16 13:34:56 -06:00
Tim Crawford
851221da61 ec/it*: Merge all identical ITE EC files
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>
2021-07-16 13:34:56 -06:00
Tim Crawford
1fc832ca94 Enable POST codes in EC init instead of per-board
Signed-off-by: Tim Crawford <tcrawford@system76.com>
2021-07-09 07:37:40 -06:00
Tim Crawford
f8d81a1e1b ec/it5570e: Add function to read POST codes
Logic for reading port 0x80/0x81 is common to the IT5570E.

Signed-off-by: Tim Crawford <tcrawford@system76.com>
2021-07-09 07:37:40 -06:00
Tim Crawford
43651cf2c2 ec/it*: Remove vendor string from signature
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>
2021-07-09 07:36:27 -06:00
Tim Crawford
b3b2a312b7 Define GPCRn values in EC header 2021-06-03 09:48:55 -06:00
Jeremy Soller
1b539e1206 Make touchpad access non-blocking 2021-05-24 19:02:47 -06:00
Tim Crawford
4963e04a83 Reindent files using spaces 2021-05-07 12:44:48 -06:00
Tim Crawford
720af4b2b0 Use BIT macro
Mostly done with the cocci script. macro.h was then added manually.
2021-05-07 11:24:25 -06:00
Jeremy Soller
47c1062e08 Add SPDX headers 2021-01-05 12:17:16 -07:00
Jeremy Soller
515c7495c1 ec/it5570/gpio.h: Add GCR21 register 2021-01-05 12:17:16 -07:00
Jeremy Soller
b0c196d4b9 ec/it*: Add ESPI definitions 2021-01-05 12:17:16 -07:00
Jeremy Soller
87e16205d6 ec/it*/kbc.c: kbc_wait delay is now in microseconds 2021-01-05 12:17:16 -07:00
Evan Lojewski
b4689cb3f1 i2c: Reduce __data usage by switching i2c routines to use the stack.
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)
2020-10-01 10:32:03 -06:00
Evan Lojewski
ba5f1ab55c 8051: Allow up to 64KB firmware images.
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.
2020-10-01 10:32:03 -06:00
Jeremy Soller
99ef48f9c4 Address PR feedback 2020-09-29 19:42:05 -06:00
Jeremy Soller
882dd02e06 Move SROM register definition to ec/scratch.h 2020-09-29 19:42:05 -06:00
Jeremy Soller
fd0bbc53f4 Set limits on SRAM usage 2020-09-29 19:42:05 -06:00
Tim Crawford
5fd9df0ed0 Add SPDX license identifiers
Add license information to files. Mostly automated with:

    find src/ -name '*.[c,h]' | xargs sed -i '1s,^,// SPDX-License-Identifier: GPL-3.0-only\n\n,'
    find src/ -name '*.mk' | xargs sed -i '1s,^,# SPDX-License-Identifier: GPL-3.0-only\n\n,'
2020-09-17 09:17:08 -06:00
Jeremy Soller
834aaf97e4 Hot-pluggable parallel port debugging 2020-07-02 12:53:36 -07:00
Jeremy Soller
39cd014f7b Addw2 support (#67)
* 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
2020-06-04 13:22:59 -06:00
Jeremy Soller
357fae86fc System76 common board directory (#53)
* 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
2020-04-14 17:23:29 -06:00
Jeremy Soller
1194472b8f Add power on after reset flag 2020-04-07 21:11:49 -06:00
Jeremy Soller
dc246237c6 Add a watchdog timer of 10 seconds when using scratch ROM 2020-04-06 14:11:57 -06:00
Jeremy Soller
6cbc7b3ea1 Remove delays from parport_write 2020-03-14 20:39:47 -06:00
Tim Crawford
72b453ebd3 it8587e, it5570e: Implement logging to parport
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.
2020-03-06 11:15:51 -07:00
Jeremy Soller
a90b2a8c67 WIP: kbled control for darp5 2020-02-21 15:38:44 -07:00
Jeremy Soller
ac4d15b395 Use state machine instead of timeout in PMC code 2020-02-17 14:19:05 -07:00
Jeremy Soller
17cce5687f Add TCPM I2C bus and initialize it 2020-02-13 10:34:28 -07:00
Jeremy Soller
c58c5f06d4 Add ECPM definitions 2020-02-04 12:44:29 -07:00
Jeremy Soller
d52683fcb4 Add DAC registers 2020-01-28 14:59:35 -07:00