Commit Graph

6550 Commits

Author SHA1 Message Date
enjoy-digital f22079dc94
Merge pull request #776 from geertu/compiler-warning-fixes
Compiler warning fixes
2021-01-22 09:28:23 +01:00
enjoy-digital e366cf2928
Merge pull request #778 from blakesmith/timer_tests
Add initial core test for Timer
2021-01-22 09:16:59 +01:00
Blake Smith 98b75d8671 Add initial core test for Timer 2021-01-21 21:37:41 -06:00
Florent Kermarrec 4e5f20a060 software/liblitedram: rename Half Sys8x Taps to tCK/4 and display "-" during write calibration when no valid bitstlip found. 2021-01-21 20:00:29 +01:00
Florent Kermarrec 57289dd47c software/liblitedram/write_leveling: display Half Sys8x Taps value before write_leveling. 2021-01-20 09:43:53 +01:00
Florent Kermarrec acb6741b8a software/bios: rename CONFIG_SIM_DISABLE_DELAY to CONFIG_DISABLE_DELAYS and disable timeout on serialboot's check_ack when CONFIG_DISABLE_DELAYS is set.
This is useful in simulation to skip serialboot ack check.
2021-01-20 09:42:29 +01:00
Geert Uytterhoeven 0f28bc489d software/include/base/stdio: Enable printf format strings checks
Now all format issues are fixed, tag all functions taking printf()-style
format specifiers with "__attribute__((format(printf, ...))", enabling
format string checks ("-Wall" includes "-Wformat").

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
2021-01-19 15:03:48 +01:00
Geert Uytterhoeven c3dea1b9fd software: Use "%p" to format pointer values
To fix compiler warnings of the following type:

    warning: format '%x' expects argument of type 'unsigned int', but argument 2 has type 'foo *' [-Wformat=]

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
2021-01-19 15:03:48 +01:00
Geert Uytterhoeven 19e7b53762 software: Use "l" length modifier to format long values
To fix compiler warnings of the following type:

    warning: format '%x' expects argument of type 'unsigned int', but argument has type 'long unsigned int' [-Wformat=]

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
2021-01-19 15:03:48 +01:00
Geert Uytterhoeven a2389c71ea software: Fix cast from pointer to integer of different size warnings
litex/soc/software/liblitesdcard/sdcard.c: In function 'sdcard_read':
    litex/soc/software/liblitesdcard/sdcard.c:476:29: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
      sdblock2mem_dma_base_write((uint64_t) buf);
				 ^
    litex/soc/software/liblitesdcard/sdcard.c: In function 'sdcard_write':
    litex/soc/software/liblitesdcard/sdcard.c:507:30: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
       sdmem2block_dma_base_write((uint64_t) buf);
				  ^

When casting a pointer (32-bit or 64-bit, depending on the platform) to
a 64-bit integer, an intermediate cast to "uintptr_t" should be used to
avoid warnings like the above.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
2021-01-19 15:03:48 +01:00
Geert Uytterhoeven 5474f563c8 software/bios/readline: Use unsigned int for small numbers
There is no need to use "unsigned long" for small numbers related to the
number of characters in a line.  Use "unsigned int" instead.

This allows us to drop the casts when calling putnstr(), and fixes compiler
warnings on 64-bit for callsites where the casts were missing:

    warning: field precision specifier '.*' expects argument of type 'int', but argument 2 has type 'long unsigned int'

Reported-by: Gabriel Somlo <gsomlo@gmail.com>
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
2021-01-19 15:03:48 +01:00
Geert Uytterhoeven ab8cee1b5e software/bios/cmds/cmd_i2c: Use "%zu" to format size_t
The sizeof operator returns "size_t", which is defined to be "unsigned
int" on 32-bit, and "unsigned long" on 64-bit.

Format it using "%zu", to fix compiler warnings of the following type on
64-bit:

    warning: format '%d' expects argument of type 'int', but argument has type 'long unsigned int' [-Wformat=]

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
2021-01-19 15:03:48 +01:00
Geert Uytterhoeven cbd54e7b5c software/bios/cmds/cmd_bios: Make crc command 64-bit clean
On 64-bit:

    litex/soc/software/bios/cmds/cmd_bios.c: In function 'crc_handler':
    litex/soc/software/bios/cmds/cmd_bios.c:110:30: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
      printf("CRC32: %08x", crc32((unsigned char *)addr, length));
				  ^

Fix this by using the appropriate types (uintptr_t and size_t) for
memory addresses and sizes, which are defined to 32-bit or 64-bit,
depending on the platform.

Note that the specified length must still be smaller than 4 GiB on
64-bit, or it will be truncated, as the crc32() function is currently
limited to a 32-bit size anyway.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
2021-01-19 15:03:48 +01:00
Geert Uytterhoeven 857ef69b3f software/bios/boot: Fix cast to pointer from integer of different size warnings
On 64-bit:

    litex/soc/software/bios/boot.c: In function 'serialboot':
    litex/soc/software/bios/boot.c:216:20: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
	 writepointer = (char *) get_uint32(&frame.payload[0]);
			^

When casting from a 32-bit integer to a pointer (32-bit or 64-bit,
depending on the platform), an intermediate cast to "uintptr_t" should
be used to avoid warnings like the above.

Note that using a 32-bit integer is OK, even on 64-bit, as this is
specified by the boot protocol.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
2021-01-19 15:03:48 +01:00
Geert Uytterhoeven 84e3a77724 software/liblitedram: Use "%u" to format uint32_t values
To fix compiler warnings of the following type:

    warning: format '%lu' expects argument of type 'long unsigned int', but argument has type 'unsigned int' [-Wformat=]

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
2021-01-19 15:03:48 +01:00
Geert Uytterhoeven b979e69934 software/libbase: Remove empty printf statements
To fix compiler warnings of the following type:

    warning: zero-length gnu_printf format string [-Wformat-zero-length]

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
2021-01-19 15:03:48 +01:00
Geert Uytterhoeven bff23b8f73 software/libbase/vsnprintf: Prefix pointers by "0x"
Set the PRINTF_SPECIAL flag when printing pointers, so they are prefixed
by "0x", to match glibc behavior.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
2021-01-19 15:03:48 +01:00
Geert Uytterhoeven 91c9192626 software/include/base: Fix size_t, ptrdiff_t, and (u)intptr_t
As per convention, the types of size_t, ptrdiff_t, intptr_t, and
uintptr_t should be based on "long" or "int" depending on the platform
(32-bit or 64-bit).

This fixes compiler warnings of the following type:

    litex/soc/software/liblitesdcard/sdcard.c: In function 'sdcard_read':
    litex/soc/software/liblitesdcard/sdcard.c:476:39: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
      sdblock2mem_dma_base_write((uint64_t)(uintptr_t) buf);
					  ^

Reported-by: Gabriel Somlo <gsomlo@gmail.com>
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
2021-01-19 15:03:48 +01:00
Geert Uytterhoeven 1710c5f1ef software/include/base/limits: Fix ULONG_MAX on 64-bit
The value of ULONG_MAX should depend on the size of "long".

While at it:
  - Add missing "UL" and "U" suffixes to large unsigned values,
  - Make INT_MIN and SHRT_MIN explicitly negative,
  - Use decimal instead of hexadecimal values, for easier comparison
    with /usr/include/limits.h.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
2021-01-19 15:03:48 +01:00
Geert Uytterhoeven e0786c3f94 software/include/base: Check __LP64__ instead of __WORDSIZE
__WORDSIZE is defined by glibc, not by the compiler.  Hence it is never
defined for us, and checking __WORDSIZE to determine the size of "long"
thus causes subtle misbehavings.
Fix this by checking for the presence of __LP64__ instead.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
2021-01-19 14:59:49 +01:00
Florent Kermarrec 41964f945c litex_term/SFL: remove flashing capability.
It's probably better not mixing uploading/flashing utilities. Flashing should be
done with the proper bootloader (as we are doing on Fomu/OrangeCrab for example).
2021-01-18 16:47:47 +01:00
Florent Kermarrec a0bcbeb68b tools/litex_term: fully deprecate --no-crc argument. 2021-01-18 16:34:34 +01:00
Florent Kermarrec 2f5ad47f7a tools/litex_term: fix get_args typo. 2021-01-18 16:30:27 +01:00
Florent Kermarrec 81f4ffafdb build/tools/language_by_filename: add svo to system-verilog extensions. 2021-01-18 16:29:52 +01:00
enjoy-digital 2cb4f513f1
Merge pull request #775 from geertu/i2c-scan-fixes
I2c scan fixes and cleanups
2021-01-15 17:50:20 +01:00
enjoy-digital bf0f0176b3
Merge pull request #774 from antmicro/vex-debug
CPU: Vex: add debug slave for dbg cpu variant
2021-01-15 17:49:33 +01:00
Geert Uytterhoeven dc3306731c software/bios/cmds/cmd_i2c: Simplify upper nibble calculation
Use masking instead of division and multiplication.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
2021-01-15 12:01:08 +01:00
Geert Uytterhoeven 28ed06f1c5 software/bios/cmds/cmd_i2c: Fix i2c_scan output
"i2c_scan" prints random data instead of the intended slave address:

    0x70: 10001ebc -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

instead of:

    0x70: 70 -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

Fix this by adding the missing printf() parameter.

Fixes: ee1ea9baab ("bios/cmd/cmd_i2c: make results similar to Linux's i2cdetect.")
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
2021-01-15 12:01:08 +01:00
Karol Gugala 5d0c5d7088 CPU: Vex: add debug slave for dbg cpu variant
Signed-off-by: Karol Gugala <kgugala@antmicro.com>
2021-01-15 09:28:03 +01:00
Florent Kermarrec b1cad93e62 tools/litex_json2dts: add clock_frequency property to VexRiscv-SMP cpus.
Required by some Linux drivers (SDCard for example).
2021-01-14 14:25:53 +01:00
Florent Kermarrec 50939fdd33 software/liblitedram/sdram_write_leveling: allow external configuration of cdly_range_start and cdly_range_end. 2021-01-14 13:18:10 +01:00
Florent Kermarrec 35a8b498a0 tools/litex_json2dts/sdcard: use sdphy base as csr base.
To be similar with csr base defined used in linux-on-litex-rocket.
2021-01-14 09:28:06 +01:00
Florent Kermarrec 83fb79fb0c tools/litex_term: review/simplify a bit PR #772. 2021-01-13 19:33:29 +01:00
enjoy-digital 9a9f7984ef
Merge pull request #772 from cr1901/lxterm-winfix
Windows fixes for `litex_term`
2021-01-13 19:24:05 +01:00
Florent Kermarrec 737ed9d658 setup: remove litex_simple setup from entry points.
Now provided by LiteX-Boards: https://github.com/litex-hub/litex-boards/blob/master/litex_boards/targets/simple.py
2021-01-12 17:21:26 +01:00
William D. Jones ce243820fe tools/litex_term: Convert some common scan codes into ANSI codes on Windows. 2021-01-11 21:02:37 -05:00
William D. Jones 5babcadbed tools/litex_term: Set ENABLE_VIRTUAL_TERMINAL_PROCESSING flag on Windows. 2021-01-11 19:54:21 -05:00
William D. Jones bfc624f23e tools/litex_term: Avoid importing termios and pty on Windows. 2021-01-11 14:51:55 -05:00
Florent Kermarrec 460fada3ac tools/litex_term: revert LiteXTerm to threading (multiprocessing breaks Windows/OS-X).
Ideally we should switch to AsyncIO as some point.
2021-01-11 19:29:15 +01:00
Florent Kermarrec 1ce194007b software: allow BIOS compilation with UART disabled. 2021-01-08 19:18:44 +01:00
Florent Kermarrec 19fda3364a tools/litex_term: fix 100% cpu load after refactoring (thanks sergpolkin). 2021-01-08 13:57:33 +01:00
Florent Kermarrec 5f9c4a4ab4 soc/cores/gpio: remove intermediate _pads signal. 2021-01-06 21:39:02 +01:00
Florent Kermarrec 0984308318 cores/gpio: add assertion on pads (has to be a Signal).
Due to the bi-directional nature of tristate, Cat is not supported (so also
not platform.request_all).
2021-01-06 09:56:56 +01:00
enjoy-digital 8109806609
Merge pull request #768 from davidlattimore/nx-320kb-ram
Lattice NX: Allow up to 320KB of RAM
2021-01-06 08:55:27 +01:00
David Lattimore 875f34f8e2 Lattice NX: Allow up to 320KB of RAM 2021-01-06 09:45:08 +11:00
Florent Kermarrec 16008d3f3a cpu/vexriscv/cpu-count: fix type and add comment (thanks dayjaby). 2021-01-04 14:43:08 +01:00
Florent Kermarrec f31f9a20f0 boards: remove and switch to litex_boards.
Keeping board definition files directly in LiteX is no longer useful since we are already relying on board
definitions files from LiteX-Boards (https://github.com/litex-hub/litex-boards) in various benches/projects
and having definitions files directly in LiteX creates confusion/additional work.

For projects using board definition files from LiteX, the litex.boards import can just be replaced with litex_boards:

from litex.boards.platforms import kc705

from litex_boards.platforms import kc705
2021-01-04 14:09:35 +01:00
enjoy-digital afbac26e80
Merge pull request #754 from cr1901/picorv32-riscv32
Use riscv32 gcc triples for picorv32- superset of riscv64 triples.
2020-12-31 09:32:31 +01:00
William D. Jones f65491c809 Use riscv32 gcc triples for picorv32- superset of riscv64 triples. 2020-12-31 03:22:56 -05:00
Florent Kermarrec 737952577b Changes: update/release. 2020-12-30 16:49:15 +01:00