u-boot/board/cadence/xtfpga
Tom Rini 2f8a6db5d8 Finish conversion of CONFIG_SYS_CLK_FREQ to Kconfig
In order to finish moving this symbol to Kconfig for all platforms, we
need to do a few more things.  First, for all platforms that define this
to a function, introduce CONFIG_DYNAMIC_SYS_CLK_FREQ, similar to
CONFIG_DYNAMIC_DDR_CLK_FREQ and populate clock_legacy.h.  This entails
also switching all users from CONFIG_SYS_CLK_FREQ to get_board_sys_clk()
and updating a few preprocessor tests.

With that done, all platforms that define a value here can be converted
to Kconfig, and a fall-back of zero is sufficiently safe to use (and
what is used today in cases where code may or may not have this
available).  Make sure that code which calls this function includes
<clock_legacy.h> to get the prototype.

Signed-off-by: Tom Rini <trini@konsulko.com>
2021-12-27 16:20:18 -05:00
..
Kconfig xtensa: add support for the 'xtfpga' evaluation board 2016-08-15 18:46:40 -04:00
MAINTAINERS xtensa: add support for the 'xtfpga' evaluation board 2016-08-15 18:46:40 -04:00
Makefile SPDX: Convert all of our single license tags to Linux Kernel style 2018-05-07 09:34:12 -04:00
README WS cleanup: remove trailing empty lines 2021-09-30 08:08:56 -04:00
xtfpga.c Finish conversion of CONFIG_SYS_CLK_FREQ to Kconfig 2021-12-27 16:20:18 -05:00

		Tensilica 'xtfpga' Evaluation Boards
		====================================

Tensilica's 'xtfpga' evaluation boards are actually a set of different
boards that share configurations. The following is a list of supported
hardware by this board type:

- XT-AV60  / LX60
- XT-AV110 / LX110
- XT-AV200 / LX200
- ML605
- KC705

All boards provide the following common configurations:

- An Xtensa or Diamond processor core.
- An on-chip-debug (OCD) JTAG interface.
- A 16550 compatible UART and serial port.
- An OpenCores Wishbone 10/100-base-T ethernet interface.
- A 32 char two line LCD display. (except for the LX200)

LX60/LX110/LX200:

- Virtex-4 (XC4VLX60 / XCV4LX200) / Virtext-5 (XC5VLX110)
- 128MB / 64MB (LX60) memory
- 16MB / 4MB (LX60) Linear Flash

ML605

- Virtex-6 (XC6VLX240T)
- 512MB DDR3 memory
- 16MB Linear BPI Flash

KC705 (Xilinx)

- Kintex-7 XC7K325T FPGA
- 1GB DDR3 memory
- 128MB Linear BPI Flash


Setting up the Board
--------------------

The serial port defaults to 115200 baud, no parity and 1 stop bit.
A terminal emulator must be set accordingly to see the U-Boot prompt.


Board Configurations LX60/LX110/LX200/ML605/KC705
-------------------------------------------------

The LX60/LX110/LX200/ML605 contain an 8-way DIP switch that controls
the boot mapping and selects from a range of default ethernet MAC
addresses.

Boot Mapping (DIP switch 8):

    DIP switch 8 maps the system ROM address space (in which the
    reset vector resides) to either SRAM (off, 0, down) or Flash
    (on, 1, up).  This mapping is implemented in the FPGA bitstream
    and cannot be disabled by software, therefore DIP switch 8 is no
    available for application use. Note DIP switch 7 is reserved by
    Tensilica for future possible hardware use.

    Mapping to SRAM allows U-Boot to be debugged with an OCD/JTAG
    tool such as the Xtensa OCD Daemon connected via a suppored probe.
    See the tools documentation for supported probes and how to
    connect them.  Be aware that the board has only 128 KB of SRAM,
    therefore U-Boot must fit within this space to debug an image
    intended for the Flash.  This issues is discussed in a separate
    section toward the end.

    Mapping to flash allows U-Boot to start on reset, provided it
    has been programmed into the first two 64 KB sectors of the Flash.

    The Flash is always mapped at a device (memory mapped I/O) address
    (the address is board specific and is expressed as CFG_FLASH_BASE).
    The device address is used by U-Boot to program the flash, and may
    be used to specify an application to run or U-Boot image to boot.

Default MAC Address (DIP switches 1-6):

    When the board is first powered on, or after the environment has
    been reinitialized, the ethernet MAC address receives a default
    value whose least significant 6 bits come from DIP switches 1-6.
    The default is 00:50:C2:13:6F:xx where xx ranges from 0..3F
    according to the DIP switches, where "on"==1 and "off"==0, and
    switch 1 is the least-significant bit.

    After initial startup, the MAC address is stored in the U-Boot
    environment variable 'ethaddr'. The user may change this to any
    other address with the "setenv" comamnd. After the environment
    has been saved to Flash by the "saveenv" command, this will be
    used and the DIP switches no longer consulted. DIP swithes 1-6
    may then be used for application purposes.

The KC705 board contains 4-way DIP switch, way 1 is the boot mapping
switch and ways 2-4 control the low three bits of the MAC address.


Limitation of SDRAM Size for OCD Debugging on the LX60
------------------------------------------------------

The XT-AV60 board has only 128 KB of SDRAM that can be mapped
to the system ROM address space for debugging a ROM image under
OCD/JTAG. This limits the useful size of U-Boot to 128 KB (0x20000)
or the first 2 sectors of the flash.

This can pose a problem if all the sources are compiled with -O0
for debugging. The code size is then too large, in which case it
would be necessary to temporarily alter the linker script to place
the load addresses (LMA) in the RAM (VMA) so that OCD loads U-Boot
directly there and does not unpack. In practice this is not really
necessary as long as only a limited set of sources need to be
debugged, because the image can still fit into the 128 KB SRAM.

The recommended procedure for debugging is to first build U-Boot
with the default optimization level (-Os), and then touch and
rebuild incrementally with -O0 so that only the touched sources
are recompiled with -O0. To build with -O0, pass it in the KCFLAGS
variable to make.

Because this problem is easy to fall into and difficult to debug
if one doesn't expect it, the linker script provides a link-time
check and fatal error message if the image size exceeds 128 KB.