Compare commits

..

111 Commits

Author SHA1 Message Date
Samuel Holland
f92e2302b4 sunxi: Add a U-Boot port for the Lichee RV 86 Panel
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-03-07 19:07:10 -06:00
Jisheng Zhang
d717f61e5d sunxi: Add a U-Boot port for the Lichee RV and its dock
Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
[Samuel: licheepi -> lichee; drop DRAM size; other changes]
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-28 23:37:51 -06:00
TekkamanV
750ee8f57a riscv64: update nezha_defconfig for development/testing
Signed-off-by: TekkamanV <tekkamanv@163.com>
[Samuel: Kept default prompt, trimmed things to stay under 1 MiB]
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-28 23:31:59 -06:00
TekkamanV
818efd944a sun20i: Add some variables to the default environment
Signed-off-by: TekkamanV <tekkamanv@163.com>
[Samuel: Only kept the non-Fedora-specific subset of changes]
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-28 23:31:59 -06:00
Samuel Holland
89f4e650eb sunxi: Add a U-Boot port for the Allwinner D1 Nezha
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-28 23:31:59 -06:00
Samuel Holland
6e97abfc25 sunxi: Convert some Kconfig defaults to implies
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:46:50 -06:00
Samuel Holland
cf3d771919 board: riscv: Sort target configs alphabetically
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:46:50 -06:00
Samuel Holland
48bdb12434 riscv: cpu: Add cache operations for T-HEAD CPUs
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:46:50 -06:00
Samuel Holland
61f46f2630 usb: musb-new: Hack up the driver for the D1
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:46:50 -06:00
Samuel Holland
295d64ece8 [BROKEN] spi: sunxi: Add support for the D1
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:46:50 -06:00
Samuel Holland
1d493ece7a spi: sunxi: Hack up the driver for the D1
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:46:49 -06:00
Samuel Holland
d77264e31c pinctrl: sunxi: Hack up the driver for the D1
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:46:49 -06:00
Samuel Holland
1ace90300d pinctrl: sunxi: Add support for the D1
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:46:49 -06:00
Samuel Holland
ad156580ad phy: sun4i-usb: Add support for the D1
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:46:49 -06:00
Samuel Holland
4f94eeccd4 phy: sun4i-usb: Hack up the driver for the D1
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:46:49 -06:00
Andre Przywara
3451f398ba phy: sun4i-usb: Rework HCI PHY (aka. "pmu_unk1") handling
As Icenowy pointed out, newer manuals (starting with H6) actually
document the register block at offset 0x800 as "HCI controller and PHY
interface", also describe the bits in our "PMU_UNK1" register.
Let's put proper names to those "unknown" variables and symbols.

While we are at it, generalise the existing code by allowing a bitmap
of bits to clear and set, to cover newer SoCs: The A100 and H616 use a
different bit for the SIDDQ control.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:46:49 -06:00
Samuel Holland
e685e542b8 net: sun8i-emac: Downgrade printf in probe to debug
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:46:49 -06:00
Samuel Holland
e5c5868348 net: sun8i_emac: Hack up the driver for the D1
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:46:49 -06:00
Samuel Holland
c9588b157d mmc: sunxi: Hack up the driver for the D1
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:46:49 -06:00
Samuel Holland
8548e47d40 gpio: sunxi: Hack up the driver for the D1
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:46:49 -06:00
Samuel Holland
b6491e8175 clk: sunxi: Add support for D1 CCU
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:46:49 -06:00
Samuel Holland
dc927ccf10 dt-bindings: leds: Update common binding
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:46:49 -06:00
Samuel Holland
095688f2ab Merge branch 'patch/axp-gpio' into allwinner
# Conflicts:
#	arch/arm/mach-sunxi/Kconfig
2022-02-26 21:45:51 -06:00
Samuel Holland
e73ddaed44 Merge branch 'patch/axp-vbus' into allwinner
# Conflicts:
#	arch/arm/include/asm/arch-sunxi/gpio.h
2022-02-26 21:45:46 -06:00
Samuel Holland
a95f12e41d Merge branch 'patch/dm-i2c' into allwinner 2022-02-26 21:45:40 -06:00
Samuel Holland
c76c156861 Merge branch 'patch/dm-pinctrl' into allwinner 2022-02-26 21:45:38 -06:00
Samuel Holland
2ff0d92275 Merge branch 'patch/mkimage-toc1' into allwinner 2022-02-26 21:45:33 -06:00
Samuel Holland
77693293e1 Merge branch 'patch/mkimage-toc0' into allwinner 2022-02-26 21:45:31 -06:00
Samuel Holland
3078fe58c3 Merge branch 'patch/mkimage-riscv' into allwinner 2022-02-26 21:45:29 -06:00
Samuel Holland
b4dffc6a4a Merge branch 'patch/h6-dts' into allwinner 2022-02-26 21:45:26 -06:00
Samuel Holland
24e36b8177 Merge branch 'patch/h3-scp' into allwinner 2022-02-26 21:45:25 -06:00
Samuel Holland
0459d5e504 Merge branch 'patch/h3-fit' into allwinner 2022-02-26 21:45:22 -06:00
Samuel Holland
2315fe6cd7 Merge branch 'patch/dt-sync' into allwinner 2022-02-26 21:45:20 -06:00
Samuel Holland
e89dc4991a tools: mkimage: Add Allwinner TOC1 support
TOC1 is an container format used by Allwinner's boot0 that can hold
multiple images. It supports encryption and signatures, but that
functionality is not implemented, only the basic "non-secure" subset.

A config file is used to provide the list of data files to include. Its
path is passed as the argument to "-d". It contains sections of the
following form:

  [name]
  file = /path/to/file
  addr = 0x12345678

Specific well-known names, such as "dtb", "opensbi", and "u-boot", are
used by the bootloader to distinguish the items inside the image.

Cover-letter:
tools: mkimage: Add Allwinner TOC1 support

The SPL port for the Allwinner D1 RISC-V SoC will probably take a while
longer than porting U-Boot proper, as none of the relevant drivers are
set up for DM in SPL. In the meantime, we are using[1][2] a fork[3] of
Allwinner's boot0 loader, which they also call "spl" in their BSP. boot0
uses this TOC1 image format.

The vendor tools for generating TOC1 images require a binary config file
generated by their FEX compiler. Instead of trying to support that, I
made up a simple human-readable config file format. I didn't see any
existing platform-agnostic parser for multi-image containers in mkimage.

I am sending this as RFC because it is only of temporary/limited use.
It only works with one specific fork of boot0 which was modified to
"behave" (the the original vendor version monkey-patches a custom header
inside the U-Boot image during boot). So it will be obsolete once U-Boot
SPL is ported. And it is Yet Another Image Format. On the other hand, it
does work, and it is currently being used.

[1]: https://linux-sunxi.org/Allwinner_Nezha#U-Boot
[2]: https://fedoraproject.org/wiki/Architectures/RISC-V/Allwinner
[3]: https://github.com/smaeul/sun20i_d1_spl
END
Series-prefix: RFC
Series-to: sunxi
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:45:00 -06:00
Samuel Holland
a9a4131130 sunxi: Support building a SPL as a TOC0 image
Now that mkimage can generate TOC0 images, and the SPL can interpret
them, hook up the build infrastructure so the user can choose which
image type to build. Since the absolute load address is stored in the
TOC0 header, that information must be passed to mkimage.

Cover-letter:
sunxi: TOC0 image type support
This series adds support for the TOC0 image format used by the Allwinner
secure boot ROM (SBROM). This series has been tested on the following
SoCs/boards, with the eFuse burnt to enable secure mode:
 - A50: Ainol Q88 Tablet
 - A64: Pine A64 Plus
 - H5: Orange Pi Zero Plus
 - H6: Pine H64 Model B
 - H616: Orange Pi Zero 2

This time I also tested it on boards that are not switched to secure
mode (with A64, H3, and H5).

Due to both series changing Makefile.spl, the last patch depends on:
https://patchwork.ozlabs.org/project/uboot/list/?series=267136

Since this series no longer selects TOOLS_LIBCRYPTO anywhere, building
certain platforms/options may fail with an error like the following if
TOOLS_LIBCRYPTO is disabled:

    MKIMAGE spl/sunxi-spl.bin
  ./tools/mkimage: unsupported type Allwinner TOC0 Boot Image
  make[1]: *** [scripts/Makefile.spl:426: spl/sunxi-spl.bin] Error 1
  make: *** [Makefile:1982: spl/u-boot-spl] Error 2
END

Series-to: sunxi
Series-version: 4
Series-changes: 2
 - Rebase on top of Icenowy's RISC-V support series
 - Rename Kconfig symbols to include the full image type name

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:44:45 -06:00
Samuel Holland
aee968ef3d sunxi: Support SPL in both eGON and TOC0 images
SPL uses the image header to detect the boot device and to find the
offset of the next U-Boot stage. Since this information is stored
differently in the eGON and TOC0 image headers, add code to find the
correct value based on the image type currently in use.

Series-changes: 2
 - Moved SPL header signature checks out of sunxi_image.h
 - Refactored SPL header signature checks to use fewer casts

Series-changes: 3
 - Fixed offset of magic passed to memcmp
 - Refactored functions to not return pointers (fixes ambiguous NULL)

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:44:45 -06:00
Samuel Holland
8e3dfc7f12 spi: sun4i_spi: Remove non-DM pin setup
This is now handled automatically by the pinctrl driver.

Series-version: 2
Cover-letter:
sunxi: Add and use a pinctrl driver
This series resolves some longstanding TODOs by implementing a pinctrl
driver for sunxi platforms and converting DM drivers to use it.
END
Series-to: sunxi
Series-cc: sjg
Series-cc: Sean Anderson <seanga2@gmail.com>
Series-cc: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:31:55 -06:00
Samuel Holland
a7644cdf90 pinctrl: sunxi: Add SPI0 pinmuxes
Pin lists and mux values were taken from the Linux drivers.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:31:55 -06:00
Samuel Holland
2f45eef7b9 pwm: sunxi: Remove non-DM pin setup
This is now handled automatically by the pinctrl driver.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:31:55 -06:00
Samuel Holland
0031d5c2e4 pinctrl: sunxi: Add the A64 PWM pinmux
This is the only possible mux setting for the A64's PWM peripheral.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:31:55 -06:00
Samuel Holland
8505d11974 sunxi: Remove non-DM MMC pin setup
This is now handled automatically by the pinctrl driver.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:31:55 -06:00
Samuel Holland
09e5cbacb4 pinctrl: sunxi: Add MMC pinmuxes
Pin lists and mux values were taken from the Linux drivers.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:31:55 -06:00
Samuel Holland
70468f7ebe i2c: sun8i_rsb: Only do non-DM pin setup for non-DM I2C
When the DM_I2C driver is loaded, the pin setup is done automatically
from the device tree by the pinctrl driver.

Clean up the code in the process: remove #ifdefs and recognize that the
pin configuration is the same for all sun8i/sun50i SoCs, not just those
which select CONFIG_MACH_SUN8I.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:31:55 -06:00
Samuel Holland
728c6782d2 i2c: sun6i_p2wi: Only do non-DM pin setup for non-DM I2C
When the DM_I2C driver is loaded, the pin setup is done automatically
from the device tree by the pinctrl driver.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:31:55 -06:00
Samuel Holland
70b6734d81 i2c: sun8i_rsb: Add support for DM clocks and resets
Currently, clock/reset setup for this device is handled by a
platform-specific function and is intermixed with non-DM pinctrl
setup. Use the devicetree to get clocks/resets, which disentagles
it from the pinctrl setup in preparation for moving to DM_PINCTRL.

This also has the added benefit of picking the right clock/reset
bits for H6 and new SoCs that have a rearranged PRCM MMIO space.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:28:46 -06:00
Samuel Holland
f3fddfae64 i2c: sun8i_rsb: Initialize chips in .child_pre_probe
Chips attached to the RSB bus require an initialization command before
they can be used. (Specifically, this command programs the chip's
runtime address.) The driver does this in its .probe_chip hook, under
the assumption that .probe_chip is called during child probe. This is
not the case; .probe_chip is only called by dm_i2c_probe, which is
intended for use by board-level code, not for chips with OF nodes.

Since this initialization command must be run before a child chip can be
used, do it before probing each child.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:28:46 -06:00
Samuel Holland
191fc15ebc i2c: sun6i_p2wi: Add support for DM clocks and resets
Currently, clock/reset setup for this device is handled by a
platform-specific function and is intermixed with non-DM pinctrl
setup. Use the devicetree to get clocks/resets, which disentagles
it from the pinctrl setup in preparation for moving to DM_PINCTRL.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:28:46 -06:00
Samuel Holland
967656994b i2c: sun6i_p2wi: Initialize chips in .child_pre_probe
Chips attached to the P2WI bus require an initialization command before
they can be used. (Specifically, this switches the chip from I2C mode
to P2WI mode.) The driver does this in its .probe_chip hook, under the
assumption that .probe_chip is called during child probe. This is not
the case; .probe_chip is only called by dm_i2c_probe, which is intended
for use by board-level code, not for chips with OF nodes.

Since this initialization command must be run before a child chip can be
used, do it before probing each child.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:26:15 -06:00
Samuel Holland
8db2b02cf8 gpio: axp: Add pull-down support for AXP22x/AXP8xx variant
The AXP221 and newer PMICs support a pull-down function on their GPIOs.
Add support for it.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:15:06 -06:00
Samuel Holland
ceab9469ee gpio: axp: Add support for getting the pin function
Implement the .get_function operation, so the gpio command can report
the current function. Since the GPIOF_FUNC (versus GPIOF_UNUSED) mux
values vary among the PMICs, report all non-GPIO mux values as UNKNOWN.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:15:06 -06:00
Samuel Holland
b821f5b943 gpio: axp: Select variant from compatible at runtime
There are three major variants of the AXP PMIC GPIO functionality (plus
PMICs with no GPIOs at all). Except for GPIO3 on the AXP209, which uses
a different register layout, it is straightforward to support all three
variants with a single driver. Do this, and in the process remove the
GPIO-related definitions from the PMIC-specific headers, and therefore
the dependency on AXP_PMIC_BUS.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:15:06 -06:00
Samuel Holland
6f32bc0481 gpio: axp: Use DM_PMIC functions for register access
Now that the PMIC driver implements the DM_PMIC uclass, those functions
can be used instead of the platform-specific "pmic_bus" functions.

Since the driver still uses the single set of register definitions from
axpXXX.h (as selected by AXPxxx_POWER), it still depends on one of those
choices, and therefore also AXP_PMIC_BUS.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:15:06 -06:00
Samuel Holland
405fb692ee gpio: axp: Bind via device tree
Now that the PMIC has a DM driver and binds device tree subnodes, the
GPIO device can be bound that way, instead of from inside board code.

Since the driver still uses the single set of register definitions from
axpXXX.h (as selected by AXPxxx_POWER), it does not differentiate among
the supported compatibles.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:15:06 -06:00
Samuel Holland
de2f12a075 gpio: axp: Consistently use the "axp_gpio" order
This is less confusing than half of the driver using "axp_gpio" and the
other half using "gpio_axp".

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:15:06 -06:00
Samuel Holland
e303018546 ARM: dts: sunxi: Add AXP221 and AXP809 GPIO nodes
These PMICs each have two GPIO pins, and are supported by the axp_gpio
driver. In order to convert the axp_gpio driver to probe using the
device tree, the corresponding device tree nodes must be present. Add
them, following the same binding as the AXP209 and AXP813.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:15:06 -06:00
Samuel Holland
8948fcc9da phy: sun4i-usb: Use DM_GPIO for id/vbus_det GPIOs
Now that the sunxi_gpio driver handles pull-up/down via the driver
model, we can switch to DM_GPIO for these pins with no loss in
functionality. Since the driver now gets its pin configuration from
the device tree, we can remove the Kconfig symbols.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:15:02 -06:00
Samuel Holland
8642395169 gpio: axp/sunxi: Remove virtual VBUS enable GPIO
Now that this functionality is modeled using the device tree and
regulator uclass, the named GPIO is not referenced anywhere. Remove
it, along with the rest of the support for AXP virtual GPIOs.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:15:02 -06:00
Samuel Holland
93de303221 sunxi: Remove obsolete USBx_VBUS_PIN Kconfig symbols
Now that the USB PHY driver uses the device tree to get VBUS supply
regulators, these Kconfig symbols are unused. Remove them.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:15:02 -06:00
Samuel Holland
1388a7072e phy: sun4i-usb: Control USB supplies via regulator uclass
The device tree binding for the PHY provides VBUS supplies as regulator
references. Now that all boards have the appropriate regulator uclass
drivers enabled, the PHY driver can switch to using them. This replaces
direct GPIO usage, which in some cases needed a special DM-incompatible
"virtual" GPIO from the PMIC.

The following boards provided a value for CONFIG_USB0_VBUS_PIN, but are
missing the "usb0_vbus-supply" property in their device tree. None of
them have the MUSB controller enabled in host or OTG mode, so they
should see no impact:
 - Ainol_AW1_defconfig / sun7i-a20-ainol-aw1
 - Ampe_A76_defconfig / sun5i-a13-ampe-a76
 - CHIP_pro_defconfig / sun5i-gr8-chip-pro
 - Cubieboard4_defconfig / sun9i-a80-cubieboard4
 - Merrii_A80_Optimus_defconfig / sun9i-a80-optimus
 - Sunchip_CX-A99_defconfig / sun9i-a80-cx-a99
 - Yones_Toptech_BD1078_defconfig / sun7i-a20-yones-toptech-bd1078
 - Yones_Toptech_BS1078_V2_defconfig /
   sun6i-a31s-yones-toptech-bs1078-v2
 - iNet_3F_defconfig / sun4i-a10-inet-3f
 - iNet_3W_defconfig / sun4i-a10-inet-3w
 - iNet_86VS_defconfig / sun5i-a13-inet-86vs
 - iNet_D978_rev2_defconfig / sun8i-a33-inet-d978-rev2
 - icnova-a20-swac_defconfig / sun7i-a20-icnova-swac
 - sun8i_a23_evb_defconfig / sun8i-a23-evb

Similarly, the following boards set CONFIG_USB1_VBUS_PIN, but do not
have "usb1_vbus-supply" in their device tree. Neither of them have USB
enabled at all, so again there should be no impact:
 - Cubieboard4_defconfig / sun9i-a80-cubieboard4 (also for USB3)
 - sun8i_a23_evb_defconfig / sun8i-a23-evb

The following boards use a different pin for USB1 VBUS between their
defconfig and their device tree. Depending on which is correct, they
may be broken:
 - Linksprite_pcDuino3_Nano_defconfig (PH11) /
   sun7i-a20-pcduino3-nano (PD2)
 - icnova-a20-swac_defconfig (PG10) / sun7i-a20-icnova-swac (PH6)

Finally, this board has conflicting pins given for its USB2 VBUS:
 - Lamobo_R1_defconfig (PH3) / sun7i-a20-lamobo-r1 (PH12)

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:15:02 -06:00
Samuel Holland
1c6fe3f007 sunxi: Enable fixed regulator support for USB supplies
On many boards, the USB ports are powered by a GPIO-controlled fixed
regulator. In preparation for switching the USB PHY driver to use the
regulator uclass instead of driving the GPIO directly, ensure these
boards have fixed regulator support enabled.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:15:02 -06:00
Samuel Holland
75946b0e8a sunxi: Enable PMIC drivevbus regulator support for USB supplies
On many boards, the USB ports are powered by the PMIC's "drivevbus"
regulator. In preparation for switching the USB PHY driver to use the
regulator uclass instead of a virtual GPIO pin, ensure these boards
have AXP PMIC regulator support enabled.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:15:02 -06:00
Samuel Holland
a5bed60ca2 power: pmic: axp: Probe the drivevbus regulator from the DT
Now that some regulator driver exists for this PMIC, add support for
probing regulator drivers from the device tree subnodes.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:15:02 -06:00
Samuel Holland
97652c0932 power: regulator: Add a driver for the AXP PMIC drivevbus
The first AXP regulator converted to use the regulator uclass is the
drivevbus switch, since it is used by the USB PHY driver.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:15:02 -06:00
Samuel Holland
9c5daebdc7 gpio: axp/sunxi: Remove virtual VBUS detection GPIO
Now that this functionality is modeled using the device tree and
regulator uclass, the named GPIO is not referenced anywhere. Remove it.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:15:01 -06:00
Samuel Holland
bb993c3257 sunxi: Switch to PMIC USB power supply VBUS detection
Update boards to use the USB power supply driver, as referenced in the
device tree, instead of a virtual GPIO. This removes the need for some
DM-incompatible special cases in the GPIO driver.

The following six boards used AXP0-VBUS-DETECT in their config, but are
missing the "usb0_vbus_power-supply" property in their device tree:
 - Ainol_AW1_defconfig / sun7i-a20-ainol-aw1
 - Cubieboard4_defconfig / sun9i-a80-cubieboard4
 - Merrii_A80_Optimus_defconfig / sun9i-a80-optimus
 - Nintendo_NES_Classic_Edition_defconfig /
   sun8i-r16-nintendo-nes-classic-edition
 - Yones_Toptech_BD1078_defconfig / sun7i-a20-yones-toptech-bd1078
 - Yones_Toptech_BS1078_V2_defconfig /
   sun6i-a31s-yones-toptech-bs1078-v2

None of those six boards have the MUSB controller (USB OTG) enabled in
their device trees, so this change should not break anything for them.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:15:01 -06:00
Samuel Holland
fa41709646 power: regulator: Add a driver for the AXP USB power supply
This driver reports the presence/absence of voltage on the PMIC's USB
VBUS pin. This information is used by the USB PHY driver. The
corresponding Linux driver uses the power supply class, which does not
exist in U-Boot. UCLASS_REGULATOR seems to be the closest match.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:15:01 -06:00
Samuel Holland
ef62a50abe ARM: dts: sun6i: mixtile-loftq: Add USB1 VBUS regulator
This board is configured with CONFIG_USB1_VBUS_PIN="PH24", but no
regulator exists in its device tree. Add the regulator, so USB will
continue to work when the PHY driver switches to using the regulator
uclass instead of a GPIO.

Update the device tree here because it does not exist in Linux.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:15:01 -06:00
Samuel Holland
fbb3a6f47a sunxi: Remove non-DM I2C clock/pin setup from U-Boot
This is now handled automatically by the clock and pinctrl drivers.

SPL still calls this function because it needes the non-DM code.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:14:38 -06:00
Samuel Holland
b897efc201 sunxi: Remove options and setup code for I2C2-I2C4
These options are not currently enabled anywhere. Any new users should
use DM clocks and pinctrl.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:14:38 -06:00
Samuel Holland
f9f55a01d5 pinctrl: sunxi: Add I2C pinmuxes
Where multiple options were available, the one matching board.c and the
device trees was chosen.

Pin lists and mux values were taken from the Linux drivers.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:14:38 -06:00
Samuel Holland
0ade741191 net: sun8i_emac: Remove non-DM pin setup
This is now handled automatically by the pinctrl driver.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:14:38 -06:00
Samuel Holland
7aa24d0cd8 pinctrl: sunxi: Add sun8i EMAC pinmuxes
Pin lists and mux values were taken from the Linux drivers.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:14:38 -06:00
Samuel Holland
42033f97eb sunxi: Remove non-DM GMAC pin setup
This is now handled automatically by the pinctrl driver.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:14:38 -06:00
Samuel Holland
d604e28adb pinctrl: sunxi: Add sunxi GMAC pinmuxes
Pin lists and mux values were taken from the Linux drivers.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:14:38 -06:00
Samuel Holland
7ed332180c net: sunxi_emac: Remove non-DM pin setup
This is now handled automatically by the pinctrl driver.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:14:38 -06:00
Samuel Holland
cd33d18885 pinctrl: sunxi: Add sun4i EMAC pinmuxes
Pin lists and mux values were taken from the Linux drivers.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:14:38 -06:00
Samuel Holland
b1c0372900 sunxi: Skip non-DM UART pin setup when PINCTRL=y
When a pinctrl driver is available, it will take care of setting up
these pins. However, for now this code is still needed in SPL.

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:14:37 -06:00
Samuel Holland
a2f9c64459 pinctrl: sunxi: Add UART pinmuxes
This includes UART0 and R_UART (s_uart) on all supported platforms, plus
the additional UART configurations from arch/arm/mach-sunxi/board.c.

Pin lists and mux values were taken from the Linux drivers.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:14:37 -06:00
Samuel Holland
683fd4c806 sunxi: pinctrl: Implement pin configuration
The sunxi pinctrl hardware has bias and drive control. Add driver
support for configuring those options.

Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:14:37 -06:00
Samuel Holland
94ad76fe13 sunxi: pinctrl: Implement get_pin_muxing function
The pinmux command uses this function to display pinmux status.

Since the driver cannot map pin numbers to a list of supported
functions, only functions which are common across all pins can be
reported by name.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:14:37 -06:00
Samuel Holland
420f73b291 sunxi: pinctrl: Implement pin muxing functions
Implement the operations to get pin and function names, and to set the
mux for a pin. The pin count and pin names are calculated as if each
bank has the maximum number of pins. Function names are simply the index
into a list of { function name, mux value } pairs.

We assume all pins associated with a function use the same mux value for
that function. This is generally true within a group of pins on a single
port, but generally false when some peripheral can be muxed to multiple
ports. For example, A64 UART3 uses mux 3 on port D, and mux 2 on port H.
But all of the port D pins use the same mux value, and so do all of the
port H pins. This applies even when the pins for some function are not
contiguous, and when the lower-numbered mux values are unused. A good
example of both of these cases is SPI0 on most SoCs.

This strategy saves a lot of space (which is especially important for
SPL), but where the mux value for a certain function differs across
ports, it forces us to choose a single port for that function at build
time. Since almost all boards use the default (i.e. reference design)
pin muxes[1], this is unlikely to be a problem.

[1]: See commit dda9fa734f81 ("sunxi: Simplify MMC pinmux selection")

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:14:37 -06:00
Samuel Holland
4c7c1547ee sunxi: pinctrl: Create the driver skeleton
Create a do-nothing driver for each sunxi pin controller variant.

Since only one driver can automatically bind to a DT node, since the
GPIO driver already requires a manual binding process, and since the
pinctrl driver needs access to some of the same information, refactor
the GPIO driver to be bound by the pinctrl driver. This commit should
cause no functional change.

Series-changes: 2
 - Merge all SoC drivers into one file and one U_BOOT_DRIVER.
 - Add a consumer for the APB bus clock

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:14:37 -06:00
Samuel Holland
5ff2f6809f ARM: dts: sun50i: H6: Sync from Linux v5.15
Copy the devicetree source for the H6 SoC and all existing boards
verbatim from the Linux v5.15 tag.

This update should not impact any existing U-Boot functionality.

Series-to: sunxi
Cover-letter:
sunxi: Devicetree sync from Linux v5.15
This series brings all of our devicetrees up to date with the latest
stable Linux version.

<< something about ABI compat >>

Here is the list of new files which were not added by this sync:
 - sun4i-a10-topwise-a721.dts
 - sun50i-a100-allwinner-perf1.dts
 - sun50i-a100.dtsi
 - sun50i-h6-pine-h64-model-b.dts
 - sun5i-a13-licheepi-one.dts
 - sun5i-a13-pocketbook-touch-lux-3.dts
 - sun5i-gr8-evb.dts
 - sun7i-a20-linutronix-testbox-v2.dts
 - sun7i-a20-olinuxino-lime-emmc.dts
 - sun8i-a23-ippo-q8h-v1.2.dts
 - sun8i-a23-ippo-q8h-v5.dts
 - sun8i-a33-et-q8-v1.6.dts
 - sun8i-a33-ippo-q8h-v1.2.dts
 - sun8i-h3-nanopi-r1.dts
 - sun8i-r16-nintendo-nes-classic.dts
 - sun8i-r16-nintendo-super-nes-classic.dts
 - sun8i-r40-feta40i.dtsi
 - sun8i-r40-oka40i-c.dts
 - sun8i-s3-elimo-impetus.dtsi
 - sun8i-s3-elimo-initium.dts
 - sun8i-t3-cqa3t-bv3.dts
 - sun8i-v3-sl631-imx179.dts
 - sun8i-v3-sl631.dtsi
END

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:14:34 -06:00
Samuel Holland
0290c2a12e ARM: dts: sun50i: H5: Sync from Linux v5.15
Copy the devicetree source for the H5 SoC and all existing boards
from the Linux v5.15 tag, with minor changes to account for the
different directory layout for 64-bit SoCs.

While there were some recent changes to the shared H3/H5 devicetree,
the only H5-specific change is fixing the EMAC phy-mode in one board.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:14:34 -06:00
Samuel Holland
ebd3b2ffbe ARM: dts: sun50i: A64: Sync from Linux v5.15
Copy the devicetree source for the A64 SoC and all existing boards
verbatim from the Linux v5.15 tag.

As with the other SoCs, updates of note are EMAC phy-mode changes to set
RGMII delays.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:14:34 -06:00
Samuel Holland
0f356d7a6c ARM: dts: sun8i: R40: Sync from Linux v5.15
Copy the devicetree for the R40 SoC verbatim from the Linux v5.15 tag.

None of the existing boards had any devicetree updates.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:14:33 -06:00
Samuel Holland
4bbe0b11e8 ARM: dts: sun8i: V3/V3s/S3: Sync from Linux v5.15
Copy the devicetree source for the V3(s)/S3 SoCs and all existing boards
verbatim from the Linux v5.15 tag.

This update should not impact any existing U-Boot functionality.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:14:33 -06:00
Samuel Holland
37d049d3a9 ARM: dts: sun8i: H2+/H3: Sync from Linux v5.15
Copy the devicetree source for the H2+/H3 SoCs and all existing boards
verbatim from the Linux v5.15 tag.

As with the other SoCs, updates of note are EMAC phy-mode changes to set
RGMII delays.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:14:33 -06:00
Samuel Holland
5b1d29fa41 ARM: dts: sun8i: A83T: Sync from Linux v5.15
Copy the devicetree source for the A83T SoC and all existing boards
verbatim from the Linux v5.15 tag.

As with the other SoCs, updates of note are EMAC phy-mode changes to set
RGMII delays, and adding detection GPIO properties in the USB PHY nodes.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:14:33 -06:00
Samuel Holland
2e6864cd1d ARM: dts: sun9i: Sync from Linux v5.15
Copy the devicetree source for the A80 SoC and all existing boards
verbatim from the Linux v5.15 tag.

This update should not impact any existing U-Boot functionality.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:14:33 -06:00
Samuel Holland
d80f61c45e ARM: dts: sunxi: A13/A31/A23/A33: Sync from Linux v5.15
Copy the devicetree source for the A10s/A13/GR8, A31(s), and A23/A33/R16
SoCs and all existing boards verbatim from the Linux v5.15 tag.

These SoCs are combined into one commit due to some interdependencies:
 - The unit addresses were removed from bitbanged I2C buses, which
   drives a Kconfig default change. This affects sun5i-a13-utoo-p66.dts
   and sun6i-a31-colombus.dts.
 - The pinctrl nodes were renamed, including some used by the shared
   sunxi-reference-design-tablet.dtsi.

This commit renames the file sun8i-r16-nintendo-nes-classic-edition.dts
to sun8i-r16-nintendo-nes-classic.dts to match the Linux tree.

As with the other SoCs, updates of note are EMAC phy-mode changes to set
RGMII delays, conversion of GPIO pull-up from pinconf to GPIO flags, and
renaming the detection GPIO properties in the USB PHY nodes.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:14:33 -06:00
Samuel Holland
1e258e7679 ARM: dts: sun7i: Sync from Linux v5.15
Copy the devicetree source for the A20 SoC and all existing boards
verbatim from the Linux v5.15 tag.

An important change here is to the GMAC phy-mode property on several
boards; this needs to be set correctly once the rtl8211e driver starts
configuring the PHY RGMII delays from the devicetree.

This update also includes changes to the USB PHY detection GPIO
properties which are needed to convert that driver to use the DM GPIO
framework.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:14:33 -06:00
Samuel Holland
19946a3395 ARM: dts: sun4i: Sync from Linux v5.15
Copy the devicetree source for the A10 SoC and all existing boards
verbatim from the Linux v5.15 tag.

While this update should not impact any existing U-Boot functionality,
the changes to the USB PHY detection GPIO properties are needed to
convert that driver to use the DM GPIO framework.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:14:32 -06:00
Samuel Holland
c750419fd9 [DO NOT MERGE] sunxi: psci: Delegate PSCI to SCPI
This adds a new PSCI implementation which communicates with SCP firmware
running on the AR100 using the SCPI protocol. This allows it to support
the full set of PSCI v1.1 features, including CPU idle states, system
suspend, and multiple reset methods.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:14:25 -06:00
Samuel Holland
fef78fd619 [DO NOT MERGE] sunxi: Enable remoteproc on some H3 boards
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:14:25 -06:00
Samuel Holland
60f8dfbcf8 arm: psci: Add definitions for PSCI v1.1
Add the new option, function IDs, and prototypes for PSCI v1.1
implementations. In the process, fix some issues with the existing
definitions:
 - Fix the incorrectly-named ARM_PSCI_0_2_FN64_SYSTEM_RESET2.
 - Replace the deprecated "affinity_level" naming with "power_level".

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:14:25 -06:00
Samuel Holland
cae683dc77 sunxi: Enable support for SCP firmware on H3
Now that issues with the BROM have been sorted out, we can implement
PSCI system suspend on H3 by delegating to SCP firmware. Let's start by
including the firmware in the FIT image and starting the coprocessor if
valid firmware is loaded.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:14:25 -06:00
Samuel Holland
c46665fb62 arm: dts: sunxi: h3: Add nodes for AR100 remoteproc
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:14:25 -06:00
Samuel Holland
9ecfeb198c remoteproc: Add a driver for the Allwinner AR100
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:14:25 -06:00
Samuel Holland
01cabeb719 sunxi: psci: Add support for H3 CPU 0 hotplug
Due to a bug in the H3 SoC, where the CPU 0 hotplug flag cannot be
written, resuming CPU 0 requires using the "Super Standby" code path in
the BROM instead of the hotplug path. This path requires jumping to an
eGON image in SRAM.

Add support to the build system to generate this eGON image and include
it in the FIT, and add code to direct the BROM to its location in SRAM.

Since the Super Standby code path in the BROM initializes the CPU and
AHB1 clocks to 24 MHz, those registers need to be restored after control
passes back to U-Boot. Furthermore, because the BROM lowers the AHB1
clock divider to /1 before switching to the lower-frequency parent,
PLL_PERIPH0 must be bypassed to prevent AHB1 from temporarily running at
600 MHz. Otherwise, this locks up the SoC.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:14:25 -06:00
Samuel Holland
15aacda320 sunxi: psci: Avoid hanging when CPU 0 is hot-unplugged
Do not try to send an SGI from CPU 0 to itself. Since FIQs are masked
when entering monitor mode, this will hang. Plus, CPU 0 cannot fully
power itself off anyway. Instead, have it turn FIQs back on and continue
servicing SGIs from other cores.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:14:24 -06:00
Samuel Holland
28afd11d5c sunxi: binman: Enable SPL FIT loading for 32-bit SoCs
Now that Crust (SCP firmware) has support for H3, we need a FIT image to
load it. H3 also needs to load a SoC-specific eGon blob to support CPU 0
hotplug. Let's first enable FIT support before adding extra firmware.

Update the binman description to work on either 32-bit or 64-bit SoCs:
 - Make BL31 optional, since it is not used on 32-bit SoCs (though BL32
   may be used in the future).
 - Explicitly set the minimum offset of the FIT to 32 KiB, since SPL on
   some boards is still only 24 KiB large even with FIT support enabled.
   CONFIG_SPL_PAD_TO cannot be used because it is not defined for H616.

FIT unlocks more features (signatures, multiple DTBs, etc.), so enable
it by default. A10 (sun4i) only has 24 KiB of SRAM A1, so it needs
SPL_FIT_IMAGE_TINY. For simplicity, enable that option everywhere.

Cover-letter:
sunxi: SPL FIT support for 32-bit sunxi SoCs
This series makes the necessary changes so 32-bit sunxi SoCs can load
additional device trees or firmware from SPL along with U-Boot proper.

There was no existing binman entry property that put the FIT at the
right offset. The minimum offset is 32k, but this matches neither the
SPL size (which is no more than 24k on some SoCs) nor the FIT alignment
(which is 512 bytes in practice due to SPL size constraints). So instead
of adding a new property, I fixed what is arguably a bug in the offset
property -- though this strategy will not work if someone is
intentionally creating overlapping entries.
END
Series-to: sunxi
Series-to: sjg
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:14:14 -06:00
Samuel Holland
ce68ad0514 binman: Prevent entries in a section from overlapping
Currently, if the "offset" property is given for an entry, the section's
running offset is completely ignored. This causes entries to overlap if
the provided offset is less than the size of the entries earlier in the
section. Avoid the overlap by only using the provided offset when it is
greater than the running offset.

The motivation for this change is the rule used by SPL to find U-Boot on
sunxi boards: U-Boot starts 32 KiB after the start of SPL, unless SPL is
larger than 32 KiB, in which case U-Boot immediately follows SPL.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:14:13 -06:00
Samuel Holland
5d29074f50 Kconfig: Remove an impossible condition
ARCH_SUNXI selects BINMAN, so the condition "!BINMAN && ARCH_SUNXI"
is impossible to satisfy.

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:13:55 -06:00
Samuel Holland
d2538b7f23 sunxi: DT: H6: Add USB3 to Pine H64 DTS
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:13:49 -06:00
Samuel Holland
eab8f6715e sunxi: DT: H6: Add device tree for Pine H64 Model B
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:13:49 -06:00
Samuel Holland
3550c1a290 tools: mkimage: Add Allwinner TOC0 support
Most Allwinner sunxi SoCs have separate boot ROMs in non-secure and
secure mode. The "non-secure" or "normal" boot ROM (NBROM) uses the
existing sunxi_egon image type. The secure boot ROM (SBROM) uses a
completely different image type, known as TOC0.

A TOC0 image is composed of a header and two or more items. One item
is the firmware binary. The others form a chain linking the firmware
signature to the root-of-trust public key (ROTPK), which has its hash
burned in the SoC's eFuses. Signatures are made using RSA-2048 + SHA256.

The pseudo-ASN.1 structure is manually assembled; this is done to work
around bugs/quirks in the boot ROM, which vary between SoCs. This TOC0
implementation has been verified to work with the A50, A64, H5, H6,
and H616 SBROMs, and it may work with other SoCs.

Series-changes: 2
 - Moved certificate and key item structures out of sunxi_image.h
 - Renamed "main" and "item" variables for clarity
 - Improved error messages, and added a hint about key generation
 - Added a comment explaining the purpose of the various key files
 - Mentioned testing this code on A50 in the commit message

Series-changes: 3
 - Removed TOOLS_LIBCRYPTO selection for sunxi, since most boards
   do not need it
 - Added __packed to all new "ABI" structs
 - Added entry to MAINTAINERS for sunxi tools

Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:13:26 -06:00
Icenowy Zheng
56cc33063b sunxi: specify architecture when generating SPL boot image
As mkimage -T sunxi_egon now gains support for -A parameter, specify the
architecture when generating SPL boot image for sunxi.

Series-to: sunxi
Series-cc: Icenowy Zheng <icenowy@aosc.io>
Series-version: 3
Cover-letter:
mkimage: sunxi_egon: add riscv support
This patchset updates mkimage -T sunxi_egon to be able to generate
an eGON.BT0 image for Allwinner RISC-V SoCs (e.g. D1).

In addition, to keep the compatibility, it will still consider the
architecture to be ARM when no architecture is specified.

This v3 is a minor update to Icenowy's patch series, which I have
also tested. Since the TOC0 patch series touches the same lines in
Makefile.spl, it depends on this series.
END
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:11:53 -06:00
Icenowy Zheng
250bcf30b4 mkimage: sunxi_egon: add support for riscv
There's now a sun20i family in sunxi, which uses RISC-V CPU.

Add support for making eGON.BT0 image for RISC-V.

Reviewed-by: Andre Przywara <andre.przywara@arm.com>
Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:11:53 -06:00
Icenowy Zheng
c2d1b7e945 mkimage: sunxi_egon: refactor for multi-architecture support
Refactor some functions in mkimage sunxi_egon type, in order to prepare
for adding support for more CPU architectures (e.g. RISC-V). In
addition, compatibility for operation w/o specified architecture is
kept, in this case the architecture is assumed as ARM.

Series-changes: 3
- Factor out an egon_get_arch() function as suggested by Andre

Reviewed-by: Andre Przywara <andre.przywara@arm.com>
Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:11:52 -06:00
Icenowy Zheng
26f21f8bd0 mkimage: add a flag to describe whether -A is specified
The sunxi_egon type used to take no -A argument (because we assume sunxi
targets are all ARM). However, as Allwinner D1 appears as the first
RISC-V sunxi target, we need to support -A; in addition, as external
projects rely on U-Boot mkimage to generate sunxi eGON.BT0 header, we
need to keep compatibility with command line without -A.

As the default value of arch in mkimage is not proper (IH_ARCH_PPC
instead of IH_ARCH_INVALID), to keep more compatibility, add an Aflag
field to image parameters to describe whether an architecture is
explicitly specified.

Reviewed-by: Tom Rini <trini@konsulko.com>
Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
Signed-off-by: Samuel Holland <samuel@sholland.org>
2022-02-26 21:11:52 -06:00
6838 changed files with 154374 additions and 359740 deletions

View File

@ -1,8 +1,8 @@
variables: variables:
windows_vm: windows-2019 windows_vm: windows-2019
ubuntu_vm: ubuntu-22.04 ubuntu_vm: ubuntu-18.04
macos_vm: macOS-12 macos_vm: macOS-10.15
ci_runner_image: trini/u-boot-gitlab-ci-runner:jammy-20221003-17Oct2022 ci_runner_image: trini/u-boot-gitlab-ci-runner:focal-20220113-03Feb2022
# Add '-u 0' options for Azure pipelines, otherwise we get "permission # Add '-u 0' options for Azure pipelines, otherwise we get "permission
# denied" error when it tries to "useradd -m -u 1001 vsts_azpcontainer", # denied" error when it tries to "useradd -m -u 1001 vsts_azpcontainer",
# since our $(ci_runner_image) user is not root. # since our $(ci_runner_image) user is not root.
@ -22,9 +22,8 @@ stages:
displayName: 'Install MSYS2' displayName: 'Install MSYS2'
- script: | - script: |
sfx.exe -y -o%CD:~0,2%\ sfx.exe -y -o%CD:~0,2%\
%CD:~0,2%\msys64\usr\bin\bash -lc " " %CD:~0,2%\msys64\usr\bin\bash -lc "pacman --noconfirm -Syyuu"
%CD:~0,2%\msys64\usr\bin\bash -lc "pacman --noconfirm -Syuu" %CD:~0,2%\msys64\usr\bin\bash -lc "pacman --noconfirm -Su"
%CD:~0,2%\msys64\usr\bin\bash -lc "pacman --noconfirm -Syuu"
displayName: 'Update MSYS2' displayName: 'Update MSYS2'
- script: | - script: |
%CD:~0,2%\msys64\usr\bin\bash -lc "pacman --noconfirm --needed -Sy make gcc bison flex diffutils openssl-devel libgnutls-devel libutil-linux-devel" %CD:~0,2%\msys64\usr\bin\bash -lc "pacman --noconfirm --needed -Sy make gcc bison flex diffutils openssl-devel libgnutls-devel libutil-linux-devel"
@ -64,26 +63,21 @@ stages:
- script: | - script: |
KSYMLST=`mktemp` KSYMLST=`mktemp`
KUSEDLST=`mktemp` KUSEDLST=`mktemp`
RET=0
cat `find . -name "Kconfig*"` | \ cat `find . -name "Kconfig*"` | \
sed -n -e 's/^\s*config *\([A-Za-z0-9_]*\).*$/CONFIG_\1/p' \ sed -n -e 's/^\s*config *\([A-Za-z0-9_]*\).*$/CONFIG_\1/p' \
-e 's/^\s*menuconfig *\([A-Za-z0-9_]*\).*$/CONFIG_\1/p' \ -e 's/^\s*menuconfig *\([A-Za-z0-9_]*\).*$/CONFIG_\1/p' \
| sort -u > $KSYMLST | sort -u > $KSYMLST
for CFG in `find include/configs -name "*.h"`; do for CFG in `find include/configs -name "*.h"`; do
(grep '#define[[:blank:]]CONFIG_' $CFG | \ grep '#define[[:blank:]]CONFIG_' $CFG | \
sed -n 's/#define.\(CONFIG_[A-Za-z0-9_]*\).*/\1/p' ; \ sed -n 's/#define.\(CONFIG_[A-Za-z0-9_]*\).*/\1/p' | \
grep '#undef[[:blank:]]CONFIG_' $CFG | \
sed -n 's/#undef.\(CONFIG_[A-Za-z0-9_]*\).*/\1/p') | \
sort -u > ${KUSEDLST} || true sort -u > ${KUSEDLST} || true
NUM=`comm -123 --total --output-delimiter=, ${KSYMLST} ${KUSEDLST} | \ NUM=`comm -12 --total --output-delimiter=, ${KSYMLST} ${KUSEDLST} | \
cut -d , -f 3` cut -d , -f 3`
if [[ $NUM -ne 0 ]]; then if [[ $NUM -ne 0 ]]; then
echo "Unmigrated symbols found in $CFG:" echo "Unmigrated symbols found in $CFG"
comm -12 ${KSYMLST} ${KUSEDLST} exit 1
RET=1
fi fi
done done
exit $RET
- job: cppcheck - job: cppcheck
displayName: 'Static code analysis with cppcheck' displayName: 'Static code analysis with cppcheck'
@ -140,7 +134,7 @@ stages:
options: $(container_option) options: $(container_option)
steps: steps:
- script: | - script: |
./tools/buildman/buildman -R if [ `./tools/genboardscfg.py -f 2>&1 | wc -l` -ne 0 ]; then exit 1; fi
- job: tools_only - job: tools_only
displayName: 'Ensure host tools build' displayName: 'Ensure host tools build'
@ -170,11 +164,13 @@ stages:
vmImage: $(ubuntu_vm) vmImage: $(ubuntu_vm)
steps: steps:
- script: | - script: |
cat << "EOF" > build.sh cat << EOF > build.sh
cd $(work_dir) set -ex
cd ${WORK_DIR}
EOF
cat << "EOF" >> build.sh
git config --global user.name "Azure Pipelines" git config --global user.name "Azure Pipelines"
git config --global user.email bmeng.cn@gmail.com git config --global user.email bmeng.cn@gmail.com
git config --global --add safe.directory $(work_dir)
export USER=azure export USER=azure
virtualenv -p /usr/bin/python3 /tmp/venv virtualenv -p /usr/bin/python3 /tmp/venv
. /tmp/venv/bin/activate . /tmp/venv/bin/activate
@ -183,7 +179,6 @@ stages:
export PYTHONPATH=${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc/pylibfdt export PYTHONPATH=${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc/pylibfdt
export PATH=${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc:${PATH} export PATH=${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc:${PATH}
./tools/buildman/buildman -T0 -o ${UBOOT_TRAVIS_BUILD_DIR} -w --board sandbox_spl ./tools/buildman/buildman -T0 -o ${UBOOT_TRAVIS_BUILD_DIR} -w --board sandbox_spl
set -ex
./tools/binman/binman --toolpath ${UBOOT_TRAVIS_BUILD_DIR}/tools test ./tools/binman/binman --toolpath ${UBOOT_TRAVIS_BUILD_DIR}/tools test
./tools/buildman/buildman -t ./tools/buildman/buildman -t
./tools/dtoc/dtoc -t ./tools/dtoc/dtoc -t
@ -207,29 +202,6 @@ stages:
export PATH=/opt/gcc-11.1.0-nolibc/arm-linux-gnueabi/bin:$PATH export PATH=/opt/gcc-11.1.0-nolibc/arm-linux-gnueabi/bin:$PATH
test/nokia_rx51_test.sh test/nokia_rx51_test.sh
- job: pylint
displayName: Check for any pylint regressions
pool:
vmImage: $(ubuntu_vm)
container:
image: $(ci_runner_image)
options: $(container_option)
steps:
- script: |
git config --global --add safe.directory $(work_dir)
export USER=azure
pip install -r test/py/requirements.txt
pip install asteval pylint==2.12.2 pyopenssl
export PATH=${PATH}:~/.local/bin
echo "[MASTER]" >> .pylintrc
echo "load-plugins=pylint.extensions.docparams" >> .pylintrc
export UBOOT_TRAVIS_BUILD_DIR=/tmp/sandbox_spl
./tools/buildman/buildman -T0 -o ${UBOOT_TRAVIS_BUILD_DIR} -w --board sandbox_spl
set -ex
pylint --version
export PYTHONPATH=${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc/pylibfdt
make pylint_err
- stage: test_py - stage: test_py
jobs: jobs:
- job: test_py - job: test_py
@ -243,15 +215,9 @@ stages:
sandbox_clang: sandbox_clang:
TEST_PY_BD: "sandbox" TEST_PY_BD: "sandbox"
OVERRIDE: "-O clang-13" OVERRIDE: "-O clang-13"
sandbox_nolto:
TEST_PY_BD: "sandbox"
BUILD_ENV: "NO_LTO=1"
sandbox_spl: sandbox_spl:
TEST_PY_BD: "sandbox_spl" TEST_PY_BD: "sandbox_spl"
TEST_PY_TEST_SPEC: "test_ofplatdata or test_handoff or test_spl" TEST_PY_TEST_SPEC: "test_ofplatdata or test_handoff or test_spl"
sandbox_vpl:
TEST_PY_BD: "sandbox_vpl"
TEST_PY_TEST_SPEC: "test_vpl_help or test_spl"
sandbox_noinst: sandbox_noinst:
TEST_PY_BD: "sandbox_noinst" TEST_PY_BD: "sandbox_noinst"
TEST_PY_TEST_SPEC: "test_ofplatdata or test_handoff or test_spl" TEST_PY_TEST_SPEC: "test_ofplatdata or test_handoff or test_spl"
@ -264,9 +230,6 @@ stages:
evb_ast2500: evb_ast2500:
TEST_PY_BD: "evb-ast2500" TEST_PY_BD: "evb-ast2500"
TEST_PY_ID: "--id qemu" TEST_PY_ID: "--id qemu"
evb_ast2600:
TEST_PY_BD: "evb-ast2600"
TEST_PY_ID: "--id qemu"
vexpress_ca9x4: vexpress_ca9x4:
TEST_PY_BD: "vexpress_ca9x4" TEST_PY_BD: "vexpress_ca9x4"
TEST_PY_ID: "--id qemu" TEST_PY_ID: "--id qemu"
@ -357,7 +320,6 @@ stages:
export TEST_PY_ID="${TEST_PY_ID}" export TEST_PY_ID="${TEST_PY_ID}"
export TEST_PY_TEST_SPEC="${TEST_PY_TEST_SPEC}" export TEST_PY_TEST_SPEC="${TEST_PY_TEST_SPEC}"
export OVERRIDE="${OVERRIDE}" export OVERRIDE="${OVERRIDE}"
export BUILD_ENV="${BUILD_ENV}"
EOF EOF
cat << "EOF" >> test.sh cat << "EOF" >> test.sh
# the below corresponds to .gitlab-ci.yml "before_script" # the below corresponds to .gitlab-ci.yml "before_script"
@ -442,10 +404,10 @@ stages:
vmImage: $(ubuntu_vm) vmImage: $(ubuntu_vm)
strategy: strategy:
# Use almost the same target division in .travis.yml, only merged # Use almost the same target division in .travis.yml, only merged
# 3 small build jobs (arc/microblaze/xtensa) into one. # 4 small build jobs (arc/microblaze/nds32/xtensa) into one.
matrix: matrix:
arc_microblaze_xtensa: arc_microblaze_nds32_xtensa:
BUILDMAN: "arc microblaze xtensa" BUILDMAN: "arc microblaze nds32 xtensa"
arm11_arm7_arm920t_arm946es: arm11_arm7_arm920t_arm946es:
BUILDMAN: "arm11 arm7 arm920t arm946es" BUILDMAN: "arm11 arm7 arm920t arm946es"
arm926ejs: arm926ejs:
@ -480,12 +442,6 @@ stages:
BUILDMAN: "imx8" BUILDMAN: "imx8"
keystone2_keystone3: keystone2_keystone3:
BUILDMAN: "k2 k3" BUILDMAN: "k2 k3"
sandbox_asan:
BUILDMAN: "sandbox"
OVERRIDE: "-a ASAN"
sandbox_clang_asan:
BUILDMAN: "sandbox"
OVERRIDE: "-O clang-13 -a ASAN"
samsung_socfpga: samsung_socfpga:
BUILDMAN: "samsung socfpga" BUILDMAN: "samsung socfpga"
sun4i: sun4i:
@ -518,8 +474,20 @@ stages:
BUILDMAN: "m68k" BUILDMAN: "m68k"
mips: mips:
BUILDMAN: "mips" BUILDMAN: "mips"
powerpc: non_fsl_ppc:
BUILDMAN: "powerpc" BUILDMAN: "powerpc -x freescale"
mpc85xx_freescale:
BUILDMAN: "mpc85xx&freescale -x t208xrdb -x t102* -x p1_p2_rdb_pc -x p1010rdb -x corenet_ds -x bsc91*"
t208xrdb_corenet_ds:
BUILDMAN: "t208xrdb corenet_ds"
fsl_ppc:
BUILDMAN: "mpc83xx&freescale"
t102x:
BUILDMAN: "t102*"
p1_p2_rdb_pc:
BUILDMAN: "p1_p2_rdb_pc"
p1010rdb_bsc91:
BUILDMAN: "p1010rdb bsc91"
siemens: siemens:
BUILDMAN: "siemens" BUILDMAN: "siemens"
tegra: tegra:

View File

@ -1,6 +1,6 @@
Please do not submit a Pull Request via github. Our project makes use of Please do not submit a Pull Request via github. Our project makes use of
mailing lists for patch submission and review. For more details please mailing lists for patch submission and review. For more details please
see https://u-boot.readthedocs.io/en/latest/develop/sending_patches.html see https://www.denx.de/wiki/U-Boot/Patches
The only exception to this is in order to trigger a CI loop on Azure prior The only exception to this is in order to trigger a CI loop on Azure prior
to posting of patches. to posting of patches.

2
.gitignore vendored
View File

@ -10,7 +10,6 @@
*.asn1.[ch] *.asn1.[ch]
*.bin *.bin
*.cfgout *.cfgout
*.cover
*.dtb *.dtb
*.dtbo *.dtbo
*.dtb.S *.dtb.S
@ -23,7 +22,6 @@
*.lex.c *.lex.c
*.lst *.lst
*.mod.c *.mod.c
*.mbx
*.o *.o
*.o.* *.o.*
*.order *.order

View File

@ -1,8 +1,8 @@
# SPDX-License-Identifier: GPL-2.0+ # SPDX-License-Identifier: GPL-2.0+
# Grab our configured image. The source for this is found # Grab our configured image. The source for this is found at:
# in the u-boot tree at tools/docker/Dockerfile # https://source.denx.de/u-boot/gitlab-ci-runner
image: trini/u-boot-gitlab-ci-runner:jammy-20221003-17Oct2022 image: trini/u-boot-gitlab-ci-runner:focal-20220113-03Feb2022
# We run some tests in different order, to catch some failures quicker. # We run some tests in different order, to catch some failures quicker.
stages: stages:
@ -33,7 +33,6 @@ stages:
script: script:
# If we've been asked to use clang only do one configuration. # If we've been asked to use clang only do one configuration.
- export UBOOT_TRAVIS_BUILD_DIR=/tmp/${TEST_PY_BD} - export UBOOT_TRAVIS_BUILD_DIR=/tmp/${TEST_PY_BD}
- echo BUILD_ENV ${BUILD_ENV}
- tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -E -W -e - tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -E -W -e
--board ${TEST_PY_BD} ${OVERRIDE} --board ${TEST_PY_BD} ${OVERRIDE}
- cp ~/grub_x86.efi $UBOOT_TRAVIS_BUILD_DIR/ - cp ~/grub_x86.efi $UBOOT_TRAVIS_BUILD_DIR/
@ -92,6 +91,7 @@ build all 64bit ARM platforms:
script: script:
- virtualenv -p /usr/bin/python3 /tmp/venv - virtualenv -p /usr/bin/python3 /tmp/venv
- . /tmp/venv/bin/activate - . /tmp/venv/bin/activate
- pip install pyelftools
- ret=0; - ret=0;
./tools/buildman/buildman -o /tmp -P -E -W aarch64 || ret=$?; ./tools/buildman/buildman -o /tmp -P -E -W aarch64 || ret=$?;
if [[ $ret -ne 0 ]]; then if [[ $ret -ne 0 ]]; then
@ -124,26 +124,21 @@ check for migrated symbols in board header:
script: script:
- KSYMLST=`mktemp`; - KSYMLST=`mktemp`;
KUSEDLST=`mktemp`; KUSEDLST=`mktemp`;
RET=0;
cat `find . -name "Kconfig*"` | cat `find . -name "Kconfig*"` |
sed -n -e 's/^\s*config *\([A-Za-z0-9_]*\).*$/CONFIG_\1/p' sed -n -e 's/^\s*config *\([A-Za-z0-9_]*\).*$/CONFIG_\1/p'
-e 's/^\s*menuconfig *\([A-Za-z0-9_]*\).*$/CONFIG_\1/p' -e 's/^\s*menuconfig *\([A-Za-z0-9_]*\).*$/CONFIG_\1/p'
| sort -u > $KSYMLST; | sort -u > $KSYMLST;
for CFG in `find include/configs -name "*.h"`; do for CFG in `find include/configs -name "*.h"`; do
(grep '#define[[:blank:]]CONFIG_' $CFG | grep '#define[[:blank:]]CONFIG_' $CFG |
sed -n 's/#define.\(CONFIG_[A-Za-z0-9_]*\).*/\1/p' ; sed -n 's/#define.\(CONFIG_[A-Za-z0-9_]*\).*/\1/p' |
grep '#undef[[:blank:]]CONFIG_' $CFG |
sed -n 's/#undef.\(CONFIG_[A-Za-z0-9_]*\).*/\1/p') |
sort -u > ${KUSEDLST} || true; sort -u > ${KUSEDLST} || true;
NUM=`comm -123 --total --output-delimiter=, ${KSYMLST} ${KUSEDLST} | NUM=`comm -12 --total --output-delimiter=, ${KSYMLST} ${KUSEDLST} |
cut -d , -f 3`; cut -d , -f 3`;
if [[ $NUM -ne 0 ]]; then if [[ $NUM -ne 0 ]]; then
echo "Unmigrated symbols found in $CFG:"; echo "Unmigrated symbols found in $CFG";
comm -12 ${KSYMLST} ${KUSEDLST}; exit 1;
RET=1;
fi; fi;
done; done
exit $RET
# QA jobs for code analytics # QA jobs for code analytics
# static code analysis with cppcheck (we can add --enable=all later) # static code analysis with cppcheck (we can add --enable=all later)
@ -180,7 +175,7 @@ sloccount:
Check for configs without MAINTAINERS entry: Check for configs without MAINTAINERS entry:
stage: testsuites stage: testsuites
script: script:
- ./tools/buildman/buildman -R - if [ `./tools/genboardscfg.py -f 2>&1 | wc -l` -ne 0 ]; then exit 1; fi
# Ensure host tools build # Ensure host tools build
Build tools-only: Build tools-only:
@ -199,7 +194,6 @@ Run binman, buildman, dtoc, Kconfig and patman testsuites:
script: script:
- git config --global user.name "GitLab CI Runner"; - git config --global user.name "GitLab CI Runner";
git config --global user.email trini@konsulko.com; git config --global user.email trini@konsulko.com;
git config --global --add safe.directory "${CI_PROJECT_DIR}";
export USER=gitlab; export USER=gitlab;
virtualenv -p /usr/bin/python3 /tmp/venv; virtualenv -p /usr/bin/python3 /tmp/venv;
. /tmp/venv/bin/activate; . /tmp/venv/bin/activate;
@ -207,10 +201,8 @@ Run binman, buildman, dtoc, Kconfig and patman testsuites:
export UBOOT_TRAVIS_BUILD_DIR=/tmp/sandbox_spl; export UBOOT_TRAVIS_BUILD_DIR=/tmp/sandbox_spl;
export PYTHONPATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc/pylibfdt"; export PYTHONPATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc/pylibfdt";
export PATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc:${PATH}"; export PATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc:${PATH}";
set +e;
./tools/buildman/buildman -T0 -o ${UBOOT_TRAVIS_BUILD_DIR} -w ./tools/buildman/buildman -T0 -o ${UBOOT_TRAVIS_BUILD_DIR} -w
--board sandbox_spl; --board sandbox_spl;
set -e;
./tools/binman/binman --toolpath ${UBOOT_TRAVIS_BUILD_DIR}/tools test; ./tools/binman/binman --toolpath ${UBOOT_TRAVIS_BUILD_DIR}/tools test;
./tools/buildman/buildman -t; ./tools/buildman/buildman -t;
./tools/dtoc/dtoc -t; ./tools/dtoc/dtoc -t;
@ -223,25 +215,6 @@ Run tests for Nokia RX-51 (aka N900):
- export PATH=/opt/gcc-11.1.0-nolibc/arm-linux-gnueabi/bin:$PATH; - export PATH=/opt/gcc-11.1.0-nolibc/arm-linux-gnueabi/bin:$PATH;
test/nokia_rx51_test.sh test/nokia_rx51_test.sh
# Check for any pylint regressions
Run pylint:
stage: testsuites
script:
- git config --global --add safe.directory "${CI_PROJECT_DIR}"
- pip install -r test/py/requirements.txt
- pip install asteval pylint==2.12.2 pyopenssl
- export PATH=${PATH}:~/.local/bin
- echo "[MASTER]" >> .pylintrc
- echo "load-plugins=pylint.extensions.docparams" >> .pylintrc
- export UBOOT_TRAVIS_BUILD_DIR=/tmp/sandbox_spl
- set +e
- ./tools/buildman/buildman -T0 -o ${UBOOT_TRAVIS_BUILD_DIR} -w
--board sandbox_spl
- set -e
- pylint --version
- export PYTHONPATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc/pylibfdt"
- make pylint_err
# Test sandbox with test.py # Test sandbox with test.py
sandbox test.py: sandbox test.py:
variables: variables:
@ -254,12 +227,6 @@ sandbox with clang test.py:
OVERRIDE: "-O clang-13" OVERRIDE: "-O clang-13"
<<: *buildman_and_testpy_dfn <<: *buildman_and_testpy_dfn
sandbox without LTO test.py:
variables:
TEST_PY_BD: "sandbox"
BUILD_ENV: "NO_LTO=1"
<<: *buildman_and_testpy_dfn
sandbox_spl test.py: sandbox_spl test.py:
variables: variables:
TEST_PY_BD: "sandbox_spl" TEST_PY_BD: "sandbox_spl"
@ -272,24 +239,12 @@ sandbox_noinst_test.py:
TEST_PY_TEST_SPEC: "test_ofplatdata or test_handoff or test_spl" TEST_PY_TEST_SPEC: "test_ofplatdata or test_handoff or test_spl"
<<: *buildman_and_testpy_dfn <<: *buildman_and_testpy_dfn
sandbox_vpl test.py:
variables:
TEST_PY_BD: "sandbox_vpl"
TEST_PY_TEST_SPEC: "test_vpl_help or test_spl"
<<: *buildman_and_testpy_dfn
evb-ast2500 test.py: evb-ast2500 test.py:
variables: variables:
TEST_PY_BD: "evb-ast2500" TEST_PY_BD: "evb-ast2500"
TEST_PY_ID: "--id qemu" TEST_PY_ID: "--id qemu"
<<: *buildman_and_testpy_dfn <<: *buildman_and_testpy_dfn
evb-ast2600 test.py:
variables:
TEST_PY_BD: "evb-ast2600"
TEST_PY_ID: "--id qemu"
<<: *buildman_and_testpy_dfn
sandbox_flattree test.py: sandbox_flattree test.py:
variables: variables:
TEST_PY_BD: "sandbox_flattree" TEST_PY_BD: "sandbox_flattree"

View File

@ -22,13 +22,11 @@ Andreas Bießmann <andreas@biessmann.org>
Aneesh V <aneesh@ti.com> Aneesh V <aneesh@ti.com>
Anup Patel <anup@brainfault.org> <anup.patel@wdc.com> Anup Patel <anup@brainfault.org> <anup.patel@wdc.com>
Atish Patra <atishp@atishpatra.org> <atish.patra@wdc.com> Atish Patra <atishp@atishpatra.org> <atish.patra@wdc.com>
Bin Meng <bmeng.cn@gmail.com> <bin.meng@windriver.com>
Boris Brezillon <bbrezillon@kernel.org> <boris.brezillon@bootlin.com> Boris Brezillon <bbrezillon@kernel.org> <boris.brezillon@bootlin.com>
Boris Brezillon <bbrezillon@kernel.org> <boris.brezillon@free-electrons.com> Boris Brezillon <bbrezillon@kernel.org> <boris.brezillon@free-electrons.com>
Dirk Behme <dirk.behme@googlemail.com> Dirk Behme <dirk.behme@googlemail.com>
Fabio Estevam <fabio.estevam@nxp.com> Fabio Estevam <fabio.estevam@nxp.com>
Heinrich Schuchardt <xypron.glpk@gmx.de> <heinrich.schuchardt@canonical.com> Heinrich Schuchardt <xypron.glpk@gmx.de> <heinrich.schuchardt@canonical.com>
Heinrich Schuchardt <xypron.glpk@gmx.de> xypron.glpk@gmx.de <xypron.glpk@gmx.de>
Jagan Teki <402jagan@gmail.com> Jagan Teki <402jagan@gmail.com>
Jagan Teki <jaganna@gmail.com> Jagan Teki <jaganna@gmail.com>
Jagan Teki <jaganna@xilinx.com> Jagan Teki <jaganna@xilinx.com>
@ -37,19 +35,7 @@ Jagan Teki <jagannadha.sutradharudu-teki@xilinx.com>
Jernej Skrabec <jernej.skrabec@gmail.com> <jernej.skrabec@siol.net> Jernej Skrabec <jernej.skrabec@gmail.com> <jernej.skrabec@siol.net>
Igor Opaniuk <igor.opaniuk@gmail.com> <igor.opaniuk@linaro.org> Igor Opaniuk <igor.opaniuk@gmail.com> <igor.opaniuk@linaro.org>
Igor Opaniuk <igor.opaniuk@gmail.com> <igor.opaniuk@toradex.com> Igor Opaniuk <igor.opaniuk@gmail.com> <igor.opaniuk@toradex.com>
Marek Behún <kabel@kernel.org> <marek.behun@nic.cz>
Marek Behún <kabel@kernel.org> Marek Behun <marek.behun@nic.cz>
Marek Vasut <marex@denx.de> <marek.vasut+renesas@gmail.com>
Marek Vasut <marex@denx.de> <marek.vasut@gmail.com>
Marek Vasut <marex@denx.de> <marex at denx.de>
Markus Klotzbuecher <mk@denx.de> Markus Klotzbuecher <mk@denx.de>
Masahiro Yamada <yamada.masahiro@socionext.com> <yamada.m@jp.panasonic.com>
Masahiro Yamada <yamada.masahiro@socionext.com> <masahiroy@kernel.org>
Michal Simek <michal.simek@amd.com> <michal.simek@xilinx.com>
Michal Simek <michal.simek@xilinx.com> <monstr@monstr.eu>
Michal Simek <michal.simek@xilinx.com> <Monstr@seznam.cz>
Michal Simek <michal.simek@xilinx.com> <root@monstr.eu>
Neil Armstrong <neil.armstrong@linaro.org> <narmstrong@baylibre.com>
Nicolas Saenz Julienne <nsaenz@kernel.org> <nsaenzjulienne@suse.de> Nicolas Saenz Julienne <nsaenz@kernel.org> <nsaenzjulienne@suse.de>
Patrice Chotard <patrice.chotard@foss.st.com> <patrice.chotard@st.com> Patrice Chotard <patrice.chotard@foss.st.com> <patrice.chotard@st.com>
Patrick Delaunay <patrick.delaunay@foss.st.com> <patrick.delaunay@st.com> Patrick Delaunay <patrick.delaunay@foss.st.com> <patrick.delaunay@st.com>
@ -61,19 +47,10 @@ Ricardo Ribalda <ricardo@ribalda.com> <ricardo.ribalda@gmail.com>
Ruchika Gupta <ruchika.gupta@nxp.com> <ruchika.gupta@freescale.com> Ruchika Gupta <ruchika.gupta@nxp.com> <ruchika.gupta@freescale.com>
Sandeep Paulraj <s-paulraj@ti.com> Sandeep Paulraj <s-paulraj@ti.com>
Shaohui Xie <Shaohui.Xie@freescale.com> Shaohui Xie <Shaohui.Xie@freescale.com>
Stefan Roese <sr@denx.de> <stroese> Stefan Roese <stroese>
Stefano Babic <sbabic@denx.de> Stefano Babic <sbabic@denx.de>
Tom Rini <trini@konsulko.com> <trini@ti.com>
TsiChung Liew <Tsi-Chung.Liew@freescale.com> TsiChung Liew <Tsi-Chung.Liew@freescale.com>
Wolfgang Denk <wd@denx.de> <wdenk> Wolfgang Denk <wdenk>
Wolfgang Denk <wd@denx.de> <wd@pollux.denx.de>
Wolfgang Denk <wd@denx.de> <wd@pollux.(none)>
Wolfgang Denk <wd@denx.de> <wd@fifi.denx.de>
Wolfgang Denk <wd@denx.de> <wd@nyx.denx.de>
Wolfgang Denk <wd@denx.de> <wd@atlas.denx.de>
Wolfgang Denk <wd@denx.de> <wd@castor.denx.de>
Wolfgang Denk <wd@denx.de> <wd@xpert.denx.de>
Wolfgang Denk <wd@denx.de> <wd@nyx.(none)>
York Sun <yorksun@freescale.com> York Sun <yorksun@freescale.com>
York Sun <york.sun@nxp.com> York Sun <york.sun@nxp.com>
Łukasz Majewski <l.majewski@samsung.com> Łukasz Majewski <l.majewski@samsung.com>

153
Kconfig
View File

@ -12,6 +12,8 @@ source "scripts/Kconfig.include"
# Allow defaults in arch-specific code to override any given here # Allow defaults in arch-specific code to override any given here
source "arch/Kconfig" source "arch/Kconfig"
source "board/sunxi/Kconfig"
menu "General setup" menu "General setup"
config BROKEN config BROKEN
@ -72,32 +74,15 @@ config CLANG_VERSION
int int
default $(shell,$(srctree)/scripts/clang-version.sh $(CC)) default $(shell,$(srctree)/scripts/clang-version.sh $(CC))
choice
prompt "Optimization level"
default CC_OPTIMIZE_FOR_SIZE
config CC_OPTIMIZE_FOR_SIZE config CC_OPTIMIZE_FOR_SIZE
bool "Optimize for size" bool "Optimize for size"
default y
help help
Enabling this option will pass "-Os" to gcc, resulting in a smaller Enabling this option will pass "-Os" instead of "-O2" to gcc
U-Boot image. resulting in a smaller U-Boot image.
This option is enabled by default for U-Boot. This option is enabled by default for U-Boot.
config CC_OPTIMIZE_FOR_SPEED
bool "Optimize for speed"
help
Enabling this option will pass "-O2" to gcc, resulting in a faster
U-Boot image.
config CC_OPTIMIZE_FOR_DEBUG
bool "Optimize for debugging"
help
Enabling this option will pass "-Og" to gcc, enabling optimizations
which don't interfere with debugging.
endchoice
config OPTIMIZE_INLINING config OPTIMIZE_INLINING
bool "Allow compiler to uninline functions marked 'inline' in full U-Boot" bool "Allow compiler to uninline functions marked 'inline' in full U-Boot"
help help
@ -154,22 +139,6 @@ config CC_COVERAGE
Enabling this option will pass "--coverage" to gcc to compile Enabling this option will pass "--coverage" to gcc to compile
and link code instrumented for coverage analysis. and link code instrumented for coverage analysis.
config ASAN
bool "Enable AddressSanitizer"
depends on SANDBOX
help
Enables AddressSanitizer to discover out-of-bounds accesses,
use-after-free, double-free and memory leaks.
config FUZZ
bool "Enable fuzzing"
depends on CC_IS_CLANG
depends on DM_FUZZING_ENGINE
select ASAN
help
Enables the fuzzing infrastructure to generate fuzzing data and run
fuzz tests.
config CC_HAS_ASM_INLINE config CC_HAS_ASM_INLINE
def_bool $(success,echo 'void foo(void) { asm inline (""); }' | $(CC) -x c - -c -o /dev/null) def_bool $(success,echo 'void foo(void) { asm inline (""); }' | $(CC) -x c - -c -o /dev/null)
@ -244,38 +213,12 @@ config SYS_BOOT_GET_CMDLINE
Enables allocating and saving kernel cmdline in space between Enables allocating and saving kernel cmdline in space between
"bootm_low" and "bootm_low" + BOOTMAPSZ. "bootm_low" and "bootm_low" + BOOTMAPSZ.
config SYS_BARGSIZE
int "Size of kernel command line buffer in bytes"
depends on SYS_BOOT_GET_CMDLINE
default 512
help
Buffer size for Boot Arguments which are passed to the application
(usually a Linux kernel) when it is booted
config SYS_BOOT_GET_KBD config SYS_BOOT_GET_KBD
bool "Enable kernel board information setup" bool "Enable kernel board information setup"
help help
Enables allocating and saving a kernel copy of the bd_info in Enables allocating and saving a kernel copy of the bd_info in
space between "bootm_low" and "bootm_low" + BOOTMAPSZ. space between "bootm_low" and "bootm_low" + BOOTMAPSZ.
config HAS_CUSTOM_SYS_INIT_SP_ADDR
bool "Use a custom location for the initial stack pointer address"
depends on ARC || (ARM && !INIT_SP_RELATIVE) || MIPS || PPC || RISCV
default y if TFABOOT
help
Typically, we use an initial stack pointer address that is calculated
by taking the statically defined CONFIG_SYS_INIT_RAM_ADDR, adding the
statically defined CONFIG_SYS_INIT_RAM_SIZE and then subtracting the
build-time constant of GENERATED_GBL_DATA_SIZE. On MIPS a different
but statica calculation is performed. However, some platforms will
take a different approach. Say Y here to define the address statically
instead.
config CUSTOM_SYS_INIT_SP_ADDR
hex "Static location for the initial stack pointer"
depends on HAS_CUSTOM_SYS_INIT_SP_ADDR
default TEXT_BASE if TFABOOT
config SYS_MALLOC_F config SYS_MALLOC_F
bool "Enable malloc() pool before relocation" bool "Enable malloc() pool before relocation"
default y if DM default y if DM
@ -289,18 +232,13 @@ config SYS_MALLOC_F
config SYS_MALLOC_F_LEN config SYS_MALLOC_F_LEN
hex "Size of malloc() pool before relocation" hex "Size of malloc() pool before relocation"
depends on SYS_MALLOC_F depends on SYS_MALLOC_F
default 0x400 if M68K || PPC || ROCKCHIP_PX30 || ROCKCHIP_RK3036 || \ default 0x1000 if AM33XX
ROCKCHIP_RK3308 || ROCKCHIP_RV1108 default 0x4000 if SANDBOX
default 0x600 if ARCH_ZYNQMP_R5 || ARCH_ZYNQMP default 0x2000 if (ARCH_IMX8 || ARCH_IMX8M || ARCH_MX7 || \
default 0x800 if ARCH_ZYNQ || ROCKCHIP_RK3128 || ROCKCHIP_RK3188 || \ ARCH_MX7ULP || ARCH_MX6 || ARCH_MX5 || \
ROCKCHIP_RK322X || X86 ARCH_LS1012A || ARCH_LS1021A || ARCH_LS1043A || \
default 0x1000 if ARCH_MESON || ARCH_BMIPS || ARCH_MTMIPS ARCH_LS1046A || ARCH_QEMU || ARCH_SUNXI || ARCH_OWL || TARGET_SUNXI)
default 0x1800 if ARCH_TEGRA default 0x400
default 0x4000 if SANDBOX || RISCV || ARCH_APPLE || ROCKCHIP_RK3368 || \
ROCKCHIP_RK3399
default 0x8000 if RCAR_GEN3
default 0x10000 if ARCH_IMX8 || ARCH_IMX8M
default 0x2000
help help
Before relocation, memory is very limited on many platforms. Still, Before relocation, memory is very limited on many platforms. Still,
we can provide a small malloc() pool if needed. Driver model in we can provide a small malloc() pool if needed. Driver model in
@ -309,12 +247,11 @@ config SYS_MALLOC_F_LEN
config SYS_MALLOC_LEN config SYS_MALLOC_LEN
hex "Define memory for Dynamic allocation" hex "Define memory for Dynamic allocation"
default 0x4000000 if SANDBOX
default 0x2000000 if ARCH_ROCKCHIP || ARCH_OMAP2PLUS || ARCH_MESON default 0x2000000 if ARCH_ROCKCHIP || ARCH_OMAP2PLUS || ARCH_MESON
default 0x200000 if ARCH_BMIPS || X86 default 0x200000 if ARCH_BMIPS || X86
default 0x4020000 if SUNXI_MINIMUM_DRAM_MB >= 256 default 0x120000 if MACH_SUNIV
default 0x220000 if SUNXI_MINIMUM_DRAM_MB >= 64 default 0x220000 if MACH_SUN8I_V3S
default 0x120000 if SUNXI_MINIMUM_DRAM_MB >= 32 default 0x4020000 if ARCH_SUNXI
default 0x400000 default 0x400000
help help
This defines memory to be allocated for Dynamic allocation This defines memory to be allocated for Dynamic allocation
@ -323,9 +260,7 @@ config SYS_MALLOC_LEN
config SPL_SYS_MALLOC_F_LEN config SPL_SYS_MALLOC_F_LEN
hex "Size of malloc() pool in SPL" hex "Size of malloc() pool in SPL"
depends on SYS_MALLOC_F && SPL depends on SYS_MALLOC_F && SPL
default 0 if !SPL_FRAMEWORK
default 0x2800 if RCAR_GEN3 default 0x2800 if RCAR_GEN3
default 0x2000 if IMX8MQ
default SYS_MALLOC_F_LEN default SYS_MALLOC_F_LEN
help help
In SPL memory is very limited on many platforms. Still, In SPL memory is very limited on many platforms. Still,
@ -346,31 +281,6 @@ config TPL_SYS_MALLOC_F_LEN
particular needs this to operate, so that it can allocate the particular needs this to operate, so that it can allocate the
initial serial device and any others that are needed. initial serial device and any others that are needed.
config VALGRIND
bool "Inform valgrind about memory allocations"
depends on !RISCV
help
Valgrind is an instrumentation framework for building dynamic analysis
tools. In particular, it may be used to detect memory management bugs
in U-Boot. It relies on knowing when heap blocks are allocated in
order to give accurate results. This happens automatically for
standard allocator functions provided by the host OS. However, this
doesn't automatically happen for U-Boot's malloc implementation.
Enable this option to annotate U-Boot's malloc implementation so that
it can be handled accurately by Valgrind. If you aren't planning on
using valgrind to debug U-Boot, say 'n'.
config VPL_SYS_MALLOC_F_LEN
hex "Size of malloc() pool in VPL before relocation"
depends on SYS_MALLOC_F && VPL
default SYS_MALLOC_F_LEN
help
Before relocation, memory is very limited on many platforms. Still,
we can provide a small malloc() pool if needed. Driver model in
particular needs this to operate, so that it can allocate the
initial serial device and any others that are needed.
menuconfig EXPERT menuconfig EXPERT
bool "Configure standard U-Boot features (expert users)" bool "Configure standard U-Boot features (expert users)"
default y default y
@ -470,23 +380,6 @@ config BUILD_TARGET
special image will be automatically built upon calling special image will be automatically built upon calling
make / buildman. make / buildman.
config HAS_BOARD_SIZE_LIMIT
bool "Define a maximum size for the U-Boot image"
default y if RCAR_GEN3
help
In some cases, we need to enforce a hard limit on how big the U-Boot
image itself can be.
config BOARD_SIZE_LIMIT
int "Maximum size of the U-Boot image in bytes"
default 1048576 if RCAR_GEN3
depends on HAS_BOARD_SIZE_LIMIT
help
Maximum size of the U-Boot image. When defined, the build system
checks that the actual size does not exceed it. This does not
include SPL nor TPL, on platforms that use that functionality, they
have a separate option to restict size.
config SYS_CUSTOM_LDSCRIPT config SYS_CUSTOM_LDSCRIPT
bool "Use a custom location for the U-Boot linker script" bool "Use a custom location for the U-Boot linker script"
help help
@ -508,6 +401,9 @@ config SYS_LOAD_ADDR
hex "Address in memory to use by default" hex "Address in memory to use by default"
default 0x01000000 if ARCH_SOCFPGA default 0x01000000 if ARCH_SOCFPGA
default 0x02000000 if PPC || X86 default 0x02000000 if PPC || X86
default 0x81000000 if MACH_SUNIV
default 0x22000000 if MACH_SUN9I
default 0x42000000 if ARCH_SUNXI
default 0x82000000 if ARCH_KEYSTONE || ARCH_OMAP2PLUS || ARCH_K3 default 0x82000000 if ARCH_KEYSTONE || ARCH_OMAP2PLUS || ARCH_K3
default 0x82000000 if ARCH_MX6 && (MX6SL || MX6SLL || MX6SX || MX6UL || MX6ULL) default 0x82000000 if ARCH_MX6 && (MX6SL || MX6SLL || MX6SX || MX6UL || MX6ULL)
default 0x12000000 if ARCH_MX6 && !(MX6SL || MX6SLL || MX6SX || MX6UL || MX6ULL) default 0x12000000 if ARCH_MX6 && !(MX6SL || MX6SLL || MX6SX || MX6UL || MX6ULL)
@ -537,7 +433,7 @@ config PLATFORM_ELFENTRY
config STACK_SIZE config STACK_SIZE
hex "Define max stack size that can be used by U-Boot" hex "Define max stack size that can be used by U-Boot"
default 0x4000000 if ARCH_VERSAL_NET || ARCH_VERSAL || ARCH_ZYNQMP default 0x4000000 if ARCH_VERSAL || ARCH_ZYNQMP
default 0x200000 if MICROBLAZE default 0x200000 if MICROBLAZE
default 0x1000000 default 0x1000000
help help
@ -545,17 +441,6 @@ config STACK_SIZE
by the UEFI sub-system. On some boards initrd_high is calculated as by the UEFI sub-system. On some boards initrd_high is calculated as
base stack pointer minus this stack size. base stack pointer minus this stack size.
config SYS_MEM_TOP_HIDE
hex "Exclude some memory from U-Boot / OS information"
default 0x0
help
If set, this specified memory area will get subtracted from the top
(end) of RAM and won't get "touched" at all by U-Boot. By fixing up
gd->ram_size the OS / next stage should gets passed the now
"corrected" memory size and won't touch it either.
WARNING: Please make sure that this value is a multiple of the OS
page size.
config SYS_HAS_SRAM config SYS_HAS_SRAM
bool bool
default y if TARGET_PIC32MZDASK default y if TARGET_PIC32MZDASK

View File

@ -7,13 +7,9 @@ use U-Boot services by means of the jump table provided by U-Boot
exactly for this purpose - this is merely considered normal use of exactly for this purpose - this is merely considered normal use of
U-Boot, and does *not* fall under the heading of "derived work". U-Boot, and does *not* fall under the heading of "derived work".
The following files define interfaces to U-Boot: The header files "include/image.h" and "arch/*/include/asm/u-boot.h"
* include/image.h define interfaces to U-Boot. Including these (unmodified) header
* include/export.h files in another file is considered normal use of U-Boot, and does
* arch/*/include/asm/u-boot.h *not* fall under the heading of "derived work".
* examples/standalone/stubs.c
Including these (unmodified) files in another file is considered normal
use of U-Boot, and does *not* fall under the heading of "derived work".
-- Wolfgang Denk -- Wolfgang Denk

View File

@ -139,7 +139,6 @@ License identifier syntax
Full name SPDX Identifier OSI Approved File name URI Full name SPDX Identifier OSI Approved File name URI
======================================================================================================================================= =======================================================================================================================================
bzip2 and libbzip2 License v1.0.6 bzip2-1.0.6 bzip2-1.0.6.txt https://spdx.org/licenses/bzip2-1.0.6.html
GNU General Public License v2.0 only GPL-2.0 Y gpl-2.0.txt http://www.gnu.org/licenses/gpl-2.0.txt GNU General Public License v2.0 only GPL-2.0 Y gpl-2.0.txt http://www.gnu.org/licenses/gpl-2.0.txt
GNU General Public License v2.0 or later GPL-2.0+ Y gpl-2.0.txt http://www.gnu.org/licenses/gpl-2.0.txt GNU General Public License v2.0 or later GPL-2.0+ Y gpl-2.0.txt http://www.gnu.org/licenses/gpl-2.0.txt
GNU Library General Public License v2 or later LGPL-2.0+ Y lgpl-2.0.txt http://www.gnu.org/licenses/old-licenses/lgpl-2.0.txt GNU Library General Public License v2 or later LGPL-2.0+ Y lgpl-2.0.txt http://www.gnu.org/licenses/old-licenses/lgpl-2.0.txt

View File

@ -1,30 +0,0 @@
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. The origin of this software must not be misrepresented; you must
not claim that you wrote the original software. If you use this
software in a product, an acknowledgment in the product
documentation would be appreciated but is not required.
3. Altered source versions must be plainly marked as such, and must
not be misrepresented as being the original software.
4. The name of the author may not be used to endorse or promote
products derived from this software without specific prior written
permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -121,7 +121,6 @@ F: arch/arm/include/asm/arch-m1/
F: arch/arm/mach-apple/ F: arch/arm/mach-apple/
F: configs/apple_m1_defconfig F: configs/apple_m1_defconfig
F: drivers/iommu/apple_dart.c F: drivers/iommu/apple_dart.c
F: drivers/nvme/nvme_apple.c
F: drivers/pinctrl/pinctrl-apple.c F: drivers/pinctrl/pinctrl-apple.c
F: drivers/watchdog/apple_wdt.c F: drivers/watchdog/apple_wdt.c
F: include/configs/apple.h F: include/configs/apple.h
@ -143,7 +142,7 @@ F: arch/arm/mach-socfpga/
F: drivers/sysreset/sysreset_socfpga* F: drivers/sysreset/sysreset_socfpga*
ARM AMLOGIC SOC SUPPORT ARM AMLOGIC SOC SUPPORT
M: Neil Armstrong <neil.armstrong@linaro.org> M: Neil Armstrong <narmstrong@baylibre.com>
S: Maintained S: Maintained
L: u-boot-amlogic@groups.io L: u-boot-amlogic@groups.io
T: git https://source.denx.de/u-boot/custodians/u-boot-amlogic.git T: git https://source.denx.de/u-boot/custodians/u-boot-amlogic.git
@ -161,7 +160,6 @@ F: drivers/spi/meson_spifc.c
F: drivers/pinctrl/meson/ F: drivers/pinctrl/meson/
F: drivers/power/domain/meson-gx-pwrc-vpu.c F: drivers/power/domain/meson-gx-pwrc-vpu.c
F: drivers/video/meson/ F: drivers/video/meson/
F: drivers/watchdog/meson_gxbb_wdt.c
F: include/configs/meson64.h F: include/configs/meson64.h
F: include/configs/meson64_android.h F: include/configs/meson64_android.h
F: doc/board/amlogic/ F: doc/board/amlogic/
@ -171,23 +169,12 @@ ARM ASPEED
M: Ryan Chen <ryan_chen@aspeedtech.com> M: Ryan Chen <ryan_chen@aspeedtech.com>
M: Chia-Wei Wang <chiawei_wang@aspeedtech.com> M: Chia-Wei Wang <chiawei_wang@aspeedtech.com>
R: Aspeed BMC SW team <BMC-SW@aspeedtech.com> R: Aspeed BMC SW team <BMC-SW@aspeedtech.com>
R: Joel Stanley <joel@jms.id.au>
S: Maintained S: Maintained
F: arch/arm/mach-aspeed/ F: arch/arm/mach-aspeed/
F: arch/arm/include/asm/arch-aspeed/ F: arch/arm/include/asm/arch-aspeed/
F: board/aspeed/ F: board/aspeed/
F: drivers/clk/aspeed/ F: drivers/clk/aspeed/
F: drivers/crypto/aspeed/
F: drivers/gpio/gpio-aspeed.c
F: drivers/i2c/ast_i2c.[ch]
F: drivers/mmc/aspeed_sdhci.c
F: drivers/net/aspeed_mdio.c
F: drivers/net/ftgmac100.[ch]
F: drivers/pinctrl/aspeed/ F: drivers/pinctrl/aspeed/
F: drivers/pwm/pwm-aspeed.c
F: drivers/ram/aspeed/
F: drivers/reset/reset-ast2500.c
F: drivers/watchdog/ast_wdt.c
N: aspeed N: aspeed
ARM BROADCOM BCM283X / BCM27XX ARM BROADCOM BCM283X / BCM27XX
@ -208,32 +195,6 @@ F: drivers/pinctrl/broadcom/
F: configs/rpi_* F: configs/rpi_*
T: git https://source.denx.de/u-boot/custodians/u-boot-arm.git T: git https://source.denx.de/u-boot/custodians/u-boot-arm.git
ARM BROADCOM BCMBCA
M: Anand Gore <anand.gore@broadcom.com>
M: William Zhang <william.zhang@broadcom.com>
M: Kursad Oney <kursad.oney@broadcom.com>
M: Joel Peshkin <joel.peshkin@broadcom.com>
M: Philippe Reynes <philippe.reynes@softathome.com>
S: Maintained
F: arch/arm/mach-bcmbca/
F: board/broadcom/bcmbca/
N: bcmbca
N: bcm[9]?47622
N: bcm[9]?4908
N: bcm[9]?4912
N: bcm[9]?63138
N: bcm[9]?63146
N: bcm[9]?63148
N: bcm[9]?63158
N: bcm[9]?63178
N: bcm[9]?6756
N: bcm[9]?6813
N: bcm[9]?6846
N: bcm[9]?6855
N: bcm[9]?6856
N: bcm[9]?6858
N: bcm[9]?6878
ARM BROADCOM BCMSTB ARM BROADCOM BCMSTB
M: Thomas Fitzsimmons <fitzsim@fitzsim.org> M: Thomas Fitzsimmons <fitzsim@fitzsim.org>
S: Maintained S: Maintained
@ -263,6 +224,14 @@ F: drivers/net/cortina_ni.h
F: drivers/net/phy/ca_phy.c F: drivers/net/phy/ca_phy.c
F: configs/cortina_presidio-asic-pnand_defconfig F: configs/cortina_presidio-asic-pnand_defconfig
ARM/CZ.NIC TURRIS MOX SUPPORT
M: Marek Behun <marek.behun@nic.cz>
S: Maintained
F: arch/arm/dts/armada-3720-turris-mox.dts
F: board/CZ.NIC/
F: configs/turris_*_defconfig
F: include/configs/turris_*.h
ARM FREESCALE IMX ARM FREESCALE IMX
M: Stefano Babic <sbabic@denx.de> M: Stefano Babic <sbabic@denx.de>
M: Fabio Estevam <festevam@gmail.com> M: Fabio Estevam <festevam@gmail.com>
@ -274,12 +243,11 @@ F: arch/arm/cpu/arm926ejs/mx*/
F: arch/arm/cpu/armv7/vf610/ F: arch/arm/cpu/armv7/vf610/
F: arch/arm/dts/*imx* F: arch/arm/dts/*imx*
F: arch/arm/mach-imx/ F: arch/arm/mach-imx/
F: arch/arm/include/asm/arch-imx*/ F: arch/arm/include/asm/arch-imx/
F: arch/arm/include/asm/arch-mx*/ F: arch/arm/include/asm/arch-mx*/
F: arch/arm/include/asm/arch-vf610/ F: arch/arm/include/asm/arch-vf610/
F: arch/arm/include/asm/mach-imx/ F: arch/arm/include/asm/mach-imx/
F: board/freescale/*mx*/ F: board/freescale/*mx*/
F: drivers/serial/serial_mxc.c
ARM HISILICON ARM HISILICON
M: Peter Griffin <peter.griffin@linaro.org> M: Peter Griffin <peter.griffin@linaro.org>
@ -289,19 +257,6 @@ F: arch/arm/cpu/armv8/hisilicon
F: arch/arm/include/asm/arch-hi6220/ F: arch/arm/include/asm/arch-hi6220/
F: arch/arm/include/asm/arch-hi3660/ F: arch/arm/include/asm/arch-hi3660/
ARM HPE GXP ARCHITECTURE
M: Jean-Marie Verdun <verdun@hpe.com>
M: Nick Hawkins <nick.hawkins@hpe.com>
S: Maintained
F: arch/arm/dts/hpe-bmc*
F: arch/arm/dts/hpe-gxp*
F: arch/arm/mach-hpe/
F: board/hpe/
F: configs/gxp_defconfig
F: doc/device-tree-bindings/spi/hpe,gxp-spi.yaml
F: drivers/timer/gxp-timer.c
F: drivers/spi/gxp_spi.c
ARM IPQ40XX ARM IPQ40XX
M: Robert Marko <robert.marko@sartura.hr> M: Robert Marko <robert.marko@sartura.hr>
M: Luka Kovacic <luka.kovacic@sartura.hr> M: Luka Kovacic <luka.kovacic@sartura.hr>
@ -316,11 +271,6 @@ F: drivers/spi/spi-qup.c
F: drivers/net/mdio-ipq4019.c F: drivers/net/mdio-ipq4019.c
F: drivers/rng/msm_rng.c F: drivers/rng/msm_rng.c
ARM LAYERSCAPE SFP
M: Sean Anderson <sean.anderson@seco.com>
S: Maintained
F: drivers/misc/ls2_sfp.c
ARM MARVELL KIRKWOOD ARMADA-XP ARMADA-38X ARMADA-37XX ARMADA-7K/8K ARM MARVELL KIRKWOOD ARMADA-XP ARMADA-38X ARMADA-37XX ARMADA-7K/8K
M: Stefan Roese <sr@denx.de> M: Stefan Roese <sr@denx.de>
S: Maintained S: Maintained
@ -358,6 +308,13 @@ S: Maintained
T: git https://source.denx.de/u-boot/custodians/u-boot-marvell.git T: git https://source.denx.de/u-boot/custodians/u-boot-marvell.git
F: drivers/serial/serial_mvebu_a3700.c F: drivers/serial/serial_mvebu_a3700.c
ARM MARVELL PXA
M: Marek Vasut <marex@denx.de>
S: Maintained
T: git https://source.denx.de/u-boot/custodians/u-boot-pxa.git
F: arch/arm/cpu/pxa/
F: arch/arm/include/asm/arch-pxa/
ARM MEDIATEK ARM MEDIATEK
M: Ryder Lee <ryder.lee@mediatek.com> M: Ryder Lee <ryder.lee@mediatek.com>
M: Weijie Gao <weijie.gao@mediatek.com> M: Weijie Gao <weijie.gao@mediatek.com>
@ -371,36 +328,22 @@ F: doc/device-tree-bindings/phy/phy-mtk-*
F: doc/device-tree-bindings/usb/mediatek,* F: doc/device-tree-bindings/usb/mediatek,*
F: doc/README.mediatek F: doc/README.mediatek
F: drivers/clk/mediatek/ F: drivers/clk/mediatek/
F: drivers/cpu/mtk_cpu.c
F: drivers/i2c/mtk_i2c.c
F: drivers/mmc/mtk-sd.c F: drivers/mmc/mtk-sd.c
F: drivers/phy/phy-mtk-* F: drivers/phy/phy-mtk-*
F: drivers/pinctrl/mediatek/ F: drivers/pinctrl/mediatek/
F: drivers/power/domain/mtk-power-domain.c F: drivers/power/domain/mtk-power-domain.c
F: drivers/ram/mediatek/ F: drivers/ram/mediatek/
F: drivers/spi/mtk_snfi_spi.c F: drivers/spi/mtk_snfi_spi.c
F: drivers/spi/mtk_spim.c
F: drivers/timer/mtk_timer.c F: drivers/timer/mtk_timer.c
F: drivers/usb/host/xhci-mtk.c F: drivers/usb/host/xhci-mtk.c
F: drivers/usb/mtu3/ F: drivers/usb/mtu3/
F: drivers/watchdog/mtk_wdt.c F: drivers/watchdog/mtk_wdt.c
F: drivers/net/mtk_eth.c F: drivers/net/mtk_eth.c
F: drivers/net/mtk_eth.h
F: drivers/reset/reset-mediatek.c F: drivers/reset/reset-mediatek.c
F: tools/mtk_image.c F: tools/mtk_image.c
F: tools/mtk_image.h F: tools/mtk_image.h
F: tools/mtk_nand_headers.c
F: tools/mtk_nand_headers.h
N: mediatek N: mediatek
ARM METHODE SUPPORT
M: Robert Marko <robert.marko@sartura.hr>
S: Maintained
F: arch/arm/dts/armada-3720-eDPU*
F: arch/arm/dts/armada-3720-uDPU*
F: configs/eDPU_defconfig
F: configs/uDPU_defconfig
ARM MICROCHIP/ATMEL AT91 ARM MICROCHIP/ATMEL AT91
M: Eugen Hristev <eugen.hristev@microchip.com> M: Eugen Hristev <eugen.hristev@microchip.com>
S: Maintained S: Maintained
@ -409,7 +352,6 @@ F: arch/arm/mach-at91/
F: board/atmel/ F: board/atmel/
F: drivers/cpu/at91_cpu.c F: drivers/cpu/at91_cpu.c
F: drivers/misc/microchip_flexcom.c F: drivers/misc/microchip_flexcom.c
F: drivers/timer/atmel_tcb_timer.c
F: include/dt-bindings/mfd/atmel-flexcom.h F: include/dt-bindings/mfd/atmel-flexcom.h
F: drivers/timer/mchp-pit64b-timer.c F: drivers/timer/mchp-pit64b-timer.c
@ -455,9 +397,6 @@ M: Philipp Tomsich <philipp.tomsich@vrull.eu>
M: Kever Yang <kever.yang@rock-chips.com> M: Kever Yang <kever.yang@rock-chips.com>
S: Maintained S: Maintained
T: git https://source.denx.de/u-boot/custodians/u-boot-rockchip.git T: git https://source.denx.de/u-boot/custodians/u-boot-rockchip.git
F: arch/arm/dts/rk3*
F: arch/arm/dts/rockchip*
F: arch/arm/dts/rv1108*
F: arch/arm/include/asm/arch-rockchip/ F: arch/arm/include/asm/arch-rockchip/
F: arch/arm/mach-rockchip/ F: arch/arm/mach-rockchip/
F: board/rockchip/ F: board/rockchip/
@ -475,7 +414,6 @@ F: tools/rkcommon.h
F: tools/rkimage.c F: tools/rkimage.c
F: tools/rksd.c F: tools/rksd.c
F: tools/rkspi.c F: tools/rkspi.c
N: rockchip
ARM SAMSUNG ARM SAMSUNG
M: Minkyu Kang <mk7.kang@samsung.com> M: Minkyu Kang <mk7.kang@samsung.com>
@ -510,7 +448,7 @@ F: drivers/mmc/sti_sdhci.c
F: drivers/reset/sti-reset.c F: drivers/reset/sti-reset.c
F: drivers/serial/serial_sti_asc.c F: drivers/serial/serial_sti_asc.c
F: drivers/sysreset/sysreset_sti.c F: drivers/sysreset/sysreset_sti.c
F: drivers/timer/arm_global_timer.c F: drivers/timer/sti-timer.c
F: drivers/usb/host/dwc3-sti-glue.c F: drivers/usb/host/dwc3-sti-glue.c
F: include/dwc3-sti-glue.h F: include/dwc3-sti-glue.h
F: include/dt-bindings/clock/stih407-clks.h F: include/dt-bindings/clock/stih407-clks.h
@ -526,7 +464,7 @@ S: Maintained
F: arch/arm/mach-stm32mp/ F: arch/arm/mach-stm32mp/
F: doc/board/st/ F: doc/board/st/
F: drivers/adc/stm32-adc* F: drivers/adc/stm32-adc*
F: drivers/clk/stm32/ F: drivers/clk/clk_stm32mp1.c
F: drivers/gpio/stm32_gpio.c F: drivers/gpio/stm32_gpio.c
F: drivers/hwspinlock/stm32_hwspinlock.c F: drivers/hwspinlock/stm32_hwspinlock.c
F: drivers/i2c/stm32f7_i2c.c F: drivers/i2c/stm32f7_i2c.c
@ -543,7 +481,6 @@ F: drivers/power/regulator/stpmic1.c
F: drivers/ram/stm32mp1/ F: drivers/ram/stm32mp1/
F: drivers/remoteproc/stm32_copro.c F: drivers/remoteproc/stm32_copro.c
F: drivers/reset/stm32-reset.c F: drivers/reset/stm32-reset.c
F: drivers/rng/optee_rng.c
F: drivers/rng/stm32mp1_rng.c F: drivers/rng/stm32mp1_rng.c
F: drivers/rtc/stm32_rtc.c F: drivers/rtc/stm32_rtc.c
F: drivers/serial/serial_stm32.* F: drivers/serial/serial_stm32.*
@ -650,21 +587,13 @@ F: arch/arm/mach-uniphier/
F: configs/uniphier_*_defconfig F: configs/uniphier_*_defconfig
N: uniphier N: uniphier
ARM VERSAL NET
M: Michal Simek <michal.simek@amd.com>
S: Maintained
T: git https://source.denx.de/u-boot/custodians/u-boot-microblaze.git
F: arch/arm/mach-versal-net/
N: (?<!uni)versal-net
ARM VERSAL ARM VERSAL
M: Michal Simek <michal.simek@amd.com> M: Michal Simek <michal.simek@xilinx.com>
S: Maintained S: Maintained
T: git https://source.denx.de/u-boot/custodians/u-boot-microblaze.git T: git https://source.denx.de/u-boot/custodians/u-boot-microblaze.git
F: arch/arm/mach-versal/ F: arch/arm/mach-versal/
F: drivers/net/xilinx_axi_mrmac.* F: drivers/net/xilinx_axi_mrmac.*
F: drivers/soc/soc_xilinx_versal.c F: drivers/soc/soc_xilinx_versal.c
F: drivers/spi/cadence_ospi_versal.c
F: drivers/watchdog/xilinx_wwdt.c F: drivers/watchdog/xilinx_wwdt.c
N: (?<!uni)versal N: (?<!uni)versal
@ -690,10 +619,8 @@ F: drivers/i2c/muxes/pca954x.c
F: drivers/i2c/zynq_i2c.c F: drivers/i2c/zynq_i2c.c
F: drivers/mmc/zynq_sdhci.c F: drivers/mmc/zynq_sdhci.c
F: drivers/mtd/nand/raw/zynq_nand.c F: drivers/mtd/nand/raw/zynq_nand.c
F: drivers/net/phy/ethernet_id.c
F: drivers/net/phy/xilinx_phy.c F: drivers/net/phy/xilinx_phy.c
F: drivers/net/zynq_gem.c F: drivers/net/zynq_gem.c
F: drivers/pinctrl/pinctrl-zynqmp.c
F: drivers/serial/serial_zynq.c F: drivers/serial/serial_zynq.c
F: drivers/spi/zynq_qspi.c F: drivers/spi/zynq_qspi.c
F: drivers/spi/zynq_spi.c F: drivers/spi/zynq_spi.c
@ -704,14 +631,13 @@ F: tools/zynqimage.c
N: zynq N: zynq
ARM ZYNQMP ARM ZYNQMP
M: Michal Simek <michal.simek@amd.com> M: Michal Simek <michal.simek@xilinx.com>
S: Maintained S: Maintained
T: git https://source.denx.de/u-boot/custodians/u-boot-microblaze.git T: git https://source.denx.de/u-boot/custodians/u-boot-microblaze.git
F: arch/arm/mach-zynqmp/ F: arch/arm/mach-zynqmp/
F: drivers/clk/clk_zynqmp.c F: drivers/clk/clk_zynqmp.c
F: driver/firmware/firmware-zynqmp.c F: driver/firmware/firmware-zynqmp.c
F: drivers/fpga/zynqpl.c F: drivers/fpga/zynqpl.c
F: drivers/gpio/gpio_slg7xl45106.c
F: drivers/gpio/zynq_gpio.c F: drivers/gpio/zynq_gpio.c
F: drivers/gpio/zynqmp_gpio_modepin.c F: drivers/gpio/zynqmp_gpio_modepin.c
F: drivers/i2c/i2c-cdns.c F: drivers/i2c/i2c-cdns.c
@ -724,7 +650,6 @@ F: drivers/net/phy/xilinx_phy.c
F: drivers/net/zynq_gem.c F: drivers/net/zynq_gem.c
F: drivers/phy/phy-zynqmp.c F: drivers/phy/phy-zynqmp.c
F: drivers/power/domain/zynqmp-power-domain.c F: drivers/power/domain/zynqmp-power-domain.c
F: drivers/pwm/pwm-cadence-ttc.c
F: drivers/serial/serial_zynq.c F: drivers/serial/serial_zynq.c
F: drivers/reset/reset-zynqmp.c F: drivers/reset/reset-zynqmp.c
F: drivers/rtc/zynqmp_rtc.c F: drivers/rtc/zynqmp_rtc.c
@ -732,6 +657,7 @@ F: drivers/soc/soc_xilinx_zynqmp.c
F: drivers/spi/zynq_qspi.c F: drivers/spi/zynq_qspi.c
F: drivers/spi/zynq_spi.c F: drivers/spi/zynq_spi.c
F: drivers/timer/cadence-ttc.c F: drivers/timer/cadence-ttc.c
F: drivers/usb/host/ehci-zynq.c
F: drivers/video/seps525.c F: drivers/video/seps525.c
F: drivers/watchdog/cdns_wdt.c F: drivers/watchdog/cdns_wdt.c
F: include/zynqmppl.h F: include/zynqmppl.h
@ -741,7 +667,7 @@ N: ultra96
N: zynqmp N: zynqmp
ARM ZYNQMP R5 ARM ZYNQMP R5
M: Michal Simek <michal.simek@amd.com> M: Michal Simek <michal.simek@xilinx.com>
S: Maintained S: Maintained
T: git https://source.denx.de/u-boot/custodians/u-boot-microblaze.git T: git https://source.denx.de/u-boot/custodians/u-boot-microblaze.git
F: arch/arm/mach-zynqmp-r5/ F: arch/arm/mach-zynqmp-r5/
@ -753,42 +679,13 @@ S: Maintained
F: drivers/pci/pcie_phytium.c F: drivers/pci/pcie_phytium.c
F: arch/arm/dts/phytium-durian.dts F: arch/arm/dts/phytium-durian.dts
ASPEED FMC SPI DRIVER
M: Chin-Ting Kuo <chin-ting_kuo@aspeedtech.com>
M: Cédric Le Goater <clg@kaod.org>
R: Aspeed BMC SW team <BMC-SW@aspeedtech.com>
S: Maintained
F: drivers/spi/spi-aspeed-smc.c
BINMAN BINMAN
M: Simon Glass <sjg@chromium.org> M: Simon Glass <sjg@chromium.org>
M: Alper Nebi Yasak <alpernebiyasak@gmail.com>
S: Maintained S: Maintained
F: tools/binman/ F: tools/binman/
BOOTDEVICE
M: Simon Glass <sjg@chromium.org>
S: Maintained
F: boot/bootdev*.c
F: boot/bootflow.c
F: boot/bootmeth*.c
F: boot/bootstd.c
F: cmd/bootdev.c
F: cmd/bootflow.c
F: doc/develop/bootstd.rst
F: doc/usage/bootdev.rst
F: doc/usage/bootflow.rst
F: doc/usage/bootmeth.rst
F: drivers/mmc/mmc_bootdev.c
F: include/bootdev.h
F: include/bootflow.h
F: include/bootmeth.h
F: include/bootstd.h
F: net/eth_bootdevice.c
F: test/boot/
BTRFS BTRFS
M: Marek Behún <kabel@kernel.org> M: Marek Behun <marek.behun@nic.cz>
R: Qu Wenruo <wqu@suse.com> R: Qu Wenruo <wqu@suse.com>
L: linux-btrfs@vger.kernel.org L: linux-btrfs@vger.kernel.org
S: Maintained S: Maintained
@ -801,11 +698,6 @@ M: Simon Glass <sjg@chromium.org>
S: Maintained S: Maintained
F: tools/buildman/ F: tools/buildman/
CAT
M: Roger Knecht <rknecht@pm.me>
S: Maintained
F: cmd/cat.c
CFI FLASH CFI FLASH
M: Stefan Roese <sr@denx.de> M: Stefan Roese <sr@denx.de>
S: Maintained S: Maintained
@ -829,13 +721,6 @@ T: git https://source.denx.de/u-boot/custodians/u-boot-coldfire.git
F: arch/m68k/ F: arch/m68k/
F: doc/arch/m68k.rst F: doc/arch/m68k.rst
CYCLIC
M: Stefan Roese <sr@denx.de>
S: Maintained
F: cmd/cyclic.c
F: common/cyclic.c
F: include/cyclic.h
DFU DFU
M: Lukasz Majewski <lukma@denx.de> M: Lukasz Majewski <lukma@denx.de>
S: Maintained S: Maintained
@ -876,7 +761,6 @@ F: test/dm/efi_media.c
EFI PAYLOAD EFI PAYLOAD
M: Heinrich Schuchardt <xypron.glpk@gmx.de> M: Heinrich Schuchardt <xypron.glpk@gmx.de>
M: Ilias Apalodimas <ilias.apalodimas@linaro.org>
S: Maintained S: Maintained
T: git https://source.denx.de/u-boot/custodians/u-boot-efi.git T: git https://source.denx.de/u-boot/custodians/u-boot-efi.git
F: doc/api/efi.rst F: doc/api/efi.rst
@ -891,7 +775,6 @@ F: include/cp437.h
F: include/efi* F: include/efi*
F: include/pe.h F: include/pe.h
F: include/asm-generic/pe.h F: include/asm-generic/pe.h
F: include/mm_communication.h
F: lib/charset.c F: lib/charset.c
F: lib/efi*/ F: lib/efi*/
F: test/lib/efi_* F: test/lib/efi_*
@ -905,6 +788,12 @@ F: tools/efivar.py
F: tools/file2include.c F: tools/file2include.c
F: tools/mkeficapsule.c F: tools/mkeficapsule.c
EFI VARIABLES VIA OP-TEE
M: Ilias Apalodimas <ilias.apalodimas@linaro.org>
S: Maintained
F: lib/efi_loader/efi_variable_tee.c
F: include/mm_communication.h
ENVIRONMENT ENVIRONMENT
M: Joe Hershberger <joe.hershberger@ni.com> M: Joe Hershberger <joe.hershberger@ni.com>
R: Wolfgang Denk <wd@denx.de> R: Wolfgang Denk <wd@denx.de>
@ -922,25 +811,6 @@ S: Maintained
F: doc/usage/environment.rst F: doc/usage/environment.rst
F: scripts/env2string.awk F: scripts/env2string.awk
EROFS
M: Huang Jianan <jnhuang95@gmail.com>
L: linux-erofs@lists.ozlabs.org
S: Maintained
F: cmd/erofs.c
F: fs/erofs/
F: include/erofs.h
F: test/py/tests/test_fs/test_erofs.py
EVENTS
M: Simon Glass <sjg@chromium.org>
S: Maintained
F: cmd/event.c
F: common/event.c
F: include/event.h
F: scripts/event_dump.py
F: test/common/event.c
F: test/py/tests/test_event_dump.py
FASTBOOT FASTBOOT
S: Orphaned S: Orphaned
F: cmd/fastboot.c F: cmd/fastboot.c
@ -954,13 +824,12 @@ F: net/fastboot.c
F: test/dm/fastboot.c F: test/dm/fastboot.c
FPGA FPGA
M: Michal Simek <michal.simek@amd.com> M: Michal Simek <michal.simek@xilinx.com>
S: Maintained S: Maintained
T: git https://source.denx.de/u-boot/custodians/u-boot-microblaze.git T: git https://source.denx.de/u-boot/custodians/u-boot-microblaze.git
F: drivers/fpga/ F: drivers/fpga/
F: cmd/fpga.c F: cmd/fpga.c
F: include/fpga.h F: include/fpga.h
F: test/dm/fpga.c
FLATTENED DEVICE TREE FLATTENED DEVICE TREE
M: Simon Glass <sjg@chromium.org> M: Simon Glass <sjg@chromium.org>
@ -986,12 +855,6 @@ T: git https://source.denx.de/u-boot/custodians/u-boot-fsl-qoriq.git
F: drivers/watchdog/sp805_wdt.c F: drivers/watchdog/sp805_wdt.c
F: drivers/watchdog/sbsa_gwdt.c F: drivers/watchdog/sbsa_gwdt.c
GATEWORKS_SC
M: Tim Harvey <tharvey@gateworks.com>
S: Maintained
F: drivers/misc/gsc.c
F: include/gsc.h
I2C I2C
M: Heiko Schocher <hs@denx.de> M: Heiko Schocher <hs@denx.de>
S: Maintained S: Maintained
@ -1000,7 +863,7 @@ F: drivers/i2c/
KWBIMAGE / KWBOOT TOOLS KWBIMAGE / KWBOOT TOOLS
M: Pali Rohár <pali@kernel.org> M: Pali Rohár <pali@kernel.org>
M: Marek Behún <kabel@kernel.org> M: Marek Behún <marek.behun@nic.cz>
M: Stefan Roese <sr@denx.de> M: Stefan Roese <sr@denx.de>
S: Maintained S: Maintained
T: git https://source.denx.de/u-boot/custodians/u-boot-marvell.git T: git https://source.denx.de/u-boot/custodians/u-boot-marvell.git
@ -1008,12 +871,6 @@ F: doc/README.kwbimage
F: doc/kwboot.1 F: doc/kwboot.1
F: tools/kwb* F: tools/kwb*
LED
M: Ivan Vozvakhov <i.vozvakhov@vk.team>
S: Supported
F: doc/device-tree-bindings/leds/leds-pwm.txt
F: drivers/led/led_pwm.c
LOGGING LOGGING
M: Simon Glass <sjg@chromium.org> M: Simon Glass <sjg@chromium.org>
S: Maintained S: Maintained
@ -1045,7 +902,6 @@ F: drivers/net/xilinx_emaclite.c
F: drivers/serial/serial_xuartlite.c F: drivers/serial/serial_xuartlite.c
F: drivers/spi/xilinx_spi.c F: drivers/spi/xilinx_spi.c
F: drivers/sysreset/sysreset_gpio.c F: drivers/sysreset/sysreset_gpio.c
F: drivers/timer/xilinx-timer.c
F: drivers/watchdog/xilinx_tb_wdt.c F: drivers/watchdog/xilinx_tb_wdt.c
N: xilinx N: xilinx
@ -1077,23 +933,15 @@ R: GSS_MTK_Uboot_upstream <GSS_MTK_Uboot_upstream@mediatek.com>
S: Maintained S: Maintained
F: arch/mips/mach-mtmips/ F: arch/mips/mach-mtmips/
F: arch/mips/dts/mt7620.dtsi F: arch/mips/dts/mt7620.dtsi
F: arch/mips/dts/mt7621.dtsi
F: arch/mips/dts/mt7620-u-boot.dtsi F: arch/mips/dts/mt7620-u-boot.dtsi
F: arch/mips/dts/mt7621-u-boot.dtsi
F: include/configs/mt7620.h F: include/configs/mt7620.h
F: include/configs/mt7621.h
F: include/dt-bindings/clock/mt7620-clk.h F: include/dt-bindings/clock/mt7620-clk.h
F: include/dt-bindings/clock/mt7621-clk.h
F: include/dt-bindings/clock/mt7628-clk.h F: include/dt-bindings/clock/mt7628-clk.h
F: include/dt-bindings/reset/mt7620-reset.h F: include/dt-bindings/reset/mt7620-reset.h
F: include/dt-bindings/reset/mt7621-reset.h
F: include/dt-bindings/reset/mt7628-reset.h F: include/dt-bindings/reset/mt7628-reset.h
F: drivers/clk/mtmips/ F: drivers/clk/mtmips/
F: drivers/pinctrl/mtmips/ F: drivers/pinctrl/mtmips/
F: drivers/gpio/mt7620_gpio.c F: drivers/gpio/mt7620_gpio.c
F: drivers/mtd/nand/raw/mt7621_nand.c
F: drivers/mtd/nand/raw/mt7621_nand.h
F: drivers/mtd/nand/raw/mt7621_nand_spl.c
F: drivers/net/mt7620-eth.c F: drivers/net/mt7620-eth.c
F: drivers/phy/mt7620-usb-phy.c F: drivers/phy/mt7620-usb-phy.c
F: drivers/reset/reset-mtmips.c F: drivers/reset/reset-mtmips.c
@ -1142,12 +990,17 @@ T: git https://source.denx.de/u-boot/custodians/u-boot-mmc.git
F: drivers/mmc/ F: drivers/mmc/
NAND FLASH NAND FLASH
M: Dario Binacchi <dario.binacchi@amarulasolutions.com> #M: Scott Wood <oss@buserror.net>
M: Michael Trimarchi <michael@amarulasolutions.com> S: Orphaned (Since 2018-07)
S: Maintained
T: git https://source.denx.de/u-boot/custodians/u-boot-nand-flash.git T: git https://source.denx.de/u-boot/custodians/u-boot-nand-flash.git
F: drivers/mtd/nand/raw/ F: drivers/mtd/nand/raw/
NDS32
M: Rick Chen <rick@andestech.com>
S: Maintained
T: git https://source.denx.de/u-boot/custodians/u-boot-nds32.git
F: arch/nds32/
NETWORK NETWORK
M: Joe Hershberger <joe.hershberger@ni.com> M: Joe Hershberger <joe.hershberger@ni.com>
M: Ramon Fried <rfried.dev@gmail.com> M: Ramon Fried <rfried.dev@gmail.com>
@ -1171,13 +1024,6 @@ F: cmd/nvme.c
F: include/nvme.h F: include/nvme.h
F: doc/develop/driver-model/nvme.rst F: doc/develop/driver-model/nvme.rst
NVMEM
M: Sean Anderson <seanga2@gmail.com>
S: Maintained
F: doc/api/nvmem.rst
F: drivers/misc/nvmem.c
F: include/nvmem.h
NXP C45 TJA11XX PHY DRIVER NXP C45 TJA11XX PHY DRIVER
M: Radu Pirea <radu-nicolae.pirea@oss.nxp.com> M: Radu Pirea <radu-nicolae.pirea@oss.nxp.com>
S: Maintained S: Maintained
@ -1253,7 +1099,7 @@ F: arch/powerpc/cpu/mpc83xx/
F: arch/powerpc/include/asm/arch-mpc83xx/ F: arch/powerpc/include/asm/arch-mpc83xx/
POWERPC MPC85XX POWERPC MPC85XX
M: Marek Behún <kabel@kernel.org> M: Priyanka Jain <priyanka.jain@nxp.com>
S: Maintained S: Maintained
T: git https://source.denx.de/u-boot/custodians/u-boot-mpc85xx.git T: git https://source.denx.de/u-boot/custodians/u-boot-mpc85xx.git
F: arch/powerpc/cpu/mpc85xx/ F: arch/powerpc/cpu/mpc85xx/
@ -1271,14 +1117,14 @@ F: drivers/timer/andes_plmt_timer.c
F: drivers/timer/sifive_clint_timer.c F: drivers/timer/sifive_clint_timer.c
F: tools/prelink-riscv.c F: tools/prelink-riscv.c
RISC-V CANAAN KENDRYTE K210 RISC-V KENDRYTE
M: Sean Anderson <seanga2@gmail.com> M: Sean Anderson <seanga2@gmail.com>
S: Maintained S: Maintained
F: doc/device-tree-bindings/mfd/canaan,k210-sysctl.txt F: doc/device-tree-bindings/mfd/kendryte,k210-sysctl.txt
F: doc/device-tree-bindings/pinctrl/canaan,k210-fpioa.txt F: doc/device-tree-bindings/pinctrl/kendryte,k210-fpioa.txt
F: drivers/clk/clk_k210.c F: drivers/clk/clk_kendryte.c
F: drivers/pinctrl/pinctrl-k210.c F: drivers/pinctrl/pinctrl-kendryte.c
F: include/k210/ F: include/kendryte/
RNG RNG
M: Sughosh Ganu <sughosh.ganu@linaro.org> M: Sughosh Ganu <sughosh.ganu@linaro.org>
@ -1304,11 +1150,6 @@ F: arch/sandbox/
F: doc/arch/sandbox.rst F: doc/arch/sandbox.rst
F: include/dt-bindings/*/sandbox*.h F: include/dt-bindings/*/sandbox*.h
SEMIHOSTING
R: Sean Anderson <sean.anderson@seco.com>
S: Orphaned
N: semihosting
SETEXPR SETEXPR
M: Roland Gaudig <roland.gaudig@weidmueller.com> M: Roland Gaudig <roland.gaudig@weidmueller.com>
S: Maintained S: Maintained
@ -1322,18 +1163,6 @@ S: Maintained
T: git https://source.denx.de/u-boot/custodians/u-boot-sh.git T: git https://source.denx.de/u-boot/custodians/u-boot-sh.git
F: arch/sh/ F: arch/sh/
SL28CLPD
M: Michael Walle <michael@walle.cc>
S: Maintained
F: drivers/gpio/sl28cpld-gpio.c
F: drivers/misc/sl28cpld.c
F: drivers/watchdog/sl28cpld-wdt.c
SMCCC TRNG
M: Etienne Carriere <etienne.carriere@linaro.org>
S: Maintained
F: drivers/rng/smccc_trng.c
SPI SPI
M: Jagan Teki <jagan@amarulasolutions.com> M: Jagan Teki <jagan@amarulasolutions.com>
S: Maintained S: Maintained
@ -1357,7 +1186,7 @@ F: drivers/spmi/
F: include/spmi/ F: include/spmi/
SQUASHFS SQUASHFS
M: Joao Marcos Costa <jmcosta944@gmail.com> M: Joao Marcos Costa <joaomarcos.costa@bootlin.com>
R: Thomas Petazzoni <thomas.petazzoni@bootlin.com> R: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
R: Miquel Raynal <miquel.raynal@bootlin.com> R: Miquel Raynal <miquel.raynal@bootlin.com>
S: Maintained S: Maintained
@ -1408,7 +1237,6 @@ F: arch/arm/mach-k3/config_secure.mk
F: configs/am335x_hs_evm_defconfig F: configs/am335x_hs_evm_defconfig
F: configs/am335x_hs_evm_uart_defconfig F: configs/am335x_hs_evm_uart_defconfig
F: configs/am43xx_hs_evm_defconfig F: configs/am43xx_hs_evm_defconfig
F: configs/am43xx_hs_evm_qspi_defconfig
F: configs/am57xx_hs_evm_defconfig F: configs/am57xx_hs_evm_defconfig
F: configs/am57xx_hs_evm_usb_defconfig F: configs/am57xx_hs_evm_usb_defconfig
F: configs/dra7xx_hs_evm_defconfig F: configs/dra7xx_hs_evm_defconfig
@ -1419,12 +1247,8 @@ F: configs/k2g_hs_evm_defconfig
F: configs/k2l_hs_evm_defconfig F: configs/k2l_hs_evm_defconfig
F: configs/am65x_hs_evm_r5_defconfig F: configs/am65x_hs_evm_r5_defconfig
F: configs/am65x_hs_evm_a53_defconfig F: configs/am65x_hs_evm_a53_defconfig
F: configs/j7200_hs_evm_a72_defconfig
F: configs/j7200_hs_evm_r5_defconfig
F: configs/j721e_hs_evm_a72_defconfig
F: configs/j721e_hs_evm_r5_defconfig F: configs/j721e_hs_evm_r5_defconfig
F: configs/j721s2_hs_evm_a72_defconfig F: configs/j721e_hs_evm_a72_defconfig
F: configs/j721s2_hs_evm_r5_defconfig
TPM DRIVERS TPM DRIVERS
M: Ilias Apalodimas <ilias.apalodimas@linaro.org> M: Ilias Apalodimas <ilias.apalodimas@linaro.org>
@ -1481,6 +1305,8 @@ M: Anatolij Gustschin <agust@denx.de>
S: Maintained S: Maintained
T: git https://source.denx.de/u-boot/custodians/u-boot-video.git T: git https://source.denx.de/u-boot/custodians/u-boot-video.git
F: drivers/video/ F: drivers/video/
F: common/lcd*.c
F: include/lcd*.h
F: include/video*.h F: include/video*.h
VirtIO VirtIO
@ -1495,14 +1321,6 @@ F: include/virtio*.h
F: test/dm/virtio.c F: test/dm/virtio.c
F: doc/develop/driver-model/virtio.rst F: doc/develop/driver-model/virtio.rst
WATCHDOG
M: Stefan Roese <sr@denx.de>
S: Maintained
T: git https://source.denx.de/u-boot/custodians/u-boot-watchdog.git
F: cmd/wdt.c
F: drivers/watchdog/
F: include/watchdog*.h
X86 X86
M: Simon Glass <sjg@chromium.org> M: Simon Glass <sjg@chromium.org>
M: Bin Meng <bmeng.cn@gmail.com> M: Bin Meng <bmeng.cn@gmail.com>
@ -1532,13 +1350,6 @@ M: Max Filippov <jcmvbkbc@gmail.com>
S: Maintained S: Maintained
F: arch/xtensa/ F: arch/xtensa/
XXD
M: Roger Knecht <rknecht@pm.me>
S: Maintained
F: cmd/xxd.c
F: doc/usage/cmd/xxd.rst
F: test/py/tests/test_xxd/
THE REST THE REST
M: Tom Rini <trini@konsulko.com> M: Tom Rini <trini@konsulko.com>
L: u-boot@lists.denx.de L: u-boot@lists.denx.de
@ -1548,10 +1359,3 @@ T: git https://source.denx.de/u-boot/u-boot.git
F: configs/tools-only_defconfig F: configs/tools-only_defconfig
F: * F: *
F: */ F: */
CAAM
M: Gaurav Jain <gaurav.jain@nxp.com>
S: Maintained
F: arch/arm/dts/ls1021a-twr-u-boot.dtsi
F: drivers/crypto/fsl/
F: include/fsl_sec.h

229
Makefile
View File

@ -1,9 +1,9 @@
# SPDX-License-Identifier: GPL-2.0+ # SPDX-License-Identifier: GPL-2.0+
VERSION = 2022 VERSION = 2022
PATCHLEVEL = 10 PATCHLEVEL = 04
SUBLEVEL = SUBLEVEL =
EXTRAVERSION = EXTRAVERSION = -rc2
NAME = NAME =
# *DOCUMENTATION* # *DOCUMENTATION*
@ -21,7 +21,7 @@ include include/host_arch.h
ifeq ("", "$(CROSS_COMPILE)") ifeq ("", "$(CROSS_COMPILE)")
MK_ARCH="${shell uname -m}" MK_ARCH="${shell uname -m}"
else else
MK_ARCH="${shell echo $(CROSS_COMPILE) | sed -n 's/^[[:space:]]*\([^\/]*\/\)*\([^-]*\)-[^[:space:]]*/\2/p'}" MK_ARCH="${shell echo $(CROSS_COMPILE) | sed -n 's/^\s*\([^\/]*\/\)*\([^-]*\)-\S*/\2/p'}"
endif endif
unexport HOST_ARCH unexport HOST_ARCH
ifeq ("x86_64", $(MK_ARCH)) ifeq ("x86_64", $(MK_ARCH))
@ -30,7 +30,7 @@ else ifneq (,$(findstring $(MK_ARCH), "i386" "i486" "i586" "i686"))
export HOST_ARCH=$(HOST_ARCH_X86) export HOST_ARCH=$(HOST_ARCH_X86)
else ifneq (,$(findstring $(MK_ARCH), "aarch64" "armv8l")) else ifneq (,$(findstring $(MK_ARCH), "aarch64" "armv8l"))
export HOST_ARCH=$(HOST_ARCH_AARCH64) export HOST_ARCH=$(HOST_ARCH_AARCH64)
else ifneq (,$(findstring $(MK_ARCH), "arm" "armv7" "armv7a" "armv7l")) else ifneq (,$(findstring $(MK_ARCH), "arm" "armv7" "armv7l"))
export HOST_ARCH=$(HOST_ARCH_ARM) export HOST_ARCH=$(HOST_ARCH_ARM)
else ifeq ("riscv32", $(MK_ARCH)) else ifeq ("riscv32", $(MK_ARCH))
export HOST_ARCH=$(HOST_ARCH_RISCV32) export HOST_ARCH=$(HOST_ARCH_RISCV32)
@ -521,8 +521,7 @@ env_h := include/generated/environment.h
no-dot-config-targets := clean clobber mrproper distclean \ no-dot-config-targets := clean clobber mrproper distclean \
help %docs check% coccicheck \ help %docs check% coccicheck \
ubootversion backup tests check pcheck qcheck tcheck \ ubootversion backup tests check qcheck tcheck pylint
pylint pylint_err
config-targets := 0 config-targets := 0
mixed-targets := 0 mixed-targets := 0
@ -643,13 +642,6 @@ export CFLAGS_EFI # Compiler flags to add when building EFI app
export CFLAGS_NON_EFI # Compiler flags to remove when building EFI app export CFLAGS_NON_EFI # Compiler flags to remove when building EFI app
export EFI_TARGET # binutils target if EFI is natively supported export EFI_TARGET # binutils target if EFI is natively supported
export LTO_ENABLE
# This is y if LTO is enabled for this build. See NO_LTO=1 to disable LTO
ifeq ($(NO_LTO),)
LTO_ENABLE=$(if $(CONFIG_LTO),y)
endif
# If board code explicitly specified LDSCRIPT or CONFIG_SYS_LDSCRIPT, use # If board code explicitly specified LDSCRIPT or CONFIG_SYS_LDSCRIPT, use
# that (or fail if absent). Otherwise, search for a linker script in a # that (or fail if absent). Otherwise, search for a linker script in a
# standard location. # standard location.
@ -680,15 +672,6 @@ else
include/config/auto.conf: ; include/config/auto.conf: ;
endif # $(dot-config) endif # $(dot-config)
ifdef CONFIG_CC_OPTIMIZE_FOR_DEBUG
KBUILD_HOSTCFLAGS := -Wall -Wstrict-prototypes -Og -g -fomit-frame-pointer \
$(HOST_LFS_CFLAGS) $(HOSTCFLAGS)
# Avoid false positives -Wmaybe-uninitialized
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78394
KBUILD_HOSTCFLAGS += -Wno-maybe-uninitialized
KBUILD_HOSTCXXFLAGS := -Og -g $(HOST_LFS_CFLAGS) $(HOSTCXXFLAGS)
endif
# #
# Xtensa linker script cannot be preprocessed with -ansi because of # Xtensa linker script cannot be preprocessed with -ansi because of
# preprocessor operations on strings that don't make C identifiers. # preprocessor operations on strings that don't make C identifiers.
@ -699,32 +682,23 @@ endif
ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
KBUILD_CFLAGS += -Os KBUILD_CFLAGS += -Os
endif else
ifdef CONFIG_CC_OPTIMIZE_FOR_SPEED
KBUILD_CFLAGS += -O2 KBUILD_CFLAGS += -O2
endif endif
ifdef CONFIG_CC_OPTIMIZE_FOR_DEBUG
KBUILD_CFLAGS += -Og -Wno-maybe-uninitialized
# Avoid false positives -Wmaybe-uninitialized
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78394
KBUILD_CFLAGS += -Wno-maybe-uninitialized
endif
LTO_CFLAGS := LTO_CFLAGS :=
LTO_FINAL_LDFLAGS := LTO_FINAL_LDFLAGS :=
export LTO_CFLAGS LTO_FINAL_LDFLAGS export LTO_CFLAGS LTO_FINAL_LDFLAGS
ifeq ($(LTO_ENABLE),y) ifdef CONFIG_LTO
ifeq ($(cc-name),clang) ifeq ($(cc-name),clang)
LTO_CFLAGS += -DLTO_ENABLE -flto LTO_CFLAGS += -flto
LTO_FINAL_LDFLAGS += -flto LTO_FINAL_LDFLAGS += -flto
AR = $(shell $(CC) -print-prog-name=llvm-ar) AR = $(shell $(CC) -print-prog-name=llvm-ar)
NM = $(shell $(CC) -print-prog-name=llvm-nm) NM = $(shell $(CC) -print-prog-name=llvm-nm)
else else
NPROC := $(shell nproc 2>/dev/null || echo 1) NPROC := $(shell nproc 2>/dev/null || echo 1)
LTO_CFLAGS += -DLTO_ENABLE -flto=$(NPROC) LTO_CFLAGS += -flto=$(NPROC)
LTO_FINAL_LDFLAGS += -fuse-linker-plugin -flto=$(NPROC) LTO_FINAL_LDFLAGS += -fuse-linker-plugin -flto=$(NPROC)
# use plugin aware tools # use plugin aware tools
@ -860,13 +834,12 @@ libs-y += drivers/usb/host/
libs-y += drivers/usb/mtu3/ libs-y += drivers/usb/mtu3/
libs-y += drivers/usb/musb/ libs-y += drivers/usb/musb/
libs-y += drivers/usb/musb-new/ libs-y += drivers/usb/musb-new/
libs-y += drivers/usb/isp1760/
libs-y += drivers/usb/phy/ libs-y += drivers/usb/phy/
libs-y += drivers/usb/ulpi/ libs-y += drivers/usb/ulpi/
ifdef CONFIG_POST ifdef CONFIG_POST
libs-y += post/ libs-y += post/
endif endif
libs-$(CONFIG_$(SPL_TPL_)UNIT_TEST) += test/ libs-$(CONFIG_UNIT_TEST) += test/
libs-$(CONFIG_UT_ENV) += test/env/ libs-$(CONFIG_UT_ENV) += test/env/
libs-$(CONFIG_UT_OPTEE) += test/optee/ libs-$(CONFIG_UT_OPTEE) += test/optee/
libs-$(CONFIG_UT_OVERLAY) += test/overlay/ libs-$(CONFIG_UT_OVERLAY) += test/overlay/
@ -931,21 +904,17 @@ else
TPL_SIZE_CHECK = TPL_SIZE_CHECK =
endif endif
ifneq ($(CONFIG_VPL_SIZE_LIMIT),0x0)
VPL_SIZE_CHECK = @$(call size_check,$@,$(CONFIG_VPL_SIZE_LIMIT))
else
VPL_SIZE_CHECK =
endif
# Statically apply RELA-style relocations (currently arm64 only) # Statically apply RELA-style relocations (currently arm64 only)
# This is useful for arm64 where static relocation needs to be performed on # This is useful for arm64 where static relocation needs to be performed on
# the raw binary, but certain simulators only accept an ELF file (but don't # the raw binary, but certain simulators only accept an ELF file (but don't
# do the relocation). # do the relocation).
ifneq ($(CONFIG_STATIC_RELA),) ifneq ($(CONFIG_STATIC_RELA),)
# $(2) is u-boot ELF, $(3) is u-boot bin, $(4) is text base # $(1) is u-boot ELF, $(2) is u-boot bin, $(3) is text base
quiet_cmd_static_rela = RELOC $@ quiet_cmd_static_rela = RELOC $@
cmd_static_rela = \ cmd_static_rela = \
tools/relocate-rela $(3) $(2) start=$$($(NM) $(2) | grep __rel_dyn_start | cut -f 1 -d ' '); \
end=$$($(NM) $(2) | grep __rel_dyn_end | cut -f 1 -d ' '); \
tools/relocate-rela $(3) $(4) $$start $$end
else else
quiet_cmd_static_rela = quiet_cmd_static_rela =
cmd_static_rela = cmd_static_rela =
@ -975,7 +944,6 @@ INPUTS-$(CONFIG_SPL_FRAMEWORK) += u-boot.img
endif endif
endif endif
INPUTS-$(CONFIG_TPL) += tpl/u-boot-tpl.bin INPUTS-$(CONFIG_TPL) += tpl/u-boot-tpl.bin
INPUTS-$(CONFIG_VPL) += vpl/u-boot-vpl.bin
# Allow omitting the .dtb output if it is not normally used # Allow omitting the .dtb output if it is not normally used
INPUTS-$(CONFIG_OF_SEPARATE) += $(if $(CONFIG_OF_OMIT_DTB),dts/dt.dtb,u-boot.dtb) INPUTS-$(CONFIG_OF_SEPARATE) += $(if $(CONFIG_OF_OMIT_DTB),dts/dt.dtb,u-boot.dtb)
@ -1004,12 +972,22 @@ ifeq ($(CONFIG_INIT_SP_RELATIVE)$(CONFIG_OF_SEPARATE),yy)
INPUTS-y += init_sp_bss_offset_check INPUTS-y += init_sp_bss_offset_check
endif endif
ifeq ($(CONFIG_ARCH_ROCKCHIP)$(CONFIG_SPL),yy) ifeq ($(CONFIG_MPC85xx)$(CONFIG_OF_SEPARATE),yy)
# Binman image dependencies INPUTS-y += u-boot-with-dtb.bin
endif
ifeq ($(CONFIG_ARCH_ROCKCHIP),y)
# On ARM64 this target is produced by binman so we don't need this dep
ifeq ($(CONFIG_ARM64),y) ifeq ($(CONFIG_ARM64),y)
INPUTS-y += u-boot.itb ifeq ($(CONFIG_SPL),y)
# TODO: Get binman to generate this too
INPUTS-y += u-boot-rockchip.bin
endif
else else
INPUTS-y += u-boot.img ifeq ($(CONFIG_SPL),y)
# Generate these inputs for binman which will create the output files
INPUTS-y += idbloader.img u-boot.img
endif
endif endif
endif endif
@ -1040,12 +1018,12 @@ LDFLAGS_u-boot += $(LDFLAGS_FINAL)
LDFLAGS_u-boot += $(call ld-option, --no-dynamic-linker) LDFLAGS_u-boot += $(call ld-option, --no-dynamic-linker)
# ld.lld support # ld.lld support
LDFLAGS_u-boot += -z notext $(call ld-option,--apply-dynamic-relocs) LDFLAGS_u-boot += -z notext
LDFLAGS_u-boot += --build-id=none LDFLAGS_u-boot += --build-id=none
ifeq ($(CONFIG_ARC)$(CONFIG_NIOS2)$(CONFIG_X86)$(CONFIG_XTENSA),) ifeq ($(CONFIG_ARC)$(CONFIG_NIOS2)$(CONFIG_X86)$(CONFIG_XTENSA),)
LDFLAGS_u-boot += -Ttext $(CONFIG_TEXT_BASE) LDFLAGS_u-boot += -Ttext $(CONFIG_SYS_TEXT_BASE)
endif endif
# insure the checker run with the right endianness # insure the checker run with the right endianness
@ -1119,7 +1097,7 @@ define deprecated
echo >&2 "for $(2)). Please update the board to use"; \ echo >&2 "for $(2)). Please update the board to use"; \
echo >&2 "$(firstword $(1)) before the $(3) release. Failure to"; \ echo >&2 "$(firstword $(1)) before the $(3) release. Failure to"; \
echo >&2 "update by the deadline may result in board removal."; \ echo >&2 "update by the deadline may result in board removal."; \
echo >&2 "See doc/develop/driver-model/migration.rst for more info."; \ echo >&2 "See doc/driver-model/migration.rst for more info."; \
echo >&2 "===================================================="; \ echo >&2 "===================================================="; \
fi; fi fi; fi
@ -1145,7 +1123,7 @@ ifeq ($(CONFIG_OF_EMBED)$(CONFIG_EFI_APP),y)
@echo >&2 "CONFIG_OF_EMBED is enabled. This option should only" @echo >&2 "CONFIG_OF_EMBED is enabled. This option should only"
@echo >&2 "be used for debugging purposes. Please use" @echo >&2 "be used for debugging purposes. Please use"
@echo >&2 "CONFIG_OF_SEPARATE for boards in mainline." @echo >&2 "CONFIG_OF_SEPARATE for boards in mainline."
@echo >&2 "See doc/develop/devicetree/control.rst for more info." @echo >&2 "See doc/README.fdt-control for more info."
@echo >&2 "====================================================" @echo >&2 "===================================================="
endif endif
ifneq ($(CONFIG_SPL_FIT_GENERATOR),) ifneq ($(CONFIG_SPL_FIT_GENERATOR),)
@ -1154,10 +1132,20 @@ ifneq ($(CONFIG_SPL_FIT_GENERATOR),)
@echo >&2 "to binman instead, to avoid the proliferation of" @echo >&2 "to binman instead, to avoid the proliferation of"
@echo >&2 "arch-specific scripts with no tests." @echo >&2 "arch-specific scripts with no tests."
@echo >&2 "====================================================" @echo >&2 "===================================================="
endif
ifneq ($(CONFIG_DM),y)
@echo >&2 "===================== WARNING ======================"
@echo >&2 "This board does not use CONFIG_DM. CONFIG_DM will be"
@echo >&2 "compulsory starting with the v2020.01 release."
@echo >&2 "Failure to update may result in board removal."
@echo >&2 "See doc/driver-model/migration.rst for more info."
@echo >&2 "===================================================="
endif endif
$(call deprecated,CONFIG_WDT,DM watchdog,v2019.10,\ $(call deprecated,CONFIG_WDT,DM watchdog,v2019.10,\
$(CONFIG_WATCHDOG)$(CONFIG_HW_WATCHDOG)) $(CONFIG_WATCHDOG)$(CONFIG_HW_WATCHDOG))
$(call deprecated,CONFIG_DM_ETH,Ethernet drivers,v2020.07,$(CONFIG_NET))
$(call deprecated,CONFIG_DM_I2C,I2C drivers,v2022.04,$(CONFIG_SYS_I2C_LEGACY)) $(call deprecated,CONFIG_DM_I2C,I2C drivers,v2022.04,$(CONFIG_SYS_I2C_LEGACY))
$(call deprecated,CONFIG_DM_KEYBOARD,Keyboard drivers,v2022.10,$(CONFIG_KEYBOARD))
@# CONFIG_SYS_TIMER_RATE has brackets in it for some boards which @# CONFIG_SYS_TIMER_RATE has brackets in it for some boards which
@# confuses this rule. Use if() to send just a single character which @# confuses this rule. Use if() to send just a single character which
@# is enable to tell 'deprecated' that one of these symbols exists @# is enable to tell 'deprecated' that one of these symbols exists
@ -1228,12 +1216,9 @@ else ifeq ($(CONFIG_OF_SEPARATE).$(CONFIG_OF_OMIT_DTB),y.)
u-boot-dtb.bin: u-boot-nodtb.bin dts/dt.dtb FORCE u-boot-dtb.bin: u-boot-nodtb.bin dts/dt.dtb FORCE
$(call if_changed,cat) $(call if_changed,cat)
ifneq ($(CONFIG_MPC85XX_HAVE_RESET_VECTOR)$(CONFIG_OF_SEPARATE),yy)
u-boot.bin: u-boot-dtb.bin FORCE u-boot.bin: u-boot-dtb.bin FORCE
$(call if_changed,copy) $(call if_changed,copy)
endif else
else ifneq ($(CONFIG_MPC85XX_HAVE_RESET_VECTOR)$(CONFIG_OF_SEPARATE),yy)
u-boot.bin: u-boot-nodtb.bin FORCE u-boot.bin: u-boot-nodtb.bin FORCE
$(call if_changed,copy) $(call if_changed,copy)
endif endif
@ -1281,7 +1266,7 @@ spl/u-boot-spl.srec: spl/u-boot-spl FORCE
OBJCOPYFLAGS_u-boot-nodtb.bin := -O binary \ OBJCOPYFLAGS_u-boot-nodtb.bin := -O binary \
$(if $(CONFIG_X86_16BIT_INIT),-R .start16 -R .resetvec) \ $(if $(CONFIG_X86_16BIT_INIT),-R .start16 -R .resetvec) \
$(if $(CONFIG_MPC85XX_HAVE_RESET_VECTOR),$(if $(CONFIG_OF_SEPARATE),-R .bootpg -R .resetvec)) $(if $(CONFIG_MPC85XX_HAVE_RESET_VECTOR),-R .bootpg -R .resetvec)
binary_size_check: u-boot-nodtb.bin FORCE binary_size_check: u-boot-nodtb.bin FORCE
@file_size=$(shell wc -c u-boot-nodtb.bin | awk '{print $$1}') ; \ @file_size=$(shell wc -c u-boot-nodtb.bin | awk '{print $$1}') ; \
@ -1328,7 +1313,7 @@ shell_cmd = { $(call echo-cmd,$(1)) $(cmd_$(1)); }
quiet_cmd_objcopy_uboot = OBJCOPY $@ quiet_cmd_objcopy_uboot = OBJCOPY $@
ifdef cmd_static_rela ifdef cmd_static_rela
cmd_objcopy_uboot = $(cmd_objcopy) && $(call shell_cmd,static_rela,$<,$@,$(CONFIG_TEXT_BASE)) || { rm -f $@; false; } cmd_objcopy_uboot = $(cmd_objcopy) && $(call shell_cmd,static_rela,$<,$@,$(CONFIG_SYS_TEXT_BASE)) || { rm -f $@; false; }
else else
cmd_objcopy_uboot = $(cmd_objcopy) cmd_objcopy_uboot = $(cmd_objcopy)
endif endif
@ -1367,7 +1352,6 @@ cmd_binman = $(srctree)/tools/binman/binman $(if $(BINMAN_DEBUG),-D) \
-a tpl-bss-pad=$(if $(CONFIG_TPL_SEPARATE_BSS),,1) \ -a tpl-bss-pad=$(if $(CONFIG_TPL_SEPARATE_BSS),,1) \
-a spl-dtb=$(CONFIG_SPL_OF_REAL) \ -a spl-dtb=$(CONFIG_SPL_OF_REAL) \
-a tpl-dtb=$(CONFIG_TPL_OF_REAL) \ -a tpl-dtb=$(CONFIG_TPL_OF_REAL) \
-a pre-load-key-path=${PRE_LOAD_KEY_PATH} \
$(BINMAN_$(@F)) $(BINMAN_$(@F))
OBJCOPYFLAGS_u-boot.ldr.hex := -I binary -O ihex OBJCOPYFLAGS_u-boot.ldr.hex := -I binary -O ihex
@ -1382,7 +1366,7 @@ u-boot.ldr.hex u-boot.ldr.srec: u-boot.ldr FORCE
# from the SPL U-Boot version. # from the SPL U-Boot version.
# #
ifndef CONFIG_SYS_UBOOT_START ifndef CONFIG_SYS_UBOOT_START
CONFIG_SYS_UBOOT_START := $(CONFIG_TEXT_BASE) CONFIG_SYS_UBOOT_START := $(CONFIG_SYS_TEXT_BASE)
endif endif
# Boards with more complex image requirements can provide an .its source file # Boards with more complex image requirements can provide an .its source file
@ -1407,7 +1391,7 @@ endif
ifdef CONFIG_SPL_LOAD_FIT ifdef CONFIG_SPL_LOAD_FIT
MKIMAGEFLAGS_u-boot.img = -f auto -A $(ARCH) -T firmware -C none -O u-boot \ MKIMAGEFLAGS_u-boot.img = -f auto -A $(ARCH) -T firmware -C none -O u-boot \
-a $(CONFIG_TEXT_BASE) -e $(CONFIG_SYS_UBOOT_START) \ -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_UBOOT_START) \
-p $(CONFIG_FIT_EXTERNAL_OFFSET) \ -p $(CONFIG_FIT_EXTERNAL_OFFSET) \
-n "U-Boot $(UBOOTRELEASE) for $(BOARD) board" -E \ -n "U-Boot $(UBOOTRELEASE) for $(BOARD) board" -E \
$(patsubst %,-b arch/$(ARCH)/dts/%.dtb,$(subst ",,$(DEVICE_TREE))) \ $(patsubst %,-b arch/$(ARCH)/dts/%.dtb,$(subst ",,$(DEVICE_TREE))) \
@ -1415,10 +1399,10 @@ MKIMAGEFLAGS_u-boot.img = -f auto -A $(ARCH) -T firmware -C none -O u-boot \
$(patsubst %,-b arch/$(ARCH)/dts/%.dtbo,$(subst ",,$(CONFIG_OF_OVERLAY_LIST))) $(patsubst %,-b arch/$(ARCH)/dts/%.dtbo,$(subst ",,$(CONFIG_OF_OVERLAY_LIST)))
else else
MKIMAGEFLAGS_u-boot.img = -A $(ARCH) -T firmware -C none -O u-boot \ MKIMAGEFLAGS_u-boot.img = -A $(ARCH) -T firmware -C none -O u-boot \
-a $(CONFIG_TEXT_BASE) -e $(CONFIG_SYS_UBOOT_START) \ -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_UBOOT_START) \
-n "U-Boot $(UBOOTRELEASE) for $(BOARD) board" -n "U-Boot $(UBOOTRELEASE) for $(BOARD) board"
MKIMAGEFLAGS_u-boot-ivt.img = -A $(ARCH) -T firmware_ivt -C none -O u-boot \ MKIMAGEFLAGS_u-boot-ivt.img = -A $(ARCH) -T firmware_ivt -C none -O u-boot \
-a $(CONFIG_TEXT_BASE) -e $(CONFIG_SYS_UBOOT_START) \ -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_UBOOT_START) \
-n "U-Boot $(UBOOTRELEASE) for $(BOARD) board" -n "U-Boot $(UBOOTRELEASE) for $(BOARD) board"
u-boot-ivt.img: MKIMAGEOUTPUT = u-boot-ivt.img.log u-boot-ivt.img: MKIMAGEOUTPUT = u-boot-ivt.img.log
endif endif
@ -1437,19 +1421,23 @@ KWD_CONFIG_FILE = $(shell \
fi) fi)
MKIMAGEFLAGS_u-boot.kwb = -n $(KWD_CONFIG_FILE) \ MKIMAGEFLAGS_u-boot.kwb = -n $(KWD_CONFIG_FILE) \
-T kwbimage -a $(CONFIG_TEXT_BASE) -e $(CONFIG_TEXT_BASE) -T kwbimage -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE)
MKIMAGEFLAGS_u-boot-spl.kwb = -n $(KWD_CONFIG_FILE) \ MKIMAGEFLAGS_u-boot-spl.kwb = -n $(KWD_CONFIG_FILE) \
-T kwbimage -a $(CONFIG_TEXT_BASE) -e $(CONFIG_TEXT_BASE) \ -T kwbimage -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE) \
$(if $(KEYDIR),-k $(KEYDIR)) $(if $(KEYDIR),-k $(KEYDIR))
MKIMAGEFLAGS_u-boot.pbl = -n $(srctree)/$(CONFIG_SYS_FSL_PBL_RCW:"%"=%) \ MKIMAGEFLAGS_u-boot.pbl = -n $(srctree)/$(CONFIG_SYS_FSL_PBL_RCW:"%"=%) \
-R $(srctree)/$(CONFIG_SYS_FSL_PBL_PBI:"%"=%) -A $(ARCH) -T pblimage -R $(srctree)/$(CONFIG_SYS_FSL_PBL_PBI:"%"=%) -T pblimage
ifeq ($(CONFIG_MPC85xx)$(CONFIG_OF_SEPARATE),yy)
UBOOT_BIN := u-boot-with-dtb.bin
else
UBOOT_BIN := u-boot.bin UBOOT_BIN := u-boot.bin
endif
MKIMAGEFLAGS_u-boot-lzma.img = -A $(ARCH) -T standalone -C lzma -O u-boot \ MKIMAGEFLAGS_u-boot-lzma.img = -A $(ARCH) -T standalone -C lzma -O u-boot \
-a $(CONFIG_TEXT_BASE) -e $(CONFIG_SYS_UBOOT_START) \ -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_UBOOT_START) \
-n "U-Boot $(UBOOTRELEASE) for $(BOARD) board" -n "U-Boot $(UBOOTRELEASE) for $(BOARD) board"
u-boot.bin.lzma: u-boot.bin FORCE u-boot.bin.lzma: u-boot.bin FORCE
@ -1482,7 +1470,6 @@ endif
u-boot-spl.kwb: u-boot.bin spl/u-boot-spl.bin FORCE u-boot-spl.kwb: u-boot.bin spl/u-boot-spl.bin FORCE
$(call if_changed,mkimage) $(call if_changed,mkimage)
$(BOARD_SIZE_CHECK)
u-boot.sha1: u-boot.bin u-boot.sha1: u-boot.bin
tools/ubsha1 u-boot.bin tools/ubsha1 u-boot.bin
@ -1503,6 +1490,29 @@ OBJCOPYFLAGS_u-boot-with-spl.bin = -I binary -O binary \
u-boot-with-spl.bin: $(SPL_IMAGE) $(SPL_PAYLOAD) FORCE u-boot-with-spl.bin: $(SPL_IMAGE) $(SPL_PAYLOAD) FORCE
$(call if_changed,pad_cat) $(call if_changed,pad_cat)
ifeq ($(CONFIG_ARCH_ROCKCHIP),y)
# TPL + SPL
ifeq ($(CONFIG_SPL)$(CONFIG_TPL),yy)
MKIMAGEFLAGS_u-boot-tpl-rockchip.bin = -n $(CONFIG_SYS_SOC) -T rksd
tpl/u-boot-tpl-rockchip.bin: tpl/u-boot-tpl.bin FORCE
$(call if_changed,mkimage)
idbloader.img: tpl/u-boot-tpl-rockchip.bin spl/u-boot-spl.bin FORCE
$(call if_changed,cat)
else
MKIMAGEFLAGS_idbloader.img = -n $(CONFIG_SYS_SOC) -T rksd
idbloader.img: spl/u-boot-spl.bin FORCE
$(call if_changed,mkimage)
endif
ifeq ($(CONFIG_ARM64),y)
OBJCOPYFLAGS_u-boot-rockchip.bin = -I binary -O binary \
--pad-to=$(CONFIG_SPL_PAD_TO) --gap-fill=0xff
u-boot-rockchip.bin: idbloader.img u-boot.itb FORCE
$(call if_changed,pad_cat)
endif # CONFIG_ARM64
endif # CONFIG_ARCH_ROCKCHIP
ifeq ($(CONFIG_ARCH_LPC32XX)$(CONFIG_SPL),yy) ifeq ($(CONFIG_ARCH_LPC32XX)$(CONFIG_SPL),yy)
MKIMAGEFLAGS_lpc32xx-spl.img = -T lpc32xximage -a $(CONFIG_SPL_TEXT_BASE) MKIMAGEFLAGS_lpc32xx-spl.img = -T lpc32xximage -a $(CONFIG_SPL_TEXT_BASE)
@ -1533,7 +1543,7 @@ tpl/u-boot-with-tpl.bin: tpl/u-boot-tpl.bin u-boot.bin FORCE
SPL: spl/u-boot-spl.bin FORCE SPL: spl/u-boot-spl.bin FORCE
$(Q)$(MAKE) $(build)=arch/arm/mach-imx $@ $(Q)$(MAKE) $(build)=arch/arm/mach-imx $@
#ifeq ($(CONFIG_ARCH_IMX8M)$(CONFIG_ARCH_IMX8), y) ifeq ($(CONFIG_ARCH_IMX8M)$(CONFIG_ARCH_IMX8), y)
ifeq ($(CONFIG_SPL_LOAD_IMX_CONTAINER), y) ifeq ($(CONFIG_SPL_LOAD_IMX_CONTAINER), y)
u-boot.cnt: u-boot.bin FORCE u-boot.cnt: u-boot.bin FORCE
$(Q)$(MAKE) $(build)=arch/arm/mach-imx $@ $(Q)$(MAKE) $(build)=arch/arm/mach-imx $@
@ -1549,7 +1559,7 @@ flash.bin: spl/u-boot-spl.bin u-boot.itb FORCE
$(Q)$(MAKE) $(build)=arch/arm/mach-imx $@ $(Q)$(MAKE) $(build)=arch/arm/mach-imx $@
endif endif
endif endif
#endif endif
u-boot.uim: u-boot.bin FORCE u-boot.uim: u-boot.bin FORCE
$(Q)$(MAKE) $(build)=arch/arm/mach-imx $@ $(Q)$(MAKE) $(build)=arch/arm/mach-imx $@
@ -1557,7 +1567,7 @@ u-boot.uim: u-boot.bin FORCE
u-boot-with-spl.imx u-boot-with-nand-spl.imx: SPL $(if $(CONFIG_OF_SEPARATE),u-boot.img,u-boot.uim) FORCE u-boot-with-spl.imx u-boot-with-nand-spl.imx: SPL $(if $(CONFIG_OF_SEPARATE),u-boot.img,u-boot.uim) FORCE
$(Q)$(MAKE) $(build)=arch/arm/mach-imx $@ $(Q)$(MAKE) $(build)=arch/arm/mach-imx $@
MKIMAGEFLAGS_u-boot.ubl = -n $(UBL_CONFIG) -T ublimage -e $(CONFIG_TEXT_BASE) MKIMAGEFLAGS_u-boot.ubl = -n $(UBL_CONFIG) -T ublimage -e $(CONFIG_SYS_TEXT_BASE)
u-boot.ubl: u-boot-with-spl.bin FORCE u-boot.ubl: u-boot-with-spl.bin FORCE
$(call if_changed,mkimage) $(call if_changed,mkimage)
@ -1614,14 +1624,17 @@ u-boot-with-nand-spl.sfp: u-boot-spl-padx4.sfp u-boot.img FORCE
endif endif
ifeq ($(CONFIG_MPC85XX_HAVE_RESET_VECTOR)$(CONFIG_OF_SEPARATE),yy) ifeq ($(CONFIG_MPC85xx)$(CONFIG_OF_SEPARATE),yy)
u-boot.bin: u-boot-nodtb.bin u-boot.dtb u-boot-br.bin FORCE u-boot-with-dtb.bin: u-boot.bin u-boot.dtb \
$(if $(CONFIG_MPC85XX_HAVE_RESET_VECTOR), u-boot-br.bin) FORCE
$(call if_changed,binman) $(call if_changed,binman)
ifeq ($(CONFIG_MPC85XX_HAVE_RESET_VECTOR),y)
OBJCOPYFLAGS_u-boot-br.bin := -O binary -j .bootpg -j .resetvec OBJCOPYFLAGS_u-boot-br.bin := -O binary -j .bootpg -j .resetvec
u-boot-br.bin: u-boot FORCE u-boot-br.bin: u-boot FORCE
$(call if_changed,objcopy) $(call if_changed,objcopy)
endif endif
endif
quiet_cmd_ldr = LD $@ quiet_cmd_ldr = LD $@
cmd_ldr = $(LD) $(LDFLAGS_$(@F)) \ cmd_ldr = $(LD) $(LDFLAGS_$(@F)) \
@ -1678,8 +1691,12 @@ spl/u-boot-spl.pbl: spl/u-boot-spl.bin FORCE
ifeq ($(ARCH),arm) ifeq ($(ARCH),arm)
UBOOT_BINLOAD := u-boot.img UBOOT_BINLOAD := u-boot.img
else else
ifeq ($(CONFIG_MPC85xx)$(CONFIG_OF_SEPARATE),yy)
UBOOT_BINLOAD := u-boot-with-dtb.bin
else
UBOOT_BINLOAD := u-boot.bin UBOOT_BINLOAD := u-boot.bin
endif endif
endif
OBJCOPYFLAGS_u-boot-with-spl-pbl.bin = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) \ OBJCOPYFLAGS_u-boot-with-spl-pbl.bin = -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO) \
--gap-fill=0xff --gap-fill=0xff
@ -1700,9 +1717,8 @@ u-boot-img-spl-at-end.bin: u-boot.img spl/u-boot-spl.bin FORCE
quiet_cmd_u-boot-elf ?= LD $@ quiet_cmd_u-boot-elf ?= LD $@
cmd_u-boot-elf ?= $(LD) u-boot-elf.o -o $@ \ cmd_u-boot-elf ?= $(LD) u-boot-elf.o -o $@ \
$(if $(CONFIG_SYS_BIG_ENDIAN),-EB,-EL) \ -T u-boot-elf.lds --defsym=$(CONFIG_PLATFORM_ELFENTRY)=$(CONFIG_SYS_TEXT_BASE) \
-T u-boot-elf.lds --defsym=$(CONFIG_PLATFORM_ELFENTRY)=$(CONFIG_TEXT_BASE) \ -Ttext=$(CONFIG_SYS_TEXT_BASE)
-Ttext=$(CONFIG_TEXT_BASE)
u-boot.elf: u-boot.bin u-boot-elf.lds u-boot.elf: u-boot.bin u-boot-elf.lds
$(Q)$(OBJCOPY) -I binary $(PLATFORM_ELFFLAGS) $< u-boot-elf.o $(Q)$(OBJCOPY) -I binary $(PLATFORM_ELFFLAGS) $< u-boot-elf.o
$(call if_changed,u-boot-elf) $(call if_changed,u-boot-elf)
@ -1723,7 +1739,7 @@ u-boot-mtk.bin: u-boot-with-spl.bin
$(call if_changed,copy) $(call if_changed,copy)
else else
MKIMAGEFLAGS_u-boot-mtk.bin = -T mtk_image \ MKIMAGEFLAGS_u-boot-mtk.bin = -T mtk_image \
-a $(CONFIG_TEXT_BASE) -e $(CONFIG_TEXT_BASE) \ -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE) \
-n "$(patsubst "%",%,$(CONFIG_MTK_BROM_HEADER_INFO))" -n "$(patsubst "%",%,$(CONFIG_MTK_BROM_HEADER_INFO))"
u-boot-mtk.bin: u-boot.bin FORCE u-boot-mtk.bin: u-boot.bin FORCE
@ -1740,7 +1756,7 @@ ARCH_POSTLINK := $(wildcard $(srctree)/arch/$(ARCH)/Makefile.postlink)
# Generate linker list symbols references to force compiler to not optimize # Generate linker list symbols references to force compiler to not optimize
# them away when compiling with LTO # them away when compiling with LTO
ifeq ($(LTO_ENABLE),y) ifdef CONFIG_LTO
u-boot-keep-syms-lto := keep-syms-lto.o u-boot-keep-syms-lto := keep-syms-lto.o
u-boot-keep-syms-lto_c := $(patsubst %.o,%.c,$(u-boot-keep-syms-lto)) u-boot-keep-syms-lto_c := $(patsubst %.o,%.c,$(u-boot-keep-syms-lto))
@ -1762,7 +1778,7 @@ endif
# Rule to link u-boot # Rule to link u-boot
# May be overridden by arch/$(ARCH)/config.mk # May be overridden by arch/$(ARCH)/config.mk
ifeq ($(LTO_ENABLE),y) ifdef CONFIG_LTO
quiet_cmd_u-boot__ ?= LTO $@ quiet_cmd_u-boot__ ?= LTO $@
cmd_u-boot__ ?= \ cmd_u-boot__ ?= \
$(CC) -nostdlib -nostartfiles \ $(CC) -nostdlib -nostartfiles \
@ -1777,6 +1793,10 @@ quiet_cmd_u-boot__ ?= LTO $@
-Wl,-Map,u-boot.map; \ -Wl,-Map,u-boot.map; \
$(if $(ARCH_POSTLINK), $(MAKE) -f $(ARCH_POSTLINK) $@, true) $(if $(ARCH_POSTLINK), $(MAKE) -f $(ARCH_POSTLINK) $@, true)
else else
# Note: Linking efi-x86_app64 causes a segfault in the linker at present
# when using x86_64-linux-gnu-ld.bfd
# For now, disable --whole-archive which makes things link, although not
# correctly
quiet_cmd_u-boot__ ?= LD $@ quiet_cmd_u-boot__ ?= LD $@
cmd_u-boot__ ?= $(LD) $(KBUILD_LDFLAGS) $(LDFLAGS_u-boot) -o $@ \ cmd_u-boot__ ?= $(LD) $(KBUILD_LDFLAGS) $(LDFLAGS_u-boot) -o $@ \
-T u-boot.lds $(u-boot-init) \ -T u-boot.lds $(u-boot-init) \
@ -1830,9 +1850,7 @@ ENV_FILE := $(if $(ENV_SOURCE_FILE),$(ENV_FILE_CFG),$(wildcard $(ENV_FILE_BOARD)
# Run the environment text file through the preprocessor, but only if it is # Run the environment text file through the preprocessor, but only if it is
# non-empty, to save time and possible build errors if something is wonky with # non-empty, to save time and possible build errors if something is wonky with
# the board. # the board
# If there is no ENV_FILE, produce an empty output file, to prevent a previous
# build's file being used in the case of in-tree builds.
quiet_cmd_gen_envp = ENVP $@ quiet_cmd_gen_envp = ENVP $@
cmd_gen_envp = \ cmd_gen_envp = \
if [ -s "$(ENV_FILE)" ]; then \ if [ -s "$(ENV_FILE)" ]; then \
@ -1843,7 +1861,6 @@ quiet_cmd_gen_envp = ENVP $@
-I$(srctree)/arch/$(ARCH)/include \ -I$(srctree)/arch/$(ARCH)/include \
$< -o $@; \ $< -o $@; \
else \ else \
rm -f $@; \
touch $@ ; \ touch $@ ; \
fi fi
include/generated/env.in: include/generated/env.txt FORCE include/generated/env.in: include/generated/env.txt FORCE
@ -2087,7 +2104,9 @@ spl/u-boot-spl-dtb.bin: spl/u-boot-spl
spl/u-boot-spl-dtb.hex: spl/u-boot-spl spl/u-boot-spl-dtb.hex: spl/u-boot-spl
@: @:
spl/u-boot-spl: tools prepare $(if $(CONFIG_SPL_OF_CONTROL),dts/dt.dtb) spl/u-boot-spl: tools prepare \
$(if $(CONFIG_OF_SEPARATE)$(CONFIG_OF_EMBED)$(CONFIG_SPL_OF_PLATDATA),dts/dt.dtb) \
$(if $(CONFIG_OF_SEPARATE)$(CONFIG_OF_EMBED)$(CONFIG_TPL_OF_PLATDATA),dts/dt.dtb)
$(Q)$(MAKE) obj=spl -f $(srctree)/scripts/Makefile.spl all $(Q)$(MAKE) obj=spl -f $(srctree)/scripts/Makefile.spl all
spl/sunxi-spl.bin: spl/u-boot-spl spl/sunxi-spl.bin: spl/u-boot-spl
@ -2102,19 +2121,10 @@ spl/u-boot-spl.sfp: spl/u-boot-spl
spl/boot.bin: spl/u-boot-spl spl/boot.bin: spl/u-boot-spl
@: @:
tpl/u-boot-tpl.bin: tpl/u-boot-tpl tpl/u-boot-tpl.bin: tools prepare \
@: $(if $(CONFIG_OF_SEPARATE)$(CONFIG_OF_EMBED)$(CONFIG_SPL_OF_PLATDATA),dts/dt.dtb)
$(TPL_SIZE_CHECK)
tpl/u-boot-tpl: tools prepare $(if $(CONFIG_TPL_OF_CONTROL),dts/dt.dtb)
$(Q)$(MAKE) obj=tpl -f $(srctree)/scripts/Makefile.spl all $(Q)$(MAKE) obj=tpl -f $(srctree)/scripts/Makefile.spl all
$(TPL_SIZE_CHECK)
vpl/u-boot-vpl.bin: vpl/u-boot-vpl
@:
$(VPL_SIZE_CHECK)
vpl/u-boot-vpl: tools prepare $(if $(CONFIG_TPL_OF_CONTROL),dts/dt.dtb)
$(Q)$(MAKE) obj=vpl -f $(srctree)/scripts/Makefile.spl all
TAG_SUBDIRS := $(patsubst %,$(srctree)/%,$(u-boot-dirs) include) TAG_SUBDIRS := $(patsubst %,$(srctree)/%,$(u-boot-dirs) include)
@ -2193,16 +2203,13 @@ CLEAN_DIRS += $(MODVERDIR) \
$(foreach d, spl tpl, $(patsubst %,$d/%, \ $(foreach d, spl tpl, $(patsubst %,$d/%, \
$(filter-out include, $(shell ls -1 $d 2>/dev/null)))) $(filter-out include, $(shell ls -1 $d 2>/dev/null))))
CLEAN_FILES += include/bmp_logo.h include/bmp_logo_data.h \ CLEAN_FILES += include/bmp_logo.h include/bmp_logo_data.h tools/version.h \
include/generated/env.* drivers/video/u_boot_logo.S \ u-boot* MLO* SPL System.map fit-dtb.blob* \
tools/version.h u-boot* MLO* SPL System.map fit-dtb.blob* \
u-boot-ivt.img.log u-boot-dtb.imx.log SPL.log u-boot.imx.log \ u-boot-ivt.img.log u-boot-dtb.imx.log SPL.log u-boot.imx.log \
lpc32xx-* bl31.c bl31.elf bl31_*.bin image.map tispl.bin* \ lpc32xx-* bl31.c bl31.elf bl31_*.bin image.map tispl.bin* \
idbloader.img flash.bin flash.log defconfig keep-syms-lto.c \ idbloader.img flash.bin flash.log defconfig keep-syms-lto.c \
mkimage-out.spl.mkimage mkimage.spl.mkimage imx-boot.map \ mkimage-out.spl.mkimage mkimage.spl.mkimage imx-boot.map \
itb.fit.fit itb.fit.itb itb.map spl.map mkimage-out.rom.mkimage \ itb.fit.fit itb.fit.itb itb.map spl.map
mkimage.rom.mkimage rom.map simple-bin.map simple-bin-spi.map \
idbloader-spi.img
# Directories & files removed with 'make mrproper' # Directories & files removed with 'make mrproper'
MRPROPER_DIRS += include/config include/generated spl tpl \ MRPROPER_DIRS += include/config include/generated spl tpl \
@ -2271,7 +2278,7 @@ distclean: mrproper
@rm -f boards.cfg CHANGELOG @rm -f boards.cfg CHANGELOG
# See doc/develop/python_cq.rst # See doc/develop/python_cq.rst
PHONY += pylint pylint_err PHONY += pylint
PYLINT_BASE := scripts/pylint.base PYLINT_BASE := scripts/pylint.base
PYLINT_CUR := pylint.cur PYLINT_CUR := pylint.cur
PYLINT_DIFF := pylint.diff PYLINT_DIFF := pylint.diff
@ -2313,11 +2320,6 @@ pylint:
echo "No pylint regressions"; \ echo "No pylint regressions"; \
fi fi
# Check for errors only
pylint_err:
$(Q)pylint -E -j 0 --ignore-imports=yes \
$(shell find tools test -name "*.py")
backup: backup:
F=`basename $(srctree)` ; cd .. ; \ F=`basename $(srctree)` ; cd .. ; \
gtar --force-local -zcvf `LC_ALL=C date "+$$F-%Y-%m-%d-%T.tar.gz"` $$F gtar --force-local -zcvf `LC_ALL=C date "+$$F-%Y-%m-%d-%T.tar.gz"` $$F
@ -2334,7 +2336,6 @@ help:
@echo 'Test targets:' @echo 'Test targets:'
@echo '' @echo ''
@echo ' check - Run all automated tests that use sandbox' @echo ' check - Run all automated tests that use sandbox'
@echo ' pcheck - Run quick automated tests in parallel'
@echo ' qcheck - Run quick automated tests that use sandbox' @echo ' qcheck - Run quick automated tests that use sandbox'
@echo ' tcheck - Run quick automated tests on tools' @echo ' tcheck - Run quick automated tests on tools'
@echo ' pylint - Run pylint on all Python files' @echo ' pylint - Run pylint on all Python files'
@ -2380,9 +2381,6 @@ help:
tests check: tests check:
$(srctree)/test/run $(srctree)/test/run
pcheck:
$(srctree)/test/run parallel
qcheck: qcheck:
$(srctree)/test/run quick $(srctree)/test/run quick
@ -2460,8 +2458,7 @@ endif
quiet_cmd_genenv = GENENV $@ quiet_cmd_genenv = GENENV $@
cmd_genenv = $(OBJCOPY) --dump-section .rodata.default_environment=$@ env/common.o; \ cmd_genenv = $(OBJCOPY) --dump-section .rodata.default_environment=$@ env/common.o; \
sed --in-place -e 's/\x00/\x0A/g' $@; sed --in-place -e '/^\s*$$/d' $@; \ sed --in-place -e 's/\x00/\x0A/g' $@
sort --field-separator== -k1,1 --stable $@ -o $@
u-boot-initial-env: u-boot.bin u-boot-initial-env: u-boot.bin
$(call if_changed,genenv) $(call if_changed,genenv)

700
README

File diff suppressed because it is too large Load Diff

View File

@ -5,7 +5,14 @@
#include <common.h> #include <common.h>
#include <api_public.h> #include <api_public.h>
#include <lcd.h>
#include <log.h> #include <log.h>
#include <video_font.h> /* Get font width and height */
/* lcd.h needs BMP_LOGO_HEIGHT to calculate CONSOLE_ROWS */
#if defined(CONFIG_LCD_LOGO) && !defined(CONFIG_LCD_INFO_BELOW_LOGO)
#include <bmp_logo.h>
#endif
/* TODO(clchiou): add support of video device */ /* TODO(clchiou): add support of video device */
@ -19,6 +26,14 @@ int display_get_info(int type, struct display_info *di)
debug("%s: unsupport display device type: %d\n", debug("%s: unsupport display device type: %d\n",
__FILE__, type); __FILE__, type);
return API_ENODEV; return API_ENODEV;
#ifdef CONFIG_LCD
case DISPLAY_TYPE_LCD:
di->pixel_width = panel_info.vl_col;
di->pixel_height = panel_info.vl_row;
di->screen_rows = lcd_get_screen_rows();
di->screen_cols = lcd_get_screen_columns();
break;
#endif
} }
di->type = type; di->type = type;
@ -29,9 +44,16 @@ int display_draw_bitmap(ulong bitmap, int x, int y)
{ {
if (!bitmap) if (!bitmap)
return API_EINVAL; return API_EINVAL;
#ifdef CONFIG_LCD
return lcd_display_bitmap(bitmap, x, y);
#else
return API_ENODEV; return API_ENODEV;
#endif
} }
void display_clear(void) void display_clear(void)
{ {
#ifdef CONFIG_LCD
lcd_clear();
#endif
} }

View File

@ -1,5 +1,5 @@
config ARCH_MAP_SYSMEM config ARCH_MAP_SYSMEM
depends on SANDBOX depends on SANDBOX || NDS32
def_bool y def_bool y
config CREATE_ARCH_SYMLINK config CREATE_ARCH_SYMLINK
@ -8,6 +8,9 @@ config CREATE_ARCH_SYMLINK
config HAVE_ARCH_IOREMAP config HAVE_ARCH_IOREMAP
bool bool
config NEEDS_MANUAL_RELOC
bool
config SYS_CACHE_SHIFT_4 config SYS_CACHE_SHIFT_4
bool bool
@ -53,8 +56,6 @@ config ARC
select SUPPORT_OF_CONTROL select SUPPORT_OF_CONTROL
select SYS_CACHE_SHIFT_7 select SYS_CACHE_SHIFT_7
select TIMER select TIMER
select SYS_BIG_ENDIAN if CPU_BIG_ENDIAN
select SYS_LITTLE_ENDIAN if !CPU_BIG_ENDIAN
config ARM config ARM
bool "ARM architecture" bool "ARM architecture"
@ -75,25 +76,24 @@ config M68K
config MICROBLAZE config MICROBLAZE
bool "MicroBlaze architecture" bool "MicroBlaze architecture"
select NEEDS_MANUAL_RELOC
select SUPPORT_OF_CONTROL select SUPPORT_OF_CONTROL
imply CMD_TIMER imply CMD_IRQ
imply SPL_REGMAP if SPL
imply SPL_TIMER if SPL
imply TIMER
imply XILINX_TIMER
config MIPS config MIPS
bool "MIPS architecture" bool "MIPS architecture"
select HAVE_ARCH_IOREMAP select HAVE_ARCH_IOREMAP
select HAVE_PRIVATE_LIBGCC select HAVE_PRIVATE_LIBGCC
select SUPPORT_OF_CONTROL select SUPPORT_OF_CONTROL
select SPL_SEPARATE_BSS if SPL
config NDS32
bool "NDS32 architecture"
select SUPPORT_OF_CONTROL
config NIOS2 config NIOS2
bool "Nios II architecture" bool "Nios II architecture"
select CPU select CPU
select DM select DM
imply DM_EVENT
select OF_CONTROL select OF_CONTROL
select SUPPORT_OF_CONTROL select SUPPORT_OF_CONTROL
imply CMD_DM imply CMD_DM
@ -111,10 +111,8 @@ config RISCV
select SUPPORT_OF_CONTROL select SUPPORT_OF_CONTROL
select OF_CONTROL select OF_CONTROL
select DM select DM
select SPL_SEPARATE_BSS if SPL
imply DM_SERIAL imply DM_SERIAL
imply DM_ETH imply DM_ETH
imply DM_EVENT
imply DM_MMC imply DM_MMC
imply DM_SPI imply DM_SPI
imply DM_SPI_FLASH imply DM_SPI_FLASH
@ -137,7 +135,6 @@ config SANDBOX
select BZIP2 select BZIP2
select CMD_POWEROFF select CMD_POWEROFF
select DM select DM
select DM_FUZZING_ENGINE
select DM_GPIO select DM_GPIO
select DM_I2C select DM_I2C
select DM_KEYBOARD select DM_KEYBOARD
@ -146,6 +143,7 @@ config SANDBOX
select DM_SPI select DM_SPI
select DM_SPI_FLASH select DM_SPI_FLASH
select GZIP_COMPRESSED select GZIP_COMPRESSED
select HAVE_BLOCK_DEVICE
select LZO select LZO
select OF_BOARD_SETUP select OF_BOARD_SETUP
select PCI_ENDPOINT select PCI_ENDPOINT
@ -166,12 +164,12 @@ config SANDBOX
imply CMD_IO imply CMD_IO
imply CMD_IOTRACE imply CMD_IOTRACE
imply CMD_LZMADEC imply CMD_LZMADEC
imply CMD_SATA
imply CMD_SF imply CMD_SF
imply CMD_SF_TEST imply CMD_SF_TEST
imply CRC32_VERIFY imply CRC32_VERIFY
imply FAT_WRITE imply FAT_WRITE
imply FIRMWARE imply FIRMWARE
imply FUZZING_ENGINE_SANDBOX
imply HASH_VERIFY imply HASH_VERIFY
imply LZMA imply LZMA
imply TEE imply TEE
@ -205,7 +203,6 @@ config SANDBOX
imply KEYBOARD imply KEYBOARD
imply PHYSMEM imply PHYSMEM
imply GENERATE_ACPI_TABLE imply GENERATE_ACPI_TABLE
imply BINMAN
config SH config SH
bool "SuperH architecture" bool "SuperH architecture"
@ -241,7 +238,6 @@ config X86
imply CMD_SF_TEST imply CMD_SF_TEST
imply CMD_ZBOOT imply CMD_ZBOOT
imply DM_ETH imply DM_ETH
imply DM_EVENT
imply DM_GPIO imply DM_GPIO
imply DM_KEYBOARD imply DM_KEYBOARD
imply DM_MMC imply DM_MMC
@ -251,7 +247,7 @@ config X86
imply DM_SPI imply DM_SPI
imply DM_SPI_FLASH imply DM_SPI_FLASH
imply DM_USB imply DM_USB
imply VIDEO imply DM_VIDEO
imply SYSRESET imply SYSRESET
imply SPL_SYSRESET imply SPL_SYSRESET
imply SYSRESET_X86 imply SYSRESET_X86
@ -367,15 +363,12 @@ config SYS_DISABLE_DCACHE_OPS
this functionality. this functionality.
config SYS_IMMR config SYS_IMMR
hex "Address for the Internal Memory-Mapped Registers (IMMR) window" hex
depends on PPC || FSL_LSCH2 || FSL_LSCH3 || ARCH_LS1021A depends on PPC || FSL_LSCH2 || FSL_LSCH3 || ARCH_LS1021A
default 0xFF000000 if MPC8xx default 0xFF000000 if MPC8xx
default 0xF0000000 if ARCH_MPC8313 default 0xF0000000 if ARCH_MPC8313
default 0xE0000000 if MPC83xx && !ARCH_MPC8313 default 0xE0000000 if MPC83xx && !ARCH_MPC8313
default 0x01000000 if ARCH_LS1021A || FSL_LSCH2 || FSL_LSCH3 default 0x01000000 if ARCH_LS1021A || FSL_LSCH2 || FSL_LSCH3
default 0xFFE00000 if ARCH_P1010 || ARCH_P1011 || ARCH_P1020 || \
ARCH_P1021 || ARCH_P1024 || ARCH_P1025 || \
ARCH_P2020
default SYS_CCSRBAR_DEFAULT default SYS_CCSRBAR_DEFAULT
help help
Address for the Internal Memory-Mapped Registers (IMMR) window used Address for the Internal Memory-Mapped Registers (IMMR) window used
@ -383,7 +376,7 @@ config SYS_IMMR
config SKIP_LOWLEVEL_INIT config SKIP_LOWLEVEL_INIT
bool "Skip the calls to certain low level initialization functions" bool "Skip the calls to certain low level initialization functions"
depends on ARM || MIPS || RISCV depends on ARM || NDS32 || MIPS || RISCV
help help
If enabled, then certain low level initializations (like setting up If enabled, then certain low level initializations (like setting up
the memory controller) are omitted and/or U-Boot does not relocate the memory controller) are omitted and/or U-Boot does not relocate
@ -394,7 +387,7 @@ config SKIP_LOWLEVEL_INIT
config SPL_SKIP_LOWLEVEL_INIT config SPL_SKIP_LOWLEVEL_INIT
bool "Skip the calls to certain low level initialization functions" bool "Skip the calls to certain low level initialization functions"
depends on SPL && (ARM || MIPS || RISCV) depends on SPL && (ARM || NDS32 || MIPS || RISCV)
help help
If enabled, then certain low level initializations (like setting up If enabled, then certain low level initializations (like setting up
the memory controller) are omitted and/or U-Boot does not relocate the memory controller) are omitted and/or U-Boot does not relocate
@ -443,6 +436,7 @@ source "arch/arm/Kconfig"
source "arch/m68k/Kconfig" source "arch/m68k/Kconfig"
source "arch/microblaze/Kconfig" source "arch/microblaze/Kconfig"
source "arch/mips/Kconfig" source "arch/mips/Kconfig"
source "arch/nds32/Kconfig"
source "arch/nios2/Kconfig" source "arch/nios2/Kconfig"
source "arch/powerpc/Kconfig" source "arch/powerpc/Kconfig"
source "arch/sandbox/Kconfig" source "arch/sandbox/Kconfig"
@ -450,34 +444,3 @@ source "arch/sh/Kconfig"
source "arch/x86/Kconfig" source "arch/x86/Kconfig"
source "arch/xtensa/Kconfig" source "arch/xtensa/Kconfig"
source "arch/riscv/Kconfig" source "arch/riscv/Kconfig"
if ARM || M68K || PPC
source "arch/Kconfig.nxp"
endif
source "board/keymile/Kconfig"
source "board/sunxi/Kconfig"
if MIPS || MICROBLAZE
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"
depends on (SUPPORTS_BIG_ENDIAN && MIPS) || MICROBLAZE
config SYS_LITTLE_ENDIAN
bool "Little endian"
depends on (SUPPORTS_LITTLE_ENDIAN && MIPS) || MICROBLAZE
endchoice
endif

View File

@ -1,253 +0,0 @@
config NXP_ESBC
bool "NXP ESBC (secure boot) functionality"
help
Enable Freescale Secure Boot feature. Normally selected by defconfig.
If unsure, do not change.
menu "Chain of trust / secure boot options"
depends on !FIT_SIGNATURE && NXP_ESBC
config CHAIN_OF_TRUST
select FSL_CAAM
select ARCH_MISC_INIT
select FSL_SEC_MON
select SPL_BOARD_INIT if (ARM && SPL)
select SPL_HASH if (ARM && SPL)
select SHA_HW_ACCEL
select SHA_PROG_HW_ACCEL
select ENV_IS_NOWHERE
select SYS_CPC_REINIT_F if MPC85xx && !SYS_RAMBOOT
select CMD_EXT4 if ARM
select CMD_EXT4_WRITE if ARM
imply CMD_BLOB
imply CMD_HASH if ARM
def_bool y
config CMD_ESBC_VALIDATE
bool "Enable the 'esbc_validate' and 'esbc_halt' commands"
default y
help
This option enables two commands used for secure booting:
esbc_validate - validate signature using RSA verification
esbc_halt - put the core in spin loop (Secure Boot Only)
config ESBC_HDR_LS
bool
config ESBC_ADDR_64BIT
def_bool y
depends on ESBC_HDR_LS && FSL_LAYERSCAPE
help
For Layerscape based platforms, ESBC image Address in Header is 64bit.
config SYS_FSL_SFP_BE
def_bool y
depends on PPC || FSL_LSCH2 || ARCH_LS1021A
config SYS_FSL_SFP_LE
def_bool y
depends on !SYS_FSL_SFP_BE
choice
prompt "SFP IP revision"
default SYS_FSL_SFP_VER_3_0 if PPC
default SYS_FSL_SFP_VER_3_4
config SYS_FSL_SFP_VER_3_0
bool "SFP version 3.0"
config SYS_FSL_SFP_VER_3_2
bool "SFP version 3.2"
config SYS_FSL_SFP_VER_3_4
bool "SFP version 3.4"
endchoice
config SPL_UBOOT_KEY_HASH
string "Non-SRK key hash for U-Boot public/private key pair"
depends on SPL
default ""
help
Set the key hash for U-Boot here if public/private key pair used to
sign U-boot are different from the SRK hash put in the fuse. Example
of a key hash is
41066b564c6ffcef40ccbc1e0a5d0d519604000c785d97bbefd25e4d288d1c8b.
Otherwise leave this empty.
if PPC
config BOOTSCRIPT_COPY_RAM
bool "Secure boot copies boot script to RAM"
help
On systems that support chain of trust booting, a number of addresses
are required to set variables that are used in the copying and then
verification of different parts of the system. If enabled, the subsequent
options are for what location to use in each step.
config BS_ADDR_DEVICE
hex "Address in RAM for bs_device"
depends on BOOTSCRIPT_COPY_RAM
config BS_SIZE
hex "The size of bs_size which is the amount read from bs_device"
depends on BOOTSCRIPT_COPY_RAM
config BS_ADDR_RAM
hex "Address in RAM for bs_ram"
depends on BOOTSCRIPT_COPY_RAM
config BS_HDR_ADDR_DEVICE
hex "Address in RAM for bs_hdr_device"
depends on BOOTSCRIPT_COPY_RAM
config BS_HDR_SIZE
hex "The size of bs_hdr_size which is the amount read from bs_hdr_device"
depends on BOOTSCRIPT_COPY_RAM
config BS_HDR_ADDR_RAM
hex "Address in RAM for bs_hdr_ram"
depends on BOOTSCRIPT_COPY_RAM
config BOOTSCRIPT_HDR_ADDR
hex "CONFIG_BOOTSCRIPT_HDR_ADDR"
default BS_ADDR_RAM if BOOTSCRIPT_COPY_RAM
endif
config SYS_FSL_SRK_LE
def_bool y
depends on ARM
config KEY_REVOCATION
def_bool y
endmenu
comment "Other functionality shared between NXP SoCs"
config DEEP_SLEEP
bool "Enable SoC deep sleep feature"
depends on ARCH_T1024 || ARCH_T1040 || ARCH_T1042 || ARCH_LS1021A
default y
help
Indicates this SoC supports deep sleep feature. If deep sleep is
supported, core will start to execute uboot when wakes up.
config LAYERSCAPE_NS_ACCESS
bool "Layerscape non-secure access support"
depends on ARCH_LS1021A || FSL_LSCH2
config PCIE1
bool "PCIe controller #1"
depends on LAYERSCAPE_NS_ACCESS || PPC
config PCIE2
bool "PCIe controller #2"
depends on LAYERSCAPE_NS_ACCESS || PPC
config PCIE3
bool "PCIe controller #3"
depends on LAYERSCAPE_NS_ACCESS || PPC
config PCIE4
bool "PCIe controller #4"
depends on LAYERSCAPE_NS_ACCESS || PPC
config FSL_USE_PCA9547_MUX
bool "Enable PCA9547 I2C Mux on Freescale boards"
depends on PPC || ARCH_LS1021A || FSL_LSCH2 || FSL_LSCH3
help
This option enables the PCA9547 I2C mux on Freescale boards.
config VID
bool "Enable Freescale VID"
depends on (PPC || ARCH_LS1021A || FSL_LSCH2 || FSL_LSCH3) && (I2C || DM_I2C)
help
This option enables setting core voltage based on individual
values saved in SoC fuses.
config SPL_VID
bool "Enable Freescale VID in SPL"
depends on (PPC || ARCH_LS1021A || FSL_LSCH2 || FSL_LSCH3) && (SPL_I2C || DM_SPL_I2C)
help
This option enables setting core voltage based on individual
values saved in SoC fuses, in SPL.
if VID || SPL_VID
config VID_FLS_ENV
string "Environment variable for overriding VDD"
help
This option allows for specifying the environment variable
to check to override VDD information.
config VOL_MONITOR_INA220
bool "Enable the INA220 voltage monitor read"
help
This option enables INA220 voltage monitor read
functionality. It is used by the common VID driver.
config VOL_MONITOR_IR36021_READ
bool "Enable the IR36021 voltage monitor read"
help
This option enables IR36021 voltage monitor read
functionality. It is used by the common VID driver.
config VOL_MONITOR_IR36021_SET
bool "Enable the IR36021 voltage monitor set"
help
This option enables IR36021 voltage monitor set
functionality. It is used by the common VID driver.
config VOL_MONITOR_LTC3882_READ
bool "Enable the LTC3882 voltage monitor read"
help
This option enables LTC3882 voltage monitor read
functionality. It is used by the common VID driver.
config VOL_MONITOR_LTC3882_SET
bool "Enable the LTC3882 voltage monitor set"
help
This option enables LTC3882 voltage monitor set
functionality. It is used by the common VID driver.
config VOL_MONITOR_ISL68233_READ
bool "Enable the ISL68233 voltage monitor read"
help
This option enables ISL68233 voltage monitor read
functionality. It is used by the common VID driver.
config VOL_MONITOR_ISL68233_SET
bool "Enable the ISL68233 voltage monitor set"
help
This option enables ISL68233 voltage monitor set
functionality. It is used by the common VID driver.
endif
config SYS_FSL_NUM_CC_PLLS
int "Number of clock control PLLs"
depends on MPC85xx || FSL_LSCH2 || FSL_LSCH3 || ARCH_LS1021A || ARCH_LS1028A
default 2 if ARCH_LS1021A || ARCH_LS1028A || FSL_LSCH2
default 6 if FSL_LSCH3 || MPC85xx
config SYS_FSL_ESDHC_BE
bool
config SYS_FSL_IFC_BE
bool
config FSL_QIXIS
bool "Enable QIXIS support"
depends on PPC || ARCH_LS1021A || FSL_LSCH2 || FSL_LSCH3
config QIXIS_I2C_ACCESS
bool "Access to QIXIS is over i2c"
depends on FSL_QIXIS
default y
config HAS_FSL_DR_USB
def_bool y
depends on USB_EHCI_HCD && PPC

View File

@ -2,6 +2,12 @@
# #
# Copyright (C) 2013-2014 Synopsys, Inc. All rights reserved. # Copyright (C) 2013-2014 Synopsys, Inc. All rights reserved.
ifndef CONFIG_CPU_BIG_ENDIAN
CONFIG_SYS_LITTLE_ENDIAN = 1
else
CONFIG_SYS_BIG_ENDIAN = 1
endif
ifdef CONFIG_SYS_LITTLE_ENDIAN ifdef CONFIG_SYS_LITTLE_ENDIAN
KBUILD_LDFLAGS += -EL KBUILD_LDFLAGS += -EL
PLATFORM_CPPFLAGS += -mlittle-endian PLATFORM_CPPFLAGS += -mlittle-endian

View File

@ -10,7 +10,7 @@ OUTPUT_ARCH(arc)
ENTRY(_start) ENTRY(_start)
SECTIONS SECTIONS
{ {
. = CONFIG_TEXT_BASE; . = CONFIG_SYS_TEXT_BASE;
__image_copy_start = .; __image_copy_start = .;
. = ALIGN(1024); . = ALIGN(1024);
__ivt_start = .; __ivt_start = .;
@ -39,8 +39,8 @@ SECTIONS
} }
. = ALIGN(4); . = ALIGN(4);
__u_boot_list : { .u_boot_list : {
KEEP(*(SORT(__u_boot_list*))); KEEP(*(SORT(.u_boot_list*)));
} }
. = ALIGN(4); . = ALIGN(4);

View File

@ -6,4 +6,6 @@
#ifndef __ASM_ARC_CONFIG_H_ #ifndef __ASM_ARC_CONFIG_H_
#define __ASM_ARC_CONFIG_H_ #define __ASM_ARC_CONFIG_H_
#define CONFIG_SYS_BOOT_RAMDISK_HIGH
#endif /*__ASM_ARC_CONFIG_H_ */ #endif /*__ASM_ARC_CONFIG_H_ */

View File

@ -22,18 +22,16 @@ static int cleanup_before_linux(void)
return 0; return 0;
} }
__weak int board_prep_linux(struct bootm_headers *images) { return 0; } __weak int board_prep_linux(bootm_headers_t *images) { return 0; }
/* Subcommand: PREP */ /* Subcommand: PREP */
static int boot_prep_linux(struct bootm_headers *images) static int boot_prep_linux(bootm_headers_t *images)
{ {
int ret; int ret;
if (CONFIG_IS_ENABLED(LMB)) {
ret = image_setup_linux(images); ret = image_setup_linux(images);
if (ret) if (ret)
return ret; return ret;
}
return board_prep_linux(images); return board_prep_linux(images);
} }
@ -49,7 +47,7 @@ __weak void board_jump_and_run(ulong entry, int zero, int arch, uint params)
} }
/* Subcommand: GO */ /* Subcommand: GO */
static void boot_jump_linux(struct bootm_headers *images, int flag) static void boot_jump_linux(bootm_headers_t *images, int flag)
{ {
ulong kernel_entry; ulong kernel_entry;
unsigned int r0, r2; unsigned int r0, r2;
@ -79,7 +77,7 @@ static void boot_jump_linux(struct bootm_headers *images, int flag)
board_jump_and_run(kernel_entry, r0, 0, r2); board_jump_and_run(kernel_entry, r0, 0, r2);
} }
int do_bootm_linux(int flag, int argc, char *argv[], struct bootm_headers *images) int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images)
{ {
/* No need for those on ARC */ /* No need for those on ARC */
if ((flag & BOOTM_STATE_OS_BD_T) || (flag & BOOTM_STATE_OS_CMDLINE)) if ((flag & BOOTM_STATE_OS_BD_T) || (flag & BOOTM_STATE_OS_CMDLINE))

View File

@ -7,7 +7,6 @@
#include <config.h> #include <config.h>
#include <linux/linkage.h> #include <linux/linkage.h>
#include <asm/arcregs.h> #include <asm/arcregs.h>
#include <system-constants.h>
ENTRY(_start) ENTRY(_start)
/* Setup interrupt vector base that matches "__text_start" */ /* Setup interrupt vector base that matches "__text_start" */
@ -87,7 +86,7 @@ ENTRY(_start)
#endif #endif
/* Establish C runtime stack and frame */ /* Establish C runtime stack and frame */
mov %sp, SYS_INIT_SP_ADDR mov %sp, CONFIG_SYS_INIT_SP_ADDR
mov %fp, %sp mov %fp, %sp
/* Allocate reserved area from current top of stack */ /* Allocate reserved area from current top of stack */

View File

@ -8,7 +8,6 @@ config ARM64
bool bool
select PHYS_64BIT select PHYS_64BIT
select SYS_CACHE_SHIFT_6 select SYS_CACHE_SHIFT_6
imply SPL_SEPARATE_BSS
config ARM64_CRC32 config ARM64_CRC32
bool "Enable support for CRC32 instruction" bool "Enable support for CRC32 instruction"
@ -20,23 +19,6 @@ config ARM64_CRC32
not be present on all ARMv8.0, but is always present on ARMv8.1 and not be present on all ARMv8.0, but is always present on ARMv8.1 and
newer. newer.
config COUNTER_FREQUENCY
int "Timer clock frequency"
depends on ARM64 || CPU_V7A
default 8000000 if IMX8 || MX7 || MX6UL || MX6ULL
default 24000000 if ARCH_SUNXI || ARCH_EXYNOS || ROCKCHIP_RK3128 || \
ROCKCHIP_RK3288 || ROCKCHIP_RK322X || ROCKCHIP_RK3036
default 25000000 if ARCH_LX2160A || ARCH_LX2162A || ARCH_LS1088A
default 100000000 if ARCH_ZYNQMP
default 0
help
For platforms with ARMv8-A and ARMv7-A which features a system
counter, those platforms needs software to program the counter
frequency. Setup time clock frequency for certain platform.
0 means no need to configure the system counter frequency.
For platforms needs the frequency set in U-Boot with a
pre-defined value, should have the macro defined as a non-zero value.
config POSITION_INDEPENDENT config POSITION_INDEPENDENT
bool "Generate position-independent pre-relocation code" bool "Generate position-independent pre-relocation code"
depends on ARM64 || CPU_V7A depends on ARM64 || CPU_V7A
@ -75,10 +57,6 @@ config SYS_INIT_SP_BSS_OFFSET
that the early malloc region, global data (gd), and early stack usage that the early malloc region, global data (gd), and early stack usage
do not overlap any appended DTB. do not overlap any appended DTB.
config SPL_SYS_NO_VECTOR_TABLE
depends on SPL
bool
config LINUX_KERNEL_IMAGE_HEADER config LINUX_KERNEL_IMAGE_HEADER
depends on ARM64 depends on ARM64
bool bool
@ -93,7 +71,7 @@ config LNX_KRNL_IMG_TEXT_OFFSET_BASE
depends on LINUX_KERNEL_IMAGE_HEADER depends on LINUX_KERNEL_IMAGE_HEADER
hex hex
help help
The value subtracted from CONFIG_TEXT_BASE to calculate the The value subtracted from CONFIG_SYS_TEXT_BASE to calculate the
TEXT_OFFSET value written to the Linux kernel image header. TEXT_OFFSET value written to the Linux kernel image header.
config GICV2 config GICV2
@ -289,7 +267,6 @@ config CPU_ARM926EJS
bool bool
select SYS_CACHE_SHIFT_5 select SYS_CACHE_SHIFT_5
imply SYS_ARM_MMU imply SYS_ARM_MMU
imply SPL_SEPARATE_BSS
config CPU_ARM946ES config CPU_ARM946ES
bool bool
@ -300,7 +277,6 @@ config CPU_ARM1136
bool bool
select SYS_CACHE_SHIFT_5 select SYS_CACHE_SHIFT_5
imply SYS_ARM_MMU imply SYS_ARM_MMU
imply SPL_SEPARATE_BSS
config CPU_ARM1176 config CPU_ARM1176
bool bool
@ -330,6 +306,20 @@ config CPU_V7R
select SYS_ARM_MPU select SYS_ARM_MPU
select SYS_CACHE_SHIFT_6 select SYS_CACHE_SHIFT_6
config CPU_PXA
bool
select SYS_CACHE_SHIFT_5
imply SYS_ARM_MMU
config CPU_PXA27X
bool
select CPU_PXA
config CPU_SA1100
bool
select SYS_CACHE_SHIFT_5
imply SYS_ARM_MMU
config SYS_CPU config SYS_CPU
default "arm720t" if CPU_ARM720T default "arm720t" if CPU_ARM720T
default "arm920t" if CPU_ARM920T default "arm920t" if CPU_ARM920T
@ -340,6 +330,8 @@ config SYS_CPU
default "armv7" if CPU_V7A default "armv7" if CPU_V7A
default "armv7" if CPU_V7R default "armv7" if CPU_V7R
default "armv7m" if CPU_V7M default "armv7m" if CPU_V7M
default "pxa" if CPU_PXA
default "sa1100" if CPU_SA1100
default "armv8" if ARM64 default "armv8" if ARM64
config SYS_ARM_ARCH config SYS_ARM_ARCH
@ -353,11 +345,14 @@ config SYS_ARM_ARCH
default 7 if CPU_V7A default 7 if CPU_V7A
default 7 if CPU_V7M default 7 if CPU_V7M
default 7 if CPU_V7R default 7 if CPU_V7R
default 5 if CPU_PXA
default 4 if CPU_SA1100
default 8 if ARM64 default 8 if ARM64
choice choice
prompt "Select the ARM data write cache policy" prompt "Select the ARM data write cache policy"
default SYS_ARM_CACHE_WRITETHROUGH if TARGET_BCMCYGNUS || RZA1 default SYS_ARM_CACHE_WRITETHROUGH if TARGET_BCMCYGNUS || \
CPU_PXA || RZA1
default SYS_ARM_CACHE_WRITEBACK default SYS_ARM_CACHE_WRITEBACK
config SYS_ARM_CACHE_WRITEBACK config SYS_ARM_CACHE_WRITEBACK
@ -382,12 +377,6 @@ config SYS_ARM_CACHE_WRITEALLOC
write is performed. write is performed.
endchoice endchoice
config ARCH_VERY_EARLY_INIT
bool
config SPL_ARCH_VERY_EARLY_INIT
bool
config ARCH_CPU_INIT config ARCH_CPU_INIT
bool "Enable ARCH_CPU_INIT" bool "Enable ARCH_CPU_INIT"
help help
@ -414,50 +403,11 @@ config ARM_SMCCC
firmware (for example, PSCI) according to SMCCC. firmware (for example, PSCI) according to SMCCC.
config SEMIHOSTING config SEMIHOSTING
bool "Support ARM semihosting" bool "support boot from semihosting"
help help
Semihosting is a method for a target to communicate with a host In emulated environments, semihosting is a way for
debugger. It uses special instructions which the debugger will trap the hosted environment to call out to the emulator to
on and interpret. This allows U-Boot to read/write files, print to retrieve files from the host machine.
the console, and execute arbitrary commands on the host system.
Enabling this option will add support for reading and writing files
on the host system. If you don't have a debugger attached then trying
to do this will likely cause U-Boot to hang. Say 'n' if you are unsure.
config SEMIHOSTING_FALLBACK
bool "Recover gracefully when semihosting fails"
depends on SEMIHOSTING && ARM64
default y
help
Normally, if U-Boot makes a semihosting call and no debugger is
attached, then it will panic due to a synchronous abort
exception. This config adds an exception handler which will allow
U-Boot to recover. Say 'y' if unsure.
config SPL_SEMIHOSTING
bool "Support ARM semihosting in SPL"
depends on SPL
help
Semihosting is a method for a target to communicate with a host
debugger. It uses special instructions which the debugger will trap
on and interpret. This allows U-Boot to read/write files, print to
the console, and execute arbitrary commands on the host system.
Enabling this option will add support for reading and writing files
on the host system. If you don't have a debugger attached then trying
to do this will likely cause U-Boot to hang. Say 'n' if you are unsure.
config SPL_SEMIHOSTING_FALLBACK
bool "Recover gracefully when semihosting fails in SPL"
depends on SPL_SEMIHOSTING && ARM64
select ARMV8_SPL_EXCEPTION_VECTORS
default y
help
Normally, if U-Boot makes a semihosting call and no debugger is
attached, then it will panic due to a synchronous abort
exception. This config adds an exception handler which will allow
U-Boot to recover. Say 'y' if unsure.
config SYS_THUMB_BUILD config SYS_THUMB_BUILD
bool "Build U-Boot using the Thumb instruction set" bool "Build U-Boot using the Thumb instruction set"
@ -488,15 +438,6 @@ config TPL_SYS_THUMB_BUILD
density. For ARM architectures that support Thumb2 this flag will density. For ARM architectures that support Thumb2 this flag will
result in Thumb2 code generated by GCC. result in Thumb2 code generated by GCC.
config SYS_L2_PL310
bool "ARM PL310 L2 cache controller"
help
Enable support for ARM PL310 L2 cache controller in U-Boot
config SPL_SYS_L2_PL310
bool "ARM PL310 L2 cache controller in SPL"
help
Enable support for ARM PL310 L2 cache controller in SPL
config SYS_L2CACHE_OFF config SYS_L2CACHE_OFF
bool "L2cache off" bool "L2cache off"
@ -599,9 +540,6 @@ config ARM64_SUPPORT_AARCH32
help help
This ARM64 system supports AArch32 execution state. This ARM64 system supports AArch32 execution state.
config S5P
def_bool y if ARCH_EXYNOS || ARCH_S5PC1XX
choice choice
prompt "Target select" prompt "Target select"
default TARGET_HIKEY default TARGET_HIKEY
@ -627,7 +565,6 @@ config ARCH_KIRKWOOD
select BOARD_EARLY_INIT_F select BOARD_EARLY_INIT_F
select CPU_ARM926EJS select CPU_ARM926EJS
select GPIO_EXTRA_HEADER select GPIO_EXTRA_HEADER
select TIMER
config ARCH_MVEBU config ARCH_MVEBU
bool "Marvell MVEBU family (Armada XP/375/38x/3700/7K/8K)" bool "Marvell MVEBU family (Armada XP/375/38x/3700/7K/8K)"
@ -639,8 +576,6 @@ config ARCH_MVEBU
select GPIO_EXTRA_HEADER select GPIO_EXTRA_HEADER
select SPL_DM_SPI if SPL select SPL_DM_SPI if SPL
select SPL_DM_SPI_FLASH if SPL select SPL_DM_SPI_FLASH if SPL
select SPL_TIMER if SPL
select TIMER
select OF_CONTROL select OF_CONTROL
select OF_SEPARATE select OF_SEPARATE
select SPI select SPI
@ -650,8 +585,6 @@ config ARCH_ORION5X
bool "Marvell Orion" bool "Marvell Orion"
select CPU_ARM926EJS select CPU_ARM926EJS
select GPIO_EXTRA_HEADER select GPIO_EXTRA_HEADER
select SPL_SEPARATE_BSS if SPL
select TIMER
config TARGET_STV0991 config TARGET_STV0991
bool "Support stv0991" bool "Support stv0991"
@ -678,6 +611,24 @@ config ARCH_BCM283X
imply CMD_DM imply CMD_DM
imply FAT_WRITE imply FAT_WRITE
config ARCH_BCM63158
bool "Broadcom BCM63158 family"
select DM
select OF_CONTROL
imply CMD_DM
config ARCH_BCM68360
bool "Broadcom BCM68360 family"
select DM
select OF_CONTROL
imply CMD_DM
config ARCH_BCM6858
bool "Broadcom BCM6858 family"
select DM
select OF_CONTROL
imply CMD_DM
config ARCH_BCMSTB config ARCH_BCMSTB
bool "Broadcom BCM7XXX family" bool "Broadcom BCM7XXX family"
select CPU_V7A select CPU_V7A
@ -690,12 +641,6 @@ config ARCH_BCMSTB
This enables support for Broadcom ARM-based set-top box This enables support for Broadcom ARM-based set-top box
chipsets, including the 7445 family of chips. chipsets, including the 7445 family of chips.
config ARCH_BCMBCA
bool "Broadcom broadband chip family"
select DM
select OF_CONTROL
imply CMD_DM
config TARGET_VEXPRESS_CA9X4 config TARGET_VEXPRESS_CA9X4
bool "Support vexpress_ca9x4" bool "Support vexpress_ca9x4"
select CPU_V7A select CPU_V7A
@ -799,6 +744,7 @@ config ARCH_KEYSTONE
select CMD_POWEROFF select CMD_POWEROFF
select CPU_V7A select CPU_V7A
select DDR_SPD select DDR_SPD
select GPIO_EXTRA_HEADER
select SUPPORT_SPL select SUPPORT_SPL
select SYS_ARCH_TIMER select SYS_ARCH_TIMER
select SYS_THUMB_BUILD select SYS_THUMB_BUILD
@ -821,8 +767,6 @@ config ARCH_OMAP2PLUS
select SUPPORT_SPL select SUPPORT_SPL
imply TI_SYSC if DM && OF_CONTROL imply TI_SYSC if DM && OF_CONTROL
imply FIT imply FIT
imply DM_EVENT
imply SPL_SEPARATE_BSS
config ARCH_MESON config ARCH_MESON
bool "Amlogic Meson" bool "Amlogic Meson"
@ -862,29 +806,24 @@ config ARCH_LPC32XX
config ARCH_IMX8 config ARCH_IMX8
bool "NXP i.MX8 platform" bool "NXP i.MX8 platform"
select ARM64 select ARM64
select SYS_FSL_HAS_SEC
select SYS_FSL_SEC_COMPAT_4
select SYS_FSL_SEC_LE
select DM select DM
select GPIO_EXTRA_HEADER select GPIO_EXTRA_HEADER
select MACH_IMX select MACH_IMX
select OF_CONTROL select OF_CONTROL
select ENABLE_ARM_SOC_BOOT0_HOOK select ENABLE_ARM_SOC_BOOT0_HOOK
imply DM_EVENT
config ARCH_IMX8M config ARCH_IMX8M
bool "NXP i.MX8M platform" bool "NXP i.MX8M platform"
select ARM64 select ARM64
select GPIO_EXTRA_HEADER select GPIO_EXTRA_HEADER
select MACH_IMX select MACH_IMX
select SYS_FSL_HAS_SEC select SYS_FSL_HAS_SEC if IMX_HAB
select SYS_FSL_SEC_COMPAT_4 select SYS_FSL_SEC_COMPAT_4
select SYS_FSL_SEC_LE select SYS_FSL_SEC_LE
select SYS_I2C_MXC select SYS_I2C_MXC
select DM select DM
select SUPPORT_SPL select SUPPORT_SPL
imply CMD_DM imply CMD_DM
imply DM_EVENT
config ARCH_IMX8ULP config ARCH_IMX8ULP
bool "NXP i.MX8ULP platform" bool "NXP i.MX8ULP platform"
@ -894,22 +833,7 @@ config ARCH_IMX8ULP
select OF_CONTROL select OF_CONTROL
select SUPPORT_SPL select SUPPORT_SPL
select GPIO_EXTRA_HEADER select GPIO_EXTRA_HEADER
select MISC
select IMX_SENTINEL
imply CMD_DM imply CMD_DM
imply DM_EVENT
config ARCH_IMX9
bool "NXP i.MX9 platform"
select ARM64
select DM
select MACH_IMX
select SUPPORT_SPL
select GPIO_EXTRA_HEADER
select MISC
select IMX_SENTINEL
imply CMD_DM
imply DM_EVENT
config ARCH_IMXRT config ARCH_IMXRT
bool "NXP i.MXRT platform" bool "NXP i.MXRT platform"
@ -945,11 +869,10 @@ config ARCH_MX31
config ARCH_MX7ULP config ARCH_MX7ULP
bool "NXP MX7ULP" bool "NXP MX7ULP"
select BOARD_POSTCLK_INIT
select CPU_V7A select CPU_V7A
select GPIO_EXTRA_HEADER select GPIO_EXTRA_HEADER
select MACH_IMX select MACH_IMX
select SYS_FSL_HAS_SEC select SYS_FSL_HAS_SEC if IMX_HAB
select SYS_FSL_SEC_COMPAT_4 select SYS_FSL_SEC_COMPAT_4
select SYS_FSL_SEC_LE select SYS_FSL_SEC_LE
select ROM_UNIFIED_SECTIONS select ROM_UNIFIED_SECTIONS
@ -962,7 +885,7 @@ config ARCH_MX7
select CPU_V7A select CPU_V7A
select GPIO_EXTRA_HEADER select GPIO_EXTRA_HEADER
select MACH_IMX select MACH_IMX
select SYS_FSL_HAS_SEC select SYS_FSL_HAS_SEC if IMX_HAB
select SYS_FSL_SEC_COMPAT_4 select SYS_FSL_SEC_COMPAT_4
select SYS_FSL_SEC_LE select SYS_FSL_SEC_LE
imply BOARD_EARLY_INIT_F imply BOARD_EARLY_INIT_F
@ -971,17 +894,19 @@ config ARCH_MX7
config ARCH_MX6 config ARCH_MX6
bool "Freescale MX6" bool "Freescale MX6"
select BOARD_POSTCLK_INIT
select CPU_V7A select CPU_V7A
select GPIO_EXTRA_HEADER select GPIO_EXTRA_HEADER
select MACH_IMX select MACH_IMX
select SYS_FSL_HAS_SEC select SYS_FSL_HAS_SEC
select SYS_FSL_SEC_COMPAT_4 select SYS_FSL_SEC_COMPAT_4
select SYS_FSL_SEC_LE select SYS_FSL_SEC_LE
select SYS_L2_PL310 if !SYS_L2CACHE_OFF
imply MXC_GPIO imply MXC_GPIO
imply SYS_THUMB_BUILD imply SYS_THUMB_BUILD
imply SPL_SEPARATE_BSS
if ARCH_MX6
config SPL_LDSCRIPT
default "arch/arm/mach-omap2/u-boot-spl.lds"
endif
config ARCH_MX5 config ARCH_MX5
bool "Freescale MX5" bool "Freescale MX5"
@ -997,15 +922,10 @@ config ARCH_NEXELL
select DM select DM
select GPIO_EXTRA_HEADER select GPIO_EXTRA_HEADER
config ARCH_NPCM
bool "Support Nuvoton SoCs"
select DM
select OF_CONTROL
imply CMD_DM
config ARCH_APPLE config ARCH_APPLE
bool "Apple SoCs" bool "Apple SoCs"
select ARM64 select ARM64
select BLK
select CLK select CLK
select CMD_USB select CMD_USB
select DM select DM
@ -1016,10 +936,9 @@ config ARCH_APPLE
select DM_SERIAL select DM_SERIAL
select DM_SPI select DM_SPI
select DM_USB select DM_USB
select VIDEO select DM_VIDEO
select IOMMU select IOMMU
select LINUX_KERNEL_IMAGE_HEADER select LINUX_KERNEL_IMAGE_HEADER
select OF_BOARD_SETUP
select OF_CONTROL select OF_CONTROL
select PINCTRL select PINCTRL
select POSITION_INDEPENDENT select POSITION_INDEPENDENT
@ -1102,6 +1021,7 @@ config ARCH_SOCFPGA
select SPL_DM_SERIAL select SPL_DM_SERIAL
select SPL_LIBCOMMON_SUPPORT select SPL_LIBCOMMON_SUPPORT
select SPL_LIBGENERIC_SUPPORT select SPL_LIBGENERIC_SUPPORT
select SPL_NAND_SUPPORT if SPL_NAND_DENALI
select SPL_OF_CONTROL select SPL_OF_CONTROL
select SPL_SEPARATE_BSS if TARGET_SOCFPGA_SOC64 select SPL_SEPARATE_BSS if TARGET_SOCFPGA_SOC64
select SPL_SERIAL select SPL_SERIAL
@ -1133,17 +1053,62 @@ config ARCH_SOCFPGA
config ARCH_SUNXI config ARCH_SUNXI
bool "Support sunxi (Allwinner) SoCs" bool "Support sunxi (Allwinner) SoCs"
select BOARD_SUNXI select BINMAN
select CMD_GPIO
select CMD_MMC if MMC
select CMD_USB if DISTRO_DEFAULTS && USB_HOST
select CLK
select DM
select DM_ETH
select DM_GPIO
select DM_I2C if I2C
select DM_KEYBOARD
select DM_MMC if MMC
select DM_SCSI if SCSI
select DM_SERIAL
select GPIO_EXTRA_HEADER select GPIO_EXTRA_HEADER
select OF_BOARD_SETUP
select OF_CONTROL select OF_CONTROL
select OF_SEPARATE select OF_SEPARATE
select SPECIFY_CONSOLE_INDEX if SERIAL select PINCTRL
select SPECIFY_CONSOLE_INDEX
select SPL_SEPARATE_BSS if SPL
select SPL_STACK_R if SPL select SPL_STACK_R if SPL
select SPL_SYS_MALLOC_SIMPLE if SPL select SPL_SYS_MALLOC_SIMPLE if SPL
select SPL_SYS_THUMB_BUILD if !ARM64 select SPL_SYS_THUMB_BUILD if !ARM64
select SUNXI_GPIO
select SYS_NS16550
select SYS_THUMB_BUILD if !ARM64 select SYS_THUMB_BUILD if !ARM64
select USB if DISTRO_DEFAULTS
select USB_KEYBOARD if DISTRO_DEFAULTS && USB_HOST
select USB_STORAGE if DISTRO_DEFAULTS && USB_HOST
select SPL_USE_TINY_PRINTF select SPL_USE_TINY_PRINTF
select USE_PREBOOT
select SYS_RELOC_GD_ENV_ADDR
imply BOARD_LATE_INIT
imply CMD_DM
imply CMD_GPT
imply CMD_UBI if MTD_RAW_NAND
imply DISTRO_DEFAULTS
imply FAT_WRITE
imply FIT
imply OF_LIBFDT_OVERLAY
imply PRE_CONSOLE_BUFFER
imply SPL_GPIO
imply SPL_LIBCOMMON_SUPPORT
imply SPL_LIBGENERIC_SUPPORT
imply SPL_LOAD_FIT imply SPL_LOAD_FIT
imply SPL_MMC if MMC
imply SPL_POWER
imply SPL_SERIAL
imply SYSRESET
imply SYSRESET_WATCHDOG
imply SYSRESET_WATCHDOG_AUTO
imply USB_EHCI_GENERIC
imply USB_ETHER if USB_MUSB_GADGET
imply USB_GADGET
imply USB_OHCI_GENERIC
imply WDT
config ARCH_U8500 config ARCH_U8500
bool "ST-Ericsson U8500 Series" bool "ST-Ericsson U8500 Series"
@ -1184,18 +1149,6 @@ config ARCH_VERSAL
imply BOARD_LATE_INIT imply BOARD_LATE_INIT
imply ENV_VARS_UBOOT_RUNTIME_CONFIG imply ENV_VARS_UBOOT_RUNTIME_CONFIG
config ARCH_VERSAL_NET
bool "Support Xilinx Keystone Platform"
select ARM64
select CLK
select DM
select DM_ETH if NET
select DM_MMC if MMC
select DM_SERIAL
select OF_CONTROL
imply BOARD_LATE_INIT
imply ENV_VARS_UBOOT_RUNTIME_CONFIG
config ARCH_VF610 config ARCH_VF610
bool "Freescale Vybrid" bool "Freescale Vybrid"
select CPU_V7A select CPU_V7A
@ -1207,7 +1160,6 @@ config ARCH_VF610
config ARCH_ZYNQ config ARCH_ZYNQ
bool "Xilinx Zynq based platform" bool "Xilinx Zynq based platform"
select ARM_TWD_TIMER
select CLK select CLK
select CLK_ZYNQ select CLK_ZYNQ
select CPU_V7A select CPU_V7A
@ -1227,9 +1179,7 @@ config ARCH_ZYNQ
select SPL_DM_SPI_FLASH if SPL select SPL_DM_SPI_FLASH if SPL
select SPL_OF_CONTROL if SPL select SPL_OF_CONTROL if SPL
select SPL_SEPARATE_BSS if SPL select SPL_SEPARATE_BSS if SPL
select SPL_TIMER if SPL
select SUPPORT_SPL select SUPPORT_SPL
select TIMER
imply ARCH_EARLY_INIT_R imply ARCH_EARLY_INIT_R
imply BOARD_LATE_INIT imply BOARD_LATE_INIT
imply CMD_CLK imply CMD_CLK
@ -1290,25 +1240,34 @@ config ARCH_TEGRA
imply DISTRO_DEFAULTS imply DISTRO_DEFAULTS
imply FAT_WRITE imply FAT_WRITE
config ARCH_VEXPRESS64 config TARGET_VEXPRESS64_AEMV8A
bool "Support ARMv8 Arm Ltd. VExpress based boards and models" bool "Support vexpress_aemv8a"
select ARM64 select ARM64
select DM select GPIO_EXTRA_HEADER
select DM_SERIAL
select PL01X_SERIAL select PL01X_SERIAL
config TARGET_VEXPRESS64_BASE_FVP
bool "Support Versatile Express ARMv8a FVP BASE model"
select ARM64
select GPIO_EXTRA_HEADER
select PL01X_SERIAL
select SEMIHOSTING
config TARGET_VEXPRESS64_JUNO
bool "Support Versatile Express Juno Development Platform"
select ARM64
select GPIO_EXTRA_HEADER
select PL01X_SERIAL
select DM
select OF_CONTROL select OF_CONTROL
select CLK select CLK
select DM_SERIAL
select ARM_PSCI_FW
select PSCI_RESET
select DM_ETH
select BLK select BLK
select MTD_NOR_FLASH if MTD select USB
select FLASH_CFI_DRIVER if MTD imply OF_HAS_PRIOR_STAGE
select ENV_IS_IN_FLASH if MTD
imply DISTRO_DEFAULTS
config TARGET_CORSTONE1000
bool "Support Corstone1000 Platform"
select ARM64
select PL01X_SERIAL
select DM
config TARGET_TOTAL_COMPUTE config TARGET_TOTAL_COMPUTE
bool "Support Total Compute Platform" bool "Support Total Compute Platform"
@ -1836,6 +1795,11 @@ config TARGET_TEN64
Support for Traverse Technologies Ten64 board, based Support for Traverse Technologies Ten64 board, based
on NXP LS1088A. on NXP LS1088A.
config TARGET_COLIBRI_PXA270
bool "Support colibri_pxa270"
select CPU_PXA27X
select GPIO_EXTRA_HEADER
config ARCH_UNIPHIER config ARCH_UNIPHIER
bool "Socionext UniPhier SoCs" bool "Socionext UniPhier SoCs"
select BOARD_LATE_INIT select BOARD_LATE_INIT
@ -1886,7 +1850,7 @@ config ARCH_STM32
imply CMD_DM imply CMD_DM
config ARCH_STI config ARCH_STI
bool "Support STMicroelectronics SoCs" bool "Support STMicrolectronics SoCs"
select BLK select BLK
select CPU_V7A select CPU_V7A
select DM select DM
@ -1914,6 +1878,7 @@ config ARCH_STM32MP
select OF_SYSTEM_SETUP select OF_SYSTEM_SETUP
select PINCTRL select PINCTRL
select REGMAP select REGMAP
select SUPPORT_SPL
select SYSCON select SYSCON
select SYSRESET select SYSRESET
select SYS_THUMB_BUILD select SYS_THUMB_BUILD
@ -1935,7 +1900,7 @@ config ARCH_STM32MP
config ARCH_ROCKCHIP config ARCH_ROCKCHIP
bool "Support Rockchip SoCs" bool "Support Rockchip SoCs"
select BLK select BLK
select BINMAN if SPL_OPTEE || SPL select BINMAN if SPL_OPTEE || (SPL && !ARM64)
select DM select DM
select DM_GPIO select DM_GPIO
select DM_I2C select DM_I2C
@ -2013,25 +1978,6 @@ config TARGET_DURIAN
Support for durian platform. Support for durian platform.
It has 2GB Sdram, uart and pcie. It has 2GB Sdram, uart and pcie.
config TARGET_POMELO
bool "Support Phytium Pomelo Platform"
select ARM64
select DM
select AHCI
select SCSI_AHCI
select AHCI_PCI
select BLK
select PCI
select DM_PCI
select SCSI
select DM_SCSI
select DM_SERIAL
select DM_ETH if NET
imply CMD_PCI
help
Support for pomelo platform.
It has 8GB Sdram, uart and pcie.
config TARGET_PRESIDIO_ASIC config TARGET_PRESIDIO_ASIC
bool "Support Cortina Presidio ASIC Platform" bool "Support Cortina Presidio ASIC Platform"
select ARM64 select ARM64
@ -2047,12 +1993,6 @@ config TARGET_XENGUEST_ARM64
select SSCANF select SSCANF
imply OF_HAS_PRIOR_STAGE imply OF_HAS_PRIOR_STAGE
config ARCH_GXP
bool "Support HPE GXP SoCs"
select DM
select OF_CONTROL
imply CMD_DM
endchoice endchoice
config SUPPORT_PASSING_ATAGS config SUPPORT_PASSING_ATAGS
@ -2087,7 +2027,6 @@ config SERIAL_TAG
config STATIC_MACH_TYPE config STATIC_MACH_TYPE
bool "Statically define the Machine ID number" bool "Statically define the Machine ID number"
default y if TARGET_DS109 || TARGET_NOKIA_RX51 || TARGET_DS414 || DEFAULT_DEVICE_TREE = "sun7i-a20-icnova-swac"
help help
When booting via ATAGs, enable this option if we know the correct When booting via ATAGs, enable this option if we know the correct
machine ID number to use at compile time. Some systems will be machine ID number to use at compile time. Some systems will be
@ -2096,10 +2035,6 @@ config STATIC_MACH_TYPE
config MACH_TYPE config MACH_TYPE
int "Machine ID number" int "Machine ID number"
depends on STATIC_MACH_TYPE depends on STATIC_MACH_TYPE
default 527 if TARGET_DS109
default 1955 if TARGET_NOKIA_RX51
default 3036 if TARGET_DS414
default 4283 if DEFAULT_DEVICE_TREE = "sun7i-a20-icnova-swac"
help help
When booting via ATAGs, the machine type must be passed as a number. When booting via ATAGs, the machine type must be passed as a number.
For the full list see https://www.arm.linux.org.uk/developer/machines For the full list see https://www.arm.linux.org.uk/developer/machines
@ -2129,6 +2064,21 @@ config TI_SECURE_DEVICE
authenticated) and the code. See the doc/README.ti-secure authenticated) and the code. See the doc/README.ti-secure
file for further details. file for further details.
if AM43XX || AM33XX || OMAP54XX || ARCH_KEYSTONE
config ISW_ENTRY_ADDR
hex "Address in memory or XIP address of bootloader entry point"
default 0x402F4000 if AM43XX
default 0x402F0400 if AM33XX
default 0x40301350 if OMAP54XX
help
After any reset, the boot ROM searches the boot media for a valid
boot image. For non-XIP devices, the ROM then copies the image into
internal memory. For all boot modes, after the ROM processes the
boot image it eventually computes the entry point address depending
on the device type (secure/non-secure), boot media (xip/non-xip) and
image headers.
endif
config SYS_KWD_CONFIG config SYS_KWD_CONFIG
string "kwbimage config file path" string "kwbimage config file path"
depends on ARCH_KIRKWOOD || ARCH_MVEBU depends on ARCH_KIRKWOOD || ARCH_MVEBU
@ -2145,16 +2095,12 @@ source "arch/arm/mach-at91/Kconfig"
source "arch/arm/mach-bcm283x/Kconfig" source "arch/arm/mach-bcm283x/Kconfig"
source "arch/arm/mach-bcmbca/Kconfig"
source "arch/arm/mach-bcmstb/Kconfig" source "arch/arm/mach-bcmstb/Kconfig"
source "arch/arm/mach-davinci/Kconfig" source "arch/arm/mach-davinci/Kconfig"
source "arch/arm/mach-exynos/Kconfig" source "arch/arm/mach-exynos/Kconfig"
source "arch/arm/mach-hpe/gxp/Kconfig"
source "arch/arm/mach-highbank/Kconfig" source "arch/arm/mach-highbank/Kconfig"
source "arch/arm/mach-integrator/Kconfig" source "arch/arm/mach-integrator/Kconfig"
@ -2193,8 +2139,6 @@ source "arch/arm/mach-imx/imx8m/Kconfig"
source "arch/arm/mach-imx/imx8ulp/Kconfig" source "arch/arm/mach-imx/imx8ulp/Kconfig"
source "arch/arm/mach-imx/imx9/Kconfig"
source "arch/arm/mach-imx/imxrt/Kconfig" source "arch/arm/mach-imx/imxrt/Kconfig"
source "arch/arm/mach-imx/mxs/Kconfig" source "arch/arm/mach-imx/mxs/Kconfig"
@ -2245,8 +2189,6 @@ source "arch/arm/mach-zynqmp/Kconfig"
source "arch/arm/mach-versal/Kconfig" source "arch/arm/mach-versal/Kconfig"
source "arch/arm/mach-versal-net/Kconfig"
source "arch/arm/mach-zynqmp-r5/Kconfig" source "arch/arm/mach-zynqmp-r5/Kconfig"
source "arch/arm/cpu/armv7/Kconfig" source "arch/arm/cpu/armv7/Kconfig"
@ -2257,10 +2199,8 @@ source "arch/arm/mach-imx/Kconfig"
source "arch/arm/mach-nexell/Kconfig" source "arch/arm/mach-nexell/Kconfig"
source "arch/arm/mach-npcm/Kconfig"
source "board/armltd/total_compute/Kconfig" source "board/armltd/total_compute/Kconfig"
source "board/armltd/corstone1000/Kconfig"
source "board/bosch/shc/Kconfig" source "board/bosch/shc/Kconfig"
source "board/bosch/guardian/Kconfig" source "board/bosch/guardian/Kconfig"
source "board/Marvell/octeontx/Kconfig" source "board/Marvell/octeontx/Kconfig"
@ -2268,6 +2208,9 @@ source "board/Marvell/octeontx2/Kconfig"
source "board/armltd/vexpress/Kconfig" source "board/armltd/vexpress/Kconfig"
source "board/armltd/vexpress64/Kconfig" source "board/armltd/vexpress64/Kconfig"
source "board/cortina/presidio-asic/Kconfig" source "board/cortina/presidio-asic/Kconfig"
source "board/broadcom/bcm963158/Kconfig"
source "board/broadcom/bcm968360bg/Kconfig"
source "board/broadcom/bcm968580xref/Kconfig"
source "board/broadcom/bcmns3/Kconfig" source "board/broadcom/bcmns3/Kconfig"
source "board/cavium/thunderx/Kconfig" source "board/cavium/thunderx/Kconfig"
source "board/eets/pdu001/Kconfig" source "board/eets/pdu001/Kconfig"
@ -2296,18 +2239,23 @@ source "board/hisilicon/poplar/Kconfig"
source "board/isee/igep003x/Kconfig" source "board/isee/igep003x/Kconfig"
source "board/kontron/sl28/Kconfig" source "board/kontron/sl28/Kconfig"
source "board/myir/mys_6ulx/Kconfig" source "board/myir/mys_6ulx/Kconfig"
source "board/siemens/common/Kconfig"
source "board/seeed/npi_imx6ull/Kconfig" source "board/seeed/npi_imx6ull/Kconfig"
source "board/socionext/developerbox/Kconfig" source "board/socionext/developerbox/Kconfig"
source "board/st/stv0991/Kconfig" source "board/st/stv0991/Kconfig"
source "board/tcl/sl50/Kconfig" source "board/tcl/sl50/Kconfig"
source "board/toradex/colibri_pxa270/Kconfig"
source "board/traverse/ten64/Kconfig" source "board/traverse/ten64/Kconfig"
source "board/variscite/dart_6ul/Kconfig" source "board/variscite/dart_6ul/Kconfig"
source "board/vscom/baltos/Kconfig" source "board/vscom/baltos/Kconfig"
source "board/phytium/durian/Kconfig" source "board/phytium/durian/Kconfig"
source "board/phytium/pomelo/Kconfig"
source "board/xen/xenguest_arm64/Kconfig" source "board/xen/xenguest_arm64/Kconfig"
source "board/keymile/Kconfig"
source "arch/arm/Kconfig.debug" source "arch/arm/Kconfig.debug"
endmenu endmenu
config SPL_LDSCRIPT
default "arch/arm/cpu/arm926ejs/mxs/u-boot-spl.lds" if (ARCH_MX23 || ARCH_MX28) && !SPL_FRAMEWORK
default "arch/arm/cpu/arm1136/u-boot-spl.lds" if CPU_ARM1136
default "arch/arm/cpu/armv8/u-boot-spl.lds" if ARM64

View File

@ -10,6 +10,8 @@ arch-$(CONFIG_CPU_ARM720T) =-march=armv4
arch-$(CONFIG_CPU_ARM920T) =-march=armv4t arch-$(CONFIG_CPU_ARM920T) =-march=armv4t
arch-$(CONFIG_CPU_ARM926EJS) =-march=armv5te arch-$(CONFIG_CPU_ARM926EJS) =-march=armv5te
arch-$(CONFIG_CPU_ARM946ES) =-march=armv5te arch-$(CONFIG_CPU_ARM946ES) =-march=armv5te
arch-$(CONFIG_CPU_SA1100) =-march=armv4
arch-$(CONFIG_CPU_PXA) =
arch-$(CONFIG_CPU_ARM1136) =-march=armv5t arch-$(CONFIG_CPU_ARM1136) =-march=armv5t
arch-$(CONFIG_CPU_ARM1176) =-march=armv5t arch-$(CONFIG_CPU_ARM1176) =-march=armv5t
arch-$(CONFIG_CPU_V7A) =$(call cc-option, -march=armv7-a, \ arch-$(CONFIG_CPU_V7A) =$(call cc-option, -march=armv7-a, \
@ -38,6 +40,8 @@ tune-$(CONFIG_CPU_ARM720T) =-mtune=arm7tdmi
tune-$(CONFIG_CPU_ARM920T) = tune-$(CONFIG_CPU_ARM920T) =
tune-$(CONFIG_CPU_ARM926EJS) = tune-$(CONFIG_CPU_ARM926EJS) =
tune-$(CONFIG_CPU_ARM946ES) = tune-$(CONFIG_CPU_ARM946ES) =
tune-$(CONFIG_CPU_SA1100) =-mtune=strongarm1100
tune-$(CONFIG_CPU_PXA) =-mcpu=xscale
tune-$(CONFIG_CPU_ARM1136) = tune-$(CONFIG_CPU_ARM1136) =
tune-$(CONFIG_CPU_ARM1176) = tune-$(CONFIG_CPU_ARM1176) =
tune-$(CONFIG_CPU_V7A) =-mtune=generic-armv7-a tune-$(CONFIG_CPU_V7A) =-mtune=generic-armv7-a
@ -55,11 +59,9 @@ machine-$(CONFIG_ARCH_APPLE) += apple
machine-$(CONFIG_ARCH_ASPEED) += aspeed machine-$(CONFIG_ARCH_ASPEED) += aspeed
machine-$(CONFIG_ARCH_AT91) += at91 machine-$(CONFIG_ARCH_AT91) += at91
machine-$(CONFIG_ARCH_BCM283X) += bcm283x machine-$(CONFIG_ARCH_BCM283X) += bcm283x
machine-$(CONFIG_ARCH_BCMBCA) += bcmbca
machine-$(CONFIG_ARCH_BCMSTB) += bcmstb machine-$(CONFIG_ARCH_BCMSTB) += bcmstb
machine-$(CONFIG_ARCH_DAVINCI) += davinci machine-$(CONFIG_ARCH_DAVINCI) += davinci
machine-$(CONFIG_ARCH_EXYNOS) += exynos machine-$(CONFIG_ARCH_EXYNOS) += exynos
machine-$(CONFIG_ARCH_GXP) += hpe
machine-$(CONFIG_ARCH_HIGHBANK) += highbank machine-$(CONFIG_ARCH_HIGHBANK) += highbank
machine-$(CONFIG_ARCH_IPQ40XX) += ipq40xx machine-$(CONFIG_ARCH_IPQ40XX) += ipq40xx
machine-$(CONFIG_ARCH_K3) += k3 machine-$(CONFIG_ARCH_K3) += k3
@ -70,7 +72,6 @@ machine-$(CONFIG_ARCH_MEDIATEK) += mediatek
machine-$(CONFIG_ARCH_MESON) += meson machine-$(CONFIG_ARCH_MESON) += meson
machine-$(CONFIG_ARCH_MVEBU) += mvebu machine-$(CONFIG_ARCH_MVEBU) += mvebu
machine-$(CONFIG_ARCH_NEXELL) += nexell machine-$(CONFIG_ARCH_NEXELL) += nexell
machine-$(CONFIG_ARCH_NPCM) += npcm
machine-$(CONFIG_ARCH_OMAP2PLUS) += omap2 machine-$(CONFIG_ARCH_OMAP2PLUS) += omap2
machine-$(CONFIG_ARCH_ORION5X) += orion5x machine-$(CONFIG_ARCH_ORION5X) += orion5x
machine-$(CONFIG_ARCH_OWL) += owl machine-$(CONFIG_ARCH_OWL) += owl
@ -88,13 +89,10 @@ machine-$(CONFIG_ARCH_OCTEONTX) += octeontx
machine-$(CONFIG_ARCH_OCTEONTX2) += octeontx2 machine-$(CONFIG_ARCH_OCTEONTX2) += octeontx2
machine-$(CONFIG_ARCH_UNIPHIER) += uniphier machine-$(CONFIG_ARCH_UNIPHIER) += uniphier
machine-$(CONFIG_ARCH_VERSAL) += versal machine-$(CONFIG_ARCH_VERSAL) += versal
machine-$(CONFIG_ARCH_VERSAL_NET) += versal-net
machine-$(CONFIG_ARCH_ZYNQ) += zynq machine-$(CONFIG_ARCH_ZYNQ) += zynq
machine-$(CONFIG_ARCH_ZYNQMP) += zynqmp machine-$(CONFIG_ARCH_ZYNQMP) += zynqmp
machine-$(CONFIG_ARCH_ZYNQMP_R5) += zynqmp-r5 machine-$(CONFIG_ARCH_ZYNQMP_R5) += zynqmp-r5
machine-$(CONFIG_MACH_IMX) += imx
machdirs := $(patsubst %,arch/arm/mach-%/,$(machine-y)) machdirs := $(patsubst %,arch/arm/mach-%/,$(machine-y))
PLATFORM_CPPFLAGS += $(patsubst %,-I$(srctree)/%include,$(machdirs)) PLATFORM_CPPFLAGS += $(patsubst %,-I$(srctree)/%include,$(machdirs))
@ -104,8 +102,8 @@ libs-y += $(machdirs)
head-y := arch/arm/cpu/$(CPU)/start.o head-y := arch/arm/cpu/$(CPU)/start.o
ifeq ($(CONFIG_SPL_BUILD),y) ifeq ($(CONFIG_SPL_BUILD),y)
ifeq ($(CONFIG_SYS_SOC)$(CONFIG_SPL_FRAMEWORK),"mxs") ifneq ($(CONFIG_SPL_START_S_PATH),)
head-y := arch/arm/cpu/arm926ejs/mxs/start.o head-y := $(CONFIG_SPL_START_S_PATH:"%"=%)/start.o
endif endif
endif endif
@ -113,6 +111,16 @@ libs-y += arch/arm/cpu/$(CPU)/
libs-y += arch/arm/cpu/ libs-y += arch/arm/cpu/
libs-y += arch/arm/lib/ libs-y += arch/arm/lib/
ifeq ($(CONFIG_SPL_BUILD),y)
ifneq (,$(CONFIG_MX23)$(CONFIG_MX28)$(filter $(SOC), mx25 mx5 mx6 mx7 mx35 imx8m imx8 imx8ulp imxrt))
libs-y += arch/arm/mach-imx/
endif
else
ifneq (,$(filter $(SOC), mx25 mx27 mx5 mx6 mx7 mx7ulp mx31 mx35 mxs imx8m imx8 imx8ulp imxrt vf610))
libs-y += arch/arm/mach-imx/
endif
endif
ifneq (,$(filter $(SOC), kirkwood)) ifneq (,$(filter $(SOC), kirkwood))
libs-y += arch/arm/mach-mvebu/ libs-y += arch/arm/mach-mvebu/
endif endif

View File

@ -15,11 +15,11 @@ CFLAGS_NON_EFI := -fno-pic -ffixed-r9 -ffunction-sections -fdata-sections \
-fstack-protector-strong -fstack-protector-strong
CFLAGS_EFI := -fpic -fshort-wchar CFLAGS_EFI := -fpic -fshort-wchar
ifneq ($(LTO_ENABLE)$(CONFIG_USE_PRIVATE_LIBGCC),yy) ifneq ($(CONFIG_LTO)$(CONFIG_USE_PRIVATE_LIBGCC),yy)
LDFLAGS_FINAL += --gc-sections LDFLAGS_FINAL += --gc-sections
endif endif
ifneq ($(LTO_ENABLE),y) ifndef CONFIG_LTO
PLATFORM_RELFLAGS += -ffunction-sections -fdata-sections PLATFORM_RELFLAGS += -ffunction-sections -fdata-sections
endif endif
@ -141,11 +141,11 @@ endif
# limit ourselves to the sections we want in the .bin. # limit ourselves to the sections we want in the .bin.
ifdef CONFIG_ARM64 ifdef CONFIG_ARM64
OBJCOPYFLAGS += -j .text -j .secure_text -j .secure_data -j .rodata -j .data \ OBJCOPYFLAGS += -j .text -j .secure_text -j .secure_data -j .rodata -j .data \
-j __u_boot_list -j .rela.dyn -j .got -j .got.plt \ -j .u_boot_list -j .rela.dyn -j .got -j .got.plt \
-j .binman_sym_table -j .text_rest -j .binman_sym_table -j .text_rest
else else
OBJCOPYFLAGS += -j .text -j .secure_text -j .secure_data -j .rodata -j .hash \ OBJCOPYFLAGS += -j .text -j .secure_text -j .secure_data -j .rodata -j .hash \
-j .data -j .got -j .got.plt -j __u_boot_list -j .rel.dyn \ -j .data -j .got -j .got.plt -j .u_boot_list -j .rel.dyn \
-j .binman_sym_table -j .text_rest -j .binman_sym_table -j .text_rest
endif endif

View File

@ -88,7 +88,7 @@ cpu_init_crit:
/* Prepare to disable the MMU */ /* Prepare to disable the MMU */
adr r2, mmu_disable_phys adr r2, mmu_disable_phys
sub r2, r2, #(CONFIG_SYS_PHY_UBOOT_BASE - CONFIG_TEXT_BASE) sub r2, r2, #(CONFIG_SYS_PHY_UBOOT_BASE - CONFIG_SYS_TEXT_BASE)
b mmu_disable b mmu_disable
.align 5 .align 5

View File

@ -7,6 +7,7 @@ extra-y = start.o
obj-y += cpu.o obj-y += cpu.o
obj-$(CONFIG_EP93XX) += ep93xx/
obj-$(CONFIG_IMX) += imx/ obj-$(CONFIG_IMX) += imx/
# some files can only build in ARM mode # some files can only build in ARM mode

View File

@ -0,0 +1,19 @@
# SPDX-License-Identifier: GPL-2.0+
#
# Cirrus Logic EP93xx CPU-specific Makefile
#
# Copyright (C) 2009 Matthias Kaehlcke <matthias@kaehlcke.net>
#
# Copyright (C) 2004, 2005
# Cory T. Tusar, Videon Central, Inc., <ctusar@videon-central.com>
#
# Copyright (C) 2006
# Dominic Rath <Dominic.Rath@gmx.de>
#
# Based on an original Makefile, which is
#
# (C) Copyright 2000, 2001, 2002
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
obj-y = cpu.o led.o speed.o timer.o
obj-y += lowlevel_init.o

View File

@ -0,0 +1,37 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* Cirrus Logic EP93xx CPU-specific support.
*
* Copyright (C) 2009 Matthias Kaehlcke <matthias@kaehlcke.net>
*
* Copyright (C) 2004, 2005
* Cory T. Tusar, Videon Central, Inc., <ctusar@videon-central.com>
*/
#include <common.h>
#include <cpu_func.h>
#include <asm/arch/ep93xx.h>
#include <asm/io.h>
/* We reset the CPU by generating a 1-->0 transition on DeviceCfg bit 31. */
extern void reset_cpu(void)
{
struct syscon_regs *syscon = (struct syscon_regs *)SYSCON_BASE;
uint32_t value;
/* Unlock DeviceCfg and set SWRST */
writel(0xAA, &syscon->sysswlock);
value = readl(&syscon->devicecfg);
value |= SYSCON_DEVICECFG_SWRST;
writel(value, &syscon->devicecfg);
/* Unlock DeviceCfg and clear SWRST */
writel(0xAA, &syscon->sysswlock);
value = readl(&syscon->devicecfg);
value &= ~SYSCON_DEVICECFG_SWRST;
writel(value, &syscon->devicecfg);
/* Dying... */
while (1)
; /* noop */
}

View File

@ -0,0 +1,85 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* Copyright (C) 2010, 2009 Matthias Kaehlcke <matthias@kaehlcke.net>
*/
#include <asm/io.h>
#include <asm/arch/ep93xx.h>
#include <config.h>
#include <status_led.h>
static uint8_t saved_state[2] = {CONFIG_LED_STATUS_OFF, CONFIG_LED_STATUS_OFF};
static uint32_t gpio_pin[2] = {1 << CONFIG_LED_STATUS_GREEN,
1 << CONFIG_LED_STATUS_RED};
static inline void switch_LED_on(uint8_t led)
{
register struct gpio_regs *gpio = (struct gpio_regs *)GPIO_BASE;
writel(readl(&gpio->pedr) | gpio_pin[led], &gpio->pedr);
saved_state[led] = CONFIG_LED_STATUS_ON;
}
static inline void switch_LED_off(uint8_t led)
{
register struct gpio_regs *gpio = (struct gpio_regs *)GPIO_BASE;
writel(readl(&gpio->pedr) & ~gpio_pin[led], &gpio->pedr);
saved_state[led] = CONFIG_LED_STATUS_OFF;
}
void red_led_on(void)
{
switch_LED_on(CONFIG_LED_STATUS_RED);
}
void red_led_off(void)
{
switch_LED_off(CONFIG_LED_STATUS_RED);
}
void green_led_on(void)
{
switch_LED_on(CONFIG_LED_STATUS_GREEN);
}
void green_led_off(void)
{
switch_LED_off(CONFIG_LED_STATUS_GREEN);
}
void __led_init(led_id_t mask, int state)
{
__led_set(mask, state);
}
void __led_toggle(led_id_t mask)
{
if (CONFIG_LED_STATUS_RED == mask) {
if (CONFIG_LED_STATUS_ON == saved_state[CONFIG_LED_STATUS_RED])
red_led_off();
else
red_led_on();
} else if (CONFIG_LED_STATUS_GREEN == mask) {
if (CONFIG_LED_STATUS_ON ==
saved_state[CONFIG_LED_STATUS_GREEN])
green_led_off();
else
green_led_on();
}
}
void __led_set(led_id_t mask, int state)
{
if (CONFIG_LED_STATUS_RED == mask) {
if (CONFIG_LED_STATUS_ON == state)
red_led_on();
else
red_led_off();
} else if (CONFIG_LED_STATUS_GREEN == mask) {
if (CONFIG_LED_STATUS_ON == state)
green_led_on();
else
green_led_off();
}
}

View File

@ -0,0 +1,457 @@
/* SPDX-License-Identifier: GPL-2.0+ */
/*
* Low-level initialization for EP93xx
*
* Copyright (C) 2009 Matthias Kaehlcke <matthias@kaehlcke.net>
* Copyright (C) 2013
* Sergey Kostanabev <sergey.kostanbaev <at> fairwaves.ru>
*
* Copyright (C) 2006 Dominic Rath <Dominic.Rath@gmx.de>
* Copyright (C) 2006 Cirrus Logic Inc.
*
* See file CREDITS for list of people who contributed to this
* project.
*/
#include <config.h>
#include <asm/arch-ep93xx/ep93xx.h>
/*
/* Configure the SDRAM based on the supplied settings.
*
* Input: r0 - SDRAM DEVCFG register
* r2 - configuration for SDRAM chips
* Output: none
* Modifies: r3, r4
*/
ep93xx_sdram_config:
/* Program the SDRAM device configuration register. */
ldr r3, =SDRAM_BASE
#ifdef CONFIG_EDB93XX_SDCS0
str r0, [r3, #SDRAM_OFF_DEVCFG0]
#endif
#ifdef CONFIG_EDB93XX_SDCS1
str r0, [r3, #SDRAM_OFF_DEVCFG1]
#endif
#ifdef CONFIG_EDB93XX_SDCS2
str r0, [r3, #SDRAM_OFF_DEVCFG2]
#endif
#ifdef CONFIG_EDB93XX_SDCS3
str r0, [r3, #SDRAM_OFF_DEVCFG3]
#endif
/* Set the Initialize and MRS bits (issue continuous NOP commands
* (INIT & MRS set))
*/
ldr r4, =(EP93XX_SDRAMCTRL_GLOBALCFG_INIT | \
EP93XX_SDRAMCTRL_GLOBALCFG_MRS | \
EP93XX_SDRAMCTRL_GLOBALCFG_CKE)
str r4, [r3, #SDRAM_OFF_GLCONFIG]
/* Delay for 200us. */
mov r4, #0x3000
delay1:
subs r4, r4, #1
bne delay1
/* Clear the MRS bit to issue a precharge all. */
ldr r4, =(EP93XX_SDRAMCTRL_GLOBALCFG_INIT | \
EP93XX_SDRAMCTRL_GLOBALCFG_CKE)
str r4, [r3, #SDRAM_OFF_GLCONFIG]
/* Temporarily set the refresh timer to 0x10. Make it really low so
* that refresh cycles are generated.
*/
ldr r4, =0x10
str r4, [r3, #SDRAM_OFF_REFRSHTIMR]
/* Delay for at least 80 SDRAM clock cycles. */
mov r4, #80
delay2:
subs r4, r4, #1
bne delay2
/* Set the refresh timer to the fastest required for any device
* that might be used. Set 9.6 ms refresh time.
*/
ldr r4, =0x01e0
str r4, [r3, #SDRAM_OFF_REFRSHTIMR]
/* Select mode register update mode. */
ldr r4, =(EP93XX_SDRAMCTRL_GLOBALCFG_CKE | \
EP93XX_SDRAMCTRL_GLOBALCFG_MRS)
str r4, [r3, #SDRAM_OFF_GLCONFIG]
/* Program the mode register on the SDRAM by performing fake read */
ldr r4, [r2]
/* Select normal operating mode. */
ldr r4, =EP93XX_SDRAMCTRL_GLOBALCFG_CKE
str r4, [r3, #SDRAM_OFF_GLCONFIG]
/* Return to the caller. */
mov pc, lr
/*
* Test to see if the SDRAM has been configured in a usable mode.
*
* Input: r0 - Test address of SDRAM
* Output: r0 - 0 -- Test OK, -1 -- Failed
* Modifies: r0-r5
*/
ep93xx_sdram_test:
/* Load the test patterns to be written to SDRAM. */
ldr r1, =0xf00dface
ldr r2, =0xdeadbeef
ldr r3, =0x08675309
ldr r4, =0xdeafc0ed
/* Store the test patterns to SDRAM. */
stmia r0, {r1-r4}
/* Load the test patterns from SDRAM one at a time and compare them
* to the actual pattern.
*/
ldr r5, [r0]
cmp r5, r1
ldreq r5, [r0, #0x0004]
cmpeq r5, r2
ldreq r5, [r0, #0x0008]
cmpeq r5, r3
ldreq r5, [r0, #0x000c]
cmpeq r5, r4
/* Return -1 if a mismatch was encountered, 0 otherwise. */
mvnne r0, #0xffffffff
moveq r0, #0x00000000
/* Return to the caller. */
mov pc, lr
/*
* Determine the size of the SDRAM. Use data=address for the scan.
*
* Input: r0 - Start SDRAM address
* Return: r0 - Single block size
* r1 - Valid block mask
* r2 - Total block count
* Modifies: r0-r5
*/
ep93xx_sdram_size:
/* Store zero at offset zero. */
str r0, [r0]
/* Start checking for an alias at 1MB into SDRAM. */
ldr r1, =0x00100000
/* Store the offset at the current offset. */
check_block_size:
str r1, [r0, r1]
/* Read back from zero. */
ldr r2, [r0]
/* Stop searching of an alias was found. */
cmp r1, r2
beq found_block_size
/* Advance to the next power of two boundary. */
mov r1, r1, lsl #1
/* Loop back if the size has not reached 256MB. */
cmp r1, #0x10000000
bne check_block_size
/* A full 256MB of memory was found, so return it now. */
ldr r0, =0x10000000
ldr r1, =0x00000000
ldr r2, =0x00000001
mov pc, lr
/* An alias was found. See if the first block is 128MB in size. */
found_block_size:
cmp r1, #0x08000000
/* The first block is 128MB, so there is no further memory. Return it
* now.
*/
ldreq r0, =0x08000000
ldreq r1, =0x00000000
ldreq r2, =0x00000001
moveq pc, lr
/* Save the block size, set the block address bits to zero, and
* initialize the block count to one.
*/
mov r3, r1
ldr r4, =0x00000000
ldr r5, =0x00000001
/* Look for additional blocks of memory by searching for non-aliases. */
find_blocks:
/* Store zero back to address zero. It may be overwritten. */
str r0, [r0]
/* Advance to the next power of two boundary. */
mov r1, r1, lsl #1
/* Store the offset at the current offset. */
str r1, [r0, r1]
/* Read back from zero. */
ldr r2, [r0]
/* See if a non-alias was found. */
cmp r1, r2
/* If a non-alias was found, then or in the block address bit and
* multiply the block count by two (since there are two unique
* blocks, one with this bit zero and one with it one).
*/
orrne r4, r4, r1
movne r5, r5, lsl #1
/* Continue searching if there are more address bits to check. */
cmp r1, #0x08000000
bne find_blocks
/* Return the block size, address mask, and count. */
mov r0, r3
mov r1, r4
mov r2, r5
/* Return to the caller. */
mov pc, lr
.globl lowlevel_init
lowlevel_init:
mov r6, lr
/* Make sure caches are off and invalidated. */
ldr r0, =0x00000000
mcr p15, 0, r0, c1, c0, 0
nop
nop
nop
nop
nop
/* Turn off the green LED and turn on the red LED. If the red LED
* is left on for too long, the external reset circuit described
* by application note AN258 will cause the system to reset.
*/
ldr r1, =EP93XX_LED_DATA
ldr r0, [r1]
bic r0, r0, #EP93XX_LED_GREEN_ON
orr r0, r0, #EP93XX_LED_RED_ON
str r0, [r1]
/* Undo the silly static memory controller programming performed
* by the boot rom.
*/
ldr r0, =SMC_BASE
/* Set WST1 and WST2 to 31 HCLK cycles (slowest access) */
ldr r1, =0x0000fbe0
/* Reset EP93XX_OFF_SMCBCR0 */
ldr r2, [r0]
orr r2, r2, r1
str r2, [r0]
ldr r2, [r0, #EP93XX_OFF_SMCBCR1]
orr r2, r2, r1
str r2, [r0, #EP93XX_OFF_SMCBCR1]
ldr r2, [r0, #EP93XX_OFF_SMCBCR2]
orr r2, r2, r1
str r2, [r0, #EP93XX_OFF_SMCBCR2]
ldr r2, [r0, #EP93XX_OFF_SMCBCR3]
orr r2, r2, r1
str r2, [r0, #EP93XX_OFF_SMCBCR3]
ldr r2, [r0, #EP93XX_OFF_SMCBCR6]
orr r2, r2, r1
str r2, [r0, #EP93XX_OFF_SMCBCR6]
ldr r2, [r0, #EP93XX_OFF_SMCBCR7]
orr r2, r2, r1
str r2, [r0, #EP93XX_OFF_SMCBCR7]
/* Set the PLL1 and processor clock. */
ldr r0, =SYSCON_BASE
#ifdef CONFIG_EDB9301
/* 332MHz, giving a 166MHz processor clock. */
ldr r1, = 0x02b49907
#else
#ifdef CONFIG_EDB93XX_INDUSTRIAL
/* 384MHz, giving a 196MHz processor clock. */
ldr r1, =0x02a4bb38
#else
/* 400MHz, giving a 200MHz processor clock. */
ldr r1, =0x02a4e39e
#endif
#endif
str r1, [r0, #SYSCON_OFF_CLKSET1]
nop
nop
nop
nop
nop
/* Need to make sure that SDRAM is configured correctly before
* coping the code into it.
*/
#ifdef CONFIG_EDB93XX_SDCS0
mov r11, #SDRAM_DEVCFG0_BASE
#endif
#ifdef CONFIG_EDB93XX_SDCS1
mov r11, #SDRAM_DEVCFG1_BASE
#endif
#ifdef CONFIG_EDB93XX_SDCS2
mov r11, #SDRAM_DEVCFG2_BASE
#endif
#ifdef CONFIG_EDB93XX_SDCS3
ldr r0, =SYSCON_BASE
ldr r0, [r0, #SYSCON_OFF_SYSCFG]
ands r0, r0, #SYSCON_SYSCFG_LASDO
moveq r11, #SDRAM_DEVCFG3_ASD0_BASE
movne r11, #SDRAM_DEVCFG3_ASD1_BASE
#endif
/* See Table 13-5 in EP93xx datasheet for more info about DRAM
* register mapping */
/* Try a 32-bit wide configuration of SDRAM. */
ldr r0, =(EP93XX_SDRAMCTRL_DEVCFG_BANKCOUNT | \
EP93XX_SDRAMCTRL_DEVCFG_SROMLL | \
EP93XX_SDRAMCTRL_DEVCFG_CASLAT_2 | \
EP93XX_SDRAMCTRL_DEVCFG_RASTOCAS_2)
/* Set burst count: 4 and CAS: 2
* Burst mode [A11:A10]; CAS [A16:A14]
*/
orr r2, r11, #0x00008800
bl ep93xx_sdram_config
/* Test the SDRAM. */
mov r0, r11
bl ep93xx_sdram_test
cmp r0, #0x00000000
beq ep93xx_sdram_done
/* Try a 16-bit wide configuration of SDRAM. */
ldr r0, =(EP93XX_SDRAMCTRL_DEVCFG_BANKCOUNT | \
EP93XX_SDRAMCTRL_DEVCFG_SROMLL | \
EP93XX_SDRAMCTRL_DEVCFG_CASLAT_2 | \
EP93XX_SDRAMCTRL_DEVCFG_RASTOCAS_2 | \
EP93XX_SDRAMCTRL_DEVCFG_EXTBUSWIDTH)
/* Set burst count: 8, CAS: 2, sequential burst
* Accoring to Table 13-3 for 16bit operations mapping must be shifted.
* Burst mode [A10:A9]; CAS [A15:A13]
*/
orr r2, r11, #0x00004600
bl ep93xx_sdram_config
/* Test the SDRAM. */
mov r0, r11
bl ep93xx_sdram_test
cmp r0, #0x00000000
beq ep93xx_sdram_done
/* Turn off the red LED. */
ldr r0, =EP93XX_LED_DATA
ldr r1, [r0]
bic r1, r1, #EP93XX_LED_RED_ON
str r1, [r0]
/* There is no SDRAM so flash the green LED. */
flash_green:
orr r1, r1, #EP93XX_LED_GREEN_ON
str r1, [r0]
ldr r2, =0x00010000
flash_green_delay_1:
subs r2, r2, #1
bne flash_green_delay_1
bic r1, r1, #EP93XX_LED_GREEN_ON
str r1, [r0]
ldr r2, =0x00010000
flash_green_delay_2:
subs r2, r2, #1
bne flash_green_delay_2
orr r1, r1, #EP93XX_LED_GREEN_ON
str r1, [r0]
ldr r2, =0x00010000
flash_green_delay_3:
subs r2, r2, #1
bne flash_green_delay_3
bic r1, r1, #EP93XX_LED_GREEN_ON
str r1, [r0]
ldr r2, =0x00050000
flash_green_delay_4:
subs r2, r2, #1
bne flash_green_delay_4
b flash_green
ep93xx_sdram_done:
ldr r1, =EP93XX_LED_DATA
ldr r0, [r1]
bic r0, r0, #EP93XX_LED_RED_ON
str r0, [r1]
/* Determine the size of the SDRAM. */
mov r0, r11
bl ep93xx_sdram_size
/* Save the SDRAM characteristics. */
mov r8, r0
mov r9, r1
mov r10, r2
/* Compute total memory size into r1 */
mul r1, r8, r10
#ifdef CONFIG_EDB93XX_SDCS0
ldr r2, [r0, #SDRAM_OFF_DEVCFG0]
#endif
#ifdef CONFIG_EDB93XX_SDCS1
ldr r2, [r0, #SDRAM_OFF_DEVCFG1]
#endif
#ifdef CONFIG_EDB93XX_SDCS2
ldr r2, [r0, #SDRAM_OFF_DEVCFG2]
#endif
#ifdef CONFIG_EDB93XX_SDCS3
ldr r2, [r0, #SDRAM_OFF_DEVCFG3]
#endif
/* Consider small DRAM size as:
* < 32Mb for 32bit bus
* < 64Mb for 16bit bus
*/
tst r2, #EP93XX_SDRAMCTRL_DEVCFG_EXTBUSWIDTH
moveq r1, r1, lsr #1
cmp r1, #0x02000000
#if defined(CONFIG_EDB9301)
/* Set refresh counter to 20ms for small DRAM size, otherwise 9.6ms */
movlt r1, #0x03f0
movge r1, #0x01e0
#else
/* Set refresh counter to 30.7ms for small DRAM size, otherwise 15ms */
movlt r1, #0x0600
movge r1, #0x2f0
#endif
str r1, [r0, #SDRAM_OFF_REFRSHTIMR]
/* Save the memory configuration information. */
orr r0, r11, #UBOOT_MEMORYCNF_BANK_SIZE
stmia r0, {r8-r11}
mov lr, r6
mov pc, lr

View File

@ -0,0 +1,96 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* Cirrus Logic EP93xx PLL support.
*
* Copyright (C) 2009 Matthias Kaehlcke <matthias@kaehlcke.net>
*/
#include <common.h>
#include <clock_legacy.h>
#include <asm/arch/ep93xx.h>
#include <asm/io.h>
#include <div64.h>
/*
* get_board_sys_clk() should be defined as the input frequency of the PLL.
*
* get_FCLK(), get_HCLK(), get_PCLK() and get_UCLK() return the clock of
* the specified bus in HZ.
*/
/*
* return the PLL output frequency
*
* PLL rate = get_board_sys_clk() * (X1FBD + 1) * (X2FBD + 1)
* / (X2IPD + 1) / 2^PS
*/
static ulong get_PLLCLK(uint32_t *pllreg)
{
uint8_t i;
const uint32_t clkset = readl(pllreg);
uint64_t rate = get_board_sys_clk();
rate *= ((clkset >> SYSCON_CLKSET_PLL_X1FBD1_SHIFT) & 0x1f) + 1;
rate *= ((clkset >> SYSCON_CLKSET_PLL_X2FBD2_SHIFT) & 0x3f) + 1;
do_div(rate, (clkset & 0x1f) + 1); /* X2IPD */
for (i = 0; i < ((clkset >> SYSCON_CLKSET_PLL_PS_SHIFT) & 3); i++)
rate >>= 1;
return (ulong)rate;
}
/* return FCLK frequency */
ulong get_FCLK(void)
{
const uint8_t fclk_divisors[] = { 1, 2, 4, 8, 16, 1, 1, 1 };
struct syscon_regs *syscon = (struct syscon_regs *)SYSCON_BASE;
const uint32_t clkset1 = readl(&syscon->clkset1);
const uint8_t fclk_div =
fclk_divisors[(clkset1 >> SYSCON_CLKSET1_FCLK_DIV_SHIFT) & 7];
const ulong fclk_rate = get_PLLCLK(&syscon->clkset1) / fclk_div;
return fclk_rate;
}
/* return HCLK frequency */
ulong get_HCLK(void)
{
const uint8_t hclk_divisors[] = { 1, 2, 4, 5, 6, 8, 16, 32 };
struct syscon_regs *syscon = (struct syscon_regs *)SYSCON_BASE;
const uint32_t clkset1 = readl(&syscon->clkset1);
const uint8_t hclk_div =
hclk_divisors[(clkset1 >> SYSCON_CLKSET1_HCLK_DIV_SHIFT) & 7];
const ulong hclk_rate = get_PLLCLK(&syscon->clkset1) / hclk_div;
return hclk_rate;
}
/* return PCLK frequency */
ulong get_PCLK(void)
{
const uint8_t pclk_divisors[] = { 1, 2, 4, 8 };
struct syscon_regs *syscon = (struct syscon_regs *)SYSCON_BASE;
const uint32_t clkset1 = readl(&syscon->clkset1);
const uint8_t pclk_div =
pclk_divisors[(clkset1 >> SYSCON_CLKSET1_PCLK_DIV_SHIFT) & 3];
const ulong pclk_rate = get_HCLK() / pclk_div;
return pclk_rate;
}
/* return UCLK frequency */
ulong get_UCLK(void)
{
struct syscon_regs *syscon = (struct syscon_regs *)SYSCON_BASE;
ulong uclk_rate;
const uint32_t value = readl(&syscon->pwrcnt);
if (value & SYSCON_PWRCNT_UART_BAUD)
uclk_rate = get_board_sys_clk();
else
uclk_rate = get_board_sys_clk() / 2;
return uclk_rate;
}

View File

@ -0,0 +1,117 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* Cirrus Logic EP93xx timer support.
*
* Copyright (C) 2009, 2010 Matthias Kaehlcke <matthias@kaehlcke.net>
*
* Copyright (C) 2004, 2005
* Cory T. Tusar, Videon Central, Inc., <ctusar@videon-central.com>
*
* Based on the original intr.c Cirrus Logic EP93xx Rev D. interrupt support,
* author unknown.
*/
#include <common.h>
#include <init.h>
#include <time.h>
#include <linux/delay.h>
#include <linux/types.h>
#include <asm/arch/ep93xx.h>
#include <asm/io.h>
#include <div64.h>
#define TIMER_CLKSEL (1 << 3)
#define TIMER_ENABLE (1 << 7)
#define TIMER_FREQ 508469 /* ticks / second */
#define TIMER_MAX_VAL 0xFFFFFFFF
static struct ep93xx_timer
{
unsigned long long ticks;
unsigned long last_read;
} timer;
static inline unsigned long long usecs_to_ticks(unsigned long usecs)
{
unsigned long long ticks = (unsigned long long)usecs * TIMER_FREQ;
do_div(ticks, 1000 * 1000);
return ticks;
}
static inline void read_timer(void)
{
struct timer_regs *timer_regs = (struct timer_regs *)TIMER_BASE;
const unsigned long now = TIMER_MAX_VAL - readl(&timer_regs->timer3.value);
if (now >= timer.last_read)
timer.ticks += now - timer.last_read;
else
/* an overflow occurred */
timer.ticks += TIMER_MAX_VAL - timer.last_read + now;
timer.last_read = now;
}
/*
* Get the number of ticks (in CONFIG_SYS_HZ resolution)
*/
unsigned long long get_ticks(void)
{
unsigned long long sys_ticks;
read_timer();
sys_ticks = timer.ticks * CONFIG_SYS_HZ;
do_div(sys_ticks, TIMER_FREQ);
return sys_ticks;
}
unsigned long get_timer(unsigned long base)
{
return get_ticks() - base;
}
void __udelay(unsigned long usec)
{
unsigned long long target;
read_timer();
target = timer.ticks + usecs_to_ticks(usec);
while (timer.ticks < target)
read_timer();
}
int timer_init(void)
{
struct timer_regs *timer_regs = (struct timer_regs *)TIMER_BASE;
/* use timer 3 with 508KHz and free running, not enabled now */
writel(TIMER_CLKSEL, &timer_regs->timer3.control);
/* set initial timer value */
writel(TIMER_MAX_VAL, &timer_regs->timer3.load);
/* Enable the timer */
writel(TIMER_ENABLE | TIMER_CLKSEL,
&timer_regs->timer3.control);
/* Reset the timer */
read_timer();
timer.ticks = 0;
return 0;
}
/*
* This function is derived from PowerPC code (timebase clock frequency).
* On ARM it returns the number of timer ticks per second.
*/
unsigned long get_tbclk(void)
{
return CONFIG_SYS_HZ;
}

View File

@ -60,14 +60,14 @@ spl/u-boot-spl.ivt: spl/u-boot-spl.bin
u-boot.ivt: u-boot.bin u-boot.ivt: u-boot.bin
$(call if_changed,mkalign_mxs) $(call if_changed,mkalign_mxs)
$(call if_changed,mkivt_mxs,$(CONFIG_TEXT_BASE),\ $(call if_changed,mkivt_mxs,$(CONFIG_SYS_TEXT_BASE),\
0x40001000,0x40001040) 0x40001000,0x40001040)
spl/u-boot-spl.csf: spl/u-boot-spl.ivt spl/u-boot-spl.bin board/$(VENDOR)/$(BOARD)/sign/u-boot-spl.csf spl/u-boot-spl.csf: spl/u-boot-spl.ivt spl/u-boot-spl.bin board/$(VENDOR)/$(BOARD)/sign/u-boot-spl.csf
$(call if_changed,mkcsfreq_mxs,$(CONFIG_SPL_TEXT_BASE),0x8000) $(call if_changed,mkcsfreq_mxs,$(CONFIG_SPL_TEXT_BASE),0x8000)
u-boot.csf: u-boot.ivt u-boot.bin board/$(VENDOR)/$(BOARD)/sign/u-boot.csf u-boot.csf: u-boot.ivt u-boot.bin board/$(VENDOR)/$(BOARD)/sign/u-boot.csf
$(call if_changed,mkcsfreq_mxs,$(CONFIG_TEXT_BASE),0x40001000) $(call if_changed,mkcsfreq_mxs,$(CONFIG_SYS_TEXT_BASE),0x40001000)
%.sig: %.csf %.sig: %.csf
$(call if_changed,mkcst_mxs) $(call if_changed,mkcst_mxs)

View File

@ -21,7 +21,6 @@
#include <asm-offsets.h> #include <asm-offsets.h>
#include <config.h> #include <config.h>
#include <common.h> #include <common.h>
#include <system-constants.h>
/* /*
************************************************************************* *************************************************************************
@ -45,7 +44,7 @@ reset:
* it point to the end of OCRAM if the SP is zero. * it point to the end of OCRAM if the SP is zero.
*/ */
cmp sp, #0x00000000 cmp sp, #0x00000000
ldreq sp, =SYS_INIT_SP_ADDR ldreq sp, =CONFIG_SYS_INIT_SP_ADDR
/* /*
* Store all registers on old stack pointer, this will allow us later to * Store all registers on old stack pointer, this will allow us later to

View File

@ -25,9 +25,9 @@ ENTRY(return_to_fel)
mov sp, r0 mov sp, r0
mov lr, r1 mov lr, r1
ldr r0, =fel_stash ldr r0, =fel_stash
ldr r1, [r0, #16]
mcr p15, 0, r1, c1, c0, 0 @ Write CP15 Control Register
ldr r1, [r0, #12] ldr r1, [r0, #12]
mcr p15, 0, r1, c1, c0, 0 @ Write CP15 SCTLR register
ldr r1, [r0, #8]
msr cpsr, r1 @ Write CPSR msr cpsr, r1 @ Write CPSR
bx lr bx lr
ENDPROC(return_to_fel) ENDPROC(return_to_fel)

View File

@ -29,8 +29,8 @@ SECTIONS
.data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram .data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
. = ALIGN(4); . = ALIGN(4);
__u_boot_list : { .u_boot_list : {
KEEP(*(SORT(__u_boot_list*))); KEEP(*(SORT(.u_boot_list*)));
} > .sram } > .sram
. = ALIGN(4); . = ALIGN(4);

View File

@ -27,37 +27,6 @@ config ARMV7_BOOT_SEC_DEFAULT
This can be overridden at run-time by setting the bootm_boot_mode env. This can be overridden at run-time by setting the bootm_boot_mode env.
variable to "sec" or "nonsec". variable to "sec" or "nonsec".
config HAS_ARMV7_SECURE_BASE
bool "Enable support for a ahardware secure memory area"
default y if ARCH_LS1021A || ARCH_MX7 || ARCH_MX7ULP || ARCH_STM32MP \
|| MACH_SUN6I || MACH_SUN7I || MACH_SUN8I || TEGRA124
config ARMV7_SECURE_BASE
hex "Base address for secure mode memory"
depends on HAS_ARMV7_SECURE_BASE
default 0xfff00000 if TEGRA124
default 0x2ffc0000 if ARCH_STM32MP
default 0x2f000000 if ARCH_MX7ULP
default 0x10010000 if ARCH_LS1021A
default 0x00900000 if ARCH_MX7
default 0x00044000 if MACH_SUN8I
default 0x00020000 if MACH_SUN6I || MACH_SUN7I
config ARMV7_SECURE_RESERVE_SIZE
hex
depends on TEGRA124 && HAS_ARMV7_SECURE_BASE
default 0x100000
help
Reserve top 1M for secure RAM
config ARMV7_SECURE_MAX_SIZE
hex
depends on ARMV7_SECURE_BASE && ARCH_STM32MP || MACH_SUN6I \
|| MACH_SUN7I || MACH_SUN8I
default 0xbc00 if MACH_SUN8I && !MACH_SUN8I_H3
default 0x3c00 if MACH_SUN8I && MACH_SUN8I_H3
default 0x10000
config ARMV7_VIRT config ARMV7_VIRT
bool "Enable support for hardware virtualization" if EXPERT bool "Enable support for hardware virtualization" if EXPERT
depends on CPU_V7_HAS_VIRT && ARMV7_NONSEC depends on CPU_V7_HAS_VIRT && ARMV7_NONSEC
@ -75,8 +44,7 @@ config ARMV7_PSCI
choice choice
prompt "Supported PSCI version" prompt "Supported PSCI version"
depends on ARMV7_PSCI depends on ARMV7_PSCI
default ARMV7_PSCI_1_1 if MACH_SUN8I_A33 || MACH_SUN8I_H3 default ARMV7_PSCI_1_1 if ARCH_SUNXI
default ARMV7_PSCI_0_1 if ARCH_SUNXI
default ARMV7_PSCI_1_0 default ARMV7_PSCI_1_0
help help
Select the supported PSCI version. Select the supported PSCI version.

View File

@ -13,7 +13,6 @@
#include <asm-offsets.h> #include <asm-offsets.h>
#include <config.h> #include <config.h>
#include <linux/linkage.h> #include <linux/linkage.h>
#include <system-constants.h>
.pushsection .text.s_init, "ax" .pushsection .text.s_init, "ax"
WEAK(s_init) WEAK(s_init)
@ -29,7 +28,7 @@ WEAK(lowlevel_init)
#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_STACK) #if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_STACK)
ldr sp, =CONFIG_SPL_STACK ldr sp, =CONFIG_SPL_STACK
#else #else
ldr sp, =SYS_INIT_SP_ADDR ldr sp, =CONFIG_SYS_INIT_SP_ADDR
#endif #endif
bic sp, sp, #7 /* 8-byte alignment for ABI compliance */ bic sp, sp, #7 /* 8-byte alignment for ABI compliance */
#ifdef CONFIG_SPL_DM #ifdef CONFIG_SPL_DM

View File

@ -3,17 +3,16 @@ config ARCH_LS1021A
select FSL_IFC if !QSPI_BOOT && !SD_BOOT_QSPI select FSL_IFC if !QSPI_BOOT && !SD_BOOT_QSPI
select SYS_FSL_DDR_BE if SYS_FSL_DDR select SYS_FSL_DDR_BE if SYS_FSL_DDR
select SYS_FSL_DDR_VER_50 if SYS_FSL_DDR select SYS_FSL_DDR_VER_50 if SYS_FSL_DDR
select SYS_FSL_IFC_BE
select SYS_FSL_ERRATUM_A008378 select SYS_FSL_ERRATUM_A008378
select SYS_FSL_ERRATUM_A008407 select SYS_FSL_ERRATUM_A008407
select SYS_FSL_ERRATUM_A008850 if SYS_FSL_DDR select SYS_FSL_ERRATUM_A008850
select SYS_FSL_ERRATUM_A008997 if USB select SYS_FSL_ERRATUM_A008997 if USB
select SYS_FSL_ERRATUM_A009007 if USB
select SYS_FSL_ERRATUM_A009008 if USB select SYS_FSL_ERRATUM_A009008 if USB
select SYS_FSL_ERRATUM_A009663 select SYS_FSL_ERRATUM_A009663
select SYS_FSL_ERRATUM_A009798 if USB select SYS_FSL_ERRATUM_A009798 if USB
select SYS_FSL_ERRATUM_A009942 select SYS_FSL_ERRATUM_A009942
select SYS_FSL_ERRATUM_A010315 select SYS_FSL_ERRATUM_A010315
select SYS_FSL_ESDHC_BE
select SYS_FSL_HAS_CCI400 select SYS_FSL_HAS_CCI400
select SYS_FSL_HAS_DDR3 if SYS_FSL_DDR select SYS_FSL_HAS_DDR3 if SYS_FSL_DDR
select SYS_FSL_HAS_DDR4 if SYS_FSL_DDR select SYS_FSL_HAS_DDR4 if SYS_FSL_DDR
@ -43,6 +42,12 @@ config MAX_CPUS
cores, count the reserved ports. This will allocate enough memory cores, count the reserved ports. This will allocate enough memory
in spin table to properly handle all cores. in spin table to properly handle all cores.
config NXP_ESBC
bool "NXP_ESBC"
help
Enable Freescale Secure Boot feature. Normally selected
by defconfig. If unsure, do not change.
config SYS_CCI400_OFFSET config SYS_CCI400_OFFSET
hex "Offset for CCI400 base" hex "Offset for CCI400 base"
depends on SYS_FSL_HAS_CCI400 depends on SYS_FSL_HAS_CCI400

View File

@ -13,6 +13,10 @@
DECLARE_GLOBAL_DATA_PTR; DECLARE_GLOBAL_DATA_PTR;
#ifndef CONFIG_SYS_FSL_NUM_CC_PLLS
#define CONFIG_SYS_FSL_NUM_CC_PLLS 2
#endif
void get_sys_info(struct sys_info *sys_info) void get_sys_info(struct sys_info *sys_info)
{ {
struct ccsr_gur __iomem *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR); struct ccsr_gur __iomem *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR);

View File

@ -1,7 +1,6 @@
// SPDX-License-Identifier: GPL-2.0+ // SPDX-License-Identifier: GPL-2.0+
/* /*
* Copyright 2014 Freescale Semiconductor, Inc. * Copyright 2014 Freescale Semiconductor, Inc.
* Copyright 2021 NXP
*/ */
#include <common.h> #include <common.h>
@ -21,7 +20,6 @@
#include <config.h> #include <config.h>
#include <fsl_wdog.h> #include <fsl_wdog.h>
#include <linux/delay.h> #include <linux/delay.h>
#include <dm.h>
#include "fsl_epu.h" #include "fsl_epu.h"
@ -399,19 +397,3 @@ void arch_preboot_os(void)
ctrl &= ~ARCH_TIMER_CTRL_ENABLE; ctrl &= ~ARCH_TIMER_CTRL_ENABLE;
asm("mcr p15, 0, %0, c14, c2, 1" : : "r" (ctrl)); asm("mcr p15, 0, %0, c14, c2, 1" : : "r" (ctrl));
} }
#ifdef CONFIG_ARCH_MISC_INIT
int arch_misc_init(void)
{
if (IS_ENABLED(CONFIG_FSL_CAAM)) {
struct udevice *dev;
int ret;
ret = uclass_get_device_by_driver(UCLASS_MISC, DM_DRIVER_GET(caam_jr), &dev);
if (ret)
printf("Failed to initialize caam_jr: %d\n", ret);
}
return 0;
}
#endif

View File

@ -146,9 +146,9 @@ void ft_cpu_setup(void *blob, struct bd_info *bd)
* Since second uboot binary has a head, that space need to be * Since second uboot binary has a head, that space need to be
* reserved either(assuming its size is less than 0x1000). * reserved either(assuming its size is less than 0x1000).
*/ */
off = fdt_add_mem_rsv(blob, CONFIG_TEXT_BASE - UBOOT_HEAD_LEN, off = fdt_add_mem_rsv(blob, CONFIG_SYS_TEXT_BASE - UBOOT_HEAD_LEN,
CONFIG_SYS_MONITOR_LEN + CONFIG_SYS_MONITOR_LEN + CONFIG_SYS_SPL_MALLOC_SIZE +
CONFIG_SYS_SPL_MALLOC_SIZE + UBOOT_HEAD_LEN); UBOOT_HEAD_LEN);
if (off < 0) if (off < 0)
printf("Failed to reserve memory for SD boot deep sleep: %s\n", printf("Failed to reserve memory for SD boot deep sleep: %s\n",
fdt_strerror(off)); fdt_strerror(off));

View File

@ -36,7 +36,7 @@
.align 5 .align 5
#define ONE_MS (CONFIG_COUNTER_FREQUENCY / 1000) #define ONE_MS (COUNTER_FREQUENCY / 1000)
#define RESET_WAIT (30 * ONE_MS) #define RESET_WAIT (30 * ONE_MS)
.globl psci_version .globl psci_version

View File

@ -12,9 +12,7 @@
#include <asm/arch/ls102xa_soc.h> #include <asm/arch/ls102xa_soc.h>
#include <asm/arch/ls102xa_stream_id.h> #include <asm/arch/ls102xa_stream_id.h>
#include <fsl_csu.h> #include <fsl_csu.h>
#ifdef CONFIG_SYS_FSL_ERRATUM_A008850
#include <fsl_ddr_sdram.h> #include <fsl_ddr_sdram.h>
#endif
struct liodn_id_table sec_liodn_tbl[] = { struct liodn_id_table sec_liodn_tbl[] = {
SET_SEC_JR_LIODN_ENTRY(0, 0x10, 0x10), SET_SEC_JR_LIODN_ENTRY(0, 0x10, 0x10),
@ -174,6 +172,10 @@ int arch_soc_init(void)
out_be32(&scfg->qspi_cfg, SCFG_QSPI_CLKSEL); out_be32(&scfg->qspi_cfg, SCFG_QSPI_CLKSEL);
#endif #endif
#ifdef CONFIG_VIDEO_FSL_DCU_FB
out_be32(&scfg->pixclkcr, SCFG_PIXCLKCR_PXCKEN);
#endif
/* Configure Little endian for SAI, ASRC and SPDIF */ /* Configure Little endian for SAI, ASRC and SPDIF */
out_be32(&scfg->endiancr, SCFG_ENDIANCR_LE); out_be32(&scfg->endiancr, SCFG_ENDIANCR_LE);

View File

@ -65,7 +65,7 @@ int timer_init(void)
/* Enable System Counter */ /* Enable System Counter */
writel(SYS_COUNTER_CTRL_ENABLE, &sctr->cntcr); writel(SYS_COUNTER_CTRL_ENABLE, &sctr->cntcr);
freq = CONFIG_COUNTER_FREQUENCY; freq = COUNTER_FREQUENCY;
asm("mcr p15, 0, %0, c14, c0, 0" : : "r" (freq)); asm("mcr p15, 0, %0, c14, c0, 0" : : "r" (freq));
/* Set PL1 Physical Timer Ctrl */ /* Set PL1 Physical Timer Ctrl */

View File

@ -189,11 +189,11 @@ ENTRY(_nonsec_init)
* we do this here instead. * we do this here instead.
* But first check if we have the generic timer. * But first check if we have the generic timer.
*/ */
#if CONFIG_COUNTER_FREQUENCY #ifdef COUNTER_FREQUENCY
mrc p15, 0, r0, c0, c1, 1 @ read ID_PFR1 mrc p15, 0, r0, c0, c1, 1 @ read ID_PFR1
and r0, r0, #CPUID_ARM_GENTIMER_MASK @ mask arch timer bits and r0, r0, #CPUID_ARM_GENTIMER_MASK @ mask arch timer bits
cmp r0, #(1 << CPUID_ARM_GENTIMER_SHIFT) cmp r0, #(1 << CPUID_ARM_GENTIMER_SHIFT)
ldreq r1, =CONFIG_COUNTER_FREQUENCY ldreq r1, =COUNTER_FREQUENCY
mcreq p15, 0, r1, c14, c0, 0 @ write CNTFRQ mcreq p15, 0, r1, c14, c0, 0 @ write CNTFRQ
#endif #endif

View File

@ -3,13 +3,14 @@
# Copyright (C) 2009 Samsung Electronics # Copyright (C) 2009 Samsung Electronics
# Minkyu Kang <mk7.kang@samsung.com> # Minkyu Kang <mk7.kang@samsung.com>
obj-$(CONFIG_PWM_S5P) += pwm.o
ifdef CONFIG_ARCH_NEXELL ifdef CONFIG_ARCH_NEXELL
obj-$(CONFIG_PWM_NX) += pwm.o
obj-$(CONFIG_S5P4418_ONEWIRE) += pwm.o obj-$(CONFIG_S5P4418_ONEWIRE) += pwm.o
else else
obj-y += cpu_info.o obj-y += cpu_info.o
ifndef CONFIG_SPL_BUILD ifndef CONFIG_SPL_BUILD
obj-y += timer.o obj-y += timer.o
obj-y += sromc.o obj-y += sromc.o
obj-$(CONFIG_PWM) += pwm.o
endif endif
endif endif

View File

@ -4,7 +4,6 @@
* Minkyu Kang <mk7.kang@samsung.com> * Minkyu Kang <mk7.kang@samsung.com>
*/ */
#include <common.h> #include <common.h>
#include <display_options.h>
#include <fdtdec.h> #include <fdtdec.h>
#include <init.h> #include <init.h>
#include <asm/global_data.h> #include <asm/global_data.h>

View File

@ -17,7 +17,6 @@
#include <asm/system.h> #include <asm/system.h>
#include <linux/linkage.h> #include <linux/linkage.h>
#include <asm/armv7.h> #include <asm/armv7.h>
#include <system-constants.h>
/************************************************************************* /*************************************************************************
* *
@ -98,10 +97,12 @@ switch_to_hypervisor_ret:
orr r0, r0, #0xc0 @ disable FIQ and IRQ orr r0, r0, #0xc0 @ disable FIQ and IRQ
msr cpsr,r0 msr cpsr,r0
#if !CONFIG_IS_ENABLED(SYS_NO_VECTOR_TABLE)
/* /*
* Setup vector: * Setup vector:
* (OMAP4 spl TEXT_BASE is not 32 byte aligned.
* Continue to use ROM code vector only in OMAP4 spl)
*/ */
#if !(defined(CONFIG_OMAP44XX) && defined(CONFIG_SPL_BUILD))
/* Set V=0 in CP15 SCTLR register - for VBAR to point to vector */ /* Set V=0 in CP15 SCTLR register - for VBAR to point to vector */
mrc p15, 0, r0, c1, c0, 0 @ Read CP15 SCTLR Register mrc p15, 0, r0, c1, c0, 0 @ Read CP15 SCTLR Register
bic r0, #CR_V @ V = 0 bic r0, #CR_V @ V = 0
@ -255,7 +256,7 @@ ENTRY(cpu_init_cp15)
#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_STACK) #if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_STACK)
ldr r0, =(CONFIG_SPL_STACK) ldr r0, =(CONFIG_SPL_STACK)
#else #else
ldr r0, =(SYS_INIT_SP_ADDR) ldr r0, =(CONFIG_SYS_INIT_SP_ADDR)
#endif #endif
bic r0, r0, #7 /* 8-byte alignment for ABI compliance */ bic r0, r0, #7 /* 8-byte alignment for ABI compliance */
mov sp, r0 mov sp, r0

View File

@ -1,6 +1,6 @@
/* SPDX-License-Identifier: GPL-2.0+ */ /* SPDX-License-Identifier: GPL-2.0+ */
/* /*
* (C) Copyright 2014 STMicroelectronics * (C) Copyright 2014 stmicroelectronics
*/ */
#include <config.h> #include <config.h>

View File

@ -13,11 +13,7 @@ obj-$(CONFIG_MACH_SUN6I) += sram.o
obj-$(CONFIG_MACH_SUN8I) += sram.o obj-$(CONFIG_MACH_SUN8I) += sram.o
ifndef CONFIG_SPL_BUILD ifndef CONFIG_SPL_BUILD
ifneq ($(CONFIG_MACH_SUN8I_A33)$(CONFIG_MACH_SUN8I_H3),)
obj-$(CONFIG_ARMV7_PSCI) += psci-scpi.o obj-$(CONFIG_ARMV7_PSCI) += psci-scpi.o
else
obj-$(CONFIG_ARMV7_PSCI) += psci.o
endif
endif endif
ifdef CONFIG_SPL_BUILD ifdef CONFIG_SPL_BUILD

View File

@ -24,11 +24,7 @@
#define MPIDR_AFFLVL0(mpidr) (mpidr & 0xf) #define MPIDR_AFFLVL0(mpidr) (mpidr & 0xf)
#define MPIDR_AFFLVL1(mpidr) (mpidr >> 8 & 0xf) #define MPIDR_AFFLVL1(mpidr) (mpidr >> 8 & 0xf)
#if defined(CONFIG_MACH_SUN8I_H3)
#define SCPI_SHMEM_BASE 0x0004be00 #define SCPI_SHMEM_BASE 0x0004be00
#else
#define SCPI_SHMEM_BASE 0x00053e00
#endif
#define SCPI_SHMEM ((struct scpi_shmem *)SCPI_SHMEM_BASE) #define SCPI_SHMEM ((struct scpi_shmem *)SCPI_SHMEM_BASE)
#define SCPI_RX_CHANNEL 1 #define SCPI_RX_CHANNEL 1
@ -402,12 +398,12 @@ static void __secure sunxi_set_entry_address(void *entry)
writel((u32)entry, &cpucfg->priv0); writel((u32)entry, &cpucfg->priv0);
#ifdef CONFIG_MACH_SUN8I_H3 if (IS_ENABLED(CONFIG_MACH_SUN8I_H3)) {
/* Redirect CPU 0 to the secure monitor via the resume shim. */ /* Redirect CPU 0 to the secure monitor via the resume shim. */
writel(0x16aaefe8, &cpucfg->super_standy_flag); writel(0x16aaefe8, &cpucfg->super_standy_flag);
writel(0xaa16efe8, &cpucfg->super_standy_flag); writel(0xaa16efe8, &cpucfg->super_standy_flag);
writel(SUNXI_RESUME_BASE, &cpucfg->priv1); writel(SUNXI_RESUME_BASE, &cpucfg->priv1);
#endif }
} }
#endif #endif

View File

@ -67,7 +67,7 @@ static u32 __secure cp15_read_cntp_ctl(void)
return val; return val;
} }
#define ONE_MS (CONFIG_COUNTER_FREQUENCY / 1000) #define ONE_MS (COUNTER_FREQUENCY / 1000)
static void __secure __mdelay(u32 ms) static void __secure __mdelay(u32 ms)
{ {
@ -143,12 +143,12 @@ static void __secure sunxi_set_entry_address(void *entry)
writel((u32)entry, &cpucfg->priv0); writel((u32)entry, &cpucfg->priv0);
#ifdef CONFIG_MACH_SUN8I_H3 if (IS_ENABLED(CONFIG_MACH_SUN8I_H3)) {
/* Redirect CPU 0 to the secure monitor via the resume shim. */ /* Redirect CPU 0 to the secure monitor via the resume shim. */
writel(0x16aaefe8, &cpucfg->super_standy_flag); writel(0x16aaefe8, &cpucfg->super_standy_flag);
writel(0xaa16efe8, &cpucfg->super_standy_flag); writel(0xaa16efe8, &cpucfg->super_standy_flag);
writel(SUNXI_RESUME_BASE, &cpucfg->priv1); writel(SUNXI_RESUME_BASE, &cpucfg->priv1);
#endif }
} }
#endif #endif
@ -170,7 +170,7 @@ static void __secure sunxi_cpu_set_power(int cpu, bool on)
sunxi_power_switch((void *)cpucfg + SUN8I_R40_PWR_CLAMP(cpu), sunxi_power_switch((void *)cpucfg + SUN8I_R40_PWR_CLAMP(cpu),
(void *)cpucfg + SUN8I_R40_PWROFF, (void *)cpucfg + SUN8I_R40_PWROFF,
on, cpu); on, 0);
} }
#else /* ! CONFIG_MACH_SUN7I && ! CONFIG_MACH_SUN8I_R40 */ #else /* ! CONFIG_MACH_SUN7I && ! CONFIG_MACH_SUN8I_R40 */
static void __secure sunxi_cpu_set_power(int cpu, bool on) static void __secure sunxi_cpu_set_power(int cpu, bool on)

View File

@ -38,8 +38,8 @@ SECTIONS
.data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram .data : { *(SORT_BY_ALIGNMENT(.data*)) } >.sram
. = ALIGN(4); . = ALIGN(4);
__u_boot_list : { .u_boot_list : {
KEEP(*(SORT(__u_boot_list*))); KEEP(*(SORT(.u_boot_list*)));
} > .sram } > .sram
. = ALIGN(4); . = ALIGN(4);

View File

@ -31,12 +31,6 @@ config ARMV8_SET_SMPEN
it can be safely enabled when EL2/EL3 initialized SMPEN bit it can be safely enabled when EL2/EL3 initialized SMPEN bit
or when CPU implementation doesn't include that register. or when CPU implementation doesn't include that register.
config ARMV8_SWITCH_TO_EL1
bool "Enable switching to running in EL1"
help
In some circumstances we need to switch to running in EL1.
Enable this option to have U-Boot switch to EL1.
config ARMV8_SPIN_TABLE config ARMV8_SPIN_TABLE
bool "Support spin-table enable method" bool "Support spin-table enable method"
depends on ARMV8_MULTIENTRY && OF_LIBFDT depends on ARMV8_MULTIENTRY && OF_LIBFDT
@ -76,7 +70,6 @@ config ARMV8_SEC_FIRMWARE_SUPPORT
config SPL_ARMV8_SEC_FIRMWARE_SUPPORT config SPL_ARMV8_SEC_FIRMWARE_SUPPORT
bool "Enable ARMv8 secure monitor firmware framework support for SPL" bool "Enable ARMv8 secure monitor firmware framework support for SPL"
depends on SPL
select SPL_FIT select SPL_FIT
select SPL_OF_LIBFDT select SPL_OF_LIBFDT
help help
@ -84,7 +77,6 @@ config SPL_ARMV8_SEC_FIRMWARE_SUPPORT
config SPL_RECOVER_DATA_SECTION config SPL_RECOVER_DATA_SECTION
bool "save/restore SPL data section" bool "save/restore SPL data section"
depends on SPL
help help
Say Y here to save SPL data section for cold boot, and restore Say Y here to save SPL data section for cold boot, and restore
at warm boot in SPL phase. at warm boot in SPL phase.
@ -92,7 +84,6 @@ config SPL_RECOVER_DATA_SECTION
config SEC_FIRMWARE_ARMV8_PSCI config SEC_FIRMWARE_ARMV8_PSCI
bool "PSCI implementation in secure monitor firmware" bool "PSCI implementation in secure monitor firmware"
depends on ARMV8_SEC_FIRMWARE_SUPPORT || SPL_ARMV8_SEC_FIRMWARE_SUPPORT depends on ARMV8_SEC_FIRMWARE_SUPPORT || SPL_ARMV8_SEC_FIRMWARE_SUPPORT
depends on ARMV8_PSCI=n
help help
This config enables the ARMv8 PSCI implementation in secure monitor This config enables the ARMv8 PSCI implementation in secure monitor
firmware. This is a private PSCI implementation and different from firmware. This is a private PSCI implementation and different from
@ -134,9 +125,6 @@ config PSCI_RESET
Select Y here to make use of PSCI calls for system reset Select Y here to make use of PSCI calls for system reset
config SYS_HAS_ARMV8_SECURE_BASE
bool
config ARMV8_PSCI config ARMV8_PSCI
bool "Enable PSCI support" if EXPERT bool "Enable PSCI support" if EXPERT
help help
@ -164,41 +152,22 @@ config ARMV8_PSCI_CPUS_PER_CLUSTER
A value 0 or no definition of it works for single cluster system. A value 0 or no definition of it works for single cluster system.
System with multi-cluster should difine their own exact value. System with multi-cluster should difine their own exact value.
config ARMV8_PSCI_RELOCATE
bool "Relocate PSCI code"
depends on ARMV8_PSCI
depends on SYS_HAS_ARMV8_SECURE_BASE
help
Relocate PSCI code, for example to a secure memory on the SoC. If not
set, the PSCI sections are placed together with the u-boot and the
regions will be marked as reserved before linux is started.
config ARMV8_SECURE_BASE
hex "Secure address for PSCI image"
depends on ARMV8_PSCI_RELOCATE
default 0x18000000 if ARCH_LS1028A
help
Address for placing the PSCI text, data and stack sections.
config ARMV8_EA_EL3_FIRST config ARMV8_EA_EL3_FIRST
bool "External aborts and SError interrupt exception are taken in EL3" bool "External aborts and SError interrupt exception are taken in EL3"
help help
Exception handling at all exception levels for External Abort and Exception handling at all exception levels for External Abort and
SError interrupt exception are taken in EL3. SError interrupt exception are taken in EL3.
menuconfig ARMV8_CRYPTO if SYS_HAS_ARMV8_SECURE_BASE
bool "ARM64 Accelerated Cryptographic Algorithms"
if ARMV8_CRYPTO config ARMV8_SECURE_BASE
hex "Secure address for PSCI image"
config ARMV8_CE_SHA1 depends on ARMV8_PSCI
bool "SHA-1 digest algorithm (ARMv8 Crypto Extensions)" help
default y if SHA1 Address for placing the PSCI text, data and stack sections.
If not defined, the PSCI sections are placed together with the u-boot
config ARMV8_CE_SHA256 but platform can choose to place PSCI code image separately in other
bool "SHA-256 digest algorithm (ARMv8 Crypto Extensions)" places such as some secure RAM built-in SOC etc.
default y if SHA256
endif endif

View File

@ -44,5 +44,3 @@ obj-$(CONFIG_TARGET_HIKEY) += hisilicon/
obj-$(CONFIG_ARMV8_PSCI) += psci.o obj-$(CONFIG_ARMV8_PSCI) += psci.o
obj-$(CONFIG_TARGET_BCMNS3) += bcmns3/ obj-$(CONFIG_TARGET_BCMNS3) += bcmns3/
obj-$(CONFIG_XEN) += xen/ obj-$(CONFIG_XEN) += xen/
obj-$(CONFIG_ARMV8_CE_SHA1) += sha1_ce_glue.o sha1_ce_core.o
obj-$(CONFIG_ARMV8_CE_SHA256) += sha256_ce_glue.o sha256_ce_core.o

View File

@ -39,28 +39,8 @@ DECLARE_GLOBAL_DATA_PTR;
* off: FFF * off: FFF
*/ */
static int get_effective_el(void) u64 get_tcr(int el, u64 *pips, u64 *pva_bits)
{ {
int el = current_el();
if (el == 2) {
u64 hcr_el2;
/*
* If we are using the EL2&0 translation regime, the TCR_EL2
* looks like the EL1 version, even though we are in EL2.
*/
__asm__ ("mrs %0, HCR_EL2\n" : "=r" (hcr_el2));
if (hcr_el2 & BIT(HCR_EL2_E2H_BIT))
return 1;
}
return el;
}
u64 get_tcr(u64 *pips, u64 *pva_bits)
{
int el = get_effective_el();
u64 max_addr = 0; u64 max_addr = 0;
u64 ips, va_bits; u64 ips, va_bits;
u64 tcr; u64 tcr;
@ -135,7 +115,7 @@ static u64 *find_pte(u64 addr, int level)
debug("addr=%llx level=%d\n", addr, level); debug("addr=%llx level=%d\n", addr, level);
get_tcr(NULL, &va_bits); get_tcr(0, NULL, &va_bits);
if (va_bits < 39) if (va_bits < 39)
start_level = 1; start_level = 1;
@ -363,7 +343,7 @@ __weak u64 get_page_table_size(void)
u64 va_bits; u64 va_bits;
int start_level = 0; int start_level = 0;
get_tcr(NULL, &va_bits); get_tcr(0, NULL, &va_bits);
if (va_bits < 39) if (va_bits < 39)
start_level = 1; start_level = 1;
@ -435,7 +415,7 @@ __weak void mmu_setup(void)
setup_all_pgtables(); setup_all_pgtables();
el = current_el(); el = current_el();
set_ttbr_tcr_mair(el, gd->arch.tlb_addr, get_tcr(NULL, NULL), set_ttbr_tcr_mair(el, gd->arch.tlb_addr, get_tcr(el, NULL, NULL),
MEMORY_ATTRIBUTES); MEMORY_ATTRIBUTES);
/* enable the mmu */ /* enable the mmu */
@ -503,10 +483,6 @@ void dcache_enable(void)
mmu_setup(); mmu_setup();
} }
/* Set up page tables only once (it is done also by mmu_setup()) */
if (!gd->arch.tlb_fillptr)
setup_all_pgtables();
set_sctlr(get_sctlr() | CR_C); set_sctlr(get_sctlr() | CR_C);
} }

View File

@ -3,7 +3,6 @@
# (C) Copyright 2002 # (C) Copyright 2002
# Gary Jennejohn, DENX Software Engineering, <garyj@denx.de> # Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
PLATFORM_RELFLAGS += -fno-common -ffixed-x18 PLATFORM_RELFLAGS += -fno-common -ffixed-x18
PLATFORM_RELFLAGS += $(call cc-option,-mbranch-protection=none)
PF_NO_UNALIGNED := $(call cc-option, -mstrict-align) PF_NO_UNALIGNED := $(call cc-option, -mstrict-align)
PLATFORM_CPPFLAGS += $(PF_NO_UNALIGNED) PLATFORM_CPPFLAGS += $(PF_NO_UNALIGNED)

View File

@ -8,9 +8,9 @@
#include <asm/psci.h> #include <asm/psci.h>
#include <asm/system.h> #include <asm/system.h>
#include <asm/armv8/sec_firmware.h> #include <asm/armv8/sec_firmware.h>
#include <linux/libfdt.h>
__weak int psci_update_dt(void *fdt) #if CONFIG_IS_ENABLED(ARMV8_SEC_FIRMWARE_SUPPORT)
int psci_update_dt(void *fdt)
{ {
/* /*
* If the PSCI in SEC Firmware didn't work, avoid to update the * If the PSCI in SEC Firmware didn't work, avoid to update the
@ -18,10 +18,8 @@ __weak int psci_update_dt(void *fdt)
* number to support detecting PSCI dynamically and then switching * number to support detecting PSCI dynamically and then switching
* the SMP boot method between PSCI and spin-table. * the SMP boot method between PSCI and spin-table.
*/ */
if (CONFIG_IS_ENABLED(SEC_FIRMWARE_ARMV8_PSCI) && if (sec_firmware_support_psci_version() == PSCI_INVALID_VER)
sec_firmware_support_psci_version() == PSCI_INVALID_VER)
return 0; return 0;
fdt_psci(fdt); fdt_psci(fdt);
#if defined(CONFIG_ARMV8_PSCI) && !defined(CONFIG_ARMV8_SECURE_BASE) #if defined(CONFIG_ARMV8_PSCI) && !defined(CONFIG_ARMV8_SECURE_BASE)
@ -32,3 +30,4 @@ __weak int psci_update_dt(void *fdt)
return 0; return 0;
} }
#endif

View File

@ -79,9 +79,6 @@ static void relocate_secure_section(void)
void armv8_setup_psci(void) void armv8_setup_psci(void)
{ {
if (current_el() != 3)
return;
relocate_secure_section(); relocate_secure_section();
secure_ram_addr(psci_setup_vectors)(); secure_ram_addr(psci_setup_vectors)();
secure_ram_addr(psci_arch_init)(); secure_ram_addr(psci_arch_init)();

View File

@ -77,18 +77,14 @@ _save_el_regs:
switch_el x11, 3f, 2f, 1f switch_el x11, 3f, 2f, 1f
3: mrs x1, esr_el3 3: mrs x1, esr_el3
mrs x2, elr_el3 mrs x2, elr_el3
mrs x3, spsr_el3
b 0f b 0f
2: mrs x1, esr_el2 2: mrs x1, esr_el2
mrs x2, elr_el2 mrs x2, elr_el2
mrs x3, spsr_el2
b 0f b 0f
1: mrs x1, esr_el1 1: mrs x1, esr_el1
mrs x2, elr_el1 mrs x2, elr_el1
mrs x3, spsr_el1
0: 0:
stp x1, x0, [sp, #-16]! stp x2, x0, [sp, #-16]!
stp x3, x2, [sp, #-16]!
mov x0, sp mov x0, sp
ret ret
@ -102,7 +98,7 @@ _save_el_regs:
* This is the first part of the shared routine called into from all entries. * This is the first part of the shared routine called into from all entries.
*/ */
exception_exit: exception_exit:
ldp xzr, x2, [sp],#16 ldp x2, x0, [sp],#16
switch_el x11, 3f, 2f, 1f switch_el x11, 3f, 2f, 1f
3: msr elr_el3, x2 3: msr elr_el3, x2
b _restore_regs b _restore_regs
@ -122,7 +118,6 @@ exception_exit:
* This is the second part of the shared routine called into from all entries. * This is the second part of the shared routine called into from all entries.
*/ */
_restore_regs: _restore_regs:
ldp xzr, x0, [sp],#16
ldp x1, x2, [sp],#16 ldp x1, x2, [sp],#16
ldp x3, x4, [sp],#16 ldp x3, x4, [sp],#16
ldp x5, x6, [sp],#16 ldp x5, x6, [sp],#16

View File

@ -26,7 +26,6 @@ config ARCH_LS1012A
config ARCH_LS1028A config ARCH_LS1028A
bool bool
select ARMV8_SET_SMPEN select ARMV8_SET_SMPEN
select ESBC_HDR_LS if CHAIN_OF_TRUST
select FSL_LAYERSCAPE select FSL_LAYERSCAPE
select FSL_LSCH3 select FSL_LSCH3
select GICV3 select GICV3
@ -56,14 +55,13 @@ config ARCH_LS1028A
select SYS_FSL_ERRATUM_A011334 select SYS_FSL_ERRATUM_A011334
select SYS_FSL_ESDHC_UNRELIABLE_PULSE_DETECTION_WORKAROUND select SYS_FSL_ESDHC_UNRELIABLE_PULSE_DETECTION_WORKAROUND
select RESV_RAM if GIC_V3_ITS select RESV_RAM if GIC_V3_ITS
select SYS_HAS_ARMV8_SECURE_BASE
imply PANIC_HANG imply PANIC_HANG
config ARCH_LS1043A config ARCH_LS1043A
bool bool
select ARMV8_SET_SMPEN select ARMV8_SET_SMPEN
select ARM_ERRATA_855873 if !TFABOOT select ARM_ERRATA_855873 if !TFABOOT
select FSL_IFC if TFABOOT || (!QSPI_BOOT && !SD_BOOT_QSPI && !SD_BOOT) select FSL_IFC if TFABOOT || (!QSPI_BOOT && !SD_BOOT_QSPI)
select FSL_LAYERSCAPE select FSL_LAYERSCAPE
select FSL_LSCH2 select FSL_LSCH2
select GICV2 select GICV2
@ -76,6 +74,7 @@ config ARCH_LS1043A
select SYS_FSL_DDR_VER_50 select SYS_FSL_DDR_VER_50
select SYS_FSL_ERRATUM_A008850 if !TFABOOT select SYS_FSL_ERRATUM_A008850 if !TFABOOT
select SYS_FSL_ERRATUM_A008997 select SYS_FSL_ERRATUM_A008997
select SYS_FSL_ERRATUM_A009007
select SYS_FSL_ERRATUM_A009008 select SYS_FSL_ERRATUM_A009008
select SYS_FSL_ERRATUM_A009660 if !TFABOOT select SYS_FSL_ERRATUM_A009660 if !TFABOOT
select SYS_FSL_ERRATUM_A009663 if !TFABOOT select SYS_FSL_ERRATUM_A009663 if !TFABOOT
@ -85,7 +84,6 @@ config ARCH_LS1043A
select SYS_FSL_ERRATUM_A010539 select SYS_FSL_ERRATUM_A010539
select SYS_FSL_HAS_DDR3 select SYS_FSL_HAS_DDR3
select SYS_FSL_HAS_DDR4 select SYS_FSL_HAS_DDR4
select SYS_FSL_QMAN_V3 if SYS_DPAA_QBMAN
select ARCH_EARLY_INIT_R select ARCH_EARLY_INIT_R
select BOARD_EARLY_INIT_F select BOARD_EARLY_INIT_F
select SYS_I2C_MXC select SYS_I2C_MXC
@ -93,14 +91,13 @@ config ARCH_LS1043A
select SYS_I2C_MXC_I2C2 if !DM_I2C select SYS_I2C_MXC_I2C2 if !DM_I2C
select SYS_I2C_MXC_I2C3 if !DM_I2C select SYS_I2C_MXC_I2C3 if !DM_I2C
select SYS_I2C_MXC_I2C4 if !DM_I2C select SYS_I2C_MXC_I2C4 if !DM_I2C
select SYS_HAS_ARMV8_SECURE_BASE
imply CMD_PCI imply CMD_PCI
imply ID_EEPROM imply ID_EEPROM
config ARCH_LS1046A config ARCH_LS1046A
bool bool
select ARMV8_SET_SMPEN select ARMV8_SET_SMPEN
select FSL_IFC if TFABOOT || (!QSPI_BOOT && !SD_BOOT_QSPI && !SD_BOOT) select FSL_IFC if TFABOOT || (!QSPI_BOOT && !SD_BOOT_QSPI)
select FSL_LAYERSCAPE select FSL_LAYERSCAPE
select FSL_LSCH2 select FSL_LSCH2
select GICV2 select GICV2
@ -115,6 +112,7 @@ config ARCH_LS1046A
select SYS_FSL_ERRATUM_A008511 if !TFABOOT select SYS_FSL_ERRATUM_A008511 if !TFABOOT
select SYS_FSL_ERRATUM_A008850 if !TFABOOT select SYS_FSL_ERRATUM_A008850 if !TFABOOT
select SYS_FSL_ERRATUM_A008997 select SYS_FSL_ERRATUM_A008997
select SYS_FSL_ERRATUM_A009007
select SYS_FSL_ERRATUM_A009008 select SYS_FSL_ERRATUM_A009008
select SYS_FSL_ERRATUM_A009798 select SYS_FSL_ERRATUM_A009798
select SYS_FSL_ERRATUM_A009801 select SYS_FSL_ERRATUM_A009801
@ -124,7 +122,6 @@ config ARCH_LS1046A
select SYS_FSL_ERRATUM_A010539 select SYS_FSL_ERRATUM_A010539
select SYS_FSL_HAS_DDR4 select SYS_FSL_HAS_DDR4
select SYS_FSL_SRDS_2 select SYS_FSL_SRDS_2
select SYS_FSL_QMAN_V3 if SYS_DPAA_QBMAN
select ARCH_EARLY_INIT_R select ARCH_EARLY_INIT_R
select BOARD_EARLY_INIT_F select BOARD_EARLY_INIT_F
select SYS_I2C_MXC select SYS_I2C_MXC
@ -141,7 +138,6 @@ config ARCH_LS1088A
bool bool
select ARMV8_SET_SMPEN select ARMV8_SET_SMPEN
select ARM_ERRATA_855873 if !TFABOOT select ARM_ERRATA_855873 if !TFABOOT
select ESBC_HDR_LS if CHAIN_OF_TRUST
select FSL_IFC select FSL_IFC
select FSL_LAYERSCAPE select FSL_LAYERSCAPE
select FSL_LSCH3 select FSL_LSCH3
@ -191,11 +187,9 @@ config ARCH_LS2080A
select ARM_ERRATA_828024 select ARM_ERRATA_828024
select ARM_ERRATA_829520 select ARM_ERRATA_829520
select ARM_ERRATA_833471 select ARM_ERRATA_833471
select ESBC_HDR_LS if CHAIN_OF_TRUST
select FSL_IFC select FSL_IFC
select FSL_LAYERSCAPE select FSL_LAYERSCAPE
select FSL_LSCH3 select FSL_LSCH3
select SYS_FSL_OTHER_DDR_NUM_CTRLS
select GICV3 select GICV3
select SKIP_LOWLEVEL_INIT select SKIP_LOWLEVEL_INIT
select SYS_FSL_SRDS_1 select SYS_FSL_SRDS_1
@ -245,7 +239,6 @@ config ARCH_LS2080A
config ARCH_LX2162A config ARCH_LX2162A
bool bool
select ARMV8_SET_SMPEN select ARMV8_SET_SMPEN
select ESBC_HDR_LS if CHAIN_OF_TRUST
select FSL_DDR_BIST select FSL_DDR_BIST
select FSL_DDR_INTERACTIVE select FSL_DDR_INTERACTIVE
select FSL_LAYERSCAPE select FSL_LAYERSCAPE
@ -284,7 +277,6 @@ config ARCH_LX2162A
config ARCH_LX2160A config ARCH_LX2160A
bool bool
select ARMV8_SET_SMPEN select ARMV8_SET_SMPEN
select ESBC_HDR_LS if CHAIN_OF_TRUST
select FSL_DDR_BIST select FSL_DDR_BIST
select FSL_DDR_INTERACTIVE select FSL_DDR_INTERACTIVE
select FSL_LAYERSCAPE select FSL_LAYERSCAPE
@ -326,11 +318,6 @@ config ARCH_LX2160A
config FSL_LSCH2 config FSL_LSCH2
bool bool
select SKIP_LOWLEVEL_INIT select SKIP_LOWLEVEL_INIT
select SYS_FSL_CCSR_GUR_BE
select SYS_FSL_CCSR_SCFG_BE
select SYS_FSL_ESDHC_BE
select SYS_FSL_IFC_BE
select SYS_FSL_PEX_LUT_BE
select SYS_FSL_HAS_CCI400 select SYS_FSL_HAS_CCI400
select SYS_FSL_HAS_SEC select SYS_FSL_HAS_SEC
select SYS_FSL_SEC_COMPAT_5 select SYS_FSL_SEC_COMPAT_5
@ -338,46 +325,16 @@ config FSL_LSCH2
config FSL_LSCH3 config FSL_LSCH3
select ARCH_MISC_INIT select ARCH_MISC_INIT
select SYS_FSL_CCSR_GUR_LE
select SYS_FSL_CCSR_SCFG_LE
select SYS_FSL_ESDHC_LE
select SYS_FSL_IFC_LE
select SYS_FSL_PEX_LUT_LE
bool bool
config NXP_LSCH3_2 config NXP_LSCH3_2
bool bool
config SYS_FSL_CCSR_GUR_BE
bool
config SYS_FSL_CCSR_SCFG_BE
bool
config SYS_FSL_PEX_LUT_BE
bool
config SYS_FSL_CCSR_GUR_LE
bool
config SYS_FSL_CCSR_SCFG_LE
bool
config SYS_FSL_ESDHC_LE
bool
config SYS_FSL_IFC_LE
bool
config SYS_FSL_PEX_LUT_LE
bool
menu "Layerscape architecture" menu "Layerscape architecture"
depends on FSL_LSCH2 || FSL_LSCH3 depends on FSL_LSCH2 || FSL_LSCH3
config FSL_LAYERSCAPE config FSL_LAYERSCAPE
bool bool
select ARM_SMCCC
config HAS_FEATURE_GIC64K_ALIGN config HAS_FEATURE_GIC64K_ALIGN
bool bool
@ -498,6 +455,11 @@ config EMC2305
Enable the EMC2305 fan controller for configuration of fan Enable the EMC2305 fan controller for configuration of fan
speed. speed.
config NXP_ESBC
bool "NXP_ESBC"
help
Enable Freescale Secure Boot feature
config QSPI_AHB_INIT config QSPI_AHB_INIT
bool "Init the QSPI AHB bus" bool "Init the QSPI AHB bus"
help help
@ -540,36 +502,6 @@ config SYS_FSL_HAS_CCN508
config SYS_FSL_HAS_DP_DDR config SYS_FSL_HAS_DP_DDR
bool bool
help
Defines the SoC has DP-DDR used for DPAA.
config DP_DDR_CTRL
int
depends on SYS_FSL_HAS_DP_DDR
default 2 if ARCH_LS2080A
config DP_DDR_DIMM_SLOTS_PER_CTLR
int
depends on SYS_FSL_HAS_DP_DDR
default 1 if ARCH_LS2080A
config DP_DDR_NUM_CTRLS
int
depends on SYS_FSL_HAS_DP_DDR
default 1 if ARCH_LS2080A
config SYS_DP_DDR_BASE
hex
depends on SYS_FSL_HAS_DP_DDR
default 0x6000000000 if ARCH_LS2080A
config SYS_DP_DDR_BASE_PHY
int
depends on SYS_FSL_HAS_DP_DDR
default 0 if ARCH_LS2080A
help
DDR controller uses this value as the base address for binding.
It is mapped to CONFIG_SYS_DP_DDR_BASE for core to access.
config SYS_FSL_SRDS_1 config SYS_FSL_SRDS_1
bool bool
@ -743,6 +675,9 @@ config SYS_FSL_HAS_RGMII
bool bool
depends on SYS_FSL_EC1 || SYS_FSL_EC2 depends on SYS_FSL_EC1 || SYS_FSL_EC2
config SPL_LDSCRIPT
default "arch/arm/cpu/armv8/u-boot-spl.lds" if ARCH_LS1043A || ARCH_LS1046A || ARCH_LS2080A
config HAS_FSL_XHCI_USB config HAS_FSL_XHCI_USB
bool bool
help help

View File

@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-2.0+ // SPDX-License-Identifier: GPL-2.0+
/* /*
* Copyright 2017-2021 NXP * Copyright 2017-2020 NXP
* Copyright 2014-2015 Freescale Semiconductor, Inc. * Copyright 2014-2015 Freescale Semiconductor, Inc.
*/ */
@ -8,6 +8,7 @@
#include <clock_legacy.h> #include <clock_legacy.h>
#include <cpu_func.h> #include <cpu_func.h>
#include <env.h> #include <env.h>
#include <fsl_ddr_sdram.h>
#include <init.h> #include <init.h>
#include <hang.h> #include <hang.h>
#include <log.h> #include <log.h>
@ -17,7 +18,6 @@
#include <asm/global_data.h> #include <asm/global_data.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/ptrace.h> #include <asm/ptrace.h>
#include <linux/arm-smccc.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <asm/system.h> #include <asm/system.h>
#include <fm_eth.h> #include <fm_eth.h>
@ -36,7 +36,6 @@
#endif #endif
#include <asm/armv8/sec_firmware.h> #include <asm/armv8/sec_firmware.h>
#ifdef CONFIG_SYS_FSL_DDR #ifdef CONFIG_SYS_FSL_DDR
#include <fsl_ddr_sdram.h>
#include <fsl_ddr.h> #include <fsl_ddr.h>
#endif #endif
#include <asm/arch/clock.h> #include <asm/arch/clock.h>
@ -50,7 +49,6 @@
#endif #endif
#endif #endif
#include <linux/mii.h> #include <linux/mii.h>
#include <dm.h>
DECLARE_GLOBAL_DATA_PTR; DECLARE_GLOBAL_DATA_PTR;
@ -454,7 +452,7 @@ static inline void early_mmu_setup(void)
/* point TTBR to the new table */ /* point TTBR to the new table */
set_ttbr_tcr_mair(el, gd->arch.tlb_addr, set_ttbr_tcr_mair(el, gd->arch.tlb_addr,
get_tcr(NULL, NULL) & get_tcr(el, NULL, NULL) &
~(TCR_ORGN_MASK | TCR_IRGN_MASK), ~(TCR_ORGN_MASK | TCR_IRGN_MASK),
MEMORY_ATTRIBUTES); MEMORY_ATTRIBUTES);
@ -609,7 +607,7 @@ static inline void final_mmu_setup(void)
invalidate_icache_all(); invalidate_icache_all();
/* point TTBR to the new table */ /* point TTBR to the new table */
set_ttbr_tcr_mair(el, gd->arch.tlb_addr, get_tcr(NULL, NULL), set_ttbr_tcr_mair(el, gd->arch.tlb_addr, get_tcr(el, NULL, NULL),
MEMORY_ATTRIBUTES); MEMORY_ATTRIBUTES);
set_sctlr(get_sctlr() | CR_M); set_sctlr(get_sctlr() | CR_M);
@ -769,7 +767,7 @@ enum boot_src __get_boot_src(u32 porsr1)
enum boot_src get_boot_src(void) enum boot_src get_boot_src(void)
{ {
struct arm_smccc_res res; struct pt_regs regs;
u32 porsr1 = 0; u32 porsr1 = 0;
#if defined(CONFIG_FSL_LSCH3) #if defined(CONFIG_FSL_LSCH3)
@ -779,9 +777,11 @@ enum boot_src get_boot_src(void)
#endif #endif
if (current_el() == 2) { if (current_el() == 2) {
arm_smccc_smc(SIP_SVC_RCW, 0, 0, 0, 0, 0, 0, 0, &res); regs.regs[0] = SIP_SVC_RCW;
if (!res.a0)
porsr1 = res.a1; smc_call(&regs);
if (!regs.regs[0])
porsr1 = regs.regs[1];
} }
if (current_el() == 3 || !porsr1) { if (current_el() == 3 || !porsr1) {
@ -818,7 +818,7 @@ int mmc_get_env_dev(void)
} }
#endif #endif
enum env_location arch_env_get_location(enum env_operation op, int prio) enum env_location env_get_location(enum env_operation op, int prio)
{ {
enum boot_src src = get_boot_src(); enum boot_src src = get_boot_src();
enum env_location env_loc = ENVL_NOWHERE; enum env_location env_loc = ENVL_NOWHERE;
@ -1080,9 +1080,9 @@ static void config_core_prefetch(void)
char *buf = NULL; char *buf = NULL;
char buffer[HWCONFIG_BUFFER_SIZE]; char buffer[HWCONFIG_BUFFER_SIZE];
const char *prefetch_arg = NULL; const char *prefetch_arg = NULL;
struct arm_smccc_res res;
size_t arglen; size_t arglen;
unsigned int mask; unsigned int mask;
struct pt_regs regs;
if (env_get_f("hwconfig", buffer, sizeof(buffer)) > 0) if (env_get_f("hwconfig", buffer, sizeof(buffer)) > 0)
buf = buffer; buf = buffer;
@ -1100,10 +1100,11 @@ static void config_core_prefetch(void)
} }
#define SIP_PREFETCH_DISABLE_64 0xC200FF13 #define SIP_PREFETCH_DISABLE_64 0xC200FF13
arm_smccc_smc(SIP_PREFETCH_DISABLE_64, mask, 0, 0, 0, 0, 0, 0, regs.regs[0] = SIP_PREFETCH_DISABLE_64;
&res); regs.regs[1] = mask;
smc_call(&regs);
if (res.a0) if (regs.regs[0])
printf("Prefetch disable config failed for mask "); printf("Prefetch disable config failed for mask ");
else else
printf("Prefetch disable config passed for mask "); printf("Prefetch disable config passed for mask ");
@ -1229,7 +1230,6 @@ int timer_init(void)
return 0; return 0;
} }
#if !CONFIG_IS_ENABLED(SYSRESET)
__efi_runtime_data u32 __iomem *rstcr = (u32 *)CONFIG_SYS_FSL_RST_ADDR; __efi_runtime_data u32 __iomem *rstcr = (u32 *)CONFIG_SYS_FSL_RST_ADDR;
void __efi_runtime reset_cpu(void) void __efi_runtime reset_cpu(void)
@ -1249,7 +1249,6 @@ void __efi_runtime reset_cpu(void)
scfg_out32(rstcr, val); scfg_out32(rstcr, val);
#endif #endif
} }
#endif
#if defined(CONFIG_EFI_LOADER) && !defined(CONFIG_PSCI_RESET) #if defined(CONFIG_EFI_LOADER) && !defined(CONFIG_PSCI_RESET)
@ -1345,20 +1344,25 @@ phys_size_t get_effective_memsize(void)
#ifdef CONFIG_TFABOOT #ifdef CONFIG_TFABOOT
phys_size_t tfa_get_dram_size(void) phys_size_t tfa_get_dram_size(void)
{ {
struct arm_smccc_res res; struct pt_regs regs;
phys_size_t dram_size = 0;
arm_smccc_smc(SMC_DRAM_BANK_INFO, -1, 0, 0, 0, 0, 0, 0, &res); regs.regs[0] = SMC_DRAM_BANK_INFO;
if (res.a0) regs.regs[1] = -1;
smc_call(&regs);
if (regs.regs[0])
return 0; return 0;
return res.a1; dram_size = regs.regs[1];
return dram_size;
} }
static int tfa_dram_init_banksize(void) static int tfa_dram_init_banksize(void)
{ {
int i = 0, ret = 0; int i = 0, ret = 0;
struct pt_regs regs;
phys_size_t dram_size = tfa_get_dram_size(); phys_size_t dram_size = tfa_get_dram_size();
struct arm_smccc_res res;
debug("dram_size %llx\n", dram_size); debug("dram_size %llx\n", dram_size);
@ -1366,15 +1370,19 @@ static int tfa_dram_init_banksize(void)
return -EINVAL; return -EINVAL;
do { do {
arm_smccc_smc(SMC_DRAM_BANK_INFO, i, 0, 0, 0, 0, 0, 0, &res); regs.regs[0] = SMC_DRAM_BANK_INFO;
if (res.a0) { regs.regs[1] = i;
smc_call(&regs);
if (regs.regs[0]) {
ret = -EINVAL; ret = -EINVAL;
break; break;
} }
debug("bank[%d]: start %lx, size %lx\n", i, res.a1, res.a2); debug("bank[%d]: start %lx, size %lx\n", i, regs.regs[1],
gd->bd->bi_dram[i].start = res.a1; regs.regs[2]);
gd->bd->bi_dram[i].size = res.a2; gd->bd->bi_dram[i].start = regs.regs[1];
gd->bd->bi_dram[i].size = regs.regs[2];
dram_size -= gd->bd->bi_dram[i].size; dram_size -= gd->bd->bi_dram[i].size;
@ -1624,13 +1632,11 @@ void update_early_mmu_table(void)
__weak int dram_init(void) __weak int dram_init(void)
{ {
#ifdef CONFIG_SYS_FSL_DDR
fsl_initdram(); fsl_initdram();
#if (!defined(CONFIG_SPL) && !defined(CONFIG_TFABOOT)) || \ #if (!defined(CONFIG_SPL) && !defined(CONFIG_TFABOOT)) || \
defined(CONFIG_SPL_BUILD) defined(CONFIG_SPL_BUILD)
/* This will break-before-make MMU for DDR */ /* This will break-before-make MMU for DDR */
update_early_mmu_table(); update_early_mmu_table();
#endif
#endif #endif
return 0; return 0;
@ -1644,14 +1650,6 @@ __weak int serdes_misc_init(void)
int arch_misc_init(void) int arch_misc_init(void)
{ {
if (IS_ENABLED(CONFIG_FSL_CAAM)) {
struct udevice *dev;
int ret;
ret = uclass_get_device_by_driver(UCLASS_MISC, DM_DRIVER_GET(caam_jr), &dev);
if (ret)
printf("Failed to initialize caam_jr: %d\n", ret);
}
serdes_misc_init(); serdes_misc_init();
return 0; return 0;

View File

@ -671,7 +671,7 @@ void ft_cpu_setup(void *blob, struct bd_info *bd)
"clock-frequency", get_qman_freq(), 1); "clock-frequency", get_qman_freq(), 1);
#endif #endif
#ifdef CONFIG_FMAN_ENET #ifdef CONFIG_SYS_DPAA_FMAN
fdt_fixup_fman_firmware(blob); fdt_fixup_fman_firmware(blob);
#endif #endif
#ifdef CONFIG_FSL_PFE #ifdef CONFIG_FSL_PFE

View File

@ -18,6 +18,10 @@
DECLARE_GLOBAL_DATA_PTR; DECLARE_GLOBAL_DATA_PTR;
#ifndef CONFIG_SYS_FSL_NUM_CC_PLLS
#define CONFIG_SYS_FSL_NUM_CC_PLLS 2
#endif
void get_sys_info(struct sys_info *sys_info) void get_sys_info(struct sys_info *sys_info)
{ {
struct ccsr_gur __iomem *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR); struct ccsr_gur __iomem *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR);
@ -25,8 +29,8 @@ void get_sys_info(struct sys_info *sys_info)
* mux 2 clock for LS1043A/LS1046A. * mux 2 clock for LS1043A/LS1046A.
*/ */
#if defined(CONFIG_SYS_DPAA_FMAN) || \ #if defined(CONFIG_SYS_DPAA_FMAN) || \
defined(CONFIG_ARCH_LS1046A) || \ defined(CONFIG_TARGET_LS1046ARDB) || \
defined(CONFIG_ARCH_LS1043A) defined(CONFIG_TARGET_LS1043ARDB)
u32 rcw_tmp; u32 rcw_tmp;
#endif #endif
struct ccsr_clk *clk = (void *)(CONFIG_SYS_FSL_CLK_ADDR); struct ccsr_clk *clk = (void *)(CONFIG_SYS_FSL_CLK_ADDR);
@ -125,13 +129,13 @@ void get_sys_info(struct sys_info *sys_info)
#define HWA_CGA_M2_CLK_SEL 0x00000007 #define HWA_CGA_M2_CLK_SEL 0x00000007
#define HWA_CGA_M2_CLK_SHIFT 0 #define HWA_CGA_M2_CLK_SHIFT 0
#if defined(CONFIG_ARCH_LS1046A) || defined(CONFIG_ARCH_LS1043A) #if defined(CONFIG_TARGET_LS1046ARDB) || defined(CONFIG_TARGET_LS1043ARDB)
rcw_tmp = in_be32(&gur->rcwsr[15]); rcw_tmp = in_be32(&gur->rcwsr[15]);
switch ((rcw_tmp & HWA_CGA_M2_CLK_SEL) >> HWA_CGA_M2_CLK_SHIFT) { switch ((rcw_tmp & HWA_CGA_M2_CLK_SEL) >> HWA_CGA_M2_CLK_SHIFT) {
case 1: case 1:
sys_info->freq_cga_m2 = freq_c_pll[1]; sys_info->freq_cga_m2 = freq_c_pll[1];
break; break;
#if defined(CONFIG_ARCH_LS1046A) #if defined(CONFIG_TARGET_LS1046ARDB)
case 2: case 2:
sys_info->freq_cga_m2 = freq_c_pll[1] / 2; sys_info->freq_cga_m2 = freq_c_pll[1] / 2;
break; break;
@ -139,7 +143,7 @@ void get_sys_info(struct sys_info *sys_info)
case 3: case 3:
sys_info->freq_cga_m2 = freq_c_pll[1] / 3; sys_info->freq_cga_m2 = freq_c_pll[1] / 3;
break; break;
#if defined(CONFIG_ARCH_LS1046A) #if defined(CONFIG_TARGET_LS1046ARDB)
case 6: case 6:
sys_info->freq_cga_m2 = freq_c_pll[0] / 2; sys_info->freq_cga_m2 = freq_c_pll[0] / 2;
break; break;

View File

@ -147,14 +147,10 @@ void serdes_init(u32 sd, u32 sd_addr, u32 rcwsr, u32 sd_prctl_mask,
cfg >>= sd_prctl_shift; cfg >>= sd_prctl_shift;
cfg = serdes_get_number(sd, cfg); cfg = serdes_get_number(sd, cfg);
if (cfg == 0) {
printf("SERDES%d is disabled\n", sd + 1);
} else {
printf("Using SERDES%d Protocol: %d (0x%x)\n", sd + 1, cfg, cfg); printf("Using SERDES%d Protocol: %d (0x%x)\n", sd + 1, cfg, cfg);
if (!is_serdes_prtcl_valid(sd, cfg)) if (!is_serdes_prtcl_valid(sd, cfg))
printf("SERDES%d[PRTCL] = 0x%x is not valid\n", sd + 1, cfg); printf("SERDES%d[PRTCL] = 0x%x is not valid\n", sd + 1, cfg);
}
for (lane = 0; lane < SRDS_MAX_LANES; lane++) { for (lane = 0; lane < SRDS_MAX_LANES; lane++) {
enum srds_prtcl lane_prtcl = serdes_get_prtcl(sd, cfg, lane); enum srds_prtcl lane_prtcl = serdes_get_prtcl(sd, cfg, lane);

View File

@ -21,6 +21,11 @@
DECLARE_GLOBAL_DATA_PTR; DECLARE_GLOBAL_DATA_PTR;
#ifndef CONFIG_SYS_FSL_NUM_CC_PLLS
#define CONFIG_SYS_FSL_NUM_CC_PLLS 6
#endif
void get_sys_info(struct sys_info *sys_info) void get_sys_info(struct sys_info *sys_info)
{ {
struct ccsr_gur __iomem *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR); struct ccsr_gur __iomem *gur = (void *)(CONFIG_SYS_FSL_GUTS_ADDR);

View File

@ -46,7 +46,6 @@ void set_icids(void)
#endif #endif
} }
#ifndef CONFIG_SPL_BUILD
int fdt_set_iommu_prop(void *blob, int off, int smmu_ph, u32 *ids, int num_ids) int fdt_set_iommu_prop(void *blob, int off, int smmu_ph, u32 *ids, int num_ids)
{ {
int i, ret; int i, ret;
@ -191,4 +190,3 @@ void fdt_fixup_icid(void *blob)
fdt_fixup_fman_icids(blob, smmu_ph); fdt_fixup_fman_icids(blob, smmu_ph);
#endif #endif
} }
#endif

View File

@ -1,7 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0+ */ /* SPDX-License-Identifier: GPL-2.0+ */
/* /*
* (C) Copyright 2014-2015 Freescale Semiconductor * (C) Copyright 2014-2015 Freescale Semiconductor
* Copyright 2019-2022 NXP * Copyright 2019 NXP
* *
* Extracted from armv8/start.S * Extracted from armv8/start.S
*/ */
@ -74,6 +74,15 @@ ENDPROC(smp_kick_all_cpus)
ENTRY(lowlevel_init) ENTRY(lowlevel_init)
mov x29, lr /* Save LR */ mov x29, lr /* Save LR */
/* unmask SError and abort */
msr daifclr, #4
/* Set HCR_EL2[AMO] so SError @EL2 is taken */
mrs x0, hcr_el2
orr x0, x0, #0x20 /* AMO */
msr hcr_el2, x0
isb
switch_el x1, 1f, 100f, 100f /* skip if not in EL3 */ switch_el x1, 1f, 100f, 100f /* skip if not in EL3 */
1: 1:
@ -200,7 +209,7 @@ ENTRY(lowlevel_init)
#endif #endif
100: 100:
branch_if_master x0, 2f branch_if_master x0, x1, 2f
#if defined(CONFIG_MP) && defined(CONFIG_ARMV8_MULTIENTRY) #if defined(CONFIG_MP) && defined(CONFIG_ARMV8_MULTIENTRY)
/* /*
@ -344,7 +353,7 @@ ENTRY(fsl_ocram_clear_ecc_err)
ldr x0, =DCSR_DCFG_MBEESR2 ldr x0, =DCSR_DCFG_MBEESR2
str w1, [x0] str w1, [x0]
ret ret
ENDPROC(fsl_ocram_clear_ecc_err) ENDPROC(fsl_ocram_init)
#endif #endif
#ifdef CONFIG_FSL_LSCH3 #ifdef CONFIG_FSL_LSCH3

View File

@ -302,7 +302,6 @@ int cpu_release(u32 nr, int argc, char *const argv[])
u64 boot_addr; u64 boot_addr;
u64 *table = get_spin_tbl_addr(); u64 *table = get_spin_tbl_addr();
int pos; int pos;
int ret;
boot_addr = simple_strtoull(argv[0], NULL, 16); boot_addr = simple_strtoull(argv[0], NULL, 16);
@ -327,10 +326,16 @@ int cpu_release(u32 nr, int argc, char *const argv[])
asm volatile("sev"); asm volatile("sev");
} else { } else {
/* Use PSCI to kick the core */ /* Use PSCI to kick the core */
struct pt_regs regs;
printf("begin to kick cpu core #%d to address %llx\n", printf("begin to kick cpu core #%d to address %llx\n",
nr, boot_addr); nr, boot_addr);
ret = invoke_psci_fn(PSCI_0_2_FN64_CPU_ON, nr, boot_addr, 0); regs.regs[0] = PSCI_0_2_FN64_CPU_ON;
if (ret) regs.regs[1] = nr;
regs.regs[2] = boot_addr;
regs.regs[3] = 0;
smc_call(&regs);
if (regs.regs[0])
return -1; return -1;
} }

View File

@ -206,9 +206,6 @@ static void erratum_a008997(void)
static void erratum_a009007(void) static void erratum_a009007(void)
{ {
if (!IS_ENABLED(CONFIG_SYS_FSL_ERRATUM_A009007))
return;
#if defined(CONFIG_ARCH_LS1043A) || defined(CONFIG_ARCH_LS1046A) || \ #if defined(CONFIG_ARCH_LS1043A) || defined(CONFIG_ARCH_LS1046A) || \
defined(CONFIG_ARCH_LS1012A) defined(CONFIG_ARCH_LS1012A)
void __iomem *usb_phy = (void __iomem *)SCFG_USB_PHY1; void __iomem *usb_phy = (void __iomem *)SCFG_USB_PHY1;
@ -682,7 +679,7 @@ void fsl_lsch2_early_init_f(void)
SCFG_SNPCNFGCR_USB1WRSNP | SCFG_SNPCNFGCR_USB2RDSNP | SCFG_SNPCNFGCR_USB1WRSNP | SCFG_SNPCNFGCR_USB2RDSNP |
SCFG_SNPCNFGCR_USB2WRSNP | SCFG_SNPCNFGCR_USB3RDSNP | SCFG_SNPCNFGCR_USB2WRSNP | SCFG_SNPCNFGCR_USB3RDSNP |
SCFG_SNPCNFGCR_USB3WRSNP | SCFG_SNPCNFGCR_SATARDSNP | SCFG_SNPCNFGCR_USB3WRSNP | SCFG_SNPCNFGCR_SATARDSNP |
SCFG_SNPCNFGCR_SATAWRSNP | SCFG_SNPCNFGCR_EDMASNP); SCFG_SNPCNFGCR_SATAWRSNP);
#elif defined(CONFIG_ARCH_LS1012A) #elif defined(CONFIG_ARCH_LS1012A)
setbits_be32(&scfg->snpcnfgcr, SCFG_SNPCNFGCR_SECRDSNP | setbits_be32(&scfg->snpcnfgcr, SCFG_SNPCNFGCR_SECRDSNP |
SCFG_SNPCNFGCR_SECWRSNP | SCFG_SNPCNFGCR_USB1RDSNP | SCFG_SNPCNFGCR_SECWRSNP | SCFG_SNPCNFGCR_USB1RDSNP |

View File

@ -113,6 +113,6 @@ _dead_loop:
.align 3 .align 3
.global __real_cntfrq .global __real_cntfrq
__real_cntfrq: __real_cntfrq:
.quad CONFIG_COUNTER_FREQUENCY .quad COUNTER_FREQUENCY
/* Secondary Boot Code ends here */ /* Secondary Boot Code ends here */
__secondary_boot_code_end: __secondary_boot_code_end:

View File

@ -12,7 +12,6 @@
#include <image.h> #include <image.h>
#include <init.h> #include <init.h>
#include <log.h> #include <log.h>
#include <semihosting.h>
#include <spl.h> #include <spl.h>
#include <asm/cache.h> #include <asm/cache.h>
#include <asm/global_data.h> #include <asm/global_data.h>
@ -28,8 +27,6 @@ DECLARE_GLOBAL_DATA_PTR;
u32 spl_boot_device(void) u32 spl_boot_device(void)
{ {
if (semihosting_enabled())
return BOOT_DEVICE_SMH;
#ifdef CONFIG_SPL_MMC #ifdef CONFIG_SPL_MMC
return BOOT_DEVICE_MMC1; return BOOT_DEVICE_MMC1;
#endif #endif
@ -67,24 +64,11 @@ void spl_board_init(void)
#endif #endif
} }
void tzpc_init(void)
{
/*
* Mark the whole OCRAM as non-secure, otherwise DMA devices cannot
* access it. This is for example necessary for MMC boot.
*/
#ifdef TZPCR0SIZE_BASE
out_le32(TZPCR0SIZE_BASE, 0);
#endif
}
void board_init_f(ulong dummy) void board_init_f(ulong dummy)
{ {
int ret; int ret;
icache_enable(); icache_enable();
tzpc_init();
/* Clear global data */ /* Clear global data */
memset((void *)gd, 0, sizeof(gd_t)); memset((void *)gd, 0, sizeof(gd_t));
if (IS_ENABLED(CONFIG_DEBUG_UART)) if (IS_ENABLED(CONFIG_DEBUG_UART))

View File

@ -69,7 +69,7 @@
(__HEAD_FLAG_PAGE_SIZE << 1) | \ (__HEAD_FLAG_PAGE_SIZE << 1) | \
(__HEAD_FLAG_PHYS_BASE << 3)) (__HEAD_FLAG_PHYS_BASE << 3))
#define TEXT_OFFSET (CONFIG_TEXT_BASE - \ #define TEXT_OFFSET (CONFIG_SYS_TEXT_BASE - \
CONFIG_LNX_KRNL_IMG_TEXT_OFFSET_BASE) CONFIG_LNX_KRNL_IMG_TEXT_OFFSET_BASE)
/* /*

View File

@ -13,7 +13,6 @@
#include <asm/global_data.h> #include <asm/global_data.h>
#include <asm/ptrace.h> #include <asm/ptrace.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/arm-smccc.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/system.h> #include <asm/system.h>
#include <asm/types.h> #include <asm/types.h>
@ -36,6 +35,9 @@ phys_addr_t sec_firmware_addr;
#ifndef SEC_FIRMWARE_FIT_IMAGE #ifndef SEC_FIRMWARE_FIT_IMAGE
#define SEC_FIRMWARE_FIT_IMAGE "firmware" #define SEC_FIRMWARE_FIT_IMAGE "firmware"
#endif #endif
#ifndef SEC_FIRMWARE_FIT_CNF_NAME
#define SEC_FIRMWARE_FIT_CNF_NAME "config-1"
#endif
#ifndef SEC_FIRMWARE_TARGET_EL #ifndef SEC_FIRMWARE_TARGET_EL
#define SEC_FIRMWARE_TARGET_EL 2 #define SEC_FIRMWARE_TARGET_EL 2
#endif #endif
@ -43,8 +45,46 @@ phys_addr_t sec_firmware_addr;
static int sec_firmware_get_data(const void *sec_firmware_img, static int sec_firmware_get_data(const void *sec_firmware_img,
const void **data, size_t *size) const void **data, size_t *size)
{ {
return fit_get_data_conf_prop(sec_firmware_img, SEC_FIRMWARE_FIT_IMAGE, int conf_node_off, fw_node_off;
data, size); char *conf_node_name = NULL;
char *desc;
int ret;
conf_node_name = SEC_FIRMWARE_FIT_CNF_NAME;
conf_node_off = fit_conf_get_node(sec_firmware_img, conf_node_name);
if (conf_node_off < 0) {
printf("SEC Firmware: %s: no such config\n", conf_node_name);
return -ENOENT;
}
fw_node_off = fit_conf_get_prop_node(sec_firmware_img, conf_node_off,
SEC_FIRMWARE_FIT_IMAGE);
if (fw_node_off < 0) {
printf("SEC Firmware: No '%s' in config\n",
SEC_FIRMWARE_FIT_IMAGE);
return -ENOLINK;
}
/* Verify secure firmware image */
if (!(fit_image_verify(sec_firmware_img, fw_node_off))) {
printf("SEC Firmware: Bad firmware image (bad CRC)\n");
return -EINVAL;
}
if (fit_image_get_data(sec_firmware_img, fw_node_off, data, size)) {
printf("SEC Firmware: Can't get %s subimage data/size",
SEC_FIRMWARE_FIT_IMAGE);
return -ENOENT;
}
ret = fit_get_desc(sec_firmware_img, fw_node_off, &desc);
if (ret)
printf("SEC Firmware: Can't get description\n");
else
printf("%s\n", desc);
return ret;
} }
/* /*
@ -83,15 +123,18 @@ static int sec_firmware_check_copy_loadable(const void *sec_firmware_img,
{ {
phys_addr_t sec_firmware_loadable_addr = 0; phys_addr_t sec_firmware_loadable_addr = 0;
int conf_node_off, ld_node_off, images; int conf_node_off, ld_node_off, images;
char *conf_node_name = NULL;
const void *data; const void *data;
size_t size; size_t size;
ulong load; ulong load;
const char *name, *str, *type; const char *name, *str, *type;
int len; int len;
conf_node_off = fit_conf_get_node(sec_firmware_img, NULL); conf_node_name = SEC_FIRMWARE_FIT_CNF_NAME;
conf_node_off = fit_conf_get_node(sec_firmware_img, conf_node_name);
if (conf_node_off < 0) { if (conf_node_off < 0) {
puts("SEC Firmware: no config\n"); printf("SEC Firmware: %s: no such config\n", conf_node_name);
return -ENOENT; return -ENOENT;
} }
@ -331,25 +374,29 @@ bool sec_firmware_support_hwrng(void)
*/ */
int sec_firmware_get_random(uint8_t *rand, int bytes) int sec_firmware_get_random(uint8_t *rand, int bytes)
{ {
struct arm_smccc_res res;
unsigned long long num; unsigned long long num;
struct pt_regs regs;
int param1; int param1;
if (!bytes || bytes > 8) { if (!bytes || bytes > 8) {
printf("Max Random bytes genration supported is 8\n"); printf("Max Random bytes genration supported is 8\n");
return -1; return -1;
} }
#define SIP_RNG_64 0xC200FF11
regs.regs[0] = SIP_RNG_64;
if (bytes <= 4) if (bytes <= 4)
param1 = 0; param1 = 0;
else else
param1 = 1; param1 = 1;
regs.regs[1] = param1;
#define SIP_RNG_64 0xC200FF11 smc_call(&regs);
arm_smccc_smc(SIP_RNG_64, param1, 0, 0, 0, 0, 0, 0, &res);
if (res.a0) if (regs.regs[0])
return -1; return -1;
num = res.a1; num = regs.regs[1];
memcpy(rand, &num, bytes); memcpy(rand, &num, bytes);
return 0; return 0;
@ -426,8 +473,8 @@ int fdt_fixup_kaslr(void *fdt)
return 0; return 0;
} }
err = sec_firmware_get_random(rand, 8); ret = sec_firmware_get_random(rand, 8);
if (err < 0) { if (ret < 0) {
printf("WARNING: No random number to set kaslr-seed\n"); printf("WARNING: No random number to set kaslr-seed\n");
return 0; return 0;
} }

View File

@ -1,132 +0,0 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* sha1_ce_core.S - SHA-1 secure hash using ARMv8 Crypto Extensions
*
* Copyright (C) 2014 Linaro Ltd <ard.biesheuvel@linaro.org>
* Copyright (C) 2022 Linaro Ltd <loic.poulain@linaro.org>
*/
#include <config.h>
#include <linux/linkage.h>
#include <asm/system.h>
#include <asm/macro.h>
.text
.arch armv8-a+crypto
k0 .req v0
k1 .req v1
k2 .req v2
k3 .req v3
t0 .req v4
t1 .req v5
dga .req q6
dgav .req v6
dgb .req s7
dgbv .req v7
dg0q .req q12
dg0s .req s12
dg0v .req v12
dg1s .req s13
dg1v .req v13
dg2s .req s14
.macro add_only, op, ev, rc, s0, dg1
.ifc \ev, ev
add t1.4s, v\s0\().4s, \rc\().4s
sha1h dg2s, dg0s
.ifnb \dg1
sha1\op dg0q, \dg1, t0.4s
.else
sha1\op dg0q, dg1s, t0.4s
.endif
.else
.ifnb \s0
add t0.4s, v\s0\().4s, \rc\().4s
.endif
sha1h dg1s, dg0s
sha1\op dg0q, dg2s, t1.4s
.endif
.endm
.macro add_update, op, ev, rc, s0, s1, s2, s3, dg1
sha1su0 v\s0\().4s, v\s1\().4s, v\s2\().4s
add_only \op, \ev, \rc, \s1, \dg1
sha1su1 v\s0\().4s, v\s3\().4s
.endm
.macro loadrc, k, val, tmp
movz \tmp, :abs_g0_nc:\val
movk \tmp, :abs_g1:\val
dup \k, \tmp
.endm
/*
* void sha1_armv8_ce_process(uint32_t state[5], uint8_t const *src,
* uint32_t blocks)
*/
ENTRY(sha1_armv8_ce_process)
/* load round constants */
loadrc k0.4s, 0x5a827999, w6
loadrc k1.4s, 0x6ed9eba1, w6
loadrc k2.4s, 0x8f1bbcdc, w6
loadrc k3.4s, 0xca62c1d6, w6
/* load state (4+1 digest states) */
ld1 {dgav.4s}, [x0]
ldr dgb, [x0, #16]
/* load input (64 bytes into v8->v11 16B vectors) */
0: ld1 {v8.4s-v11.4s}, [x1], #64
sub w2, w2, #1
#if __BYTE_ORDER == __LITTLE_ENDIAN
rev32 v8.16b, v8.16b
rev32 v9.16b, v9.16b
rev32 v10.16b, v10.16b
rev32 v11.16b, v11.16b
#endif
1: add t0.4s, v8.4s, k0.4s
mov dg0v.16b, dgav.16b
add_update c, ev, k0, 8, 9, 10, 11, dgb
add_update c, od, k0, 9, 10, 11, 8
add_update c, ev, k0, 10, 11, 8, 9
add_update c, od, k0, 11, 8, 9, 10
add_update c, ev, k1, 8, 9, 10, 11
add_update p, od, k1, 9, 10, 11, 8
add_update p, ev, k1, 10, 11, 8, 9
add_update p, od, k1, 11, 8, 9, 10
add_update p, ev, k1, 8, 9, 10, 11
add_update p, od, k2, 9, 10, 11, 8
add_update m, ev, k2, 10, 11, 8, 9
add_update m, od, k2, 11, 8, 9, 10
add_update m, ev, k2, 8, 9, 10, 11
add_update m, od, k2, 9, 10, 11, 8
add_update m, ev, k3, 10, 11, 8, 9
add_update p, od, k3, 11, 8, 9, 10
add_only p, ev, k3, 9
add_only p, od, k3, 10
add_only p, ev, k3, 11
add_only p, od
/* update state */
add dgbv.2s, dgbv.2s, dg1v.2s
add dgav.4s, dgav.4s, dg0v.4s
/* loop on next block? */
cbz w2, 2f
b 0b
/* store new state */
2: st1 {dgav.4s}, [x0]
str dgb, [x0, #16]
mov w0, w2
ret
ENDPROC(sha1_armv8_ce_process)

View File

@ -1,21 +0,0 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* sha1_ce_glue.c - SHA-1 secure hash using ARMv8 Crypto Extensions
*
* Copyright (C) 2022 Linaro Ltd <loic.poulain@linaro.org>
*/
#include <common.h>
#include <u-boot/sha1.h>
extern void sha1_armv8_ce_process(uint32_t state[5], uint8_t const *src,
uint32_t blocks);
void sha1_process(sha1_context *ctx, const unsigned char *data,
unsigned int blocks)
{
if (!blocks)
return;
sha1_armv8_ce_process(ctx->state, data, blocks);
}

View File

@ -1,134 +0,0 @@
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* sha256-ce-core.S - core SHA-256 transform using v8 Crypto Extensions
*
* Copyright (C) 2014 Linaro Ltd <ard.biesheuvel@linaro.org>
* Copyright (C) 2022 Linaro Ltd <loic.poulain@linaro.org>
*/
#include <config.h>
#include <linux/linkage.h>
#include <asm/system.h>
#include <asm/macro.h>
.text
.arch armv8-a+crypto
dga .req q20
dgav .req v20
dgb .req q21
dgbv .req v21
t0 .req v22
t1 .req v23
dg0q .req q24
dg0v .req v24
dg1q .req q25
dg1v .req v25
dg2q .req q26
dg2v .req v26
.macro add_only, ev, rc, s0
mov dg2v.16b, dg0v.16b
.ifeq \ev
add t1.4s, v\s0\().4s, \rc\().4s
sha256h dg0q, dg1q, t0.4s
sha256h2 dg1q, dg2q, t0.4s
.else
.ifnb \s0
add t0.4s, v\s0\().4s, \rc\().4s
.endif
sha256h dg0q, dg1q, t1.4s
sha256h2 dg1q, dg2q, t1.4s
.endif
.endm
.macro add_update, ev, rc, s0, s1, s2, s3
sha256su0 v\s0\().4s, v\s1\().4s
add_only \ev, \rc, \s1
sha256su1 v\s0\().4s, v\s2\().4s, v\s3\().4s
.endm
/*
* The SHA-256 round constants
*/
.align 4
.Lsha2_rcon:
.word 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5
.word 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5
.word 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3
.word 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174
.word 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc
.word 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da
.word 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7
.word 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967
.word 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13
.word 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85
.word 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3
.word 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070
.word 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5
.word 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3
.word 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208
.word 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
/*
* void sha256_armv8_ce_process(struct sha256_ce_state *sst,
* uint8_t const *src, uint32_t blocks)
*/
ENTRY(sha256_armv8_ce_process)
/* load round constants */
adr x8, .Lsha2_rcon
ld1 { v0.4s- v3.4s}, [x8], #64
ld1 { v4.4s- v7.4s}, [x8], #64
ld1 { v8.4s-v11.4s}, [x8], #64
ld1 {v12.4s-v15.4s}, [x8]
/* load state */
ldp dga, dgb, [x0]
/* load input */
0: ld1 {v16.4s-v19.4s}, [x1], #64
sub w2, w2, #1
#if __BYTE_ORDER == __LITTLE_ENDIAN
rev32 v16.16b, v16.16b
rev32 v17.16b, v17.16b
rev32 v18.16b, v18.16b
rev32 v19.16b, v19.16b
#endif
1: add t0.4s, v16.4s, v0.4s
mov dg0v.16b, dgav.16b
mov dg1v.16b, dgbv.16b
add_update 0, v1, 16, 17, 18, 19
add_update 1, v2, 17, 18, 19, 16
add_update 0, v3, 18, 19, 16, 17
add_update 1, v4, 19, 16, 17, 18
add_update 0, v5, 16, 17, 18, 19
add_update 1, v6, 17, 18, 19, 16
add_update 0, v7, 18, 19, 16, 17
add_update 1, v8, 19, 16, 17, 18
add_update 0, v9, 16, 17, 18, 19
add_update 1, v10, 17, 18, 19, 16
add_update 0, v11, 18, 19, 16, 17
add_update 1, v12, 19, 16, 17, 18
add_only 0, v13, 17
add_only 1, v14, 18
add_only 0, v15, 19
add_only 1
/* update state */
add dgav.4s, dgav.4s, dg0v.4s
add dgbv.4s, dgbv.4s, dg1v.4s
/* handled all input blocks? */
cbnz w2, 0b
/* store new state */
3: stp dga, dgb, [x0]
ret
ENDPROC(sha256_armv8_ce_process)

View File

@ -1,21 +0,0 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* sha256_ce_glue.c - SHA-256 secure hash using ARMv8 Crypto Extensions
*
* Copyright (C) 2022 Linaro Ltd <loic.poulain@linaro.org>
*/
#include <common.h>
#include <u-boot/sha256.h>
extern void sha256_armv8_ce_process(uint32_t state[8], uint8_t const *src,
uint32_t blocks);
void sha256_process(sha256_context *ctx, const unsigned char *data,
unsigned int blocks)
{
if (!blocks)
return;
sha256_armv8_ce_process(ctx->state, data, blocks);
}

View File

@ -35,7 +35,7 @@ _start:
.globl _TEXT_BASE .globl _TEXT_BASE
_TEXT_BASE: _TEXT_BASE:
.quad CONFIG_TEXT_BASE .quad CONFIG_SYS_TEXT_BASE
/* /*
* These are defined in the linker script. * These are defined in the linker script.
@ -125,9 +125,7 @@ pie_fixup_done:
msr cptr_el3, xzr /* Enable FP/SIMD */ msr cptr_el3, xzr /* Enable FP/SIMD */
b 0f b 0f
2: mrs x1, hcr_el2 2: mrs x1, hcr_el2
tbnz x1, #HCR_EL2_E2H_BIT, 1f /* HCR_EL2.E2H */ tbnz x1, #34, 1f /* HCR_EL2.E2H */
orr x1, x1, #HCR_EL2_AMO_EL2 /* Route SErrors to EL2 */
msr hcr_el2, x1
set_vbar vbar_el2, x0 set_vbar vbar_el2, x0
mov x0, #0x33ff mov x0, #0x33ff
msr cptr_el2, x0 /* Enable FP/SIMD */ msr cptr_el2, x0 /* Enable FP/SIMD */
@ -136,11 +134,10 @@ pie_fixup_done:
mov x0, #3 << 20 mov x0, #3 << 20
msr cpacr_el1, x0 /* Enable FP/SIMD */ msr cpacr_el1, x0 /* Enable FP/SIMD */
0: 0:
msr daifclr, #0x4 /* Unmask SError interrupts */
#if CONFIG_COUNTER_FREQUENCY #ifdef COUNTER_FREQUENCY
branch_if_not_highest_el x0, 4f branch_if_not_highest_el x0, 4f
ldr x0, =CONFIG_COUNTER_FREQUENCY ldr x0, =COUNTER_FREQUENCY
msr cntfrq_el0, x0 /* Initialize CNTFRQ */ msr cntfrq_el0, x0 /* Initialize CNTFRQ */
#endif #endif
@ -175,11 +172,11 @@ pie_fixup_done:
bl lowlevel_init bl lowlevel_init
#if defined(CONFIG_ARMV8_SPIN_TABLE) && !defined(CONFIG_SPL_BUILD) #if defined(CONFIG_ARMV8_SPIN_TABLE) && !defined(CONFIG_SPL_BUILD)
branch_if_master x0, master_cpu branch_if_master x0, x1, master_cpu
b spin_table_secondary_jump b spin_table_secondary_jump
/* never return */ /* never return */
#elif defined(CONFIG_ARMV8_MULTIENTRY) #elif defined(CONFIG_ARMV8_MULTIENTRY)
branch_if_master x0, master_cpu branch_if_master x0, x1, master_cpu
/* /*
* Slave CPUs * Slave CPUs
@ -192,7 +189,6 @@ slave_cpu:
br x0 /* branch to the given address */ br x0 /* branch to the given address */
#endif /* CONFIG_ARMV8_MULTIENTRY */ #endif /* CONFIG_ARMV8_MULTIENTRY */
master_cpu: master_cpu:
msr SPSel, #1 /* make sure we use SP_ELx */
bl _main bl _main
/*-----------------------------------------------------------------------*/ /*-----------------------------------------------------------------------*/
@ -305,7 +301,7 @@ WEAK(lowlevel_init)
#endif #endif
#ifdef CONFIG_ARMV8_MULTIENTRY #ifdef CONFIG_ARMV8_MULTIENTRY
branch_if_master x0, 2f branch_if_master x0, x1, 2f
/* /*
* Slave should wait for master clearing spin table. * Slave should wait for master clearing spin table.

View File

@ -23,7 +23,7 @@ SECTIONS
{ {
.text : { .text : {
. = ALIGN(8); . = ALIGN(8);
__image_copy_start = .; *(.__image_copy_start)
CPUDIR/start.o (.text*) CPUDIR/start.o (.text*)
*(.text*) *(.text*)
} >.sram } >.sram
@ -46,9 +46,9 @@ SECTIONS
} >.sram } >.sram
#endif #endif
__u_boot_list : { .u_boot_list : {
. = ALIGN(8); . = ALIGN(8);
KEEP(*(SORT(__u_boot_list*))); KEEP(*(SORT(.u_boot_list*)));
} >.sram } >.sram
.image_copy_end : { .image_copy_end : {

View File

@ -109,8 +109,8 @@ SECTIONS
. = .; . = .;
. = ALIGN(8); . = ALIGN(8);
__u_boot_list : { .u_boot_list : {
KEEP(*(SORT(__u_boot_list*))); KEEP(*(SORT(.u_boot_list*)));
} }
. = ALIGN(8); . = ALIGN(8);

15
arch/arm/cpu/pxa/Makefile Normal file
View File

@ -0,0 +1,15 @@
# SPDX-License-Identifier: GPL-2.0+
#
# (C) Copyright 2000-2006
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
extra-y = start.o
obj-$(CONFIG_CPU_PXA25X) += pxa2xx.o
obj-$(CONFIG_CPU_PXA27X) += pxa2xx.o
obj-y += cpuinfo.o
obj-y += timer.o
obj-y += usb.o
obj-y += relocate.o
obj-y += cache.o

58
arch/arm/cpu/pxa/cache.c Normal file
View File

@ -0,0 +1,58 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* (C) Copyright 2016 Vasily Khoruzhick <anarsoul@gmail.com>
*/
#include <cpu_func.h>
#include <asm/cache.h>
#include <linux/types.h>
#include <common.h>
#if !CONFIG_IS_ENABLED(SYS_DCACHE_OFF)
void invalidate_dcache_all(void)
{
/* Flush/Invalidate I cache */
asm volatile("mcr p15, 0, %0, c7, c5, 0\n" : : "r"(0));
/* Flush/Invalidate D cache */
asm volatile("mcr p15, 0, %0, c7, c6, 0\n" : : "r"(0));
}
void flush_dcache_all(void)
{
return invalidate_dcache_all();
}
void invalidate_dcache_range(unsigned long start, unsigned long stop)
{
start &= ~(CONFIG_SYS_CACHELINE_SIZE - 1);
stop &= ~(CONFIG_SYS_CACHELINE_SIZE - 1);
while (start <= stop) {
asm volatile("mcr p15, 0, %0, c7, c6, 1\n" : : "r"(start));
start += CONFIG_SYS_CACHELINE_SIZE;
}
}
void flush_dcache_range(unsigned long start, unsigned long stop)
{
return invalidate_dcache_range(start, stop);
}
#else /* #if !CONFIG_IS_ENABLED(SYS_DCACHE_OFF) */
void invalidate_dcache_all(void)
{
}
void flush_dcache_all(void)
{
}
#endif /* #if !CONFIG_IS_ENABLED(SYS_DCACHE_OFF) */
/*
* Stub implementations for l2 cache operations
*/
__weak void l2_cache_disable(void) {}
#if CONFIG_IS_ENABLED(SYS_THUMB_BUILD)
__weak void invalidate_l2_cache(void) {}
#endif

View File

@ -0,0 +1,18 @@
# SPDX-License-Identifier: GPL-2.0+
#
# (C) Copyright 2002
# Sysgo Real-Time Solutions, GmbH <www.elinos.com>
# Marius Groeger <mgroeger@sysgo.de>
#
# !WARNING!
# The PXA's OneNAND SPL uses .text.0 and .text.1 segments to allow booting from
# really small OneNAND memories where the mmap'd window is only 1KiB big. The
# .text.0 contains only the bare minimum needed to load the real SPL into SRAM.
# Add .text.0 and .text.1 into OBJFLAGS, so when the SPL is being objcopy'd,
# they are not discarded.
#
#ifdef CONFIG_SPL_BUILD
OBJCOPYFLAGS += -j .text.0 -j .text.1
#endif

145
arch/arm/cpu/pxa/cpuinfo.c Normal file
View File

@ -0,0 +1,145 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* PXA CPU information display
*
* Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
*/
#include <common.h>
#include <init.h>
#include <asm/io.h>
#include <errno.h>
#include <linux/compiler.h>
#ifdef CONFIG_CPU_PXA25X
#if ((CONFIG_SYS_INIT_SP_ADDR) != 0xfffff800)
#error "Init SP address must be set to 0xfffff800 for PXA250"
#endif
#endif
#define CPU_MASK_PXA_PRODID 0x000003f0
#define CPU_MASK_PXA_REVID 0x0000000f
#define CPU_MASK_PRODREV (CPU_MASK_PXA_PRODID | CPU_MASK_PXA_REVID)
#define CPU_VALUE_PXA25X 0x100
#define CPU_VALUE_PXA27X 0x110
static uint32_t pxa_get_cpuid(void)
{
uint32_t cpuid;
asm volatile("mrc p15, 0, %0, c0, c0, 0" : "=r"(cpuid));
return cpuid;
}
int cpu_is_pxa25x(void)
{
uint32_t id = pxa_get_cpuid();
id &= CPU_MASK_PXA_PRODID;
return id == CPU_VALUE_PXA25X;
}
int cpu_is_pxa27x(void)
{
uint32_t id = pxa_get_cpuid();
id &= CPU_MASK_PXA_PRODID;
return id == CPU_VALUE_PXA27X;
}
int cpu_is_pxa27xm(void)
{
uint32_t id = pxa_get_cpuid();
return ((id & CPU_MASK_PXA_PRODID) == CPU_VALUE_PXA27X) &&
((id & CPU_MASK_PXA_REVID) == 8);
}
uint32_t pxa_get_cpu_revision(void)
{
return pxa_get_cpuid() & CPU_MASK_PRODREV;
}
#ifdef CONFIG_DISPLAY_CPUINFO
static const char *pxa25x_get_revision(void)
{
static __maybe_unused const char * const revs_25x[] = { "A0" };
static __maybe_unused const char * const revs_26x[] = {
"A0", "B0", "B1"
};
static const char *unknown = "Unknown";
uint32_t id;
if (!cpu_is_pxa25x())
return unknown;
id = pxa_get_cpuid() & CPU_MASK_PXA_REVID;
/* PXA26x is a sick special case as it can't be told apart from PXA25x :-( */
#ifdef CONFIG_CPU_PXA26X
switch (id) {
case 3: return revs_26x[0];
case 5: return revs_26x[1];
case 6: return revs_26x[2];
}
#else
if (id == 6)
return revs_25x[0];
#endif
return unknown;
}
static const char *pxa27x_get_revision(void)
{
static const char *const rev[] = { "A0", "A1", "B0", "B1", "C0", "C5" };
static const char *unknown = "Unknown";
uint32_t id;
if (!cpu_is_pxa27x())
return unknown;
id = pxa_get_cpuid() & CPU_MASK_PXA_REVID;
if ((id == 5) || (id == 6) || (id > 8))
return unknown;
/* Cap the special PXA270 C5 case. */
if (id == 7)
id = 5;
/* Cap the special PXA270M A1 case. */
if (id == 8)
id = 1;
return rev[id];
}
static int print_cpuinfo_pxa2xx(void)
{
if (cpu_is_pxa25x()) {
puts("Marvell PXA25x rev. ");
puts(pxa25x_get_revision());
} else if (cpu_is_pxa27x()) {
puts("Marvell PXA27x");
if (cpu_is_pxa27xm()) puts("M");
puts(" rev. ");
puts(pxa27x_get_revision());
} else
return -EINVAL;
puts("\n");
return 0;
}
int print_cpuinfo(void)
{
int ret;
puts("CPU: ");
ret = print_cpuinfo_pxa2xx();
if (!ret)
return ret;
return ret;
}
#endif

295
arch/arm/cpu/pxa/pxa2xx.c Normal file
View File

@ -0,0 +1,295 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* (C) Copyright 2002
* Sysgo Real-Time Solutions, GmbH <www.elinos.com>
* Marius Groeger <mgroeger@sysgo.de>
*
* (C) Copyright 2002
* Sysgo Real-Time Solutions, GmbH <www.elinos.com>
* Alex Zuepke <azu@sysgo.de>
*/
#include <common.h>
#include <cpu_func.h>
#include <init.h>
#include <irq_func.h>
#include <asm/arch/pxa-regs.h>
#include <asm/cache.h>
#include <asm/io.h>
#include <asm/system.h>
#include <command.h>
/* Flush I/D-cache */
static void cache_flush(void)
{
unsigned long i = 0;
asm ("mcr p15, 0, %0, c7, c5, 0" : : "r" (i));
}
int cleanup_before_linux(void)
{
/*
* This function is called just before we call Linux. It prepares
* the processor for Linux by just disabling everything that can
* disturb booting Linux.
*/
disable_interrupts();
icache_disable();
dcache_disable();
cache_flush();
return 0;
}
inline void writelrb(uint32_t val, uint32_t addr)
{
writel(val, addr);
asm volatile("" : : : "memory");
readl(addr);
asm volatile("" : : : "memory");
}
void pxa2xx_dram_init(void)
{
uint32_t tmp;
int i;
/*
* 1) Initialize Asynchronous static memory controller
*/
writelrb(CONFIG_SYS_MSC0_VAL, MSC0);
writelrb(CONFIG_SYS_MSC1_VAL, MSC1);
writelrb(CONFIG_SYS_MSC2_VAL, MSC2);
/*
* 2) Initialize Card Interface
*/
/* MECR: Memory Expansion Card Register */
writelrb(CONFIG_SYS_MECR_VAL, MECR);
/* MCMEM0: Card Interface slot 0 timing */
writelrb(CONFIG_SYS_MCMEM0_VAL, MCMEM0);
/* MCMEM1: Card Interface slot 1 timing */
writelrb(CONFIG_SYS_MCMEM1_VAL, MCMEM1);
/* MCATT0: Card Interface Attribute Space Timing, slot 0 */
writelrb(CONFIG_SYS_MCATT0_VAL, MCATT0);
/* MCATT1: Card Interface Attribute Space Timing, slot 1 */
writelrb(CONFIG_SYS_MCATT1_VAL, MCATT1);
/* MCIO0: Card Interface I/O Space Timing, slot 0 */
writelrb(CONFIG_SYS_MCIO0_VAL, MCIO0);
/* MCIO1: Card Interface I/O Space Timing, slot 1 */
writelrb(CONFIG_SYS_MCIO1_VAL, MCIO1);
/*
* 3) Configure Fly-By DMA register
*/
writelrb(CONFIG_SYS_FLYCNFG_VAL, FLYCNFG);
/*
* 4) Initialize Timing for Sync Memory (SDCLK0)
*/
/*
* Before accessing MDREFR we need a valid DRI field, so we set
* this to power on defaults + DRI field.
*/
/* Read current MDREFR config and zero out DRI */
tmp = readl(MDREFR) & ~0xfff;
/* Add user-specified DRI */
tmp |= CONFIG_SYS_MDREFR_VAL & 0xfff;
/* Configure important bits */
tmp |= MDREFR_K0RUN | MDREFR_SLFRSH;
tmp &= ~(MDREFR_APD | MDREFR_E1PIN);
/* Write MDREFR back */
writelrb(tmp, MDREFR);
/*
* 5) Initialize Synchronous Static Memory (Flash/Peripherals)
*/
/* Initialize SXCNFG register. Assert the enable bits.
*
* Write SXMRS to cause an MRS command to all enabled banks of
* synchronous static memory. Note that SXLCR need not be written
* at this time.
*/
writelrb(CONFIG_SYS_SXCNFG_VAL, SXCNFG);
/*
* 6) Initialize SDRAM
*/
writelrb(CONFIG_SYS_MDREFR_VAL & ~MDREFR_SLFRSH, MDREFR);
writelrb(CONFIG_SYS_MDREFR_VAL | MDREFR_E1PIN, MDREFR);
/*
* 7) Write MDCNFG with MDCNFG:DEx deasserted (set to 0), to configure
* but not enable each SDRAM partition pair.
*/
writelrb(CONFIG_SYS_MDCNFG_VAL &
~(MDCNFG_DE0 | MDCNFG_DE1 | MDCNFG_DE2 | MDCNFG_DE3), MDCNFG);
/* Wait for the clock to the SDRAMs to stabilize, 100..200 usec. */
writel(0, OSCR);
while (readl(OSCR) < 0x300)
asm volatile("" : : : "memory");
/*
* 8) Trigger a number (usually 8) refresh cycles by attempting
* non-burst read or write accesses to disabled SDRAM, as commonly
* specified in the power up sequence documented in SDRAM data
* sheets. The address(es) used for this purpose must not be
* cacheable.
*/
for (i = 9; i >= 0; i--) {
writel(i, 0xa0000000);
asm volatile("" : : : "memory");
}
/*
* 9) Write MDCNFG with enable bits asserted (MDCNFG:DEx set to 1).
*/
tmp = CONFIG_SYS_MDCNFG_VAL &
(MDCNFG_DE0 | MDCNFG_DE1 | MDCNFG_DE2 | MDCNFG_DE3);
tmp |= readl(MDCNFG);
writelrb(tmp, MDCNFG);
/*
* 10) Write MDMRS.
*/
writelrb(CONFIG_SYS_MDMRS_VAL, MDMRS);
/*
* 11) Enable APD
*/
if (CONFIG_SYS_MDREFR_VAL & MDREFR_APD) {
tmp = readl(MDREFR);
tmp |= MDREFR_APD;
writelrb(tmp, MDREFR);
}
}
void pxa_gpio_setup(void)
{
writel(CONFIG_SYS_GPSR0_VAL, GPSR0);
writel(CONFIG_SYS_GPSR1_VAL, GPSR1);
writel(CONFIG_SYS_GPSR2_VAL, GPSR2);
#if defined(CONFIG_CPU_PXA27X)
writel(CONFIG_SYS_GPSR3_VAL, GPSR3);
#endif
writel(CONFIG_SYS_GPCR0_VAL, GPCR0);
writel(CONFIG_SYS_GPCR1_VAL, GPCR1);
writel(CONFIG_SYS_GPCR2_VAL, GPCR2);
#if defined(CONFIG_CPU_PXA27X)
writel(CONFIG_SYS_GPCR3_VAL, GPCR3);
#endif
writel(CONFIG_SYS_GPDR0_VAL, GPDR0);
writel(CONFIG_SYS_GPDR1_VAL, GPDR1);
writel(CONFIG_SYS_GPDR2_VAL, GPDR2);
#if defined(CONFIG_CPU_PXA27X)
writel(CONFIG_SYS_GPDR3_VAL, GPDR3);
#endif
writel(CONFIG_SYS_GAFR0_L_VAL, GAFR0_L);
writel(CONFIG_SYS_GAFR0_U_VAL, GAFR0_U);
writel(CONFIG_SYS_GAFR1_L_VAL, GAFR1_L);
writel(CONFIG_SYS_GAFR1_U_VAL, GAFR1_U);
writel(CONFIG_SYS_GAFR2_L_VAL, GAFR2_L);
writel(CONFIG_SYS_GAFR2_U_VAL, GAFR2_U);
#if defined(CONFIG_CPU_PXA27X)
writel(CONFIG_SYS_GAFR3_L_VAL, GAFR3_L);
writel(CONFIG_SYS_GAFR3_U_VAL, GAFR3_U);
#endif
writel(CONFIG_SYS_PSSR_VAL, PSSR);
}
void pxa_interrupt_setup(void)
{
writel(0, ICLR);
writel(0, ICMR);
#if defined(CONFIG_CPU_PXA27X)
writel(0, ICLR2);
writel(0, ICMR2);
#endif
}
void pxa_clock_setup(void)
{
writel(CONFIG_SYS_CKEN, CKEN);
writel(CONFIG_SYS_CCCR, CCCR);
asm volatile("mcr p14, 0, %0, c6, c0, 0" : : "r"(0x0b));
/* enable the 32Khz oscillator for RTC and PowerManager */
writel(OSCC_OON, OSCC);
while (!(readl(OSCC) & OSCC_OOK))
asm volatile("" : : : "memory");
}
void pxa_wakeup(void)
{
uint32_t rcsr;
rcsr = readl(RCSR);
writel(rcsr & (RCSR_GPR | RCSR_SMR | RCSR_WDR | RCSR_HWR), RCSR);
/* Wakeup */
if (rcsr & RCSR_SMR) {
writel(PSSR_PH, PSSR);
pxa2xx_dram_init();
icache_disable();
dcache_disable();
asm volatile("mov pc, %0" : : "r"(readl(PSPR)));
}
}
int arch_cpu_init(void)
{
pxa_gpio_setup();
pxa_wakeup();
pxa_interrupt_setup();
pxa_clock_setup();
return 0;
}
void i2c_clk_enable(void)
{
/* Set the global I2C clock on */
writel(readl(CKEN) | CKEN14_I2C, CKEN);
}
void __attribute__((weak)) reset_cpu(void) __attribute__((noreturn));
void reset_cpu(void)
{
uint32_t tmp;
setbits_le32(OWER, OWER_WME);
tmp = readl(OSCR);
tmp += 0x1000;
writel(tmp, OSMR3);
writel(MDREFR_SLFRSH, MDREFR);
for (;;)
;
}
void enable_caches(void)
{
#if !CONFIG_IS_ENABLED(SYS_ICACHE_OFF)
icache_enable();
#endif
#if !CONFIG_IS_ENABLED(SYS_DCACHE_OFF)
dcache_enable();
#endif
}

View File

@ -0,0 +1,22 @@
/* SPDX-License-Identifier: GPL-2.0+ */
/*
* relocate - PXA270 vector relocation
*
* Copyright (c) 2013 Albert ARIBAUD <albert.u.boot@aribaud.net>
*/
#include <linux/linkage.h>
/*
* The PXA SoC is very specific with respect to exceptions: it
* does not provide RAM at the high vectors address (0xFFFF0000),
* thus only the low address (0x00000000) is useable; but that is
* in ROM, so let's avoid relocating the vectors.
*/
.section .text.relocate_vectors,"ax",%progbits
ENTRY(relocate_vectors)
bx lr
ENDPROC(relocate_vectors)

205
arch/arm/cpu/pxa/start.S Normal file
View File

@ -0,0 +1,205 @@
/* SPDX-License-Identifier: GPL-2.0+ */
/*
* armboot - Startup Code for XScale CPU-core
*
* Copyright (C) 1998 Dan Malek <dmalek@jlc.net>
* Copyright (C) 1999 Magnus Damm <kieraypc01.p.y.kie.era.ericsson.se>
* Copyright (C) 2000 Wolfgang Denk <wd@denx.de>
* Copyright (C) 2001 Alex Zuepke <azu@sysgo.de>
* Copyright (C) 2001 Marius Groger <mag@sysgo.de>
* Copyright (C) 2002 Alex Zupke <azu@sysgo.de>
* Copyright (C) 2002 Gary Jennejohn <garyj@denx.de>
* Copyright (C) 2002 Kyle Harris <kharris@nexus-tech.net>
* Copyright (C) 2003 Kai-Uwe Bloem <kai-uwe.bloem@auerswald.de>
* Copyright (C) 2003 Kshitij <kshitij@ti.com>
* Copyright (C) 2003 Richard Woodruff <r-woodruff2@ti.com>
* Copyright (C) 2003 Robert Schwebel <r.schwebel@pengutronix.de>
* Copyright (C) 2004 Texas Instruments <r-woodruff2@ti.com>
* Copyright (C) 2010 Marek Vasut <marek.vasut@gmail.com>
*/
#include <asm-offsets.h>
#include <config.h>
/*
*************************************************************************
*
* Startup Code (reset vector)
*
* do important init only if we don't start from memory!
* setup Memory and board specific bits prior to relocation.
* relocate armboot to ram
* setup stack
*
*************************************************************************
*/
.globl reset
reset:
/*
* set the cpu to SVC32 mode
*/
mrs r0,cpsr
bic r0,r0,#0x1f
orr r0,r0,#0xd3
msr cpsr,r0
#if !CONFIG_IS_ENABLED(SKIP_LOWLEVEL_INIT)
bl cpu_init_crit
#endif
#ifdef CONFIG_CPU_PXA25X
bl lock_cache_for_stack
#endif
#ifdef CONFIG_CPU_PXA27X
/*
* enable clock for SRAM
*/
ldr r0,=CKEN
ldr r1,[r0]
orr r1,r1,#(1 << 20)
str r1,[r0]
#endif
bl _main
/*------------------------------------------------------------------------------*/
.globl c_runtime_cpu_setup
c_runtime_cpu_setup:
#ifdef CONFIG_CPU_PXA25X
/*
* Unlock (actually, disable) the cache now that board_init_f
* is done. We could do this earlier but we would need to add
* a new C runtime hook, whereas c_runtime_cpu_setup already
* exists.
* As this routine is just a call to cpu_init_crit, let us
* tail-optimize and do a simple branch here.
*/
b cpu_init_crit
#else
bx lr
#endif
/*
*************************************************************************
*
* CPU_init_critical registers
*
* setup important registers
* setup memory timing
*
*************************************************************************
*/
#if !CONFIG_IS_ENABLED(SKIP_LOWLEVEL_INIT) || defined(CONFIG_CPU_PXA25X)
cpu_init_crit:
/*
* flush v4 I/D caches
*/
mov r0, #0
mcr p15, 0, r0, c7, c7, 0 /* Invalidate I+D+BTB caches */
mcr p15, 0, r0, c8, c7, 0 /* Invalidate Unified TLB */
/*
* disable MMU stuff and caches
*/
mrc p15, 0, r0, c1, c0, 0
bic r0, r0, #0x00003300 @ clear bits 13:12, 9:8 (--VI --RS)
bic r0, r0, #0x00000087 @ clear bits 7, 2:0 (B--- -CAM)
orr r0, r0, #0x00000002 @ set bit 1 (A) Align
mcr p15, 0, r0, c1, c0, 0
mov pc, lr /* back to my caller */
#endif /* !CONFIG_IS_ENABLED(SKIP_LOWLEVEL_INIT) || CONFIG_CPU_PXA25X */
/*
* Enable MMU to use DCache as DRAM.
*
* This is useful on PXA25x and PXA26x in early bootstages, where there is no
* other possible memory available to hold stack.
*/
#ifdef CONFIG_CPU_PXA25X
.macro CPWAIT reg
mrc p15, 0, \reg, c2, c0, 0
mov \reg, \reg
sub pc, pc, #4
.endm
lock_cache_for_stack:
/* Domain access -- enable for all CPs */
ldr r0, =0x0000ffff
mcr p15, 0, r0, c3, c0, 0
/* Point TTBR to MMU table */
ldr r0, =mmutable
mcr p15, 0, r0, c2, c0, 0
/* Kick in MMU, ICache, DCache, BTB */
mrc p15, 0, r0, c1, c0, 0
bic r0, #0x1b00
bic r0, #0x0087
orr r0, #0x1800
orr r0, #0x0005
mcr p15, 0, r0, c1, c0, 0
CPWAIT r0
/* Unlock Icache, Dcache */
mcr p15, 0, r0, c9, c1, 1
mcr p15, 0, r0, c9, c2, 1
/* Flush Icache, Dcache, BTB */
mcr p15, 0, r0, c7, c7, 0
/* Unlock I-TLB, D-TLB */
mcr p15, 0, r0, c10, c4, 1
mcr p15, 0, r0, c10, c8, 1
/* Flush TLB */
mcr p15, 0, r0, c8, c7, 0
/* Allocate 4096 bytes of Dcache as RAM */
/* Drain pending loads and stores */
mcr p15, 0, r0, c7, c10, 4
mov r4, #0x00
mov r5, #0x00
mov r2, #0x01
mcr p15, 0, r0, c9, c2, 0
CPWAIT r0
/* 128 lines reserved (128 x 32bytes = 4096 bytes total) */
mov r0, #128
ldr r1, =0xfffff000
alloc:
mcr p15, 0, r1, c7, c2, 5
/* Drain pending loads and stores */
mcr p15, 0, r0, c7, c10, 4
strd r4, [r1], #8
strd r4, [r1], #8
strd r4, [r1], #8
strd r4, [r1], #8
subs r0, #0x01
bne alloc
/* Drain pending loads and stores */
mcr p15, 0, r0, c7, c10, 4
mov r2, #0x00
mcr p15, 0, r2, c9, c2, 0
CPWAIT r0
mov pc, lr
.section .mmutable, "a"
mmutable:
.align 14
/* 0x00000000 - 0xffe00000 : 1:1, uncached mapping */
.set __base, 0
.rept 0xfff
.word (__base << 20) | 0xc12
.set __base, __base + 1
.endr
/* 0xfff00000 : 1:1, cached mapping */
.word (0xfff << 20) | 0x1c1e
#endif /* CONFIG_CPU_PXA25X */

16
arch/arm/cpu/pxa/timer.c Normal file
View File

@ -0,0 +1,16 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* Marvell PXA2xx/3xx timer driver
*
* Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
*/
#include <common.h>
#include <init.h>
#include <asm/io.h>
int timer_init(void)
{
writel(0, CONFIG_SYS_TIMER_COUNTER);
return 0;
}

89
arch/arm/cpu/pxa/usb.c Normal file
View File

@ -0,0 +1,89 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* (C) Copyright 2006
* Markus Klotzbuecher, DENX Software Engineering <mk@denx.de>
*/
#include <common.h>
#include <linux/delay.h>
#if defined(CONFIG_USB_OHCI_NEW) && defined(CONFIG_SYS_USB_OHCI_CPU_INIT)
# if defined(CONFIG_CPU_MONAHANS) || defined(CONFIG_CPU_PXA27X)
#include <asm/arch/pxa-regs.h>
#include <asm/io.h>
#include <usb.h>
int usb_cpu_init(void)
{
#if defined(CONFIG_CPU_MONAHANS)
/* Enable USB host clock. */
writel(readl(CKENA) | CKENA_2_USBHOST | CKENA_20_UDC, CKENA);
udelay(100);
#endif
#if defined(CONFIG_CPU_PXA27X)
/* Enable USB host clock. */
writel(readl(CKEN) | CKEN10_USBHOST, CKEN);
#endif
#if defined(CONFIG_CPU_MONAHANS)
/* Configure Port 2 for Host (USB Client Registers) */
writel(0x3000c, UP2OCR);
#endif
writel(readl(UHCHR) | UHCHR_FHR, UHCHR);
mdelay(11);
writel(readl(UHCHR) & ~UHCHR_FHR, UHCHR);
writel(readl(UHCHR) | UHCHR_FSBIR, UHCHR);
while (readl(UHCHR) & UHCHR_FSBIR)
udelay(1);
#if defined(CONFIG_CPU_MONAHANS) || defined(CONFIG_PXA27X)
writel(readl(UHCHR) & ~UHCHR_SSEP0, UHCHR);
#endif
#if defined(CONFIG_CPU_PXA27X)
writel(readl(UHCHR) & ~UHCHR_SSEP2, UHCHR);
#endif
writel(readl(UHCHR) & ~(UHCHR_SSEP1 | UHCHR_SSE), UHCHR);
return 0;
}
int usb_cpu_stop(void)
{
writel(readl(UHCHR) | UHCHR_FHR, UHCHR);
udelay(11);
writel(readl(UHCHR) & ~UHCHR_FHR, UHCHR);
writel(readl(UHCCOMS) | UHCCOMS_HCR, UHCCOMS);
udelay(10);
#if defined(CONFIG_CPU_MONAHANS) || defined(CONFIG_PXA27X)
writel(readl(UHCHR) | UHCHR_SSEP0, UHCHR);
#endif
#if defined(CONFIG_CPU_PXA27X)
writel(readl(UHCHR) | UHCHR_SSEP2, UHCHR);
#endif
writel(readl(UHCHR) | UHCHR_SSEP1 | UHCHR_SSE, UHCHR);
#if defined(CONFIG_CPU_MONAHANS)
/* Disable USB host clock. */
writel(readl(CKENA) & ~(CKENA_2_USBHOST | CKENA_20_UDC), CKENA);
udelay(100);
#endif
#if defined(CONFIG_CPU_PXA27X)
/* Disable USB host clock. */
writel(readl(CKEN) & ~CKEN10_USBHOST, CKEN);
#endif
return 0;
}
int usb_cpu_init_fail(void)
{
return usb_cpu_stop();
}
# endif /* defined(CONFIG_CPU_MONAHANS) || defined(CONFIG_CPU_PXA27X) */
#endif /* defined(CONFIG_USB_OHCI) && defined(CONFIG_SYS_USB_OHCI_CPU_INIT) */

View File

@ -0,0 +1,9 @@
# SPDX-License-Identifier: GPL-2.0+
#
# (C) Copyright 2000-2006
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
extra-y = start.o
obj-y += cpu.o
obj-y += timer.o

65
arch/arm/cpu/sa1100/cpu.c Normal file
View File

@ -0,0 +1,65 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* (C) Copyright 2002
* Sysgo Real-Time Solutions, GmbH <www.elinos.com>
* Marius Groeger <mgroeger@sysgo.de>
*
* (C) Copyright 2002
* Sysgo Real-Time Solutions, GmbH <www.elinos.com>
* Alex Zuepke <azu@sysgo.de>
*/
/*
* CPU specific code
*/
#include <common.h>
#include <command.h>
#include <cpu_func.h>
#include <irq_func.h>
#include <asm/system.h>
#include <asm/io.h>
static void cache_flush(void);
int cleanup_before_linux (void)
{
/*
* this function is called just before we call linux
* it prepares the processor for linux
*
* just disable everything that can disturb booting linux
*/
disable_interrupts();
/* turn off I-cache */
icache_disable();
dcache_disable();
/* flush I-cache */
cache_flush();
return (0);
}
/* flush I/D-cache */
static void cache_flush (void)
{
unsigned long i = 0;
asm ("mcr p15, 0, %0, c7, c5, 0": :"r" (i));
}
#define RST_BASE 0x90030000
#define RSRR 0x00
#define RCSR 0x04
__attribute__((noreturn)) void reset_cpu(void)
{
/* repeat endlessly */
while (1) {
writel(0, RST_BASE + RCSR);
writel(1, RST_BASE + RSRR);
}
}

126
arch/arm/cpu/sa1100/start.S Normal file
View File

@ -0,0 +1,126 @@
/* SPDX-License-Identifier: GPL-2.0+ */
/*
* armboot - Startup Code for SA1100 CPU
*
* Copyright (C) 1998 Dan Malek <dmalek@jlc.net>
* Copyright (C) 1999 Magnus Damm <kieraypc01.p.y.kie.era.ericsson.se>
* Copyright (C) 2000 Wolfgang Denk <wd@denx.de>
* Copyright (c) 2001 Alex Züpke <azu@sysgo.de>
*/
#include <asm-offsets.h>
#include <config.h>
/*
*************************************************************************
*
* Startup Code (reset vector)
*
* do important init only if we don't start from memory!
* relocate armboot to ram
* setup stack
* jump to second stage
*
*************************************************************************
*/
.globl reset
reset:
/*
* set the cpu to SVC32 mode
*/
mrs r0,cpsr
bic r0,r0,#0x1f
orr r0,r0,#0xd3
msr cpsr,r0
/*
* we do sys-critical inits only at reboot,
* not when booting from ram!
*/
#if !CONFIG_IS_ENABLED(SKIP_LOWLEVEL_INIT)
bl cpu_init_crit
#endif
bl _main
/*------------------------------------------------------------------------------*/
.globl c_runtime_cpu_setup
c_runtime_cpu_setup:
mov pc, lr
/*
*************************************************************************
*
* CPU_init_critical registers
*
* setup important registers
* setup memory timing
*
*************************************************************************
*/
/* Interrupt-Controller base address */
IC_BASE: .word 0x90050000
#define ICMR 0x04
/* Reset-Controller */
RST_BASE: .word 0x90030000
#define RSRR 0x00
#define RCSR 0x04
/* PWR */
PWR_BASE: .word 0x90020000
#define PSPR 0x08
#define PPCR 0x14
cpuspeed: .word CONFIG_SYS_CPUSPEED
cpu_init_crit:
/*
* mask all IRQs
*/
ldr r0, IC_BASE
mov r1, #0x00
str r1, [r0, #ICMR]
/* set clock speed */
ldr r0, PWR_BASE
ldr r1, cpuspeed
str r1, [r0, #PPCR]
#if !CONFIG_IS_ENABLED(SKIP_LOWLEVEL_INIT_ONLY)
/*
* before relocating, we have to setup RAM timing
* because memory timing is board-dependend, you will
* find a lowlevel_init.S in your board directory.
*/
mov ip, lr
bl lowlevel_init
mov lr, ip
#endif
/*
* disable MMU stuff and enable I-cache
*/
mrc p15,0,r0,c1,c0
bic r0, r0, #0x00002000 @ clear bit 13 (X)
bic r0, r0, #0x0000000f @ clear bits 3-0 (WCAM)
orr r0, r0, #0x00001000 @ set bit 12 (I) Icache
orr r0, r0, #0x00000002 @ set bit 1 (A) Align
mcr p15,0,r0,c1,c0
/*
* flush v4 I/D caches
*/
mov r0, #0
mcr p15, 0, r0, c7, c7, 0 /* flush v3/v4 cache */
mcr p15, 0, r0, c8, c7, 0 /* flush v4 TLB */
mov pc, lr

View File

@ -0,0 +1,66 @@
// SPDX-License-Identifier: GPL-2.0+
/*
* (C) Copyright 2002
* Sysgo Real-Time Solutions, GmbH <www.elinos.com>
* Marius Groeger <mgroeger@sysgo.de>
*
* (C) Copyright 2002
* Sysgo Real-Time Solutions, GmbH <www.elinos.com>
* Alex Zuepke <azu@sysgo.de>
*/
#include <common.h>
#include <SA-1100.h>
#include <time.h>
#include <linux/delay.h>
static ulong get_timer_masked (void)
{
return OSCR;
}
ulong get_timer (ulong base)
{
return get_timer_masked ();
}
void __udelay(unsigned long usec)
{
ulong tmo;
ulong endtime;
signed long diff;
if (usec >= 1000) {
tmo = usec / 1000;
tmo *= CONFIG_SYS_HZ;
tmo /= 1000;
} else {
tmo = usec * CONFIG_SYS_HZ;
tmo /= (1000*1000);
}
endtime = get_timer_masked () + tmo;
do {
ulong now = get_timer_masked ();
diff = endtime - now;
} while (diff >= 0);
}
/*
* This function is derived from PowerPC code (read timebase as long long).
* On ARM it just returns the timer value.
*/
unsigned long long get_ticks(void)
{
return get_timer(0);
}
/*
* This function is derived from PowerPC code (timebase clock frequency).
* On ARM it returns the number of timer ticks per second.
*/
ulong get_tbclk(void)
{
return CONFIG_SYS_HZ;
}

View File

@ -32,8 +32,8 @@ SECTIONS
} }
. = ALIGN(4); . = ALIGN(4);
__u_boot_list : { .u_boot_list : {
KEEP(*(SORT(__u_boot_list*))); KEEP(*(SORT(.u_boot_list*)));
} }
. = ALIGN(4); . = ALIGN(4);

View File

@ -15,7 +15,7 @@ ENTRY(_start)
SECTIONS SECTIONS
{ {
#ifndef CONFIG_CMDLINE #ifndef CONFIG_CMDLINE
/DISCARD/ : { *(__u_boot_list_2_cmd_*) } /DISCARD/ : { *(.u_boot_list_2_cmd_*) }
#endif #endif
#if defined(CONFIG_ARMV7_SECURE_BASE) && defined(CONFIG_ARMV7_NONSEC) #if defined(CONFIG_ARMV7_SECURE_BASE) && defined(CONFIG_ARMV7_NONSEC)
/* /*
@ -149,8 +149,8 @@ SECTIONS
. = .; . = .;
. = ALIGN(4); . = ALIGN(4);
__u_boot_list : { .u_boot_list : {
KEEP(*(SORT(__u_boot_list*))); KEEP(*(SORT(.u_boot_list*)));
} }
. = ALIGN(4); . = ALIGN(4);

View File

@ -5,9 +5,9 @@ dtb-$(CONFIG_TARGET_TAURUS) += at91sam9g20-taurus.dtb
dtb-$(CONFIG_TARGET_CORVUS) += at91sam9g45-corvus.dtb dtb-$(CONFIG_TARGET_CORVUS) += at91sam9g45-corvus.dtb
dtb-$(CONFIG_TARGET_GURNARD) += at91sam9g45-gurnard.dtb dtb-$(CONFIG_TARGET_GURNARD) += at91sam9g45-gurnard.dtb
dtb-$(CONFIG_TARGET_SMDKC100) += s5pc1xx-smdkc100.dtb dtb-$(CONFIG_S5PC100) += s5pc1xx-smdkc100.dtb
dtb-$(CONFIG_TARGET_S5P_GONI) += s5pc1xx-goni.dtb dtb-$(CONFIG_S5PC110) += s5pc1xx-goni.dtb
dtb-$(CONFIG_ARCH_EXYNOS4) += exynos4210-origen.dtb \ dtb-$(CONFIG_EXYNOS4) += exynos4210-origen.dtb \
exynos4210-smdkv310.dtb \ exynos4210-smdkv310.dtb \
exynos4210-universal_c210.dtb \ exynos4210-universal_c210.dtb \
exynos4210-trats.dtb \ exynos4210-trats.dtb \
@ -19,7 +19,7 @@ dtb-$(CONFIG_TARGET_HIKEY960) += hi3660-hikey960.dtb
dtb-$(CONFIG_TARGET_POPLAR) += hi3798cv200-poplar.dtb dtb-$(CONFIG_TARGET_POPLAR) += hi3798cv200-poplar.dtb
dtb-$(CONFIG_ARCH_EXYNOS5) += exynos5250-arndale.dtb \ dtb-$(CONFIG_EXYNOS5) += exynos5250-arndale.dtb \
exynos5250-snow.dtb \ exynos5250-snow.dtb \
exynos5250-spring.dtb \ exynos5250-spring.dtb \
exynos5250-smdk5250.dtb \ exynos5250-smdk5250.dtb \
@ -58,6 +58,7 @@ dtb-$(CONFIG_ARCH_KIRKWOOD) += \
kirkwood-ib62x0.dtb \ kirkwood-ib62x0.dtb \
kirkwood-iconnect.dtb \ kirkwood-iconnect.dtb \
kirkwood-is2.dtb \ kirkwood-is2.dtb \
kirkwood-km_kirkwood.dtb \
kirkwood-lsxhl.dtb \ kirkwood-lsxhl.dtb \
kirkwood-lschlv2.dtb \ kirkwood-lschlv2.dtb \
kirkwood-net2big.dtb \ kirkwood-net2big.dtb \
@ -89,9 +90,6 @@ dtb-$(CONFIG_ROCKCHIP_PX30) += \
dtb-$(CONFIG_ROCKCHIP_RK3036) += \ dtb-$(CONFIG_ROCKCHIP_RK3036) += \
rk3036-sdk.dtb rk3036-sdk.dtb
dtb-$(CONFIG_ROCKCHIP_RK3066) += \
rk3066a-mk808.dtb
dtb-$(CONFIG_ROCKCHIP_RK3128) += \ dtb-$(CONFIG_ROCKCHIP_RK3128) += \
rk3128-evb.dtb rk3128-evb.dtb
@ -136,11 +134,9 @@ dtb-$(CONFIG_ROCKCHIP_RK3368) += \
dtb-$(CONFIG_ROCKCHIP_RK3399) += \ dtb-$(CONFIG_ROCKCHIP_RK3399) += \
rk3399-evb.dtb \ rk3399-evb.dtb \
rk3399-eaidk-610.dtb \
rk3399-ficus.dtb \ rk3399-ficus.dtb \
rk3399-firefly.dtb \ rk3399-firefly.dtb \
rk3399-gru-bob.dtb \ rk3399-gru-bob.dtb \
rk3399-gru-kevin.dtb \
rk3399-khadas-edge.dtb \ rk3399-khadas-edge.dtb \
rk3399-khadas-edge-captain.dtb \ rk3399-khadas-edge-captain.dtb \
rk3399-khadas-edge-v.dtb \ rk3399-khadas-edge-v.dtb \
@ -232,12 +228,12 @@ dtb-$(CONFIG_ARCH_TEGRA) += tegra20-harmony.dtb \
tegra210-p2571.dtb \ tegra210-p2571.dtb \
tegra210-p3450-0000.dtb tegra210-p3450-0000.dtb
ifdef CONFIG_ARMADA_32BIT
ifdef CONFIG_ARMADA_375
dtb-$(CONFIG_ARCH_MVEBU) += \
armada-375-db.dtb
else
dtb-$(CONFIG_ARCH_MVEBU) += \ dtb-$(CONFIG_ARCH_MVEBU) += \
armada-3720-db.dtb \
armada-3720-espressobin.dtb \
armada-3720-turris-mox.dtb \
armada-3720-uDPU.dtb \
armada-375-db.dtb \
armada-385-atl-x530.dtb \ armada-385-atl-x530.dtb \
armada-385-atl-x530DP.dtb \ armada-385-atl-x530DP.dtb \
armada-385-db-88f6820-amc.dtb \ armada-385-db-88f6820-amc.dtb \
@ -246,6 +242,12 @@ dtb-$(CONFIG_ARCH_MVEBU) += \
armada-388-gp.dtb \ armada-388-gp.dtb \
armada-388-helios4.dtb \ armada-388-helios4.dtb \
armada-38x-controlcenterdc.dtb \ armada-38x-controlcenterdc.dtb \
armada-7040-db-nand.dtb \
armada-7040-db.dtb \
armada-8040-clearfog-gt-8k.dtb \
armada-8040-db.dtb \
armada-8040-mcbin.dtb \
armada-8040-puzzle-m801.dtb \
armada-xp-crs305-1g-4s.dtb \ armada-xp-crs305-1g-4s.dtb \
armada-xp-crs305-1g-4s-bit.dtb \ armada-xp-crs305-1g-4s-bit.dtb \
armada-xp-crs326-24g-2s.dtb \ armada-xp-crs326-24g-2s.dtb \
@ -256,21 +258,7 @@ dtb-$(CONFIG_ARCH_MVEBU) += \
armada-xp-gp.dtb \ armada-xp-gp.dtb \
armada-xp-maxbcm.dtb \ armada-xp-maxbcm.dtb \
armada-xp-synology-ds414.dtb \ armada-xp-synology-ds414.dtb \
armada-xp-theadorable.dtb armada-xp-theadorable.dtb \
endif
else
dtb-$(CONFIG_ARCH_MVEBU) += \
armada-3720-db.dtb \
armada-3720-espressobin.dtb \
armada-3720-turris-mox.dtb \
armada-3720-eDPU.dtb \
armada-3720-uDPU.dtb \
armada-7040-db-nand.dtb \
armada-7040-db.dtb \
armada-8040-clearfog-gt-8k.dtb \
armada-8040-db.dtb \
armada-8040-mcbin.dtb \
armada-8040-puzzle-m801.dtb \
cn9130-db-A.dtb \ cn9130-db-A.dtb \
cn9130-db-B.dtb \ cn9130-db-B.dtb \
cn9131-db-A.dtb \ cn9131-db-A.dtb \
@ -279,7 +267,6 @@ dtb-$(CONFIG_ARCH_MVEBU) += \
cn9132-db-B.dtb \ cn9132-db-B.dtb \
cn9130-crb-A.dtb \ cn9130-crb-A.dtb \
cn9130-crb-B.dtb cn9130-crb-B.dtb
endif
dtb-$(CONFIG_ARCH_SYNQUACER) += synquacer-sc2a11-developerbox.dtb dtb-$(CONFIG_ARCH_SYNQUACER) += synquacer-sc2a11-developerbox.dtb
dtb-$(CONFIG_ARCH_UNIPHIER_LD11) += \ dtb-$(CONFIG_ARCH_UNIPHIER_LD11) += \
@ -351,8 +338,6 @@ dtb-$(CONFIG_ARCH_ZYNQMP) += \
zynqmp-mini-qspi.dtb \ zynqmp-mini-qspi.dtb \
zynqmp-sm-k26-revA.dtb \ zynqmp-sm-k26-revA.dtb \
zynqmp-smk-k26-revA.dtb \ zynqmp-smk-k26-revA.dtb \
zynqmp-sck-kr-g-revA.dtbo \
zynqmp-sck-kr-g-revB.dtbo \
zynqmp-sck-kv-g-revA.dtbo \ zynqmp-sck-kv-g-revA.dtbo \
zynqmp-sck-kv-g-revB.dtbo \ zynqmp-sck-kv-g-revB.dtbo \
zynqmp-topic-miamimp-xilinx-xdp-v1r1.dtb \ zynqmp-topic-miamimp-xilinx-xdp-v1r1.dtb \
@ -364,7 +349,6 @@ dtb-$(CONFIG_ARCH_ZYNQMP) += \
zynqmp-zcu104-revA.dtb \ zynqmp-zcu104-revA.dtb \
zynqmp-zcu104-revC.dtb \ zynqmp-zcu104-revC.dtb \
zynqmp-zcu106-revA.dtb \ zynqmp-zcu106-revA.dtb \
zynqmp-zcu106-rev1.0.dtb \
zynqmp-zcu111-revA.dtb \ zynqmp-zcu111-revA.dtb \
zynqmp-zcu1275-revA.dtb \ zynqmp-zcu1275-revA.dtb \
zynqmp-zcu1275-revB.dtb \ zynqmp-zcu1275-revB.dtb \
@ -383,32 +367,26 @@ dtb-$(CONFIG_ARCH_VERSAL) += \
versal-mini-emmc0.dtb \ versal-mini-emmc0.dtb \
versal-mini-emmc1.dtb \ versal-mini-emmc1.dtb \
xilinx-versal-virt.dtb xilinx-versal-virt.dtb
dtb-$(CONFIG_ARCH_VERSAL_NET) += \
versal-net-mini.dtb \
xilinx-versal-net-virt.dtb
dtb-$(CONFIG_ARCH_ZYNQMP_R5) += \ dtb-$(CONFIG_ARCH_ZYNQMP_R5) += \
zynqmp-r5.dtb zynqmp-r5.dtb
dtb-$(CONFIG_AM33XX) += \ dtb-$(CONFIG_AM33XX) += \
am335x-baltos.dtb \ am335x-baltos.dtb \
am335x-bone.dtb \ am335x-bone.dtb \
am335x-boneblack.dtb \ am335x-boneblack.dtb \
am335x-boneblack-wireless.dtb \
am335x-boneblue.dtb \
am335x-brppt1-mmc.dtb \ am335x-brppt1-mmc.dtb \
am335x-brppt1-nand.dtb \
am335x-brppt1-spi.dtb \
am335x-brxre1.dtb \ am335x-brxre1.dtb \
am335x-brsmarc1.dtb \ am335x-brsmarc1.dtb \
am335x-draco.dtb \ am335x-draco.dtb \
am335x-evm.dtb \ am335x-evm.dtb \
am335x-evmsk.dtb \ am335x-evmsk.dtb \
am335x-bonegreen.dtb \ am335x-bonegreen.dtb \
am335x-bonegreen-wireless.dtb \
am335x-icev2.dtb \ am335x-icev2.dtb \
am335x-pocketbeagle.dtb \ am335x-pocketbeagle.dtb \
am335x-pxm50.dtb \ am335x-pxm50.dtb \
am335x-rut.dtb \ am335x-rut.dtb \
am335x-sancloud-bbe.dtb \ am335x-sancloud-bbe.dtb \
am335x-sancloud-bbe-lite.dtb \
am335x-sancloud-bbe-extended-wifi.dtb \
am335x-shc.dtb \ am335x-shc.dtb \
am335x-pdu001.dtb \ am335x-pdu001.dtb \
am335x-chiliboard.dtb \ am335x-chiliboard.dtb \
@ -424,14 +402,12 @@ dtb-$(CONFIG_AM43XX) += am437x-gp-evm.dtb am437x-sk-evm.dtb \
am437x-cm-t43.dtb am437x-cm-t43.dtb
dtb-$(CONFIG_TARGET_AM3517_EVM) += am3517-evm.dtb dtb-$(CONFIG_TARGET_AM3517_EVM) += am3517-evm.dtb
dtb-$(CONFIG_TI816X) += dm8168-evm.dtb dtb-$(CONFIG_TI816X) += dm8168-evm.dtb
dtb-$(CONFIG_TARGET_THUNDERX_88XX) += thunderx-88xx.dtb dtb-$(CONFIG_THUNDERX) += thunderx-88xx.dtb
dtb-$(CONFIG_ARCH_SOCFPGA) += \ dtb-$(CONFIG_ARCH_SOCFPGA) += \
socfpga_agilex_socdk.dtb \ socfpga_agilex_socdk.dtb \
socfpga_arria5_secu1.dtb \ socfpga_arria5_secu1.dtb \
socfpga_arria5_socdk.dtb \ socfpga_arria5_socdk.dtb \
socfpga_arria10_chameleonv3_270_3.dtb \
socfpga_arria10_chameleonv3_480_2.dtb \
socfpga_arria10_socdk_sdmmc.dtb \ socfpga_arria10_socdk_sdmmc.dtb \
socfpga_cyclone5_mcvevk.dtb \ socfpga_cyclone5_mcvevk.dtb \
socfpga_cyclone5_is1.dtb \ socfpga_cyclone5_is1.dtb \
@ -514,7 +490,6 @@ dtb-$(CONFIG_TARGET_TEN64) += fsl-ls1088a-ten64.dtb
dtb-$(CONFIG_TARGET_DRAGONBOARD410C) += dragonboard410c.dtb dtb-$(CONFIG_TARGET_DRAGONBOARD410C) += dragonboard410c.dtb
dtb-$(CONFIG_TARGET_DRAGONBOARD820C) += dragonboard820c.dtb dtb-$(CONFIG_TARGET_DRAGONBOARD820C) += dragonboard820c.dtb
dtb-$(CONFIG_TARGET_STARQLTECHN) += starqltechn.dtb dtb-$(CONFIG_TARGET_STARQLTECHN) += starqltechn.dtb
dtb-$(CONFIG_TARGET_QCS404EVB) += qcs404-evb.dtb
dtb-$(CONFIG_TARGET_STEMMY) += ste-ux500-samsung-stemmy.dtb dtb-$(CONFIG_TARGET_STEMMY) += ste-ux500-samsung-stemmy.dtb
@ -554,8 +529,7 @@ dtb-$(CONFIG_MACH_SUN4I) += \
sun4i-a10-olinuxino-lime.dtb \ sun4i-a10-olinuxino-lime.dtb \
sun4i-a10-pcduino.dtb \ sun4i-a10-pcduino.dtb \
sun4i-a10-pcduino2.dtb \ sun4i-a10-pcduino2.dtb \
sun4i-a10-pov-protab2-ips9.dtb \ sun4i-a10-pov-protab2-ips9.dtb
sun4i-a10-topwise-a721.dtb
dtb-$(CONFIG_MACH_SUN5I) += \ dtb-$(CONFIG_MACH_SUN5I) += \
sun5i-a10s-auxtek-t003.dtb \ sun5i-a10s-auxtek-t003.dtb \
sun5i-a10s-auxtek-t004.dtb \ sun5i-a10s-auxtek-t004.dtb \
@ -570,14 +544,11 @@ dtb-$(CONFIG_MACH_SUN5I) += \
sun5i-a13-hsg-h702.dtb \ sun5i-a13-hsg-h702.dtb \
sun5i-a13-inet-86vs.dtb \ sun5i-a13-inet-86vs.dtb \
sun5i-a13-inet-98v-rev2.dtb \ sun5i-a13-inet-98v-rev2.dtb \
sun5i-a13-licheepi-one.dtb \
sun5i-a13-olinuxino.dtb \ sun5i-a13-olinuxino.dtb \
sun5i-a13-olinuxino-micro.dtb \ sun5i-a13-olinuxino-micro.dtb \
sun5i-a13-pocketbook-touch-lux-3.dtb \
sun5i-a13-q8-tablet.dtb \ sun5i-a13-q8-tablet.dtb \
sun5i-a13-utoo-p66.dtb \ sun5i-a13-utoo-p66.dtb \
sun5i-gr8-chip-pro.dtb \ sun5i-gr8-chip-pro.dtb \
sun5i-gr8-evb.dtb \
sun5i-r8-chip.dtb sun5i-r8-chip.dtb
dtb-$(CONFIG_MACH_SUN6I) += \ dtb-$(CONFIG_MACH_SUN6I) += \
sun6i-a31-app4-evb1.dtb \ sun6i-a31-app4-evb1.dtb \
@ -601,13 +572,11 @@ dtb-$(CONFIG_MACH_SUN7I) += \
sun7i-a20-bananapro.dtb \ sun7i-a20-bananapro.dtb \
sun7i-a20-cubieboard2.dtb \ sun7i-a20-cubieboard2.dtb \
sun7i-a20-cubietruck.dtb \ sun7i-a20-cubietruck.dtb \
sun7i-a20-haoyu-marsboard.dtb \
sun7i-a20-hummingbird.dtb \ sun7i-a20-hummingbird.dtb \
sun7i-a20-i12-tvbox.dtb \ sun7i-a20-i12-tvbox.dtb \
sun7i-a20-icnova-swac.dtb \ sun7i-a20-icnova-swac.dtb \
sun7i-a20-itead-ibox.dtb \ sun7i-a20-itead-ibox.dtb \
sun7i-a20-lamobo-r1.dtb \ sun7i-a20-lamobo-r1.dtb \
sun7i-a20-linutronix-testbox-v2.dtb \
sun7i-a20-m3.dtb \ sun7i-a20-m3.dtb \
sun7i-a20-m5.dtb \ sun7i-a20-m5.dtb \
sun7i-a20-mk808c.dtb \ sun7i-a20-mk808c.dtb \
@ -615,7 +584,6 @@ dtb-$(CONFIG_MACH_SUN7I) += \
sun7i-a20-olimex-som204-evb.dtb \ sun7i-a20-olimex-som204-evb.dtb \
sun7i-a20-olimex-som204-evb-emmc.dtb \ sun7i-a20-olimex-som204-evb-emmc.dtb \
sun7i-a20-olinuxino-lime.dtb \ sun7i-a20-olinuxino-lime.dtb \
sun7i-a20-olinuxino-lime-emmc.dtb \
sun7i-a20-olinuxino-lime2.dtb \ sun7i-a20-olinuxino-lime2.dtb \
sun7i-a20-olinuxino-lime2-emmc.dtb \ sun7i-a20-olinuxino-lime2-emmc.dtb \
sun7i-a20-olinuxino-micro.dtb \ sun7i-a20-olinuxino-micro.dtb \
@ -632,23 +600,17 @@ dtb-$(CONFIG_MACH_SUN8I_A23) += \
sun8i-a23-evb.dtb \ sun8i-a23-evb.dtb \
sun8i-a23-gt90h-v4.dtb \ sun8i-a23-gt90h-v4.dtb \
sun8i-a23-inet86dz.dtb \ sun8i-a23-inet86dz.dtb \
sun8i-a23-ippo-q8h-v1.2.dtb \
sun8i-a23-ippo-q8h-v5.dtb \
sun8i-a23-polaroid-mid2407pxe03.dtb \ sun8i-a23-polaroid-mid2407pxe03.dtb \
sun8i-a23-polaroid-mid2809pxe04.dtb \ sun8i-a23-polaroid-mid2809pxe04.dtb \
sun8i-a23-q8-tablet.dtb sun8i-a23-q8-tablet.dtb
dtb-$(CONFIG_MACH_SUN8I_A33) += \ dtb-$(CONFIG_MACH_SUN8I_A33) += \
sun8i-a33-et-q8-v1.6.dtb \
sun8i-a33-ga10h-v1.1.dtb \ sun8i-a33-ga10h-v1.1.dtb \
sun8i-a33-inet-d978-rev2.dtb \ sun8i-a33-inet-d978-rev2.dtb \
sun8i-a33-inet-u70b-rev1.dtb \
sun8i-a33-ippo-q8h-v1.2.dtb \
sun8i-a33-olinuxino.dtb \ sun8i-a33-olinuxino.dtb \
sun8i-a33-q8-tablet.dtb \ sun8i-a33-q8-tablet.dtb \
sun8i-a33-sinlinx-sina33.dtb \ sun8i-a33-sinlinx-sina33.dtb \
sun8i-r16-bananapi-m2m.dtb \ sun8i-r16-bananapi-m2m.dtb \
sun8i-r16-nintendo-nes-classic.dtb \ sun8i-r16-nintendo-nes-classic.dtb \
sun8i-r16-nintendo-super-nes-classic.dtb \
sun8i-r16-parrot.dtb sun8i-r16-parrot.dtb
dtb-$(CONFIG_MACH_SUN8I_A83T) += \ dtb-$(CONFIG_MACH_SUN8I_A83T) += \
sun8i-a83t-allwinner-h8homlet-v2.dtb \ sun8i-a83t-allwinner-h8homlet-v2.dtb \
@ -671,7 +633,6 @@ dtb-$(CONFIG_MACH_SUN8I_H3) += \
sun8i-h3-nanopi-m1-plus.dtb \ sun8i-h3-nanopi-m1-plus.dtb \
sun8i-h3-nanopi-neo.dtb \ sun8i-h3-nanopi-neo.dtb \
sun8i-h3-nanopi-neo-air.dtb \ sun8i-h3-nanopi-neo-air.dtb \
sun8i-h3-nanopi-r1.dtb \
sun8i-h3-orangepi-2.dtb \ sun8i-h3-orangepi-2.dtb \
sun8i-h3-orangepi-lite.dtb \ sun8i-h3-orangepi-lite.dtb \
sun8i-h3-orangepi-one.dtb \ sun8i-h3-orangepi-one.dtb \
@ -684,13 +645,9 @@ dtb-$(CONFIG_MACH_SUN8I_H3) += \
sun8i-h3-zeropi.dtb sun8i-h3-zeropi.dtb
dtb-$(CONFIG_MACH_SUN8I_R40) += \ dtb-$(CONFIG_MACH_SUN8I_R40) += \
sun8i-r40-bananapi-m2-ultra.dtb \ sun8i-r40-bananapi-m2-ultra.dtb \
sun8i-r40-oka40i-c.dtb \
sun8i-t3-cqa3t-bv3.dtb \
sun8i-v40-bananapi-m2-berry.dtb sun8i-v40-bananapi-m2-berry.dtb
dtb-$(CONFIG_MACH_SUN8I_V3S) += \ dtb-$(CONFIG_MACH_SUN8I_V3S) += \
sun8i-s3-elimo-initium.dtb \
sun8i-s3-pinecube.dtb \ sun8i-s3-pinecube.dtb \
sun8i-v3-sl631-imx179.dtb \
sun8i-v3s-licheepi-zero.dtb sun8i-v3s-licheepi-zero.dtb
dtb-$(CONFIG_MACH_SUN50I_H5) += \ dtb-$(CONFIG_MACH_SUN50I_H5) += \
sun50i-h5-bananapi-m2-plus.dtb \ sun50i-h5-bananapi-m2-plus.dtb \
@ -712,11 +669,9 @@ dtb-$(CONFIG_MACH_SUN50I_H6) += \
sun50i-h6-orangepi-one-plus.dtb \ sun50i-h6-orangepi-one-plus.dtb \
sun50i-h6-pine-h64.dtb \ sun50i-h6-pine-h64.dtb \
sun50i-h6-pine-h64-model-b.dtb \ sun50i-h6-pine-h64-model-b.dtb \
sun50i-h6-tanix-tx6.dtb \ sun50i-h6-tanix-tx6.dtb
sun50i-h6-tanix-tx6-mini.dtb
dtb-$(CONFIG_MACH_SUN50I_H616) += \ dtb-$(CONFIG_MACH_SUN50I_H616) += \
sun50i-h616-orangepi-zero2.dtb \ sun50i-h616-orangepi-zero2.dtb
sun50i-h616-x96-mate.dtb
dtb-$(CONFIG_MACH_SUN50I) += \ dtb-$(CONFIG_MACH_SUN50I) += \
sun50i-a64-amarula-relic.dtb \ sun50i-a64-amarula-relic.dtb \
sun50i-a64-bananapi-m64.dtb \ sun50i-a64-bananapi-m64.dtb \
@ -740,7 +695,8 @@ dtb-$(CONFIG_MACH_SUN9I) += \
sun9i-a80-cubieboard4.dtb \ sun9i-a80-cubieboard4.dtb \
sun9i-a80-cx-a99.dtb sun9i-a80-cx-a99.dtb
dtb-$(CONFIG_VF610) += vf610-colibri-eval-v3.dtb \ dtb-$(CONFIG_VF610) += vf500-colibri.dtb \
vf610-colibri.dtb \
vf610-twr.dtb \ vf610-twr.dtb \
vf610-pcm052.dtb \ vf610-pcm052.dtb \
vf610-bk4r1.dtb vf610-bk4r1.dtb
@ -773,7 +729,6 @@ dtb-y += \
imx6dl-cubox-i-emmc-som-v15.dtb \ imx6dl-cubox-i-emmc-som-v15.dtb \
imx6dl-cubox-i-som-v15.dtb \ imx6dl-cubox-i-som-v15.dtb \
imx6dl-dhcom-pdk2.dtb \ imx6dl-dhcom-pdk2.dtb \
imx6dl-dhcom-picoitx.dts \
imx6dl-gw51xx.dtb \ imx6dl-gw51xx.dtb \
imx6dl-gw52xx.dtb \ imx6dl-gw52xx.dtb \
imx6dl-gw53xx.dtb \ imx6dl-gw53xx.dtb \
@ -807,14 +762,12 @@ dtb-y += \
imx6dl-sabreauto.dtb \ imx6dl-sabreauto.dtb \
imx6dl-sabresd.dtb \ imx6dl-sabresd.dtb \
imx6dl-wandboard-revd1.dtb \ imx6dl-wandboard-revd1.dtb \
imx6s-dhcom-drc02.dtb
endif endif
ifneq ($(CONFIG_MX6Q)$(CONFIG_MX6QDL),) ifneq ($(CONFIG_MX6Q)$(CONFIG_MX6QDL),)
dtb-y += \ dtb-y += \
imx6q-apalis-eval.dtb \ imx6-apalis.dtb \
imx6q-bosch-acc.dtb \
imx6q-cm-fx6.dtb \ imx6q-cm-fx6.dtb \
imx6q-cubox-i.dtb \ imx6q-cubox-i.dtb \
imx6q-cubox-i-emmc-som-v15.dtb \ imx6q-cubox-i-emmc-som-v15.dtb \
@ -890,24 +843,23 @@ dtb-$(CONFIG_MX6UL) += \
imx6ul-phytec-segin-ff-rdk-nand.dtb \ imx6ul-phytec-segin-ff-rdk-nand.dtb \
imx6ul-pico-hobbit.dtb \ imx6ul-pico-hobbit.dtb \
imx6ul-pico-pi.dtb \ imx6ul-pico-pi.dtb \
imx6ul-kontron-bl.dtb \ imx6ul-kontron-n631x-s.dtb \
imx6ull-kontron-bl.dtb imx6ull-kontron-n641x-s.dtb
dtb-$(CONFIG_MX6ULL) += \ dtb-$(CONFIG_MX6ULL) += \
imx6ull-14x14-evk.dtb \ imx6ull-14x14-evk.dtb \
imx6ull-colibri-emmc-eval-v3.dtb \ imx6ull-colibri.dtb \
imx6ull-colibri-eval-v3.dtb \ imx6ull-colibri-emmc.dtb \
imx6ull-myir-mys-6ulx-eval.dtb \ imx6ull-myir-mys-6ulx-eval.dtb \
imx6ull-seeed-npi-imx6ull-dev-board.dtb \ imx6ull-seeed-npi-imx6ull-dev-board.dtb \
imx6ull-phytec-segin-ff-rdk-emmc.dtb \ imx6ull-phytec-segin-ff-rdk-emmc.dtb \
imx6ull-dart-6ul.dtb \ imx6ull-dart-6ul.dtb \
imx6ull-somlabs-visionsom.dtb \ imx6ull-somlabs-visionsom.dtb \
imx6ulz-bsh-smm-m2.dtb \
imx6ulz-14x14-evk.dtb imx6ulz-14x14-evk.dtb
dtb-$(CONFIG_ARCH_MX6) += \ dtb-$(CONFIG_ARCH_MX6) += \
imx6q-apalis-eval.dtb \ imx6-apalis.dtb \
imx6dl-colibri-eval-v3.dtb imx6-colibri.dtb
dtb-$(CONFIG_O4_IMX_NANO) += \ dtb-$(CONFIG_O4_IMX_NANO) += \
o4-imx-nano.dtb o4-imx-nano.dtb
@ -918,8 +870,8 @@ dtb-$(CONFIG_EV_IMX280_NANO_X_MB) += \
dtb-$(CONFIG_MX7) += imx7d-sdb.dtb \ dtb-$(CONFIG_MX7) += imx7d-sdb.dtb \
imx7d-sdb-qspi.dtb \ imx7d-sdb-qspi.dtb \
imx7-cm.dtb \ imx7-cm.dtb \
imx7d-colibri-emmc-eval-v3.dtb \ imx7-colibri-emmc.dtb \
imx7d-colibri-eval-v3.dtb \ imx7-colibri-rawnand.dtb \
imx7s-warp.dtb \ imx7s-warp.dtb \
imx7d-meerkat96.dtb \ imx7d-meerkat96.dtb \
imx7d-pico-pi.dtb \ imx7d-pico-pi.dtb \
@ -938,6 +890,7 @@ dtb-$(CONFIG_ARCH_IMX8) += \
imx8qm-rom7720-a1.dtb \ imx8qm-rom7720-a1.dtb \
fsl-imx8qxp-ai_ml.dtb \ fsl-imx8qxp-ai_ml.dtb \
fsl-imx8qxp-colibri.dtb \ fsl-imx8qxp-colibri.dtb \
fsl-imx8qxp-apalis.dtb \
fsl-imx8qxp-mek.dtb \ fsl-imx8qxp-mek.dtb \
imx8-deneb.dtb \ imx8-deneb.dtb \
imx8-giedi.dtb imx8-giedi.dtb
@ -946,25 +899,19 @@ dtb-$(CONFIG_ARCH_IMX8ULP) += \
imx8ulp-evk.dtb imx8ulp-evk.dtb
dtb-$(CONFIG_ARCH_IMX8M) += \ dtb-$(CONFIG_ARCH_IMX8M) += \
imx8mm-data-modul-edm-sbc.dtb \
imx8mm-evk.dtb \ imx8mm-evk.dtb \
imx8mm-icore-mx8mm-ctouch2.dtb \ imx8mm-icore-mx8mm-ctouch2.dtb \
imx8mm-icore-mx8mm-edimm2.2.dtb \ imx8mm-icore-mx8mm-edimm2.2.dtb \
imx8mm-kontron-bl.dtb \ imx8mm-kontron-n801x-s.dtb \
imx8mm-kontron-bl-osm-s.dtb \ imx8mm-kontron-n801x-s-lvds.dtb \
imx8mm-mx8menlo.dtb \
imx8mm-venice.dtb \ imx8mm-venice.dtb \
imx8mm-venice-gw71xx-0x.dtb \ imx8mm-venice-gw71xx-0x.dtb \
imx8mm-venice-gw72xx-0x.dtb \ imx8mm-venice-gw72xx-0x.dtb \
imx8mm-venice-gw73xx-0x.dtb \ imx8mm-venice-gw73xx-0x.dtb \
imx8mm-venice-gw7901.dtb \ imx8mm-venice-gw7901.dtb \
imx8mm-venice-gw7902.dtb \ imx8mm-venice-gw7902.dtb \
imx8mm-venice-gw7903.dtb \ imx8mm-verdin.dtb \
imx8mm-venice-gw7904.dtb \
imx8mm-verdin-wifi-dev.dtb \
phycore-imx8mm.dtb \ phycore-imx8mm.dtb \
imx8mn-bsh-smm-s2.dtb \
imx8mn-bsh-smm-s2pro.dtb \
imx8mn-ddr4-evk.dtb \ imx8mn-ddr4-evk.dtb \
imx8mq-cm.dtb \ imx8mq-cm.dtb \
imx8mn-evk.dtb \ imx8mn-evk.dtb \
@ -976,23 +923,14 @@ dtb-$(CONFIG_ARCH_IMX8M) += \
imx8mn-beacon-kit.dtb \ imx8mn-beacon-kit.dtb \
imx8mq-mnt-reform2.dtb \ imx8mq-mnt-reform2.dtb \
imx8mq-phanbell.dtb \ imx8mq-phanbell.dtb \
imx8mp-dhcom-pdk2.dtb \
imx8mp-evk.dtb \ imx8mp-evk.dtb \
imx8mp-icore-mx8mp-edimm2.2.dtb \
imx8mp-phyboard-pollux-rdk.dtb \ imx8mp-phyboard-pollux-rdk.dtb \
imx8mp-venice.dtb \ imx8mp-verdin.dtb \
imx8mp-venice-gw74xx.dtb \
imx8mp-verdin-wifi-dev.dtb \
imx8mq-pico-pi.dtb \ imx8mq-pico-pi.dtb \
imx8mq-kontron-pitx-imx8m.dtb \ imx8mq-kontron-pitx-imx8m.dtb
imx8mq-librem5-r4.dtb
dtb-$(CONFIG_ARCH_IMX9) += \
imx93-11x11-evk.dtb
dtb-$(CONFIG_ARCH_IMXRT) += imxrt1050-evk.dtb \ dtb-$(CONFIG_ARCH_IMXRT) += imxrt1050-evk.dtb \
imxrt1020-evk.dtb \ imxrt1020-evk.dtb
imxrt1170-evk.dtb \
dtb-$(CONFIG_RCAR_GEN2) += \ dtb-$(CONFIG_RCAR_GEN2) += \
r8a7790-lager-u-boot.dtb \ r8a7790-lager-u-boot.dtb \
@ -1068,8 +1006,6 @@ dtb-$(CONFIG_TARGET_AT91SAM9X5EK) += \
dtb-$(CONFIG_TARGET_SAM9X60EK) += sam9x60ek.dtb dtb-$(CONFIG_TARGET_SAM9X60EK) += sam9x60ek.dtb
dtb-$(CONFIG_TARGET_SAM9X60_CURIOSITY) += at91-sam9x60_curiosity.dtb
dtb-$(CONFIG_TARGET_AT91SAM9N12EK) += at91sam9n12ek.dtb dtb-$(CONFIG_TARGET_AT91SAM9N12EK) += at91sam9n12ek.dtb
dtb-$(CONFIG_TARGET_GARDENA_SMART_GATEWAY_AT91SAM) += \ dtb-$(CONFIG_TARGET_GARDENA_SMART_GATEWAY_AT91SAM) += \
@ -1094,8 +1030,6 @@ dtb-$(CONFIG_TARGET_OMAP3_BEAGLE) += \
omap3-beagle-xm.dtb \ omap3-beagle-xm.dtb \
omap3-beagle.dtb omap3-beagle.dtb
dtb-$(CONFIG_TARGET_DEVKIT8000) += omap3-devkit8000.dtb
dtb-$(CONFIG_TARGET_OMAP3_IGEP00X0) += \ dtb-$(CONFIG_TARGET_OMAP3_IGEP00X0) += \
omap3-igep0020.dtb omap3-igep0020.dtb
@ -1111,7 +1045,7 @@ dtb-$(CONFIG_TARGET_OMAP5_UEVM) += \
omap5-uevm.dtb omap5-uevm.dtb
dtb-$(CONFIG_TARGET_SAMA7G5EK) += \ dtb-$(CONFIG_TARGET_SAMA7G5EK) += \
at91-sama7g5ek.dtb sama7g5ek.dtb
dtb-$(CONFIG_TARGET_SAMA5D2_PTC_EK) += \ dtb-$(CONFIG_TARGET_SAMA5D2_PTC_EK) += \
at91-sama5d2_ptc_ek.dtb at91-sama5d2_ptc_ek.dtb
@ -1165,74 +1099,40 @@ dtb-$(CONFIG_ARCH_BCM283X) += \
bcm2837-rpi-cm3-io3.dtb \ bcm2837-rpi-cm3-io3.dtb \
bcm2711-rpi-4-b.dtb bcm2711-rpi-4-b.dtb
dtb-$(CONFIG_ARCH_BCM63158) += \
bcm963158.dtb
dtb-$(CONFIG_ARCH_BCM68360) += \
bcm968360bg.dtb
dtb-$(CONFIG_ARCH_BCM6858) += \
bcm968580xref.dtb
dtb-$(CONFIG_TARGET_BCMNS3) += ns3-board.dtb dtb-$(CONFIG_TARGET_BCMNS3) += ns3-board.dtb
dtb-$(CONFIG_ARCH_BCMSTB) += bcm7xxx.dtb dtb-$(CONFIG_ARCH_BCMSTB) += bcm7xxx.dtb
dtb-$(CONFIG_BCM47622) += \
bcm947622.dtb
dtb-$(CONFIG_BCM4908) += \
bcm94908.dtb
dtb-$(CONFIG_BCM4912) += \
bcm94912.dtb
dtb-$(CONFIG_BCM63138) += \
bcm963138.dtb
dtb-$(CONFIG_BCM63146) += \
bcm963146.dtb
dtb-$(CONFIG_BCM63148) += \
bcm963148.dtb
dtb-$(CONFIG_BCM63158) += \
bcm963158.dtb
dtb-$(CONFIG_BCM63178) += \
bcm963178.dtb
dtb-$(CONFIG_BCM6756) += \
bcm96756.dtb
dtb-$(CONFIG_BCM6813) += \
bcm96813.dtb
dtb-$(CONFIG_BCM6846) += \
bcm96846.dtb
dtb-$(CONFIG_BCM6855) += \
bcm96855.dtb \
bcm96753ref.dtb
dtb-$(CONFIG_BCM6856) += \
bcm96856.dtb \
bcm968360bg.dtb
dtb-$(CONFIG_BCM6858) += \
bcm96858.dtb \
bcm968580xref.dtb
dtb-$(CONFIG_BCM6878) += \
bcm96878.dtb
dtb-$(CONFIG_ASPEED_AST2500) += ast2500-evb.dtb dtb-$(CONFIG_ASPEED_AST2500) += ast2500-evb.dtb
dtb-$(CONFIG_ASPEED_AST2600) += ast2600-evb.dtb dtb-$(CONFIG_ASPEED_AST2600) += ast2600-evb.dtb
dtb-$(CONFIG_ARCH_STI) += stih410-b2260.dtb dtb-$(CONFIG_ARCH_STI) += stih410-b2260.dtb
dtb-$(CONFIG_STM32MP13x) += \
stm32mp135f-dk.dtb
dtb-$(CONFIG_STM32MP15x) += \ dtb-$(CONFIG_STM32MP15x) += \
stm32mp157a-dk1.dtb \ stm32mp157a-dk1.dtb \
stm32mp157a-dk1-scmi.dtb \
stm32mp157a-icore-stm32mp1-ctouch2.dtb \ stm32mp157a-icore-stm32mp1-ctouch2.dtb \
stm32mp157a-icore-stm32mp1-edimm2.2.dtb \ stm32mp157a-icore-stm32mp1-edimm2.2.dtb \
stm32mp157a-microgea-stm32mp1-microdev2.0.dtb \ stm32mp157a-microgea-stm32mp1-microdev2.0.dtb \
stm32mp157a-microgea-stm32mp1-microdev2.0-of7.dtb \ stm32mp157a-microgea-stm32mp1-microdev2.0-of7.dtb \
stm32mp157c-dk2.dtb \ stm32mp157c-dk2.dtb \
stm32mp157c-dk2-scmi.dtb \
stm32mp157c-ed1.dtb \ stm32mp157c-ed1.dtb \
stm32mp157c-ed1-scmi.dtb \
stm32mp157c-ev1.dtb \ stm32mp157c-ev1.dtb \
stm32mp157c-ev1-scmi.dtb \
stm32mp157c-odyssey.dtb \ stm32mp157c-odyssey.dtb \
stm32mp15xx-dhcom-drc02.dtb \ stm32mp15xx-dhcom-drc02.dtb \
stm32mp15xx-dhcom-pdk2.dtb \ stm32mp15xx-dhcom-pdk2.dtb \
stm32mp15xx-dhcom-picoitx.dtb \ stm32mp15xx-dhcom-picoitx.dtb \
stm32mp15xx-dhcor-avenger96.dtb \ stm32mp15xx-dhcor-avenger96.dtb
stm32mp15xx-dhcor-drc-compact.dtb \
stm32mp15xx-dhcor-testbench.dtb
dtb-$(CONFIG_SOC_K3_AM654) += \ dtb-$(CONFIG_SOC_K3_AM6) += \
k3-am654-base-board.dtb \ k3-am654-base-board.dtb \
k3-am654-r5-base-board.dtb \ k3-am654-r5-base-board.dtb \
k3-am65-iot2050-spl.dtb \ k3-am65-iot2050-spl.dtb \
@ -1253,31 +1153,17 @@ dtb-$(CONFIG_SOC_K3_AM642) += k3-am642-evm.dtb \
k3-am642-sk.dtb \ k3-am642-sk.dtb \
k3-am642-r5-sk.dtb k3-am642-r5-sk.dtb
dtb-$(CONFIG_SOC_K3_AM625) += k3-am625-sk.dtb \
k3-am625-r5-sk.dtb
dtb-$(CONFIG_ARCH_MEDIATEK) += \ dtb-$(CONFIG_ARCH_MEDIATEK) += \
mt7622-rfb.dtb \ mt7622-rfb.dtb \
mt7623a-unielec-u7623-02-emmc.dtb \ mt7623a-unielec-u7623-02-emmc.dtb \
mt7622-bananapi-bpi-r64.dtb \ mt7622-bananapi-bpi-r64.dtb \
mt7623n-bananapi-bpi-r2.dtb \ mt7623n-bananapi-bpi-r2.dtb \
mt7629-rfb.dtb \ mt7629-rfb.dtb \
mt7981-rfb.dtb \
mt7981-emmc-rfb.dtb \
mt7981-sd-rfb.dtb \
mt7986a-rfb.dtb \
mt7986b-rfb.dtb \
mt7986a-sd-rfb.dtb \
mt7986b-sd-rfb.dtb \
mt7986a-emmc-rfb.dtb \
mt7986b-emmc-rfb.dtb \
mt8183-pumpkin.dtb \ mt8183-pumpkin.dtb \
mt8512-bm1-emmc.dtb \ mt8512-bm1-emmc.dtb \
mt8516-pumpkin.dtb \ mt8516-pumpkin.dtb \
mt8518-ap1-emmc.dtb mt8518-ap1-emmc.dtb
dtb-$(CONFIG_ARCH_NPCM7xx) += nuvoton-npcm750-evb.dtb
dtb-$(CONFIG_ARCH_NPCM8XX) += nuvoton-npcm845-evb.dtb
dtb-$(CONFIG_XEN) += xenguest-arm64.dtb dtb-$(CONFIG_XEN) += xenguest-arm64.dtb
dtb-$(CONFIG_ARCH_OCTEONTX) += octeontx.dtb dtb-$(CONFIG_ARCH_OCTEONTX) += octeontx.dtb
@ -1295,19 +1181,14 @@ dtb-$(CONFIG_TARGET_MX53PPD) += imx53-ppd.dtb
# TODO(Linus Walleij <linus.walleij@linaro.org>): Should us a single vexpress # TODO(Linus Walleij <linus.walleij@linaro.org>): Should us a single vexpress
# Kconfig option to build all of these. See examples above. # Kconfig option to build all of these. See examples above.
dtb-$(CONFIG_TARGET_VEXPRESS_CA9X4) += vexpress-v2p-ca9.dtb dtb-$(CONFIG_TARGET_VEXPRESS_CA9X4) += vexpress-v2p-ca9.dtb
dtb-$(CONFIG_TARGET_VEXPRESS64_BASE_FVP) += fvp-base-revc.dtb
dtb-$(CONFIG_TARGET_VEXPRESS64_BASER_FVP) += arm_fvp.dtb
dtb-$(CONFIG_TARGET_VEXPRESS64_JUNO) += juno-r2.dtb dtb-$(CONFIG_TARGET_VEXPRESS64_JUNO) += juno-r2.dtb
dtb-$(CONFIG_TARGET_TOTAL_COMPUTE) += total_compute.dtb dtb-$(CONFIG_TARGET_TOTAL_COMPUTE) += total_compute.dtb
dtb-$(CONFIG_TARGET_DURIAN) += phytium-durian.dtb dtb-$(CONFIG_TARGET_DURIAN) += phytium-durian.dtb
dtb-$(CONFIG_TARGET_POMELO) += phytium-pomelo.dtb
dtb-$(CONFIG_TARGET_PRESIDIO_ASIC) += ca-presidio-engboard.dtb dtb-$(CONFIG_TARGET_PRESIDIO_ASIC) += ca-presidio-engboard.dtb
dtb-$(CONFIG_TARGET_GXP) += hpe-bmc-dl360gen10.dts
dtb-$(CONFIG_TARGET_IMX8MM_CL_IOT_GATE) += imx8mm-cl-iot-gate.dtb \ dtb-$(CONFIG_TARGET_IMX8MM_CL_IOT_GATE) += imx8mm-cl-iot-gate.dtb \
imx8mm-cl-iot-gate-ied.dtbo \ imx8mm-cl-iot-gate-ied.dtbo \
imx8mm-cl-iot-gate-ied-adc0.dtbo \ imx8mm-cl-iot-gate-ied-adc0.dtbo \
@ -1334,9 +1215,6 @@ dtb-$(CONFIG_TARGET_EA_LPC3250DEVKITV2) += lpc3250-ea3250.dtb
dtb-$(CONFIG_ARCH_QEMU) += qemu-arm.dtb qemu-arm64.dtb dtb-$(CONFIG_ARCH_QEMU) += qemu-arm.dtb qemu-arm64.dtb
dtb-$(CONFIG_TARGET_CORSTONE1000) += corstone1000-mps3.dtb \
corstone1000-fvp.dtb
include $(srctree)/scripts/Makefile.dts include $(srctree)/scripts/Makefile.dts
targets += $(dtb-y) targets += $(dtb-y)

View File

@ -397,9 +397,4 @@
&rtc { &rtc {
clocks = <&clk_32768_ck>, <&clk_24mhz_clkctrl AM3_CLK_24MHZ_CLKDIV32K_CLKCTRL 0>; clocks = <&clk_32768_ck>, <&clk_24mhz_clkctrl AM3_CLK_24MHZ_CLKDIV32K_CLKCTRL 0>;
clock-names = "ext-clk", "int-clk"; clock-names = "ext-clk", "int-clk";
system-power-controller;
};
&pruss_tm {
status = "okay";
}; };

View File

@ -3,6 +3,9 @@
* Copyright (C) 2012 Texas Instruments Incorporated - https://www.ti.com/ * Copyright (C) 2012 Texas Instruments Incorporated - https://www.ti.com/
*/ */
#include <dt-bindings/display/tda998x.h>
#include <dt-bindings/interrupt-controller/irq.h>
&ldo3_reg { &ldo3_reg {
regulator-min-microvolt = <1800000>; regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>; regulator-max-microvolt = <1800000>;
@ -22,9 +25,145 @@
non-removable; non-removable;
}; };
&am33xx_pinmux {
nxp_hdmi_bonelt_pins: nxp_hdmi_bonelt_pins {
pinctrl-single,pins = <
AM33XX_PADCONF(AM335X_PIN_XDMA_EVENT_INTR0, PIN_OUTPUT_PULLDOWN, MUX_MODE3)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA0, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA1, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA2, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA3, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA4, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA5, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA6, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA7, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA8, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA9, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA10, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA11, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA12, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA13, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA14, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA15, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_VSYNC, PIN_OUTPUT_PULLDOWN, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_HSYNC, PIN_OUTPUT_PULLDOWN, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_PCLK, PIN_OUTPUT_PULLDOWN, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_AC_BIAS_EN, PIN_OUTPUT_PULLDOWN, MUX_MODE0)
>;
};
nxp_hdmi_bonelt_off_pins: nxp_hdmi_bonelt_off_pins {
pinctrl-single,pins = <
AM33XX_PADCONF(AM335X_PIN_XDMA_EVENT_INTR0, PIN_OUTPUT_PULLDOWN, MUX_MODE3)
>;
};
mcasp0_pins: mcasp0_pins {
pinctrl-single,pins = <
AM33XX_PADCONF(AM335X_PIN_MCASP0_AHCLKX, PIN_INPUT_PULLUP, MUX_MODE0) /* mcasp0_ahcklx.mcasp0_ahclkx */
AM33XX_PADCONF(AM335X_PIN_MCASP0_AHCLKR, PIN_OUTPUT_PULLDOWN, MUX_MODE2) /* mcasp0_ahclkr.mcasp0_axr2*/
AM33XX_PADCONF(AM335X_PIN_MCASP0_FSX, PIN_OUTPUT_PULLUP, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_MCASP0_ACLKX, PIN_OUTPUT_PULLDOWN, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_GPMC_A11, PIN_OUTPUT_PULLDOWN, MUX_MODE7) /* gpmc_a11.GPIO1_27 */
>;
};
};
&lcdc {
status = "okay";
/* If you want to get 24 bit RGB and 16 BGR mode instead of
* current 16 bit RGB and 24 BGR modes, set the propety
* below to "crossed" and uncomment the video-ports -property
* in tda19988 node.
*/
blue-and-red-wiring = "straight";
port {
lcdc_0: endpoint@0 {
remote-endpoint = <&hdmi_0>;
};
};
};
&i2c0 {
tda19988: tda19988@70 {
compatible = "nxp,tda998x";
reg = <0x70>;
nxp,calib-gpios = <&gpio1 25 0>;
interrupts-extended = <&gpio1 25 IRQ_TYPE_LEVEL_LOW>;
pinctrl-names = "default", "off";
pinctrl-0 = <&nxp_hdmi_bonelt_pins>;
pinctrl-1 = <&nxp_hdmi_bonelt_off_pins>;
/* Convert 24bit BGR to RGB, e.g. cross red and blue wiring */
/* video-ports = <0x234501>; */
#sound-dai-cells = <0>;
audio-ports = < TDA998x_I2S 0x03>;
ports {
port@0 {
hdmi_0: endpoint@0 {
remote-endpoint = <&lcdc_0>;
};
};
};
};
};
&rtc {
system-power-controller;
};
&mcasp0 {
#sound-dai-cells = <0>;
pinctrl-names = "default";
pinctrl-0 = <&mcasp0_pins>;
status = "okay";
op-mode = <0>; /* MCASP_IIS_MODE */
tdm-slots = <2>;
serial-dir = < /* 0: INACTIVE, 1: TX, 2: RX */
0 0 1 0
>;
tx-num-evt = <32>;
rx-num-evt = <32>;
};
/ { / {
memory@80000000 { memory@80000000 {
device_type = "memory"; device_type = "memory";
reg = <0x80000000 0x20000000>; /* 512 MB */ reg = <0x80000000 0x20000000>; /* 512 MB */
}; };
clk_mcasp0_fixed: clk_mcasp0_fixed {
#clock-cells = <0>;
compatible = "fixed-clock";
clock-frequency = <24576000>;
};
clk_mcasp0: clk_mcasp0 {
#clock-cells = <0>;
compatible = "gpio-gate-clock";
clocks = <&clk_mcasp0_fixed>;
enable-gpios = <&gpio1 27 0>; /* BeagleBone Black Clk enable on GPIO1_27 */
};
sound {
compatible = "simple-audio-card";
simple-audio-card,name = "TI BeagleBone Black";
simple-audio-card,format = "i2s";
simple-audio-card,bitclock-master = <&dailink0_master>;
simple-audio-card,frame-master = <&dailink0_master>;
dailink0_master: simple-audio-card,cpu {
sound-dai = <&mcasp0>;
clocks = <&clk_mcasp0>;
};
simple-audio-card,codec {
sound-dai = <&tda19988>;
};
};
}; };

View File

@ -1,141 +0,0 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (C) 2012 Texas Instruments Incorporated - https://www.ti.com/
*/
#include <dt-bindings/display/tda998x.h>
#include <dt-bindings/interrupt-controller/irq.h>
&am33xx_pinmux {
nxp_hdmi_bonelt_pins: nxp_hdmi_bonelt_pins {
pinctrl-single,pins = <
AM33XX_PADCONF(AM335X_PIN_XDMA_EVENT_INTR0, PIN_OUTPUT_PULLDOWN, MUX_MODE3)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA0, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA1, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA2, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA3, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA4, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA5, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA6, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA7, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA8, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA9, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA10, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA11, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA12, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA13, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA14, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_DATA15, PIN_OUTPUT, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_VSYNC, PIN_OUTPUT_PULLDOWN, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_HSYNC, PIN_OUTPUT_PULLDOWN, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_PCLK, PIN_OUTPUT_PULLDOWN, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_LCD_AC_BIAS_EN, PIN_OUTPUT_PULLDOWN, MUX_MODE0)
>;
};
nxp_hdmi_bonelt_off_pins: nxp_hdmi_bonelt_off_pins {
pinctrl-single,pins = <
AM33XX_PADCONF(AM335X_PIN_XDMA_EVENT_INTR0, PIN_OUTPUT_PULLDOWN, MUX_MODE3)
>;
};
mcasp0_pins: mcasp0_pins {
pinctrl-single,pins = <
AM33XX_PADCONF(AM335X_PIN_MCASP0_AHCLKX, PIN_INPUT_PULLUP, MUX_MODE0) /* mcasp0_ahcklx.mcasp0_ahclkx */
AM33XX_PADCONF(AM335X_PIN_MCASP0_AHCLKR, PIN_OUTPUT_PULLDOWN, MUX_MODE2) /* mcasp0_ahclkr.mcasp0_axr2*/
AM33XX_PADCONF(AM335X_PIN_MCASP0_FSX, PIN_OUTPUT_PULLUP, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_MCASP0_ACLKX, PIN_OUTPUT_PULLDOWN, MUX_MODE0)
AM33XX_PADCONF(AM335X_PIN_GPMC_A11, PIN_OUTPUT_PULLDOWN, MUX_MODE7) /* gpmc_a11.GPIO1_27 */
>;
};
};
&lcdc {
status = "okay";
/* If you want to get 24 bit RGB and 16 BGR mode instead of
* current 16 bit RGB and 24 BGR modes, set the propety
* below to "crossed" and uncomment the video-ports -property
* in tda19988 node.
*/
blue-and-red-wiring = "straight";
port {
lcdc_0: endpoint@0 {
remote-endpoint = <&hdmi_0>;
};
};
};
&i2c0 {
tda19988: tda19988@70 {
compatible = "nxp,tda998x";
reg = <0x70>;
nxp,calib-gpios = <&gpio1 25 0>;
interrupts-extended = <&gpio1 25 IRQ_TYPE_LEVEL_LOW>;
pinctrl-names = "default", "off";
pinctrl-0 = <&nxp_hdmi_bonelt_pins>;
pinctrl-1 = <&nxp_hdmi_bonelt_off_pins>;
/* Convert 24bit BGR to RGB, e.g. cross red and blue wiring */
/* video-ports = <0x234501>; */
#sound-dai-cells = <0>;
audio-ports = < TDA998x_I2S 0x03>;
ports {
port@0 {
hdmi_0: endpoint@0 {
remote-endpoint = <&lcdc_0>;
};
};
};
};
};
&mcasp0 {
#sound-dai-cells = <0>;
pinctrl-names = "default";
pinctrl-0 = <&mcasp0_pins>;
status = "okay";
op-mode = <0>; /* MCASP_IIS_MODE */
tdm-slots = <2>;
serial-dir = < /* 0: INACTIVE, 1: TX, 2: RX */
0 0 1 0
>;
tx-num-evt = <32>;
rx-num-evt = <32>;
};
/ {
clk_mcasp0_fixed: clk_mcasp0_fixed {
#clock-cells = <0>;
compatible = "fixed-clock";
clock-frequency = <24576000>;
};
clk_mcasp0: clk_mcasp0 {
#clock-cells = <0>;
compatible = "gpio-gate-clock";
clocks = <&clk_mcasp0_fixed>;
enable-gpios = <&gpio1 27 0>; /* BeagleBone Black Clk enable on GPIO1_27 */
};
sound {
compatible = "simple-audio-card";
simple-audio-card,name = "TI BeagleBone Black";
simple-audio-card,format = "i2s";
simple-audio-card,bitclock-master = <&dailink0_master>;
simple-audio-card,frame-master = <&dailink0_master>;
dailink0_master: simple-audio-card,cpu {
sound-dai = <&mcasp0>;
clocks = <&clk_mcasp0>;
};
simple-audio-card,codec {
sound-dai = <&tda19988>;
};
};
};

Some files were not shown because too many files have changed in this diff Show More