Default to silent builds, only outputting the file being generated. This
gives output similar to Linux/coreboot output when building. `VERBOSE=1`
can be passed to show the actual commands.
Signed-off-by: Tim Crawford <tcrawford@system76.com>
SDCC supports the `-MMD` option. Use it instead of having every file
depend on *all* the headers. Reduces incremental build time after
modifying headers as it will now only rebuild the actual dependents and
not the entire project.
Signed-off-by: Tim Crawford <tcrawford@system76.com>
Compiling the Arduino targets with GCC 12 fails with the following:
error: array subscript 0 is outside array bounds of 'volatile uint8_t[0]' {aka 'volatile unsigned char[]'} [-Werror=array-bounds]
Apply the workaround from the bug discussion to fix it.
Ref: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105523
Signed-off-by: Tim Crawford <tcrawford@system76.com>
Per the SDCC manual, the object that declares main must be passed first
to the linker. The resulting binary is identical, and this has not
caused a problem yet, so I'm unsure how "required" this is.
Ref: Section 3.2.3 Projects with Multiple Source Files
Signed-off-by: Tim Crawford <tcrawford@system76.com>
Allow specifying asm files the same way C files are added:
board-common-y += foo.asm
The file must use an `.asm` extension. The toolchain file filters the
sources to compile them into objects correctly, as the C compiler
doesn't handle asm files itself.
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>
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>
The arch.mk file contains variables/rules to build, so rename it. Leave
an empty arch.mk so it can still be used in a follow-up commit.
Signed-off-by: Tim Crawford <tcrawford@system76.com>
Replace custom SDCC tool with the more standard binutils tool.
scratch.rom and flash.rom are different (no unnecessary padding), but
resulting ec.rom is the same.
Signed-off-by: Tim Crawford <tcrawford@system76.com>
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>
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>
Use u8 instead of i16 as a delay can never be negative and should never
block for a long period of time.
Use a decrementing loop as SDCC generates more efficient code.
Signed-off-by: Tim Crawford <tcrawford@system76.com>
ROMs produced of Pop!_OS 20.10 and Fedora 33 with SDCC 4.0.0 cause
uecflash to crash after verifying the block write, leaving the system
unbootable until all power is removed to force an EC reset.
Sorting object files appears to resolve this issue, creates a smaller
binary (~200 bytes from 20.04), and gives up more reproducible builds.
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.
* 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