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
2020-02-26 09:04:40 -07:00
2020-02-16 12:34:20 -07:00
2020-02-20 09:11:47 -07:00
2020-09-29 19:42:05 -06:00
2020-02-20 09:11:47 -07:00
2020-02-27 13:22:10 -07:00
2020-09-29 19:42:05 -06:00
2019-09-27 16:50:44 -06:00
2020-09-17 09:17:08 -06:00
2020-06-17 11:51:08 -06:00
2019-11-05 20:38:27 -07:00
2020-06-17 11:59:55 -06:00

System76 EC

System76 EC is a GPLv3 licensed embedded controller firmware for System76 laptops.

Documentation

Dependencies

The complete set of dependencies can be installed using the deps.sh script from the Open Firmware repo.

Dependencies specific to EC development can be installed with:

sudo apt install \
  avr-libc \
  avrdude \
  gcc-avr \
  sdcc
Description
Readme 2.5 MiB
Languages
C 81.5%
Makefile 9.2%
Rust 8.1%
Shell 1.2%