2021-12-14 18:36:35 +00:00
|
|
|
config ARCH_MAP_SYSMEM
|
2022-04-06 13:21:25 +00:00
|
|
|
depends on SANDBOX
|
2021-12-14 18:36:35 +00:00
|
|
|
def_bool y
|
|
|
|
|
kbuild: create symbolic link only for ARM, AVR32, SPARC, PowerPC, x86
The symbolic link to SoC/CPU specific header directory is created
during the build, while it is only necessary for ARM, AVR32, SPARC,
x86, and some CPUs of PowerPC. For the other architectures, it just
results in a broken symbolic link.
Introduce CONFIG_CREATE_ARCH_SYMLINK to not create unneeded symbolic
links.
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2015-07-15 11:59:29 +00:00
|
|
|
config CREATE_ARCH_SYMLINK
|
|
|
|
bool
|
|
|
|
|
2016-06-28 01:48:42 +00:00
|
|
|
config HAVE_ARCH_IOREMAP
|
|
|
|
bool
|
|
|
|
|
2021-08-26 15:47:59 +00:00
|
|
|
config SYS_CACHE_SHIFT_4
|
|
|
|
bool
|
|
|
|
|
|
|
|
config SYS_CACHE_SHIFT_5
|
|
|
|
bool
|
|
|
|
|
|
|
|
config SYS_CACHE_SHIFT_6
|
|
|
|
bool
|
|
|
|
|
|
|
|
config SYS_CACHE_SHIFT_7
|
|
|
|
bool
|
|
|
|
|
|
|
|
config SYS_CACHELINE_SIZE
|
|
|
|
int
|
|
|
|
default 128 if SYS_CACHE_SHIFT_7
|
|
|
|
default 64 if SYS_CACHE_SHIFT_6
|
|
|
|
default 32 if SYS_CACHE_SHIFT_5
|
|
|
|
default 16 if SYS_CACHE_SHIFT_4
|
|
|
|
# Fall-back for MIPS
|
|
|
|
default 32 if MIPS
|
|
|
|
|
linker_lists: Fix alignment issue
The linker script uses alphabetic sorting to group the different linker
lists together. Each group has its own struct and potentially its own
alignment. But when the linker packs the structs together it cannot ensure
that a linker list starts on the expected alignment boundary.
For example, if the first list has a struct size of 8 and we place 3 of
them in the image, that means that the next struct will start at offset
0x18 from the start of the linker_list section. If the next struct has
a size of 16 then it will start at an 8-byte aligned offset, but not a
16-byte aligned offset.
With sandbox on x86_64, a reference to a linker list item using
ll_entry_get() can force alignment of that particular linker_list item,
if it is in the same file as the linker_list item is declared.
Consider this example, where struct driver is 0x80 bytes:
ll_entry_declare(struct driver, fred, driver)
...
void *p = ll_entry_get(struct driver, fred, driver)
If these two lines of code are in the same file, then the entry is forced
to be aligned at the 'struct driver' alignment, which is 16 bytes. If the
second line of code is in a different file, then no action is taken, since
the compiler cannot update the alignment of the linker_list item.
In the first case, an 8-byte 'fill' region is added:
.u_boot_list_2_driver_2_testbus_drv
0x0000000000270018 0x80 test/built-in.o
0x0000000000270018 _u_boot_list_2_driver_2_testbus_drv
.u_boot_list_2_driver_2_testfdt1_drv
0x0000000000270098 0x80 test/built-in.o
0x0000000000270098 _u_boot_list_2_driver_2_testfdt1_drv
*fill* 0x0000000000270118 0x8
.u_boot_list_2_driver_2_testfdt_drv
0x0000000000270120 0x80 test/built-in.o
0x0000000000270120 _u_boot_list_2_driver_2_testfdt_drv
.u_boot_list_2_driver_2_testprobe_drv
0x00000000002701a0 0x80 test/built-in.o
0x00000000002701a0 _u_boot_list_2_driver_2_testprobe_drv
With this, the linker_list no-longer works since items after testfdt1_drv
are not at the expected address.
Ideally we would have a way to tell gcc not to align structs in this way.
It is not clear how we could do this, and in any case it would require us
to adjust every struct used by the linker_list feature.
One possible fix is to force each separate linker_list to start on the
largest possible boundary that can be required by the compiler. However
that does not seem to work on x86_64, which uses 16-byte alignment in this
case but needs 32-byte alignment.
So add a Kconfig option to handle this. Set the default value to 4 so
as to avoid changing platforms that don't need it.
Update the ll_entry_start() accordingly.
Signed-off-by: Simon Glass <sjg@chromium.org>
2020-12-17 04:20:06 +00:00
|
|
|
config LINKER_LIST_ALIGN
|
|
|
|
int
|
|
|
|
default 32 if SANDBOX
|
|
|
|
default 8 if ARM64 || X86
|
|
|
|
default 4
|
|
|
|
help
|
|
|
|
Force the each linker list to be aligned to this boundary. This
|
|
|
|
is required if ll_entry_get() is used, since otherwise the linker
|
|
|
|
may add padding into the table, thus breaking it.
|
|
|
|
See linker_lists.rst for full details.
|
|
|
|
|
2014-07-30 05:08:15 +00:00
|
|
|
choice
|
|
|
|
prompt "Architecture select"
|
|
|
|
default SANDBOX
|
|
|
|
|
|
|
|
config ARC
|
|
|
|
bool "ARC architecture"
|
2018-07-23 13:55:13 +00:00
|
|
|
select ARC_TIMER
|
2017-03-21 11:49:49 +00:00
|
|
|
select CLK
|
2020-08-19 08:44:20 +00:00
|
|
|
select DM
|
2018-07-23 13:55:13 +00:00
|
|
|
select HAVE_PRIVATE_LIBGCC
|
|
|
|
select SUPPORT_OF_CONTROL
|
2021-08-26 15:47:59 +00:00
|
|
|
select SYS_CACHE_SHIFT_7
|
2017-03-21 11:49:49 +00:00
|
|
|
select TIMER
|
2022-08-01 01:08:23 +00:00
|
|
|
select SYS_BIG_ENDIAN if CPU_BIG_ENDIAN
|
|
|
|
select SYS_LITTLE_ENDIAN if !CPU_BIG_ENDIAN
|
2014-07-30 05:08:15 +00:00
|
|
|
|
|
|
|
config ARM
|
|
|
|
bool "ARM architecture"
|
2021-05-20 11:24:22 +00:00
|
|
|
select ARCH_SUPPORTS_LTO
|
kbuild: create symbolic link only for ARM, AVR32, SPARC, PowerPC, x86
The symbolic link to SoC/CPU specific header directory is created
during the build, while it is only necessary for ARM, AVR32, SPARC,
x86, and some CPUs of PowerPC. For the other architectures, it just
results in a broken symbolic link.
Introduce CONFIG_CREATE_ARCH_SYMLINK to not create unneeded symbolic
links.
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2015-07-15 11:59:29 +00:00
|
|
|
select CREATE_ARCH_SYMLINK
|
2015-07-03 07:13:09 +00:00
|
|
|
select HAVE_PRIVATE_LIBGCC if !ARM64
|
2021-12-01 16:02:38 +00:00
|
|
|
select SUPPORT_ACPI
|
2014-09-22 10:59:05 +00:00
|
|
|
select SUPPORT_OF_CONTROL
|
2014-07-30 05:08:15 +00:00
|
|
|
|
|
|
|
config M68K
|
|
|
|
bool "M68000 architecture"
|
2015-12-06 16:47:59 +00:00
|
|
|
select HAVE_PRIVATE_LIBGCC
|
2023-02-07 22:45:03 +00:00
|
|
|
select USE_PRIVATE_LIBGCC
|
2020-11-04 14:33:20 +00:00
|
|
|
select NEEDS_MANUAL_RELOC
|
2018-01-22 23:17:10 +00:00
|
|
|
select SYS_BOOT_GET_CMDLINE
|
|
|
|
select SYS_BOOT_GET_KBD
|
2021-08-26 15:47:59 +00:00
|
|
|
select SYS_CACHE_SHIFT_4
|
2019-03-13 20:46:51 +00:00
|
|
|
select SUPPORT_OF_CONTROL
|
2014-07-30 05:08:15 +00:00
|
|
|
|
|
|
|
config MICROBLAZE
|
|
|
|
bool "MicroBlaze architecture"
|
2014-09-22 10:59:05 +00:00
|
|
|
select SUPPORT_OF_CONTROL
|
2022-06-24 12:16:32 +00:00
|
|
|
imply CMD_TIMER
|
|
|
|
imply SPL_REGMAP if SPL
|
|
|
|
imply SPL_TIMER if SPL
|
|
|
|
imply TIMER
|
|
|
|
imply XILINX_TIMER
|
2014-07-30 05:08:15 +00:00
|
|
|
|
|
|
|
config MIPS
|
|
|
|
bool "MIPS architecture"
|
2016-06-28 01:48:42 +00:00
|
|
|
select HAVE_ARCH_IOREMAP
|
2014-10-23 16:30:43 +00:00
|
|
|
select HAVE_PRIVATE_LIBGCC
|
2015-12-19 19:20:48 +00:00
|
|
|
select SUPPORT_OF_CONTROL
|
2022-04-12 14:59:04 +00:00
|
|
|
select SPL_SEPARATE_BSS if SPL
|
2014-07-30 05:08:15 +00:00
|
|
|
|
|
|
|
config NIOS2
|
|
|
|
bool "Nios II architecture"
|
2015-10-21 13:34:57 +00:00
|
|
|
select CPU
|
2018-07-23 13:55:13 +00:00
|
|
|
select DM
|
2023-01-16 20:46:49 +00:00
|
|
|
select DM_EVENT
|
2018-07-23 13:55:13 +00:00
|
|
|
select OF_CONTROL
|
|
|
|
select SUPPORT_OF_CONTROL
|
2018-07-23 13:55:14 +00:00
|
|
|
imply CMD_DM
|
2014-07-30 05:08:15 +00:00
|
|
|
|
|
|
|
config PPC
|
|
|
|
bool "PowerPC architecture"
|
2014-10-23 16:30:43 +00:00
|
|
|
select HAVE_PRIVATE_LIBGCC
|
2015-02-07 18:51:35 +00:00
|
|
|
select SUPPORT_OF_CONTROL
|
2018-01-22 23:17:10 +00:00
|
|
|
select SYS_BOOT_GET_CMDLINE
|
|
|
|
select SYS_BOOT_GET_KBD
|
2014-07-30 05:08:15 +00:00
|
|
|
|
2017-12-26 05:55:58 +00:00
|
|
|
config RISCV
|
2018-09-26 13:55:06 +00:00
|
|
|
bool "RISC-V architecture"
|
2019-02-25 08:14:04 +00:00
|
|
|
select CREATE_ARCH_SYMLINK
|
2017-12-26 05:55:58 +00:00
|
|
|
select SUPPORT_OF_CONTROL
|
2018-09-26 13:55:19 +00:00
|
|
|
select OF_CONTROL
|
|
|
|
select DM
|
2023-01-16 20:46:49 +00:00
|
|
|
select DM_EVENT
|
2022-11-16 07:08:39 +00:00
|
|
|
imply SPL_SEPARATE_BSS if SPL
|
2018-09-26 13:55:20 +00:00
|
|
|
imply DM_SERIAL
|
|
|
|
imply DM_MMC
|
|
|
|
imply DM_SPI
|
|
|
|
imply DM_SPI_FLASH
|
|
|
|
imply BLK
|
|
|
|
imply CLK
|
|
|
|
imply MTD
|
|
|
|
imply TIMER
|
2018-09-26 13:55:19 +00:00
|
|
|
imply CMD_DM
|
2019-08-21 19:14:45 +00:00
|
|
|
imply SPL_DM
|
|
|
|
imply SPL_OF_CONTROL
|
|
|
|
imply SPL_LIBCOMMON_SUPPORT
|
|
|
|
imply SPL_LIBGENERIC_SUPPORT
|
2021-08-08 18:20:12 +00:00
|
|
|
imply SPL_SERIAL
|
2019-08-21 19:14:45 +00:00
|
|
|
imply SPL_TIMER
|
2017-12-26 05:55:58 +00:00
|
|
|
|
2014-07-30 05:08:15 +00:00
|
|
|
config SANDBOX
|
|
|
|
bool "Sandbox"
|
2021-05-20 11:24:07 +00:00
|
|
|
select ARCH_SUPPORTS_LTO
|
2017-01-23 00:43:11 +00:00
|
|
|
select BOARD_LATE_INIT
|
2020-05-22 12:07:38 +00:00
|
|
|
select BZIP2
|
2020-10-27 19:29:22 +00:00
|
|
|
select CMD_POWEROFF
|
dm: select CONFIG_DM* options
As mentioned in the previous commit, adding default values in each
Kconfig causes problems because it does not co-exist with the
"depends on" syntax. (Please note this is not a bug of Kconfig.)
We should not do so unless we have a special reason. Actually,
for CONFIG_DM*, we have no good reason to do so.
Generally, CONFIG_DM is not a user-configurable option. Once we
convert a driver into Driver Model, the board only works with Driver
Model, i.e. CONFIG_DM must be always enabled for that board.
So, using "select DM" is more suitable rather than allowing users to
modify it. Another good thing is, Kconfig warns unmet dependencies
for "select" syntax, so we easily notice bugs.
Actually, CONFIG_DM and other related options have been added
without consistency: some into arch/*/Kconfig, some into
board/*/Kconfig, and some into configs/*_defconfig.
This commit prefers "select" and cleans up the following issues.
[1] Never use "CONFIG_DM=n" in defconfig files
It is really rare to add "CONFIG_FOO=n" to disable CONFIG options.
It is more common to use "# CONFIG_FOO is not set". But here, we
do not even have to do it.
Less than half of OMAP3 boards have been converted to Driver Model.
Adding the default values to arch/arm/cpu/armv7/omap3/Kconfig is
weird. Instead, add "select DM" only to appropriate boards, which
eventually eliminates "CONFIG_DM=n", etc.
[2] Delete redundant CONFIGs
Sandbox sets CONFIG_DM in arch/sandbox/Kconfig and defines it again
in configs/sandbox_defconfig.
Likewise, OMAP3 sets CONFIG_DM arch/arm/cpu/armv7/omap3/Kconfig and
defines it also in omap3_beagle_defconfig and devkit8000_defconfig.
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
2015-03-31 03:47:53 +00:00
|
|
|
select DM
|
2023-01-16 20:46:49 +00:00
|
|
|
select DM_EVENT
|
2022-05-30 10:00:12 +00:00
|
|
|
select DM_FUZZING_ENGINE
|
2018-07-23 13:55:13 +00:00
|
|
|
select DM_GPIO
|
|
|
|
select DM_I2C
|
2016-09-08 09:47:35 +00:00
|
|
|
select DM_KEYBOARD
|
2018-07-23 13:55:13 +00:00
|
|
|
select DM_MMC
|
dm: select CONFIG_DM* options
As mentioned in the previous commit, adding default values in each
Kconfig causes problems because it does not co-exist with the
"depends on" syntax. (Please note this is not a bug of Kconfig.)
We should not do so unless we have a special reason. Actually,
for CONFIG_DM*, we have no good reason to do so.
Generally, CONFIG_DM is not a user-configurable option. Once we
convert a driver into Driver Model, the board only works with Driver
Model, i.e. CONFIG_DM must be always enabled for that board.
So, using "select DM" is more suitable rather than allowing users to
modify it. Another good thing is, Kconfig warns unmet dependencies
for "select" syntax, so we easily notice bugs.
Actually, CONFIG_DM and other related options have been added
without consistency: some into arch/*/Kconfig, some into
board/*/Kconfig, and some into configs/*_defconfig.
This commit prefers "select" and cleans up the following issues.
[1] Never use "CONFIG_DM=n" in defconfig files
It is really rare to add "CONFIG_FOO=n" to disable CONFIG options.
It is more common to use "# CONFIG_FOO is not set". But here, we
do not even have to do it.
Less than half of OMAP3 boards have been converted to Driver Model.
Adding the default values to arch/arm/cpu/armv7/omap3/Kconfig is
weird. Instead, add "select DM" only to appropriate boards, which
eventually eliminates "CONFIG_DM=n", etc.
[2] Delete redundant CONFIGs
Sandbox sets CONFIG_DM in arch/sandbox/Kconfig and defines it again
in configs/sandbox_defconfig.
Likewise, OMAP3 sets CONFIG_DM arch/arm/cpu/armv7/omap3/Kconfig and
defines it also in omap3_beagle_defconfig and devkit8000_defconfig.
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
2015-03-31 03:47:53 +00:00
|
|
|
select DM_SERIAL
|
|
|
|
select DM_SPI
|
2018-07-23 13:55:13 +00:00
|
|
|
select DM_SPI_FLASH
|
2020-05-22 12:07:38 +00:00
|
|
|
select GZIP_COMPRESSED
|
2022-11-19 23:45:23 +00:00
|
|
|
select IO_TRACE
|
2017-07-22 22:36:16 +00:00
|
|
|
select LZO
|
2020-03-14 11:13:40 +00:00
|
|
|
select OF_BOARD_SETUP
|
2019-04-27 08:15:23 +00:00
|
|
|
select PCI_ENDPOINT
|
2018-07-23 13:55:13 +00:00
|
|
|
select SPI
|
|
|
|
select SUPPORT_OF_CONTROL
|
2020-10-27 19:29:22 +00:00
|
|
|
select SYSRESET_CMD_POWEROFF
|
2021-08-26 15:47:59 +00:00
|
|
|
select SYS_CACHE_SHIFT_4
|
2021-03-08 15:48:16 +00:00
|
|
|
select IRQ
|
2021-05-04 17:31:23 +00:00
|
|
|
select SUPPORT_EXTENSION_SCAN
|
2021-12-01 16:02:36 +00:00
|
|
|
select SUPPORT_ACPI
|
2018-08-03 06:58:03 +00:00
|
|
|
imply BITREVERSE
|
2018-11-16 01:43:53 +00:00
|
|
|
select BLOBLIST
|
2021-05-20 11:24:08 +00:00
|
|
|
imply LTO
|
2018-07-23 13:55:14 +00:00
|
|
|
imply CMD_DM
|
2020-11-11 23:29:59 +00:00
|
|
|
imply CMD_EXCEPTION
|
2017-05-17 09:25:44 +00:00
|
|
|
imply CMD_GETTIME
|
2017-05-17 09:25:25 +00:00
|
|
|
imply CMD_HASH
|
2017-05-17 09:25:34 +00:00
|
|
|
imply CMD_IO
|
2017-05-17 09:25:36 +00:00
|
|
|
imply CMD_IOTRACE
|
2017-05-17 09:25:43 +00:00
|
|
|
imply CMD_LZMADEC
|
2019-05-29 21:01:28 +00:00
|
|
|
imply CMD_SF
|
2018-07-23 13:55:13 +00:00
|
|
|
imply CMD_SF_TEST
|
2017-06-02 15:03:50 +00:00
|
|
|
imply CRC32_VERIFY
|
|
|
|
imply FAT_WRITE
|
2018-09-19 10:43:46 +00:00
|
|
|
imply FIRMWARE
|
2022-05-30 10:00:12 +00:00
|
|
|
imply FUZZING_ENGINE_SANDBOX
|
2017-05-19 16:26:58 +00:00
|
|
|
imply HASH_VERIFY
|
2017-06-02 15:03:50 +00:00
|
|
|
imply LZMA
|
2018-09-25 14:40:17 +00:00
|
|
|
imply TEE
|
2018-09-25 14:40:23 +00:00
|
|
|
imply AVB_VERIFY
|
|
|
|
imply LIBAVB
|
|
|
|
imply CMD_AVB
|
2022-01-16 12:04:06 +00:00
|
|
|
imply PARTITION_TYPE_GUID
|
2021-02-14 15:27:27 +00:00
|
|
|
imply SCP03
|
|
|
|
imply CMD_SCP03
|
2018-09-25 14:40:23 +00:00
|
|
|
imply UDP_FUNCTION_FASTBOOT
|
2018-10-15 09:21:26 +00:00
|
|
|
imply VIRTIO_MMIO
|
|
|
|
imply VIRTIO_PCI
|
|
|
|
imply VIRTIO_SANDBOX
|
|
|
|
imply VIRTIO_BLK
|
|
|
|
imply VIRTIO_NET
|
2018-12-10 17:37:31 +00:00
|
|
|
imply DM_SOUND
|
2019-04-27 08:15:23 +00:00
|
|
|
imply PCI_SANDBOX_EP
|
2019-02-17 03:24:49 +00:00
|
|
|
imply PCH
|
2019-06-03 16:12:28 +00:00
|
|
|
imply PHYLIB
|
|
|
|
imply DM_MDIO
|
2019-07-12 07:13:53 +00:00
|
|
|
imply DM_MDIO_MUX
|
2023-05-04 22:54:57 +00:00
|
|
|
imply ACPI
|
2019-12-07 04:41:54 +00:00
|
|
|
imply ACPI_PMC
|
|
|
|
imply ACPI_PMC_SANDBOX
|
|
|
|
imply CMD_PMC
|
2020-07-02 04:01:21 +00:00
|
|
|
imply CMD_CLONE
|
2020-11-05 17:33:38 +00:00
|
|
|
imply SILENT_CONSOLE
|
2020-11-05 17:33:48 +00:00
|
|
|
imply BOOTARGS_SUBST
|
sandbox: Add a DSA sandbox driver and unit test
The DSA sandbox driver is used for unit testing the DSA class code.
It implements a simple 2 port switch plus 1 CPU port, and uses a
very simple tag to identify the ports.
The DSA sandbox device is connected via CPU port to a regular Ethernet
sandbox device, called 'dsa-test-eth, managed by the existing eth
sandbox driver. The 'dsa-test-eth' is not intended for testing the
eth class code however, but it is used to emulate traffic through the
'lan0' and 'lan1' front pannel switch ports. To achieve this the dsa
sandbox driver registers a tx handler for the 'dsa-test-eth' device.
The switch ports, labeled as 'lan0' and 'lan1', are also registered
as eth devices by the dsa class code this time. So pinging through
these switch ports is as easy as:
=> setenv ethact lan0
=> ping 1.2.3.5
Unit tests for the dsa class code were also added. The 'dsa_probe'
test exercises most API functions from dsa.h. The 'dsa' unit test
simply exercises ARP/ICMP traffic through the two switch ports,
including tag injection and extraction, with the help of the dsa
sandbox driver.
I took care to minimize the impact on the existing eth unit tests,
though some adjustments needed to be made with the addition of
extra eth interfaces used by the dsa unit tests. The additional eth
interfaces also require MAC addresses, these have been added to the
sandbox default environment.
Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com>
Signed-off-by: Claudiu Manoil <claudiu.manoil@nxp.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Message-Id: <20210216224804.3355044-5-olteanv@gmail.com>
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Priyanka Jain <priyanka.jain@nxp.com>
2021-03-14 12:14:57 +00:00
|
|
|
imply PHY_FIXED
|
|
|
|
imply DM_DSA
|
2021-05-04 17:31:23 +00:00
|
|
|
imply CMD_EXTENSION
|
2021-11-24 16:26:44 +00:00
|
|
|
imply KEYBOARD
|
2021-11-24 16:26:42 +00:00
|
|
|
imply PHYSMEM
|
2021-12-01 16:02:43 +00:00
|
|
|
imply GENERATE_ACPI_TABLE
|
2022-03-28 20:56:53 +00:00
|
|
|
imply BINMAN
|
2014-07-30 05:08:15 +00:00
|
|
|
|
|
|
|
config SH
|
|
|
|
bool "SuperH architecture"
|
2014-10-23 16:30:43 +00:00
|
|
|
select HAVE_PRIVATE_LIBGCC
|
2019-08-31 16:27:58 +00:00
|
|
|
select SUPPORT_OF_CONTROL
|
2014-07-30 05:08:15 +00:00
|
|
|
|
|
|
|
config X86
|
|
|
|
bool "x86 architecture"
|
2019-04-26 03:58:45 +00:00
|
|
|
select SUPPORT_SPL
|
|
|
|
select SUPPORT_TPL
|
kbuild: create symbolic link only for ARM, AVR32, SPARC, PowerPC, x86
The symbolic link to SoC/CPU specific header directory is created
during the build, while it is only necessary for ARM, AVR32, SPARC,
x86, and some CPUs of PowerPC. For the other architectures, it just
results in a broken symbolic link.
Introduce CONFIG_CREATE_ARCH_SYMLINK to not create unneeded symbolic
links.
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
2015-07-15 11:59:29 +00:00
|
|
|
select CREATE_ARCH_SYMLINK
|
dm: select CONFIG_DM* options
As mentioned in the previous commit, adding default values in each
Kconfig causes problems because it does not co-exist with the
"depends on" syntax. (Please note this is not a bug of Kconfig.)
We should not do so unless we have a special reason. Actually,
for CONFIG_DM*, we have no good reason to do so.
Generally, CONFIG_DM is not a user-configurable option. Once we
convert a driver into Driver Model, the board only works with Driver
Model, i.e. CONFIG_DM must be always enabled for that board.
So, using "select DM" is more suitable rather than allowing users to
modify it. Another good thing is, Kconfig warns unmet dependencies
for "select" syntax, so we easily notice bugs.
Actually, CONFIG_DM and other related options have been added
without consistency: some into arch/*/Kconfig, some into
board/*/Kconfig, and some into configs/*_defconfig.
This commit prefers "select" and cleans up the following issues.
[1] Never use "CONFIG_DM=n" in defconfig files
It is really rare to add "CONFIG_FOO=n" to disable CONFIG options.
It is more common to use "# CONFIG_FOO is not set". But here, we
do not even have to do it.
Less than half of OMAP3 boards have been converted to Driver Model.
Adding the default values to arch/arm/cpu/armv7/omap3/Kconfig is
weird. Instead, add "select DM" only to appropriate boards, which
eventually eliminates "CONFIG_DM=n", etc.
[2] Delete redundant CONFIGs
Sandbox sets CONFIG_DM in arch/sandbox/Kconfig and defines it again
in configs/sandbox_defconfig.
Likewise, OMAP3 sets CONFIG_DM arch/arm/cpu/armv7/omap3/Kconfig and
defines it also in omap3_beagle_defconfig and devkit8000_defconfig.
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
2015-03-31 03:47:53 +00:00
|
|
|
select DM
|
2018-10-15 09:21:16 +00:00
|
|
|
select HAVE_ARCH_IOMAP
|
2018-07-23 13:55:13 +00:00
|
|
|
select HAVE_PRIVATE_LIBGCC
|
|
|
|
select OF_CONTROL
|
2017-07-30 13:23:16 +00:00
|
|
|
select PCI
|
2021-12-01 16:02:36 +00:00
|
|
|
select SUPPORT_ACPI
|
2018-07-23 13:55:13 +00:00
|
|
|
select SUPPORT_OF_CONTROL
|
2021-08-26 15:47:59 +00:00
|
|
|
select SYS_CACHE_SHIFT_6
|
2017-07-30 13:23:07 +00:00
|
|
|
select TIMER
|
2018-07-23 13:55:13 +00:00
|
|
|
select USE_PRIVATE_LIBGCC
|
2017-07-30 13:23:07 +00:00
|
|
|
select X86_TSC_TIMER
|
2021-03-08 15:48:15 +00:00
|
|
|
select IRQ
|
2020-07-19 19:55:52 +00:00
|
|
|
imply HAS_ROM if X86_RESET_VECTOR
|
2017-07-31 02:24:02 +00:00
|
|
|
imply BLK
|
2018-07-23 13:55:14 +00:00
|
|
|
imply CMD_DM
|
2018-07-23 13:55:13 +00:00
|
|
|
imply CMD_FPGA_LOADMK
|
|
|
|
imply CMD_GETTIME
|
|
|
|
imply CMD_IO
|
|
|
|
imply CMD_IRQ
|
|
|
|
imply CMD_PCI
|
2019-05-29 21:01:28 +00:00
|
|
|
imply CMD_SF
|
2018-07-23 13:55:13 +00:00
|
|
|
imply CMD_SF_TEST
|
|
|
|
imply CMD_ZBOOT
|
2017-07-30 13:23:16 +00:00
|
|
|
imply DM_GPIO
|
|
|
|
imply DM_KEYBOARD
|
2017-07-31 02:24:01 +00:00
|
|
|
imply DM_MMC
|
2017-07-30 13:23:16 +00:00
|
|
|
imply DM_RTC
|
2017-07-31 02:24:02 +00:00
|
|
|
imply DM_SCSI
|
2018-07-23 13:55:13 +00:00
|
|
|
imply DM_SERIAL
|
2017-07-30 13:23:16 +00:00
|
|
|
imply DM_SPI
|
|
|
|
imply DM_SPI_FLASH
|
|
|
|
imply DM_USB
|
2022-10-18 13:46:31 +00:00
|
|
|
imply VIDEO
|
2018-07-19 10:07:33 +00:00
|
|
|
imply SYSRESET
|
2019-04-02 12:41:25 +00:00
|
|
|
imply SPL_SYSRESET
|
2018-07-19 10:07:33 +00:00
|
|
|
imply SYSRESET_X86
|
2017-08-28 08:50:46 +00:00
|
|
|
imply USB_ETHER_ASIX
|
|
|
|
imply USB_ETHER_SMSC95XX
|
2018-07-23 13:55:13 +00:00
|
|
|
imply USB_HOST_ETHER
|
2019-02-17 03:24:49 +00:00
|
|
|
imply PCH
|
2021-11-24 16:26:42 +00:00
|
|
|
imply PHYSMEM
|
2019-05-02 16:52:24 +00:00
|
|
|
imply RTC_MC146818
|
2023-05-04 22:54:57 +00:00
|
|
|
imply ACPI
|
2021-12-01 16:02:39 +00:00
|
|
|
imply ACPIGEN if !QEMU && !EFI_APP
|
2020-11-05 13:32:17 +00:00
|
|
|
imply SYSINFO if GENERATE_SMBIOS_TABLE
|
|
|
|
imply SYSINFO_SMBIOS if GENERATE_SMBIOS_TABLE
|
2021-12-18 18:27:50 +00:00
|
|
|
imply TIMESTAMP
|
2014-07-30 05:08:15 +00:00
|
|
|
|
2019-04-26 03:58:45 +00:00
|
|
|
# Thing to enable for when SPL/TPL are enabled: SPL
|
|
|
|
imply SPL_DM
|
|
|
|
imply SPL_OF_LIBFDT
|
2021-07-11 03:14:31 +00:00
|
|
|
imply SPL_DRIVERS_MISC
|
2021-07-11 03:14:30 +00:00
|
|
|
imply SPL_GPIO
|
2019-12-07 04:42:51 +00:00
|
|
|
imply SPL_PINCTRL
|
2019-04-26 03:58:45 +00:00
|
|
|
imply SPL_LIBCOMMON_SUPPORT
|
|
|
|
imply SPL_LIBGENERIC_SUPPORT
|
2021-08-08 18:20:12 +00:00
|
|
|
imply SPL_SERIAL
|
2019-04-26 03:58:45 +00:00
|
|
|
imply SPL_SPI_FLASH_SUPPORT
|
2021-08-08 18:20:14 +00:00
|
|
|
imply SPL_SPI
|
2019-04-26 03:58:45 +00:00
|
|
|
imply SPL_OF_CONTROL
|
|
|
|
imply SPL_TIMER
|
|
|
|
imply SPL_REGMAP
|
|
|
|
imply SPL_SYSCON
|
|
|
|
# TPL
|
|
|
|
imply TPL_DM
|
2021-07-11 03:14:31 +00:00
|
|
|
imply TPL_DRIVERS_MISC
|
2021-07-11 03:14:30 +00:00
|
|
|
imply TPL_GPIO
|
2019-12-07 04:42:51 +00:00
|
|
|
imply TPL_PINCTRL
|
2019-04-26 03:58:45 +00:00
|
|
|
imply TPL_LIBCOMMON_SUPPORT
|
|
|
|
imply TPL_LIBGENERIC_SUPPORT
|
2021-08-08 18:20:12 +00:00
|
|
|
imply TPL_SERIAL
|
2019-04-26 03:58:45 +00:00
|
|
|
imply TPL_OF_CONTROL
|
|
|
|
imply TPL_TIMER
|
|
|
|
imply TPL_REGMAP
|
|
|
|
imply TPL_SYSCON
|
|
|
|
|
2016-08-10 15:36:44 +00:00
|
|
|
config XTENSA
|
|
|
|
bool "Xtensa architecture"
|
|
|
|
select CREATE_ARCH_SYMLINK
|
|
|
|
select SUPPORT_OF_CONTROL
|
|
|
|
|
2014-07-30 05:08:15 +00:00
|
|
|
endchoice
|
|
|
|
|
2014-09-13 18:01:48 +00:00
|
|
|
config SYS_ARCH
|
|
|
|
string
|
|
|
|
help
|
|
|
|
This option should contain the architecture name to build the
|
|
|
|
appropriate arch/<CONFIG_SYS_ARCH> directory.
|
|
|
|
All the architectures should specify this option correctly.
|
|
|
|
|
|
|
|
config SYS_CPU
|
|
|
|
string
|
|
|
|
help
|
|
|
|
This option should contain the CPU name to build the correct
|
|
|
|
arch/<CONFIG_SYS_ARCH>/cpu/<CONFIG_SYS_CPU> directory.
|
|
|
|
|
|
|
|
This is optional. For those targets without the CPU directory,
|
|
|
|
leave this option empty.
|
|
|
|
|
|
|
|
config SYS_SOC
|
|
|
|
string
|
|
|
|
help
|
|
|
|
This option should contain the SoC name to build the directory
|
|
|
|
arch/<CONFIG_SYS_ARCH>/cpu/<CONFIG_SYS_CPU>/<CONFIG_SYS_SOC>.
|
|
|
|
|
|
|
|
This is optional. For those targets without the SoC directory,
|
|
|
|
leave this option empty.
|
|
|
|
|
|
|
|
config SYS_VENDOR
|
|
|
|
string
|
|
|
|
help
|
|
|
|
This option should contain the vendor name of the target board.
|
|
|
|
If it is set and
|
|
|
|
board/<CONFIG_SYS_VENDOR>/common/Makefile exists, the vendor common
|
|
|
|
directory is compiled.
|
|
|
|
If CONFIG_SYS_BOARD is also set, the sources under
|
|
|
|
board/<CONFIG_SYS_VENDOR>/<CONFIG_SYS_BOARD> directory are compiled.
|
|
|
|
|
|
|
|
This is optional. For those targets without the vendor directory,
|
|
|
|
leave this option empty.
|
|
|
|
|
|
|
|
config SYS_BOARD
|
|
|
|
string
|
|
|
|
help
|
|
|
|
This option should contain the name of the target board.
|
|
|
|
If it is set, either board/<CONFIG_SYS_VENDOR>/<CONFIG_SYS_BOARD>
|
|
|
|
or board/<CONFIG_SYS_BOARD> directory is compiled depending on
|
|
|
|
whether CONFIG_SYS_VENDOR is set or not.
|
|
|
|
|
|
|
|
This is optional. For those targets without the board directory,
|
|
|
|
leave this option empty.
|
|
|
|
|
|
|
|
config SYS_CONFIG_NAME
|
|
|
|
string
|
|
|
|
help
|
|
|
|
This option should contain the base name of board header file.
|
|
|
|
The header file include/configs/<CONFIG_SYS_CONFIG_NAME>.h
|
|
|
|
should be included from include/config.h.
|
|
|
|
|
2019-04-22 16:13:32 +00:00
|
|
|
config SYS_DISABLE_DCACHE_OPS
|
|
|
|
bool
|
|
|
|
help
|
|
|
|
This option disables dcache flush and dcache invalidation
|
|
|
|
operations. For example, on coherent systems where cache
|
|
|
|
operatios are not required, enable this option to avoid them.
|
|
|
|
Note that, its up to the individual architectures to implement
|
|
|
|
this functionality.
|
|
|
|
|
2021-12-13 03:12:30 +00:00
|
|
|
config SYS_IMMR
|
2022-03-30 13:30:15 +00:00
|
|
|
hex "Address for the Internal Memory-Mapped Registers (IMMR) window"
|
2021-12-13 03:12:30 +00:00
|
|
|
depends on PPC || FSL_LSCH2 || FSL_LSCH3 || ARCH_LS1021A
|
|
|
|
default 0xFF000000 if MPC8xx
|
|
|
|
default 0xF0000000 if ARCH_MPC8313
|
|
|
|
default 0xE0000000 if MPC83xx && !ARCH_MPC8313
|
|
|
|
default 0x01000000 if ARCH_LS1021A || FSL_LSCH2 || FSL_LSCH3
|
2022-05-02 16:29:25 +00:00
|
|
|
default 0xFFE00000 if ARCH_P1010 || ARCH_P1011 || ARCH_P1020 || \
|
|
|
|
ARCH_P1021 || ARCH_P1024 || ARCH_P1025 || \
|
|
|
|
ARCH_P2020
|
2021-12-13 03:12:30 +00:00
|
|
|
default SYS_CCSRBAR_DEFAULT
|
|
|
|
help
|
|
|
|
Address for the Internal Memory-Mapped Registers (IMMR) window used
|
|
|
|
to configure the features of many Freescale / NXP SoCs.
|
|
|
|
|
2022-12-02 21:42:36 +00:00
|
|
|
config MONITOR_IS_IN_RAM
|
|
|
|
bool "U-Boot is loaded in to RAM by a pre-loader"
|
|
|
|
depends on M68K || NIOS2
|
|
|
|
|
2022-12-30 18:41:28 +00:00
|
|
|
menu "Skipping low level initialization functions"
|
2022-04-06 13:21:25 +00:00
|
|
|
depends on ARM || MIPS || RISCV
|
2022-12-30 18:41:28 +00:00
|
|
|
|
|
|
|
config SKIP_LOWLEVEL_INIT
|
|
|
|
bool "Skip calls to certain low level initialization functions"
|
2021-08-28 01:18:30 +00:00
|
|
|
help
|
|
|
|
If enabled, then certain low level initializations (like setting up
|
|
|
|
the memory controller) are omitted and/or U-Boot does not relocate
|
|
|
|
itself into RAM.
|
|
|
|
Normally this variable MUST NOT be defined. The only exception is
|
|
|
|
when U-Boot is loaded (to RAM) by some other boot loader or by a
|
|
|
|
debugger which performs these initializations itself.
|
|
|
|
|
|
|
|
config SPL_SKIP_LOWLEVEL_INIT
|
2022-12-30 18:41:28 +00:00
|
|
|
bool "Skip calls to certain low level initialization functions in SPL"
|
|
|
|
depends on SPL
|
2021-08-28 01:18:30 +00:00
|
|
|
help
|
|
|
|
If enabled, then certain low level initializations (like setting up
|
|
|
|
the memory controller) are omitted and/or U-Boot does not relocate
|
|
|
|
itself into RAM.
|
|
|
|
Normally this variable MUST NOT be defined. The only exception is
|
|
|
|
when U-Boot is loaded (to RAM) by some other boot loader or by a
|
|
|
|
debugger which performs these initializations itself.
|
|
|
|
|
|
|
|
config TPL_SKIP_LOWLEVEL_INIT
|
2022-12-30 18:41:28 +00:00
|
|
|
bool "Skip calls to certain low level initialization functions in TPL"
|
2021-08-28 01:18:30 +00:00
|
|
|
depends on SPL && ARM
|
|
|
|
help
|
|
|
|
If enabled, then certain low level initializations (like setting up
|
|
|
|
the memory controller) are omitted and/or U-Boot does not relocate
|
|
|
|
itself into RAM.
|
|
|
|
Normally this variable MUST NOT be defined. The only exception is
|
|
|
|
when U-Boot is loaded (to RAM) by some other boot loader or by a
|
|
|
|
debugger which performs these initializations itself.
|
|
|
|
|
|
|
|
config SKIP_LOWLEVEL_INIT_ONLY
|
2022-12-30 18:41:28 +00:00
|
|
|
bool "Skip call to lowlevel_init during early boot ONLY"
|
2021-08-28 01:18:30 +00:00
|
|
|
depends on ARM
|
|
|
|
help
|
|
|
|
This allows just the call to lowlevel_init() to be skipped. The
|
|
|
|
normal CP15 init (such as enabling the instruction cache) is still
|
|
|
|
performed.
|
|
|
|
|
|
|
|
config SPL_SKIP_LOWLEVEL_INIT_ONLY
|
2022-12-30 18:41:28 +00:00
|
|
|
bool "Skip call to lowlevel_init during early SPL boot ONLY"
|
2021-08-28 01:18:30 +00:00
|
|
|
depends on SPL && ARM
|
|
|
|
help
|
|
|
|
This allows just the call to lowlevel_init() to be skipped. The
|
|
|
|
normal CP15 init (such as enabling the instruction cache) is still
|
|
|
|
performed.
|
|
|
|
|
|
|
|
config TPL_SKIP_LOWLEVEL_INIT_ONLY
|
2022-12-30 18:41:28 +00:00
|
|
|
bool "Skip call to lowlevel_init during early TPL boot ONLY"
|
2021-08-28 01:18:30 +00:00
|
|
|
depends on TPL && ARM
|
|
|
|
help
|
|
|
|
This allows just the call to lowlevel_init() to be skipped. The
|
|
|
|
normal CP15 init (such as enabling the instruction cache) is still
|
|
|
|
performed.
|
|
|
|
|
2022-12-30 18:41:28 +00:00
|
|
|
endmenu
|
|
|
|
|
2022-10-29 00:27:10 +00:00
|
|
|
config SYS_HAS_NONCACHED_MEMORY
|
|
|
|
bool "Enable reserving a non-cached memory area for drivers"
|
|
|
|
depends on (ARM || MIPS) && (RTL8169 || MEDIATEK_ETH)
|
|
|
|
help
|
|
|
|
This is useful for drivers that would otherwise require a lot of
|
|
|
|
explicit cache maintenance. For some drivers it's also impossible to
|
|
|
|
properly maintain the cache. For example if the regions that need to
|
|
|
|
be flushed are not a multiple of the cache-line size, *and* padding
|
|
|
|
cannot be allocated between the regions to align them (i.e. if the
|
|
|
|
HW requires a contiguous array of regions, and the size of each
|
|
|
|
region is not cache-aligned), then a flush of one region may result
|
|
|
|
in overwriting data that hardware has written to another region in
|
|
|
|
the same cache-line. This can happen for example in network drivers
|
|
|
|
where descriptors for buffers are typically smaller than the CPU
|
|
|
|
cache-line (e.g. 16 bytes vs. 32 or 64 bytes).
|
|
|
|
|
|
|
|
config SYS_NONCACHED_MEMORY
|
|
|
|
hex "Size in bytes of the non-cached memory area"
|
|
|
|
depends on SYS_HAS_NONCACHED_MEMORY
|
|
|
|
default 0x100000
|
|
|
|
help
|
|
|
|
Size of non-cached memory area. This area of memory will be typically
|
|
|
|
located right below the malloc() area and mapped uncached in the MMU.
|
|
|
|
|
2014-07-30 05:08:15 +00:00
|
|
|
source "arch/arc/Kconfig"
|
|
|
|
source "arch/arm/Kconfig"
|
|
|
|
source "arch/m68k/Kconfig"
|
|
|
|
source "arch/microblaze/Kconfig"
|
|
|
|
source "arch/mips/Kconfig"
|
|
|
|
source "arch/nios2/Kconfig"
|
|
|
|
source "arch/powerpc/Kconfig"
|
|
|
|
source "arch/sandbox/Kconfig"
|
|
|
|
source "arch/sh/Kconfig"
|
|
|
|
source "arch/x86/Kconfig"
|
2016-08-10 15:36:44 +00:00
|
|
|
source "arch/xtensa/Kconfig"
|
2017-12-26 05:55:58 +00:00
|
|
|
source "arch/riscv/Kconfig"
|
2022-03-23 21:19:55 +00:00
|
|
|
|
2022-06-16 18:04:36 +00:00
|
|
|
if ARM || M68K || PPC
|
|
|
|
|
|
|
|
source "arch/Kconfig.nxp"
|
|
|
|
|
|
|
|
endif
|
|
|
|
|
2022-03-23 21:19:55 +00:00
|
|
|
source "board/keymile/Kconfig"
|
2022-06-24 12:14:59 +00:00
|
|
|
|
2022-06-24 12:14:59 +00:00
|
|
|
if MIPS || MICROBLAZE
|
2022-06-24 12:14:59 +00:00
|
|
|
|
|
|
|
choice
|
|
|
|
prompt "Endianness selection"
|
|
|
|
help
|
|
|
|
Some MIPS boards can be configured for either little or big endian
|
|
|
|
byte order. These modes require different U-Boot images. In general there
|
|
|
|
is one preferred byteorder for a particular system but some systems are
|
|
|
|
just as commonly used in the one or the other endianness.
|
|
|
|
|
|
|
|
config SYS_BIG_ENDIAN
|
|
|
|
bool "Big endian"
|
2022-06-24 12:14:59 +00:00
|
|
|
depends on (SUPPORTS_BIG_ENDIAN && MIPS) || MICROBLAZE
|
2022-06-24 12:14:59 +00:00
|
|
|
|
|
|
|
config SYS_LITTLE_ENDIAN
|
|
|
|
bool "Little endian"
|
2022-06-24 12:14:59 +00:00
|
|
|
depends on (SUPPORTS_LITTLE_ENDIAN && MIPS) || MICROBLAZE
|
2022-06-24 12:14:59 +00:00
|
|
|
|
|
|
|
endchoice
|
|
|
|
|
|
|
|
endif
|