mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-15 17:34:43 +00:00
Prepare v2023.10-rc3
-----BEGIN PGP SIGNATURE----- iQGzBAABCgAdFiEEGjx/cOCPqxcHgJu/FHw5/5Y0tywFAmTjxwsACgkQFHw5/5Y0 tyz4TAwAtVgllQGPVNIVDaEBdG93htm1DoZPc4EMZ4L5rf0nT0yJPeOhRCGygYY+ zYL1ueleBZtpJhYOuHGetSns0B/M5Wx7gu1eGHNGrMNHH7zCV5Ynjjee2IaqKgbU tdSSc8XQpJ3PJY6rhJ6qZ7pO/EcUlQEdqplEUGFmA4JObx43j1+bmqyGTJA57vEw rrr+tyUVlr+Wv4lqlX/YJWzAB6IoSMUStv34M2lmiZvZoTYHezvIqBK33GrQ4Cwl hQ8nP7ymBXdA5GoMFBpfaBCA7aX3esx4yYN3JIRNRjNmnITJHYs0G8oIh8R5iNnJ psroU7GRPu3MmXfOnHlRfA/v0mo8xQGc2RQHyZUGXuApTI8+SFK/4WJPBny/IYse ggcVCHoI57dx1+j4+JHYhh61bMR1JUwARs4/UU4dKT3MRZM8Gb99OvbXO3+switZ R0YHSnDP///MTC7/MzbOPWzsJiTn9gkZd8nFVTXoncrVI8F3OtCc89G4HBruBSj7 ptfylxqH =VlzD -----END PGP SIGNATURE----- Merge tag 'v2023.10-rc3' into next Prepare v2023.10-rc3 Signed-off-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
commit
7e6e40c572
367 changed files with 13025 additions and 974 deletions
|
@ -426,7 +426,7 @@ stages:
|
|||
cp images/spi-nor.img ${UBOOT_TRAVIS_BUILD_DIR}/;
|
||||
fi
|
||||
if [[ "${TEST_PY_BD}" == "coreboot" ]]; then
|
||||
wget -O - "https://drive.google.com/uc?id=1x6nrtWIyIRPLS2cQBwYTnT2TbOI8UjmM&export=download" |xz -dc >${UBOOT_TRAVIS_BUILD_DIR}/coreboot.rom;
|
||||
wget -O - "https://drive.google.com/uc?id=1uJ2VkUQ8czWFZmhJQ90Tp8V_zrJ6BrBH&export=download" |xz -dc >${UBOOT_TRAVIS_BUILD_DIR}/coreboot.rom;
|
||||
wget -O - "https://drive.google.com/uc?id=149Cz-5SZXHNKpi9xg6R_5XITWohu348y&export=download" >cbfstool;
|
||||
chmod a+x cbfstool;
|
||||
./cbfstool ${UBOOT_TRAVIS_BUILD_DIR}/coreboot.rom add-flat-binary -f ${UBOOT_TRAVIS_BUILD_DIR}/u-boot.bin -n fallback/payload -c LZMA -l 0x1110000 -e 0x1110000;
|
||||
|
|
|
@ -69,7 +69,7 @@ stages:
|
|||
fi
|
||||
- if [[ "${TEST_PY_BD}" == "coreboot" ]]; then
|
||||
wget -O -
|
||||
"https://drive.google.com/uc?id=1x6nrtWIyIRPLS2cQBwYTnT2TbOI8UjmM&export=download" |
|
||||
"https://drive.google.com/uc?id=1uJ2VkUQ8czWFZmhJQ90Tp8V_zrJ6BrBH&export=download" |
|
||||
xz -dc >${UBOOT_TRAVIS_BUILD_DIR}/coreboot.rom;
|
||||
wget -O -
|
||||
"https://drive.google.com/uc?id=149Cz-5SZXHNKpi9xg6R_5XITWohu348y&export=download" >
|
||||
|
|
23
MAINTAINERS
23
MAINTAINERS
|
@ -133,6 +133,7 @@ M: Tom Rini <trini@konsulko.com>
|
|||
S: Maintained
|
||||
T: git https://source.denx.de/u-boot/custodians/u-boot-arm.git
|
||||
F: arch/arm/
|
||||
F: arch/arm/dts/Makefile
|
||||
F: cmd/arm/
|
||||
|
||||
ARM ALTERA SOCFPGA
|
||||
|
@ -267,6 +268,19 @@ F: drivers/net/cortina_ni.h
|
|||
F: drivers/net/phy/ca_phy.c
|
||||
F: configs/cortina_presidio-asic-pnand_defconfig
|
||||
|
||||
ARM FF-A
|
||||
M: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
|
||||
S: Maintained
|
||||
F: arch/sandbox/include/asm/sandbox_arm_ffa.h
|
||||
F: arch/sandbox/include/asm/sandbox_arm_ffa_priv.h
|
||||
F: cmd/armffa.c
|
||||
F: doc/arch/arm64.ffa.rst
|
||||
F: doc/usage/cmd/armffa.rst
|
||||
F: drivers/firmware/arm-ffa/
|
||||
F: include/arm_ffa.h
|
||||
F: test/cmd/armffa.c
|
||||
F: test/dm/ffa.c
|
||||
|
||||
ARM FREESCALE IMX
|
||||
M: Stefano Babic <sbabic@denx.de>
|
||||
M: Fabio Estevam <festevam@gmail.com>
|
||||
|
@ -621,6 +635,7 @@ F: include/dt-bindings/clock/stm32mp*
|
|||
F: include/dt-bindings/pinctrl/stm32-pinfunc.h
|
||||
F: include/dt-bindings/reset/stm32mp*
|
||||
F: include/stm32_rcc.h
|
||||
F: tools/logos/st.bmp
|
||||
F: tools/stm32image.c
|
||||
N: stm
|
||||
N: stm32
|
||||
|
@ -1585,7 +1600,8 @@ T: git https://source.denx.de/u-boot/custodians/u-boot-ubi.git
|
|||
F: drivers/mtd/ubi/
|
||||
|
||||
UFS
|
||||
M: Faiz Abbas <faiz_abbas@ti.com>
|
||||
M: Bhupesh Sharma <bhupesh.sharma@linaro.org>
|
||||
M: Neha Malcom Francis <n-francis@ti.com>
|
||||
S: Maintained
|
||||
F: drivers/ufs/
|
||||
|
||||
|
@ -1606,6 +1622,11 @@ T: git https://source.denx.de/u-boot/custodians/u-boot-usb.git topic-xhci
|
|||
F: drivers/usb/host/xhci*
|
||||
F: include/usb/xhci.h
|
||||
|
||||
UUID testing
|
||||
M: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
|
||||
S: Maintained
|
||||
F: test/lib/uuid.c
|
||||
|
||||
VIDEO
|
||||
M: Anatolij Gustschin <agust@denx.de>
|
||||
S: Maintained
|
||||
|
|
2
Makefile
2
Makefile
|
@ -3,7 +3,7 @@
|
|||
VERSION = 2023
|
||||
PATCHLEVEL = 10
|
||||
SUBLEVEL =
|
||||
EXTRAVERSION = -rc2
|
||||
EXTRAVERSION = -rc3
|
||||
NAME =
|
||||
|
||||
# *DOCUMENTATION*
|
||||
|
|
|
@ -575,11 +575,6 @@ int get_core_volt_from_fuse(void)
|
|||
return vdd;
|
||||
}
|
||||
|
||||
__weak int board_switch_core_volt(u32 vdd)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int setup_core_volt(u32 vdd)
|
||||
{
|
||||
return board_setup_core_volt(vdd);
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Copyright (c) 2015, Linaro Limited
|
||||
*/
|
||||
* Copyright 2022-2023 Arm Limited and/or its affiliates <open-source-office@arm.com>
|
||||
*
|
||||
* Authors:
|
||||
* Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
|
||||
*/
|
||||
#include <linux/linkage.h>
|
||||
#include <linux/arm-smccc.h>
|
||||
#include <generated/asm-offsets.h>
|
||||
|
@ -45,3 +49,54 @@ ENDPROC(__arm_smccc_smc)
|
|||
ENTRY(__arm_smccc_hvc)
|
||||
SMCCC hvc
|
||||
ENDPROC(__arm_smccc_hvc)
|
||||
|
||||
#ifdef CONFIG_ARM64
|
||||
|
||||
.macro SMCCC_1_2 instr
|
||||
/* Save `res` and free a GPR that won't be clobbered */
|
||||
stp x1, x19, [sp, #-16]!
|
||||
|
||||
/* Ensure `args` won't be clobbered while loading regs in next step */
|
||||
mov x19, x0
|
||||
|
||||
/* Load the registers x0 - x17 from the struct arm_smccc_1_2_regs */
|
||||
ldp x0, x1, [x19, #ARM_SMCCC_1_2_REGS_X0_OFFS]
|
||||
ldp x2, x3, [x19, #ARM_SMCCC_1_2_REGS_X2_OFFS]
|
||||
ldp x4, x5, [x19, #ARM_SMCCC_1_2_REGS_X4_OFFS]
|
||||
ldp x6, x7, [x19, #ARM_SMCCC_1_2_REGS_X6_OFFS]
|
||||
ldp x8, x9, [x19, #ARM_SMCCC_1_2_REGS_X8_OFFS]
|
||||
ldp x10, x11, [x19, #ARM_SMCCC_1_2_REGS_X10_OFFS]
|
||||
ldp x12, x13, [x19, #ARM_SMCCC_1_2_REGS_X12_OFFS]
|
||||
ldp x14, x15, [x19, #ARM_SMCCC_1_2_REGS_X14_OFFS]
|
||||
ldp x16, x17, [x19, #ARM_SMCCC_1_2_REGS_X16_OFFS]
|
||||
|
||||
\instr #0
|
||||
|
||||
/* Load the `res` from the stack */
|
||||
ldr x19, [sp]
|
||||
|
||||
/* Store the registers x0 - x17 into the result structure */
|
||||
stp x0, x1, [x19, #ARM_SMCCC_1_2_REGS_X0_OFFS]
|
||||
stp x2, x3, [x19, #ARM_SMCCC_1_2_REGS_X2_OFFS]
|
||||
stp x4, x5, [x19, #ARM_SMCCC_1_2_REGS_X4_OFFS]
|
||||
stp x6, x7, [x19, #ARM_SMCCC_1_2_REGS_X6_OFFS]
|
||||
stp x8, x9, [x19, #ARM_SMCCC_1_2_REGS_X8_OFFS]
|
||||
stp x10, x11, [x19, #ARM_SMCCC_1_2_REGS_X10_OFFS]
|
||||
stp x12, x13, [x19, #ARM_SMCCC_1_2_REGS_X12_OFFS]
|
||||
stp x14, x15, [x19, #ARM_SMCCC_1_2_REGS_X14_OFFS]
|
||||
stp x16, x17, [x19, #ARM_SMCCC_1_2_REGS_X16_OFFS]
|
||||
|
||||
/* Restore original x19 */
|
||||
ldp xzr, x19, [sp], #16
|
||||
ret
|
||||
.endm
|
||||
|
||||
/*
|
||||
* void arm_smccc_1_2_smc(const struct arm_smccc_1_2_regs *args,
|
||||
* struct arm_smccc_1_2_regs *res);
|
||||
*/
|
||||
ENTRY(arm_smccc_1_2_smc)
|
||||
SMCCC_1_2 smc
|
||||
ENDPROC(arm_smccc_1_2_smc)
|
||||
|
||||
#endif
|
||||
|
|
|
@ -178,6 +178,7 @@ dtb-$(CONFIG_ROCKCHIP_RK3568) += \
|
|||
rk3566-soquartz-cm4.dtb \
|
||||
rk3566-soquartz-model-a.dtb \
|
||||
rk3568-evb.dtb \
|
||||
rk3568-lubancat-2.dtb \
|
||||
rk3568-nanopi-r5c.dtb \
|
||||
rk3568-nanopi-r5s.dtb \
|
||||
rk3568-odroid-m1.dtb \
|
||||
|
@ -254,9 +255,22 @@ dtb-$(CONFIG_ARCH_TEGRA) += tegra20-harmony.dtb \
|
|||
tegra20-ventana.dtb \
|
||||
tegra20-colibri.dtb \
|
||||
tegra30-apalis.dtb \
|
||||
tegra30-asus-nexus7-grouper-PM269.dtb \
|
||||
tegra30-asus-nexus7-grouper-E1565.dtb \
|
||||
tegra30-asus-nexus7-tilapia-E1565.dtb \
|
||||
tegra30-asus-p1801-t.dtb \
|
||||
tegra30-asus-tf201.dtb \
|
||||
tegra30-asus-tf300t.dtb \
|
||||
tegra30-asus-tf300tg.dtb \
|
||||
tegra30-asus-tf300tl.dtb \
|
||||
tegra30-asus-tf600t.dtb \
|
||||
tegra30-asus-tf700t.dtb \
|
||||
tegra30-beaver.dtb \
|
||||
tegra30-cardhu.dtb \
|
||||
tegra30-colibri.dtb \
|
||||
tegra30-htc-endeavoru.dtb \
|
||||
tegra30-lg-p880.dtb \
|
||||
tegra30-lg-p895.dtb \
|
||||
tegra30-tec-ng.dtb \
|
||||
tegra114-dalmore.dtb \
|
||||
tegra124-apalis.dtb \
|
||||
|
|
|
@ -12,6 +12,31 @@
|
|||
|
||||
&uart0 {
|
||||
bootph-all;
|
||||
clock-frequency = <24000000>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pinctrl {
|
||||
bootph-some-ram;
|
||||
|
||||
uart0 {
|
||||
bootph-some-ram;
|
||||
};
|
||||
rtc {
|
||||
bootph-some-ram;
|
||||
};
|
||||
};
|
||||
|
||||
&uart0_xfer {
|
||||
bootph-some-ram;
|
||||
};
|
||||
|
||||
&uart0_cts {
|
||||
bootph-some-ram;
|
||||
};
|
||||
|
||||
&uart0_rts {
|
||||
bootph-some-ram;
|
||||
};
|
||||
|
||||
&rtc_32k {
|
||||
bootph-some-ram;
|
||||
};
|
||||
|
|
|
@ -54,7 +54,7 @@
|
|||
};
|
||||
|
||||
&spi0 {
|
||||
spi_flash: spiflash@0 {
|
||||
spi_flash: flash@0 {
|
||||
bootph-all;
|
||||
};
|
||||
};
|
||||
|
|
|
@ -345,7 +345,7 @@
|
|||
&spi0 {
|
||||
status = "okay";
|
||||
|
||||
spiflash@0 {
|
||||
flash@0 {
|
||||
compatible = "jedec,spi-nor";
|
||||
reg = <0>;
|
||||
|
||||
|
|
|
@ -26,6 +26,12 @@
|
|||
0x0 0xff720000 0x0 0x1000
|
||||
0x0 0xff798000 0x0 0x1000>;
|
||||
};
|
||||
|
||||
rng: rng@ff060000 {
|
||||
compatible = "rockchip,cryptov1-rng";
|
||||
reg = <0x0 0xff060000 0x0 0x4000>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
||||
&cru {
|
||||
|
|
27
arch/arm/dts/rk3568-lubancat-2-u-boot.dtsi
Normal file
27
arch/arm/dts/rk3568-lubancat-2-u-boot.dtsi
Normal file
|
@ -0,0 +1,27 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* (C) Copyright 2023 Rockchip Electronics Co., Ltd
|
||||
* (C) Copyright 2023 Andy Yan <andyshrk@163.com>
|
||||
*/
|
||||
|
||||
#include "rk356x-u-boot.dtsi"
|
||||
|
||||
/ {
|
||||
chosen {
|
||||
stdout-path = &uart2;
|
||||
};
|
||||
};
|
||||
|
||||
&sdhci {
|
||||
cap-mmc-highspeed;
|
||||
mmc-ddr-1_8v;
|
||||
mmc-hs400-1_8v;
|
||||
mmc-hs400-enhanced-strobe;
|
||||
pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd &emmc_datastrobe>;
|
||||
};
|
||||
|
||||
&uart2 {
|
||||
bootph-all;
|
||||
clock-frequency = <24000000>;
|
||||
status = "okay";
|
||||
};
|
733
arch/arm/dts/rk3568-lubancat-2.dts
Normal file
733
arch/arm/dts/rk3568-lubancat-2.dts
Normal file
|
@ -0,0 +1,733 @@
|
|||
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||
|
||||
/*
|
||||
* Copyright (c) 2021 Rockchip Electronics Co., Ltd.
|
||||
* Copyright (c) 2022 EmbedFire <embedfire@embedfire.com>
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
#include <dt-bindings/gpio/gpio.h>
|
||||
#include <dt-bindings/leds/common.h>
|
||||
#include <dt-bindings/pinctrl/rockchip.h>
|
||||
#include <dt-bindings/soc/rockchip,vop2.h>
|
||||
#include "rk3568.dtsi"
|
||||
|
||||
/ {
|
||||
model = "EmbedFire LubanCat 2";
|
||||
compatible = "embedfire,lubancat-2", "rockchip,rk3568";
|
||||
|
||||
aliases {
|
||||
ethernet0 = &gmac0;
|
||||
ethernet1 = &gmac1;
|
||||
mmc0 = &sdmmc0;
|
||||
mmc1 = &sdhci;
|
||||
};
|
||||
|
||||
chosen: chosen {
|
||||
stdout-path = "serial2:1500000n8";
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
user_led: user-led {
|
||||
label = "user_led";
|
||||
linux,default-trigger = "heartbeat";
|
||||
default-state = "on";
|
||||
gpios = <&gpio0 RK_PC7 GPIO_ACTIVE_LOW>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&user_led_pin>;
|
||||
};
|
||||
};
|
||||
|
||||
hdmi-con {
|
||||
compatible = "hdmi-connector";
|
||||
type = "a";
|
||||
|
||||
port {
|
||||
hdmi_con_in: endpoint {
|
||||
remote-endpoint = <&hdmi_out_con>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
dc_5v: dc-5v-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "dc_5v";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
};
|
||||
|
||||
vcc3v3_sys: vcc3v3-sys-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc3v3_sys";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
vin-supply = <&vcc5v0_sys>;
|
||||
};
|
||||
|
||||
vcc5v0_sys: vcc5v0-sys-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc5v0_sys";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
vin-supply = <&dc_5v>;
|
||||
};
|
||||
|
||||
vcc3v3_m2_pcie: vcc3v3-m2-pcie-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "m2_pcie_3v3";
|
||||
enable-active-high;
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
gpios = <&gpio0 RK_PD4 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-0 = <&vcc3v3_m2_pcie_en>;
|
||||
pinctrl-names = "default";
|
||||
startup-delay-us = <200000>;
|
||||
vin-supply = <&vcc5v0_sys>;
|
||||
};
|
||||
|
||||
vcc3v3_mini_pcie: vcc3v3-mini-pcie-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "minipcie_3v3";
|
||||
enable-active-high;
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
gpio = <&gpio3 RK_PC3 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-0 = <&vcc3v3_mini_pcie_en>;
|
||||
pinctrl-names = "default";
|
||||
startup-delay-us = <5000>;
|
||||
vin-supply = <&vcc5v0_sys>;
|
||||
};
|
||||
|
||||
vcc5v0_usb20_host: vcc5v0-usb20-host-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc5v0_usb20_host";
|
||||
enable-active-high;
|
||||
gpio = <&gpio0 RK_PD5 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-0 = <&vcc5v0_usb20_host_en>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
vcc5v0_usb30_host: vcc5v0-usb30-host-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc5v0_usb30_host";
|
||||
enable-active-high;
|
||||
gpio = <&gpio0 RK_PD6 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-0 = <&vcc5v0_usb30_host_en>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
|
||||
vcc5v0_otg_vbus: vcc5v0-otg-vbus-regulator {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc5v0_otg_vbus";
|
||||
enable-active-high;
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
gpio = <&gpio0 RK_PD3 GPIO_ACTIVE_HIGH>;
|
||||
pinctrl-0 = <&vcc5v0_otg_vbus_en>;
|
||||
pinctrl-names = "default";
|
||||
};
|
||||
};
|
||||
|
||||
&combphy0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&combphy1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&combphy2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&cpu0 {
|
||||
cpu-supply = <&vdd_cpu>;
|
||||
};
|
||||
|
||||
&cpu1 {
|
||||
cpu-supply = <&vdd_cpu>;
|
||||
};
|
||||
|
||||
&cpu2 {
|
||||
cpu-supply = <&vdd_cpu>;
|
||||
};
|
||||
|
||||
&cpu3 {
|
||||
cpu-supply = <&vdd_cpu>;
|
||||
};
|
||||
|
||||
&gpu {
|
||||
mali-supply = <&vdd_gpu>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&hdmi {
|
||||
avdd-0v9-supply = <&vdda0v9_image>;
|
||||
avdd-1v8-supply = <&vcca1v8_image>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&hdmi_in {
|
||||
hdmi_in_vp0: endpoint {
|
||||
remote-endpoint = <&vp0_out_hdmi>;
|
||||
};
|
||||
};
|
||||
|
||||
&hdmi_out {
|
||||
hdmi_out_con: endpoint {
|
||||
remote-endpoint = <&hdmi_con_in>;
|
||||
};
|
||||
};
|
||||
|
||||
&hdmi_sound {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&i2c0 {
|
||||
status = "okay";
|
||||
|
||||
vdd_cpu: regulator@1c {
|
||||
compatible = "tcs,tcs4525";
|
||||
reg = <0x1c>;
|
||||
fcs,suspend-voltage-selector = <1>;
|
||||
regulator-name = "vdd_cpu";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <800000>;
|
||||
regulator-max-microvolt = <1150000>;
|
||||
regulator-ramp-delay = <2300>;
|
||||
vin-supply = <&vcc5v0_sys>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
rk809: pmic@20 {
|
||||
compatible = "rockchip,rk809";
|
||||
reg = <0x20>;
|
||||
interrupt-parent = <&gpio0>;
|
||||
interrupts = <RK_PA3 IRQ_TYPE_LEVEL_LOW>;
|
||||
assigned-clocks = <&cru I2S1_MCLKOUT_TX>;
|
||||
assigned-clock-parents = <&cru CLK_I2S1_8CH_TX>;
|
||||
#clock-cells = <1>;
|
||||
clock-names = "mclk";
|
||||
clocks = <&cru I2S1_MCLKOUT_TX>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pmic_int>;
|
||||
rockchip,system-power-controller;
|
||||
#sound-dai-cells = <0>;
|
||||
vcc1-supply = <&vcc3v3_sys>;
|
||||
vcc2-supply = <&vcc3v3_sys>;
|
||||
vcc3-supply = <&vcc3v3_sys>;
|
||||
vcc4-supply = <&vcc3v3_sys>;
|
||||
vcc5-supply = <&vcc3v3_sys>;
|
||||
vcc6-supply = <&vcc3v3_sys>;
|
||||
vcc7-supply = <&vcc3v3_sys>;
|
||||
vcc8-supply = <&vcc3v3_sys>;
|
||||
vcc9-supply = <&vcc3v3_sys>;
|
||||
wakeup-source;
|
||||
|
||||
regulators {
|
||||
vdd_logic: DCDC_REG1 {
|
||||
regulator-name = "vdd_logic";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <500000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-init-microvolt = <900000>;
|
||||
regulator-ramp-delay = <6001>;
|
||||
regulator-initial-mode = <0x2>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vdd_gpu: DCDC_REG2 {
|
||||
regulator-name = "vdd_gpu";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <500000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-init-microvolt = <900000>;
|
||||
regulator-ramp-delay = <6001>;
|
||||
regulator-initial-mode = <0x2>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vcc_ddr: DCDC_REG3 {
|
||||
regulator-name = "vcc_ddr";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-initial-mode = <0x2>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vdd_npu: DCDC_REG4 {
|
||||
regulator-name = "vdd_npu";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <500000>;
|
||||
regulator-max-microvolt = <1350000>;
|
||||
regulator-init-microvolt = <900000>;
|
||||
regulator-ramp-delay = <6001>;
|
||||
regulator-initial-mode = <0x2>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vcc_1v8: DCDC_REG5 {
|
||||
regulator-name = "vcc_1v8";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vdda0v9_image: LDO_REG1 {
|
||||
regulator-name = "vdda0v9_image";
|
||||
regulator-boot-on;
|
||||
regulator-always-on;
|
||||
regulator-min-microvolt = <900000>;
|
||||
regulator-max-microvolt = <900000>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vdda_0v9: LDO_REG2 {
|
||||
regulator-name = "vdda_0v9";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <900000>;
|
||||
regulator-max-microvolt = <900000>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vdda0v9_pmu: LDO_REG3 {
|
||||
regulator-name = "vdda0v9_pmu";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <900000>;
|
||||
regulator-max-microvolt = <900000>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <900000>;
|
||||
};
|
||||
};
|
||||
|
||||
vccio_acodec: LDO_REG4 {
|
||||
regulator-name = "vccio_acodec";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vccio_sd: LDO_REG5 {
|
||||
regulator-name = "vccio_sd";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vcc3v3_pmu: LDO_REG6 {
|
||||
regulator-name = "vcc3v3_pmu";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <3300000>;
|
||||
};
|
||||
};
|
||||
|
||||
vcca_1v8: LDO_REG7 {
|
||||
regulator-name = "vcca_1v8";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vcca1v8_pmu: LDO_REG8 {
|
||||
regulator-name = "vcca1v8_pmu";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-on-in-suspend;
|
||||
regulator-suspend-microvolt = <1800000>;
|
||||
};
|
||||
};
|
||||
|
||||
vcca1v8_image: LDO_REG9 {
|
||||
regulator-name = "vcca1v8_image";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vcc_3v3: SWITCH_REG1 {
|
||||
regulator-name = "vcc_3v3";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
|
||||
vcc3v3_sd: SWITCH_REG2 {
|
||||
regulator-name = "vcc3v3_sd";
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
|
||||
regulator-state-mem {
|
||||
regulator-off-in-suspend;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
&i2s1_8ch {
|
||||
rockchip,trcm-sync-tx-only;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&gmac0 {
|
||||
phy-mode = "rgmii";
|
||||
clock_in_out = "output";
|
||||
|
||||
snps,reset-gpio = <&gpio2 RK_PD3 GPIO_ACTIVE_LOW>;
|
||||
snps,reset-active-low;
|
||||
/* Reset time is 20ms, 100ms for rtl8211f */
|
||||
snps,reset-delays-us = <0 20000 100000>;
|
||||
|
||||
assigned-clocks = <&cru SCLK_GMAC0_RX_TX>, <&cru SCLK_GMAC0>;
|
||||
assigned-clock-parents = <&cru SCLK_GMAC0_RGMII_SPEED>, <&cru CLK_MAC0_2TOP>;
|
||||
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&gmac0_miim
|
||||
&gmac0_tx_bus2
|
||||
&gmac0_rx_bus2
|
||||
&gmac0_rgmii_clk
|
||||
&gmac0_rgmii_bus>;
|
||||
|
||||
tx_delay = <0x22>;
|
||||
rx_delay = <0x0e>;
|
||||
|
||||
phy-handle = <&rgmii_phy0>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&mdio0 {
|
||||
rgmii_phy0: phy@0 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <0x0>;
|
||||
};
|
||||
};
|
||||
|
||||
&gmac1 {
|
||||
phy-mode = "rgmii";
|
||||
clock_in_out = "output";
|
||||
|
||||
snps,reset-gpio = <&gpio3 RK_PA2 GPIO_ACTIVE_LOW>;
|
||||
snps,reset-active-low;
|
||||
/* Reset time is 20ms, 100ms for rtl8211f */
|
||||
snps,reset-delays-us = <0 20000 100000>;
|
||||
|
||||
assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>;
|
||||
assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>, <&cru CLK_MAC1_2TOP>;
|
||||
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&gmac1m1_miim
|
||||
&gmac1m1_tx_bus2
|
||||
&gmac1m1_rx_bus2
|
||||
&gmac1m1_rgmii_clk
|
||||
&gmac1m1_rgmii_bus>;
|
||||
|
||||
tx_delay = <0x21>;
|
||||
rx_delay = <0x0e>;
|
||||
|
||||
phy-handle = <&rgmii_phy1>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&mdio1 {
|
||||
rgmii_phy1: phy@0 {
|
||||
compatible = "ethernet-phy-ieee802.3-c22";
|
||||
reg = <0x0>;
|
||||
};
|
||||
};
|
||||
|
||||
&gic {
|
||||
mbi-ranges = <94 31>, <229 31>, <289 31>;
|
||||
};
|
||||
|
||||
&pcie30phy {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie3x2 {
|
||||
reset-gpios = <&gpio2 RK_PD6 GPIO_ACTIVE_HIGH>;
|
||||
vpcie3v3-supply = <&vcc3v3_m2_pcie>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie2x1 {
|
||||
reset-gpios = <&gpio3 RK_PC1 GPIO_ACTIVE_HIGH>;
|
||||
disable-gpios = <&gpio3 RK_PC2 GPIO_ACTIVE_HIGH>;
|
||||
vpcie3v3-supply = <&vcc3v3_mini_pcie>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pmu_io_domains {
|
||||
pmuio2-supply = <&vcc3v3_pmu>;
|
||||
vccio1-supply = <&vccio_acodec>;
|
||||
vccio3-supply = <&vccio_sd>;
|
||||
vccio4-supply = <&vcc_1v8>;
|
||||
vccio5-supply = <&vcc_3v3>;
|
||||
vccio6-supply = <&vcc_1v8>;
|
||||
vccio7-supply = <&vcc_3v3>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pwm8 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pwm9 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&pwm10 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&pwm14 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&spi3 {
|
||||
pinctrl-0 = <&spi3m1_pins>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&uart2 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart3 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&uart3m1_xfer>;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&saradc {
|
||||
vref-supply = <&vcca_1v8>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&tsadc {
|
||||
rockchip,hw-tshut-mode = <1>;
|
||||
rockchip,hw-tshut-polarity = <0>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sdhci {
|
||||
assigned-clocks = <&cru BCLK_EMMC>, <&cru TCLK_EMMC>, <&cru CCLK_EMMC>;
|
||||
assigned-clock-rates = <200000000>, <24000000>, <200000000>;
|
||||
bus-width = <8>;
|
||||
max-frequency = <200000000>;
|
||||
mmc-hs200-1_8v;
|
||||
non-removable;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd>;
|
||||
supports-emmc;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sdmmc0 {
|
||||
max-frequency = <150000000>;
|
||||
no-sdio;
|
||||
no-mmc;
|
||||
bus-width = <4>;
|
||||
cap-mmc-highspeed;
|
||||
cap-sd-highspeed;
|
||||
disable-wp;
|
||||
sd-uhs-sdr104;
|
||||
vmmc-supply = <&vcc3v3_sd>;
|
||||
vqmmc-supply = <&vccio_sd>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd &sdmmc0_det>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
/* USB OTG/USB Host_1 USB 2.0 Comb */
|
||||
&usb2phy0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb2phy0_host {
|
||||
phy-supply = <&vcc5v0_usb30_host>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb2phy0_otg {
|
||||
phy-supply = <&vcc5v0_otg_vbus>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_host0_ehci {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_host0_ohci {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
/* USB Host_2/USB Host_3 USB 2.0 Comb */
|
||||
&usb2phy1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb2phy1_host {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb2phy1_otg {
|
||||
phy-supply = <&vcc5v0_usb20_host>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_host1_ehci {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&usb_host1_ohci {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
/* MULTI_PHY0 For SATA0, USB3.0 OTG Only USB2.0 */
|
||||
&usb_host0_xhci {
|
||||
phys = <&usb2phy0_otg>;
|
||||
phy-names = "usb2-phy";
|
||||
extcon = <&usb2phy0>;
|
||||
maximum-speed = "high-speed";
|
||||
dr_mode = "host";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&sata0 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
/* USB3.0 Host */
|
||||
&usb_host1_xhci {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vop {
|
||||
assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>;
|
||||
assigned-clock-parents = <&pmucru PLL_HPLL>, <&cru PLL_VPLL>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vop_mmu {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&vp0 {
|
||||
vp0_out_hdmi: endpoint@ROCKCHIP_VOP2_EP_HDMI0 {
|
||||
reg = <ROCKCHIP_VOP2_EP_HDMI0>;
|
||||
remote-endpoint = <&hdmi_in_vp0>;
|
||||
};
|
||||
};
|
||||
|
||||
&pinctrl {
|
||||
leds {
|
||||
user_led_pin: user-status-led-pin {
|
||||
rockchip,pins = <0 RK_PC7 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
|
||||
usb {
|
||||
vcc5v0_usb20_host_en: vcc5v0-usb20-host-en {
|
||||
rockchip,pins = <0 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
|
||||
vcc5v0_usb30_host_en: vcc5v0-usb30-host-en {
|
||||
rockchip,pins = <0 RK_PD6 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
|
||||
vcc5v0_otg_vbus_en: vcc5v0-otg-vbus-en {
|
||||
rockchip,pins = <0 RK_PD3 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
|
||||
pcie {
|
||||
vcc3v3_m2_pcie_en: vcc3v3-m2-pcie-en {
|
||||
rockchip,pins = <0 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
|
||||
vcc3v3_mini_pcie_en: vcc3v3-mini-pcie-en {
|
||||
rockchip,pins = <3 RK_PC3 RK_FUNC_GPIO &pcfg_pull_none>;
|
||||
};
|
||||
};
|
||||
|
||||
pmic {
|
||||
pmic_int: pmic-int {
|
||||
rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;
|
||||
};
|
||||
};
|
||||
};
|
|
@ -126,12 +126,11 @@
|
|||
|
||||
&sdhci {
|
||||
bootph-pre-ram;
|
||||
status = "okay";
|
||||
max-frequency = <200000000>;
|
||||
};
|
||||
|
||||
&sdmmc0 {
|
||||
bootph-pre-ram;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
#ifdef CONFIG_ROCKCHIP_SPI_IMAGE
|
||||
|
|
|
@ -169,7 +169,7 @@
|
|||
ltdc_pins: ltdc@0 {
|
||||
pins {
|
||||
pinmux = <STM32_PINMUX('E', 4, AF14)>, /* B0 */
|
||||
<STM32_PINMUX('G',12, AF14)>, /* B4 */
|
||||
<STM32_PINMUX('G',12, AF9)>, /* B4 */
|
||||
<STM32_PINMUX('I', 9, AF14)>, /* VSYNC */
|
||||
<STM32_PINMUX('I',10, AF14)>, /* HSYNC */
|
||||
<STM32_PINMUX('I',14, AF14)>, /* CLK */
|
||||
|
|
|
@ -258,4 +258,133 @@
|
|||
bias-disable;
|
||||
};
|
||||
};
|
||||
|
||||
uart4_idle_pins_a: uart4-idle-0 {
|
||||
pins1 {
|
||||
pinmux = <STM32_PINMUX('D', 6, ANALOG)>; /* UART4_TX */
|
||||
};
|
||||
pins2 {
|
||||
pinmux = <STM32_PINMUX('D', 8, AF8)>; /* UART4_RX */
|
||||
bias-disable;
|
||||
};
|
||||
};
|
||||
|
||||
uart4_sleep_pins_a: uart4-sleep-0 {
|
||||
pins {
|
||||
pinmux = <STM32_PINMUX('D', 6, ANALOG)>, /* UART4_TX */
|
||||
<STM32_PINMUX('D', 8, ANALOG)>; /* UART4_RX */
|
||||
};
|
||||
};
|
||||
|
||||
uart8_pins_a: uart8-0 {
|
||||
pins1 {
|
||||
pinmux = <STM32_PINMUX('E', 1, AF8)>; /* UART8_TX */
|
||||
bias-disable;
|
||||
drive-push-pull;
|
||||
slew-rate = <0>;
|
||||
};
|
||||
pins2 {
|
||||
pinmux = <STM32_PINMUX('F', 9, AF8)>; /* UART8_RX */
|
||||
bias-pull-up;
|
||||
};
|
||||
};
|
||||
|
||||
uart8_idle_pins_a: uart8-idle-0 {
|
||||
pins1 {
|
||||
pinmux = <STM32_PINMUX('E', 1, ANALOG)>; /* UART8_TX */
|
||||
};
|
||||
pins2 {
|
||||
pinmux = <STM32_PINMUX('F', 9, AF8)>; /* UART8_RX */
|
||||
bias-pull-up;
|
||||
};
|
||||
};
|
||||
|
||||
uart8_sleep_pins_a: uart8-sleep-0 {
|
||||
pins {
|
||||
pinmux = <STM32_PINMUX('E', 1, ANALOG)>, /* UART8_TX */
|
||||
<STM32_PINMUX('F', 9, ANALOG)>; /* UART8_RX */
|
||||
};
|
||||
};
|
||||
|
||||
usart1_pins_a: usart1-0 {
|
||||
pins1 {
|
||||
pinmux = <STM32_PINMUX('C', 0, AF7)>, /* USART1_TX */
|
||||
<STM32_PINMUX('C', 2, AF7)>; /* USART1_RTS */
|
||||
bias-disable;
|
||||
drive-push-pull;
|
||||
slew-rate = <0>;
|
||||
};
|
||||
pins2 {
|
||||
pinmux = <STM32_PINMUX('B', 0, AF4)>, /* USART1_RX */
|
||||
<STM32_PINMUX('A', 7, AF7)>; /* USART1_CTS_NSS */
|
||||
bias-pull-up;
|
||||
};
|
||||
};
|
||||
|
||||
usart1_idle_pins_a: usart1-idle-0 {
|
||||
pins1 {
|
||||
pinmux = <STM32_PINMUX('C', 0, ANALOG)>, /* USART1_TX */
|
||||
<STM32_PINMUX('A', 7, ANALOG)>; /* USART1_CTS_NSS */
|
||||
};
|
||||
pins2 {
|
||||
pinmux = <STM32_PINMUX('C', 2, AF7)>; /* USART1_RTS */
|
||||
bias-disable;
|
||||
drive-push-pull;
|
||||
slew-rate = <0>;
|
||||
};
|
||||
pins3 {
|
||||
pinmux = <STM32_PINMUX('B', 0, AF4)>; /* USART1_RX */
|
||||
bias-pull-up;
|
||||
};
|
||||
};
|
||||
|
||||
usart1_sleep_pins_a: usart1-sleep-0 {
|
||||
pins {
|
||||
pinmux = <STM32_PINMUX('C', 0, ANALOG)>, /* USART1_TX */
|
||||
<STM32_PINMUX('C', 2, ANALOG)>, /* USART1_RTS */
|
||||
<STM32_PINMUX('A', 7, ANALOG)>, /* USART1_CTS_NSS */
|
||||
<STM32_PINMUX('B', 0, ANALOG)>; /* USART1_RX */
|
||||
};
|
||||
};
|
||||
|
||||
usart2_pins_a: usart2-0 {
|
||||
pins1 {
|
||||
pinmux = <STM32_PINMUX('H', 12, AF1)>, /* USART2_TX */
|
||||
<STM32_PINMUX('D', 4, AF3)>; /* USART2_RTS */
|
||||
bias-disable;
|
||||
drive-push-pull;
|
||||
slew-rate = <0>;
|
||||
};
|
||||
pins2 {
|
||||
pinmux = <STM32_PINMUX('D', 15, AF1)>, /* USART2_RX */
|
||||
<STM32_PINMUX('E', 11, AF2)>; /* USART2_CTS_NSS */
|
||||
bias-disable;
|
||||
};
|
||||
};
|
||||
|
||||
usart2_idle_pins_a: usart2-idle-0 {
|
||||
pins1 {
|
||||
pinmux = <STM32_PINMUX('H', 12, ANALOG)>, /* USART2_TX */
|
||||
<STM32_PINMUX('E', 11, ANALOG)>; /* USART2_CTS_NSS */
|
||||
};
|
||||
pins2 {
|
||||
pinmux = <STM32_PINMUX('D', 4, AF3)>; /* USART2_RTS */
|
||||
bias-disable;
|
||||
drive-push-pull;
|
||||
slew-rate = <0>;
|
||||
};
|
||||
pins3 {
|
||||
pinmux = <STM32_PINMUX('D', 15, AF1)>; /* USART2_RX */
|
||||
bias-disable;
|
||||
};
|
||||
};
|
||||
|
||||
usart2_sleep_pins_a: usart2-sleep-0 {
|
||||
pins {
|
||||
pinmux = <STM32_PINMUX('H', 12, ANALOG)>, /* USART2_TX */
|
||||
<STM32_PINMUX('D', 4, ANALOG)>, /* USART2_RTS */
|
||||
<STM32_PINMUX('D', 15, ANALOG)>, /* USART2_RX */
|
||||
<STM32_PINMUX('E', 11, ANALOG)>; /* USART2_CTS_NSS */
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
@ -397,12 +397,42 @@
|
|||
status = "disabled";
|
||||
};
|
||||
|
||||
usart3: serial@4000f000 {
|
||||
compatible = "st,stm32h7-uart";
|
||||
reg = <0x4000f000 0x400>;
|
||||
interrupts-extended = <&exti 28 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&rcc USART3_K>;
|
||||
resets = <&rcc USART3_R>;
|
||||
wakeup-source;
|
||||
dmas = <&dmamux1 45 0x400 0x5>,
|
||||
<&dmamux1 46 0x400 0x1>;
|
||||
dma-names = "rx", "tx";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
uart4: serial@40010000 {
|
||||
compatible = "st,stm32h7-uart";
|
||||
reg = <0x40010000 0x400>;
|
||||
interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
|
||||
interrupts-extended = <&exti 30 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&rcc UART4_K>;
|
||||
resets = <&rcc UART4_R>;
|
||||
wakeup-source;
|
||||
dmas = <&dmamux1 63 0x400 0x5>,
|
||||
<&dmamux1 64 0x400 0x1>;
|
||||
dma-names = "rx", "tx";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
uart5: serial@40011000 {
|
||||
compatible = "st,stm32h7-uart";
|
||||
reg = <0x40011000 0x400>;
|
||||
interrupts-extended = <&exti 31 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&rcc UART5_K>;
|
||||
resets = <&rcc UART5_R>;
|
||||
wakeup-source;
|
||||
dmas = <&dmamux1 65 0x400 0x5>,
|
||||
<&dmamux1 66 0x400 0x1>;
|
||||
dma-names = "rx", "tx";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
|
@ -442,6 +472,32 @@
|
|||
status = "disabled";
|
||||
};
|
||||
|
||||
uart7: serial@40018000 {
|
||||
compatible = "st,stm32h7-uart";
|
||||
reg = <0x40018000 0x400>;
|
||||
interrupts-extended = <&exti 32 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&rcc UART7_K>;
|
||||
resets = <&rcc UART7_R>;
|
||||
wakeup-source;
|
||||
dmas = <&dmamux1 79 0x400 0x5>,
|
||||
<&dmamux1 80 0x400 0x1>;
|
||||
dma-names = "rx", "tx";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
uart8: serial@40019000 {
|
||||
compatible = "st,stm32h7-uart";
|
||||
reg = <0x40019000 0x400>;
|
||||
interrupts-extended = <&exti 33 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&rcc UART8_K>;
|
||||
resets = <&rcc UART8_R>;
|
||||
wakeup-source;
|
||||
dmas = <&dmamux1 81 0x400 0x5>,
|
||||
<&dmamux1 82 0x400 0x1>;
|
||||
dma-names = "rx", "tx";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
timers1: timer@44000000 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
@ -524,6 +580,19 @@
|
|||
};
|
||||
};
|
||||
|
||||
usart6: serial@44003000 {
|
||||
compatible = "st,stm32h7-uart";
|
||||
reg = <0x44003000 0x400>;
|
||||
interrupts-extended = <&exti 29 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&rcc USART6_K>;
|
||||
resets = <&rcc USART6_R>;
|
||||
wakeup-source;
|
||||
dmas = <&dmamux1 71 0x400 0x5>,
|
||||
<&dmamux1 72 0x400 0x1>;
|
||||
dma-names = "rx", "tx";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2s1: audio-controller@44004000 {
|
||||
compatible = "st,stm32h7-i2s";
|
||||
reg = <0x44004000 0x400>;
|
||||
|
@ -748,6 +817,32 @@
|
|||
status = "disabled";
|
||||
};
|
||||
|
||||
usart1: serial@4c000000 {
|
||||
compatible = "st,stm32h7-uart";
|
||||
reg = <0x4c000000 0x400>;
|
||||
interrupts-extended = <&exti 26 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&rcc USART1_K>;
|
||||
resets = <&rcc USART1_R>;
|
||||
wakeup-source;
|
||||
dmas = <&dmamux1 41 0x400 0x5>,
|
||||
<&dmamux1 42 0x400 0x1>;
|
||||
dma-names = "rx", "tx";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
usart2: serial@4c001000 {
|
||||
compatible = "st,stm32h7-uart";
|
||||
reg = <0x4c001000 0x400>;
|
||||
interrupts-extended = <&exti 27 IRQ_TYPE_LEVEL_HIGH>;
|
||||
clocks = <&rcc USART2_K>;
|
||||
resets = <&rcc USART2_R>;
|
||||
wakeup-source;
|
||||
dmas = <&dmamux1 43 0x400 0x5>,
|
||||
<&dmamux1 44 0x400 0x1>;
|
||||
dma-names = "rx", "tx";
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
i2s4: audio-controller@4c002000 {
|
||||
compatible = "st,stm32h7-i2s";
|
||||
reg = <0x4c002000 0x400>;
|
||||
|
@ -1001,8 +1096,6 @@
|
|||
reg = <0x50000000 0x1000>;
|
||||
#clock-cells = <1>;
|
||||
#reset-cells = <1>;
|
||||
interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
||||
clock-names = "hse", "hsi", "csi", "lse", "lsi";
|
||||
clocks = <&scmi_clk CK_SCMI_HSE>,
|
||||
<&scmi_clk CK_SCMI_HSI>,
|
||||
|
|
|
@ -19,6 +19,13 @@
|
|||
|
||||
aliases {
|
||||
serial0 = &uart4;
|
||||
serial1 = &usart1;
|
||||
serial2 = &uart8;
|
||||
serial3 = &usart2;
|
||||
};
|
||||
|
||||
chosen {
|
||||
stdout-path = "serial0:115200n8";
|
||||
};
|
||||
|
||||
memory@c0000000 {
|
||||
|
@ -267,8 +274,41 @@
|
|||
};
|
||||
|
||||
&uart4 {
|
||||
pinctrl-names = "default";
|
||||
pinctrl-names = "default", "sleep", "idle";
|
||||
pinctrl-0 = <&uart4_pins_a>;
|
||||
pinctrl-1 = <&uart4_sleep_pins_a>;
|
||||
pinctrl-2 = <&uart4_idle_pins_a>;
|
||||
/delete-property/dmas;
|
||||
/delete-property/dma-names;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&uart8 {
|
||||
pinctrl-names = "default", "sleep", "idle";
|
||||
pinctrl-0 = <&uart8_pins_a>;
|
||||
pinctrl-1 = <&uart8_sleep_pins_a>;
|
||||
pinctrl-2 = <&uart8_idle_pins_a>;
|
||||
/delete-property/dmas;
|
||||
/delete-property/dma-names;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&usart1 {
|
||||
pinctrl-names = "default", "sleep", "idle";
|
||||
pinctrl-0 = <&usart1_pins_a>;
|
||||
pinctrl-1 = <&usart1_sleep_pins_a>;
|
||||
pinctrl-2 = <&usart1_idle_pins_a>;
|
||||
uart-has-rtscts;
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
/* Bluetooth */
|
||||
&usart2 {
|
||||
pinctrl-names = "default", "sleep", "idle";
|
||||
pinctrl-0 = <&usart2_pins_a>;
|
||||
pinctrl-1 = <&usart2_sleep_pins_a>;
|
||||
pinctrl-2 = <&usart2_idle_pins_a>;
|
||||
uart-has-rtscts;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
|
|
|
@ -1880,6 +1880,21 @@
|
|||
};
|
||||
};
|
||||
|
||||
spi1_pins_b: spi1-1 {
|
||||
pins1 {
|
||||
pinmux = <STM32_PINMUX('A', 5, AF5)>, /* SPI1_SCK */
|
||||
<STM32_PINMUX('B', 5, AF5)>; /* SPI1_MOSI */
|
||||
bias-disable;
|
||||
drive-push-pull;
|
||||
slew-rate = <1>;
|
||||
};
|
||||
|
||||
pins2 {
|
||||
pinmux = <STM32_PINMUX('A', 6, AF5)>; /* SPI1_MISO */
|
||||
bias-disable;
|
||||
};
|
||||
};
|
||||
|
||||
spi2_pins_a: spi2-0 {
|
||||
pins1 {
|
||||
pinmux = <STM32_PINMUX('B', 10, AF5)>, /* SPI2_SCK */
|
||||
|
@ -2163,7 +2178,7 @@
|
|||
<STM32_PINMUX('D', 4, AF7)>; /* USART2_RTS */
|
||||
bias-disable;
|
||||
drive-push-pull;
|
||||
slew-rate = <3>;
|
||||
slew-rate = <0>;
|
||||
};
|
||||
pins2 {
|
||||
pinmux = <STM32_PINMUX('D', 6, AF7)>, /* USART2_RX */
|
||||
|
@ -2181,7 +2196,7 @@
|
|||
pinmux = <STM32_PINMUX('D', 4, AF7)>; /* USART2_RTS */
|
||||
bias-disable;
|
||||
drive-push-pull;
|
||||
slew-rate = <3>;
|
||||
slew-rate = <0>;
|
||||
};
|
||||
pins3 {
|
||||
pinmux = <STM32_PINMUX('D', 6, AF7)>; /* USART2_RX */
|
||||
|
@ -2448,19 +2463,4 @@
|
|||
bias-disable;
|
||||
};
|
||||
};
|
||||
|
||||
spi1_pins_b: spi1-1 {
|
||||
pins1 {
|
||||
pinmux = <STM32_PINMUX('A', 5, AF5)>, /* SPI1_SCK */
|
||||
<STM32_PINMUX('B', 5, AF5)>; /* SPI1_MOSI */
|
||||
bias-disable;
|
||||
drive-push-pull;
|
||||
slew-rate = <1>;
|
||||
};
|
||||
|
||||
pins2 {
|
||||
pinmux = <STM32_PINMUX('A', 6, AF5)>; /* SPI1_MISO */
|
||||
bias-disable;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
@ -1148,8 +1148,8 @@
|
|||
usbotg_hs: usb-otg@49000000 {
|
||||
compatible = "st,stm32mp15-hsotg", "snps,dwc2";
|
||||
reg = <0x49000000 0x10000>;
|
||||
clocks = <&rcc USBO_K>;
|
||||
clock-names = "otg";
|
||||
clocks = <&rcc USBO_K>, <&usbphyc>;
|
||||
clock-names = "otg", "utmi";
|
||||
resets = <&rcc USBO_R>;
|
||||
reset-names = "dwc2";
|
||||
interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
|
|
@ -17,9 +17,6 @@
|
|||
|
||||
aliases {
|
||||
ethernet0 = ðernet0;
|
||||
serial0 = &uart4;
|
||||
serial1 = &usart3;
|
||||
serial2 = &uart7;
|
||||
};
|
||||
|
||||
chosen {
|
||||
|
|
|
@ -18,9 +18,6 @@
|
|||
|
||||
aliases {
|
||||
ethernet0 = ðernet0;
|
||||
serial0 = &uart4;
|
||||
serial1 = &usart3;
|
||||
serial2 = &uart7;
|
||||
serial3 = &usart2;
|
||||
};
|
||||
|
||||
|
|
|
@ -16,6 +16,10 @@
|
|||
model = "STMicroelectronics STM32MP157C eval daughter";
|
||||
compatible = "st,stm32mp157c-ed1", "st,stm32mp157";
|
||||
|
||||
aliases {
|
||||
serial0 = &uart4;
|
||||
};
|
||||
|
||||
chosen {
|
||||
stdout-path = "serial0:115200n8";
|
||||
};
|
||||
|
@ -65,15 +69,6 @@
|
|||
reg = <0x38000000 0x10000>;
|
||||
no-map;
|
||||
};
|
||||
|
||||
gpu_reserved: gpu@e8000000 {
|
||||
reg = <0xe8000000 0x8000000>;
|
||||
no-map;
|
||||
};
|
||||
};
|
||||
|
||||
aliases {
|
||||
serial0 = &uart4;
|
||||
};
|
||||
|
||||
sd_switch: regulator-sd_switch {
|
||||
|
@ -148,10 +143,6 @@
|
|||
status = "okay";
|
||||
};
|
||||
|
||||
&gpu {
|
||||
contiguous-area = <&gpu_reserved>;
|
||||
};
|
||||
|
||||
&hash1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
|
|
@ -14,16 +14,15 @@
|
|||
model = "STMicroelectronics STM32MP157C eval daughter on eval mother";
|
||||
compatible = "st,stm32mp157c-ev1", "st,stm32mp157c-ed1", "st,stm32mp157";
|
||||
|
||||
chosen {
|
||||
stdout-path = "serial0:115200n8";
|
||||
};
|
||||
|
||||
aliases {
|
||||
serial0 = &uart4;
|
||||
serial1 = &usart3;
|
||||
ethernet0 = ðernet0;
|
||||
};
|
||||
|
||||
chosen {
|
||||
stdout-path = "serial0:115200n8";
|
||||
};
|
||||
|
||||
clocks {
|
||||
clk_ext_camera: clk-ext-camera {
|
||||
#clock-cells = <0>;
|
||||
|
|
|
@ -118,13 +118,12 @@
|
|||
|
||||
ðernet0 {
|
||||
status = "okay";
|
||||
pinctrl-0 = <ðernet0_rmii_pins_a>;
|
||||
pinctrl-1 = <ðernet0_rmii_sleep_pins_a>;
|
||||
pinctrl-0 = <ðernet0_rmii_pins_c &mco2_pins_a>;
|
||||
pinctrl-1 = <ðernet0_rmii_sleep_pins_c &mco2_sleep_pins_a>;
|
||||
pinctrl-names = "default", "sleep";
|
||||
phy-mode = "rmii";
|
||||
max-speed = <100>;
|
||||
phy-handle = <&phy0>;
|
||||
st,eth-ref-clk-sel;
|
||||
|
||||
mdio0 {
|
||||
#address-cells = <1>;
|
||||
|
@ -136,7 +135,7 @@
|
|||
/* LAN8710Ai */
|
||||
compatible = "ethernet-phy-id0007.c0f0",
|
||||
"ethernet-phy-ieee802.3-c22";
|
||||
clocks = <&rcc ETHCK_K>;
|
||||
clocks = <&rcc CK_MCO2>;
|
||||
reset-gpios = <&gpioh 3 GPIO_ACTIVE_LOW>;
|
||||
reset-assert-us = <500>;
|
||||
reset-deassert-us = <500>;
|
||||
|
@ -450,6 +449,21 @@
|
|||
};
|
||||
};
|
||||
|
||||
&rcc {
|
||||
/* Connect MCO2 output to ETH_RX_CLK input via pad-pad connection */
|
||||
clocks = <&rcc CK_MCO2>;
|
||||
clock-names = "ETH_RX_CLK/ETH_REF_CLK";
|
||||
|
||||
/*
|
||||
* Set PLL4P output to 100 MHz to supply SDMMC with faster clock,
|
||||
* set MCO2 output to 50 MHz to supply ETHRX clock with PLL4P/2,
|
||||
* so that MCO2 behaves as a divider for the ETHRX clock here.
|
||||
*/
|
||||
assigned-clocks = <&rcc CK_MCO2>, <&rcc PLL4_P>;
|
||||
assigned-clock-parents = <&rcc PLL4_P>;
|
||||
assigned-clock-rates = <50000000>, <100000000>;
|
||||
};
|
||||
|
||||
&rng1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
|
|
@ -153,6 +153,20 @@
|
|||
};
|
||||
|
||||
&rcc {
|
||||
/*
|
||||
* Reinstate clock names from stm32mp151.dtsi, the MCO2 trick
|
||||
* used in stm32mp15xx-dhcom-som.dtsi is not supported by the
|
||||
* U-Boot clock framework.
|
||||
*/
|
||||
clock-names = "hse", "hsi", "csi", "lse", "lsi";
|
||||
clocks = <&clk_hse>, <&clk_hsi>, <&clk_csi>,
|
||||
<&clk_lse>, <&clk_lsi>;
|
||||
|
||||
/* The MCO2 is already configured correctly, remove those. */
|
||||
/delete-property/ assigned-clocks;
|
||||
/delete-property/ assigned-clock-parents;
|
||||
/delete-property/ assigned-clock-rates;
|
||||
|
||||
st,clksrc = <
|
||||
CLK_MPU_PLL1P
|
||||
CLK_AXI_PLL2P
|
||||
|
|
|
@ -8,6 +8,12 @@
|
|||
#include <dt-bindings/mfd/st,stpmic1.h>
|
||||
|
||||
/ {
|
||||
aliases {
|
||||
serial0 = &uart4;
|
||||
serial1 = &usart3;
|
||||
serial2 = &uart7;
|
||||
};
|
||||
|
||||
memory@c0000000 {
|
||||
device_type = "memory";
|
||||
reg = <0xc0000000 0x20000000>;
|
||||
|
@ -53,11 +59,6 @@
|
|||
reg = <0x38000000 0x10000>;
|
||||
no-map;
|
||||
};
|
||||
|
||||
gpu_reserved: gpu@d4000000 {
|
||||
reg = <0xd4000000 0x4000000>;
|
||||
no-map;
|
||||
};
|
||||
};
|
||||
|
||||
led {
|
||||
|
@ -159,10 +160,6 @@
|
|||
};
|
||||
};
|
||||
|
||||
&gpu {
|
||||
contiguous-area = <&gpu_reserved>;
|
||||
};
|
||||
|
||||
&hash1 {
|
||||
status = "okay";
|
||||
};
|
||||
|
|
|
@ -27,7 +27,13 @@
|
|||
|
||||
spi@7000c380 {
|
||||
status = "okay";
|
||||
spi-max-frequency = <25000000>;
|
||||
spi-max-frequency = <48000000>;
|
||||
|
||||
flash@0 {
|
||||
compatible = "winbond,w25q80bl", "jedec,spi-nor";
|
||||
reg = <0>;
|
||||
spi-max-frequency = <48000000>;
|
||||
};
|
||||
};
|
||||
|
||||
pcie@80003000 {
|
||||
|
|
157
arch/arm/dts/tegra30-asus-grouper-common.dtsi
Normal file
157
arch/arm/dts/tegra30-asus-grouper-common.dtsi
Normal file
|
@ -0,0 +1,157 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
#include <dt-bindings/input/input.h>
|
||||
|
||||
#include "tegra30.dtsi"
|
||||
|
||||
/ {
|
||||
chosen {
|
||||
stdout-path = &uarta;
|
||||
};
|
||||
|
||||
aliases {
|
||||
i2c0 = &pwr_i2c;
|
||||
|
||||
mmc0 = &sdmmc4; /* eMMC */
|
||||
|
||||
rtc0 = &pmic;
|
||||
rtc1 = "/rtc@7000e000";
|
||||
|
||||
usb0 = &usb1;
|
||||
};
|
||||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
reg = <0x80000000 0x40000000>;
|
||||
};
|
||||
|
||||
host1x@50000000 {
|
||||
dc@54200000 {
|
||||
nvidia,180-rotation;
|
||||
rgb {
|
||||
status = "okay";
|
||||
|
||||
nvidia,panel = <&panel>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
gpio@6000d000 {
|
||||
volume-buttons-hog {
|
||||
gpio-hog;
|
||||
gpios = <TEGRA_GPIO(R, 0) GPIO_ACTIVE_HIGH>,
|
||||
<TEGRA_GPIO(Q, 0) GPIO_ACTIVE_HIGH>;
|
||||
output-low;
|
||||
};
|
||||
};
|
||||
|
||||
uarta: serial@70006000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
pwm: pwm@7000a000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
pwr_i2c: i2c@7000d000 {
|
||||
status = "okay";
|
||||
clock-frequency = <400000>;
|
||||
};
|
||||
|
||||
sdmmc4: sdhci@78000600 {
|
||||
status = "okay";
|
||||
bus-width = <8>;
|
||||
non-removable;
|
||||
};
|
||||
|
||||
usb1: usb@7d000000 {
|
||||
status = "okay";
|
||||
dr_mode = "otg";
|
||||
};
|
||||
|
||||
backlight: backlight {
|
||||
compatible = "pwm-backlight";
|
||||
|
||||
enable-gpios = <&gpio TEGRA_GPIO(H, 2) GPIO_ACTIVE_HIGH>;
|
||||
power-supply = <&vdd_5v0_bl>;
|
||||
pwms = <&pwm 0 50000>;
|
||||
|
||||
brightness-levels = <1 35 70 105 140 175 210 255>;
|
||||
default-brightness-level = <5>;
|
||||
};
|
||||
|
||||
/* PMIC has a built-in 32KHz oscillator which is used by PMC */
|
||||
clk32k_in: clock-32k {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <32768>;
|
||||
clock-output-names = "pmic-oscillator";
|
||||
};
|
||||
|
||||
gpio-keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
key-power {
|
||||
label = "Power";
|
||||
gpios = <&gpio TEGRA_GPIO(V, 0) GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_ENTER>;
|
||||
};
|
||||
|
||||
key-volume-up {
|
||||
label = "Volume Up";
|
||||
gpios = <&gpio TEGRA_GPIO(Q, 2) GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_UP>;
|
||||
};
|
||||
|
||||
key-volume-down {
|
||||
label = "Volume Down";
|
||||
gpios = <&gpio TEGRA_GPIO(Q, 3) GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_DOWN>;
|
||||
};
|
||||
};
|
||||
|
||||
panel: panel {
|
||||
compatible = "simple-panel";
|
||||
|
||||
power-supply = <&vdd_pnl_reg>;
|
||||
enable-gpios = <&gpio TEGRA_GPIO(N, 6) GPIO_ACTIVE_HIGH>;
|
||||
|
||||
backlight = <&backlight>;
|
||||
|
||||
display-timings {
|
||||
timing@0 {
|
||||
/* 1280x800@60Hz */
|
||||
clock-frequency = <68000000>;
|
||||
|
||||
hactive = <800>;
|
||||
hfront-porch = <24>;
|
||||
hback-porch = <32>;
|
||||
hsync-len = <24>;
|
||||
|
||||
vactive = <1280>;
|
||||
vfront-porch = <5>;
|
||||
vback-porch = <32>;
|
||||
vsync-len = <1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
vdd_pnl_reg: regulator-pnl {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vdd_panel";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
gpio = <&gpio TEGRA_GPIO(W, 1) GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
};
|
||||
|
||||
vdd_5v0_bl: regulator-bl {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vdd_5v0_bl";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
regulator-boot-on;
|
||||
gpio = <&gpio TEGRA_GPIO(H, 3) GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
};
|
||||
};
|
43
arch/arm/dts/tegra30-asus-nexus7-grouper-E1565.dts
Normal file
43
arch/arm/dts/tegra30-asus-nexus7-grouper-E1565.dts
Normal file
|
@ -0,0 +1,43 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
/dts-v1/;
|
||||
|
||||
#include "tegra30-asus-grouper-common.dtsi"
|
||||
|
||||
/ {
|
||||
model = "ASUS Google Nexus 7 (Project Nakasi / ME370T) E1565";
|
||||
compatible = "asus,grouper", "nvidia,tegra30";
|
||||
|
||||
i2c@7000d000 {
|
||||
pmic: max77663@3c {
|
||||
compatible = "maxim,max77663";
|
||||
reg = <0x3c>;
|
||||
|
||||
interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-controller;
|
||||
|
||||
system-power-controller;
|
||||
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
|
||||
regulators {
|
||||
vdd_1v8: sd2 {
|
||||
regulator-name = "vdd_1v8_gen";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
/* eMMC VDD */
|
||||
vcore_emmc: ldo3 {
|
||||
regulator-name = "vcore_emmc";
|
||||
regulator-min-microvolt = <2850000>;
|
||||
regulator-max-microvolt = <3100000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
36
arch/arm/dts/tegra30-asus-nexus7-grouper-PM269.dts
Normal file
36
arch/arm/dts/tegra30-asus-nexus7-grouper-PM269.dts
Normal file
|
@ -0,0 +1,36 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
/dts-v1/;
|
||||
|
||||
#include "tegra30-asus-grouper-common.dtsi"
|
||||
|
||||
/ {
|
||||
model = "ASUS Google Nexus 7 (Project Nakasi / ME370T) PM269";
|
||||
compatible = "asus,grouper", "nvidia,tegra30";
|
||||
|
||||
i2c@7000d000 {
|
||||
/* Texas Instruments TPS659110 PMIC */
|
||||
pmic: tps65911@2d {
|
||||
compatible = "ti,tps65911";
|
||||
reg = <0x2d>;
|
||||
|
||||
interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-controller;
|
||||
|
||||
ti,system-power-controller;
|
||||
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
|
||||
regulators {
|
||||
/* eMMC VDD */
|
||||
vcore_emmc: ldo1 {
|
||||
regulator-name = "vdd_emmc_core";
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
62
arch/arm/dts/tegra30-asus-nexus7-tilapia-E1565.dts
Normal file
62
arch/arm/dts/tegra30-asus-nexus7-tilapia-E1565.dts
Normal file
|
@ -0,0 +1,62 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
/dts-v1/;
|
||||
|
||||
#include "tegra30-asus-grouper-common.dtsi"
|
||||
|
||||
/ {
|
||||
model = "ASUS Google Nexus 7 (Project Bach / ME370TG) E1565";
|
||||
compatible = "asus,tilapia", "nvidia,tegra30";
|
||||
|
||||
i2c@7000d000 {
|
||||
pmic: max77663@3c {
|
||||
compatible = "maxim,max77663";
|
||||
reg = <0x3c>;
|
||||
|
||||
interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-controller;
|
||||
|
||||
system-power-controller;
|
||||
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
|
||||
regulators {
|
||||
vdd_1v8: sd2 {
|
||||
regulator-name = "vdd_1v8_gen";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
/* eMMC VDD */
|
||||
vcore_emmc: ldo3 {
|
||||
regulator-name = "vcore_emmc";
|
||||
regulator-min-microvolt = <2850000>;
|
||||
regulator-max-microvolt = <3100000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
panel {
|
||||
display-timings {
|
||||
timing@0 {
|
||||
/* 1280x800@60Hz */
|
||||
clock-frequency = <81750000>;
|
||||
|
||||
hactive = <800>;
|
||||
hfront-porch = <64>;
|
||||
hback-porch = <128>;
|
||||
hsync-len = <64>;
|
||||
|
||||
vactive = <1280>;
|
||||
vfront-porch = <5>;
|
||||
vback-porch = <2>;
|
||||
vsync-len = <1>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
18
arch/arm/dts/tegra30-asus-p1801-t.dts
Normal file
18
arch/arm/dts/tegra30-asus-p1801-t.dts
Normal file
|
@ -0,0 +1,18 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
/dts-v1/;
|
||||
|
||||
#include "tegra30-asus-transformer.dtsi"
|
||||
|
||||
/ {
|
||||
model = "ASUS Portable AiO P1801-T";
|
||||
compatible = "asus,p1801-t", "nvidia,tegra30";
|
||||
|
||||
/delete-node/ host1x@50000000;
|
||||
/delete-node/ pwm@7000a000;
|
||||
|
||||
/delete-node/ backlight;
|
||||
/delete-node/ panel;
|
||||
|
||||
/delete-node/ regulator-pnl;
|
||||
/delete-node/ regulator-bl;
|
||||
};
|
9
arch/arm/dts/tegra30-asus-tf201.dts
Normal file
9
arch/arm/dts/tegra30-asus-tf201.dts
Normal file
|
@ -0,0 +1,9 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
/dts-v1/;
|
||||
|
||||
#include "tegra30-asus-transformer.dtsi"
|
||||
|
||||
/ {
|
||||
model = "ASUS Transformer Prime TF201";
|
||||
compatible = "asus,tf201", "nvidia,tegra30";
|
||||
};
|
18
arch/arm/dts/tegra30-asus-tf300t.dts
Normal file
18
arch/arm/dts/tegra30-asus-tf300t.dts
Normal file
|
@ -0,0 +1,18 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
/dts-v1/;
|
||||
|
||||
#include "tegra30-asus-transformer.dtsi"
|
||||
|
||||
/ {
|
||||
model = "ASUS Transformer Pad TF300T";
|
||||
compatible = "asus,tf300t", "nvidia,tegra30";
|
||||
|
||||
gpio@6000d000 {
|
||||
volume-buttons-hog {
|
||||
gpio-hog;
|
||||
gpios = <TEGRA_GPIO(R, 0) GPIO_ACTIVE_HIGH>,
|
||||
<TEGRA_GPIO(K, 7) GPIO_ACTIVE_HIGH>;
|
||||
output-low;
|
||||
};
|
||||
};
|
||||
};
|
9
arch/arm/dts/tegra30-asus-tf300tg.dts
Normal file
9
arch/arm/dts/tegra30-asus-tf300tg.dts
Normal file
|
@ -0,0 +1,9 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
/dts-v1/;
|
||||
|
||||
#include "tegra30-asus-transformer.dtsi"
|
||||
|
||||
/ {
|
||||
model = "ASUS Transformer Pad 3G TF300TG";
|
||||
compatible = "asus,tf300tg", "nvidia,tegra30";
|
||||
};
|
9
arch/arm/dts/tegra30-asus-tf300tl.dts
Normal file
9
arch/arm/dts/tegra30-asus-tf300tl.dts
Normal file
|
@ -0,0 +1,9 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
/dts-v1/;
|
||||
|
||||
#include "tegra30-asus-transformer.dtsi"
|
||||
|
||||
/ {
|
||||
model = "ASUS Transformer Pad LTE TF300TL";
|
||||
compatible = "asus,tf300tl", "nvidia,tegra30";
|
||||
};
|
89
arch/arm/dts/tegra30-asus-tf600t.dts
Normal file
89
arch/arm/dts/tegra30-asus-tf600t.dts
Normal file
|
@ -0,0 +1,89 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
/dts-v1/;
|
||||
|
||||
#include "tegra30-asus-transformer.dtsi"
|
||||
|
||||
/ {
|
||||
model = "ASUS VivoTab RT TF600T";
|
||||
compatible = "asus,tf600t", "nvidia,tegra30";
|
||||
|
||||
aliases {
|
||||
spi0 = &spi4;
|
||||
};
|
||||
|
||||
/delete-node/ host1x@50000000;
|
||||
|
||||
pmic_i2c: i2c@7000d000 {
|
||||
/* Texas Instruments TPS659110 PMIC */
|
||||
pmic: tps65911@2d {
|
||||
regulators {
|
||||
vdd_1v2_bl: vdd1 {
|
||||
regulator-name = "vdd_1v2_backlight";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <1200000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
ti,regulator-ext-sleep-control = <8>;
|
||||
};
|
||||
|
||||
/delete-node/ ldo2;
|
||||
/delete-node/ ldo3;
|
||||
|
||||
/* uSD slot VDDIO */
|
||||
vddio_usd: ldo5 {
|
||||
regulator-name = "vddio_sdmmc";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
avdd_dsi_csi: ldo6 {
|
||||
regulator-name = "avdd_dsi_csi";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <1200000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
spi4: spi@7000da00 {
|
||||
status = "okay";
|
||||
spi-max-frequency = <25000000>;
|
||||
|
||||
spi-flash@1 {
|
||||
compatible = "winbond,w25q32", "jedec,spi-nor";
|
||||
reg = <1>;
|
||||
spi-max-frequency = <20000000>;
|
||||
};
|
||||
};
|
||||
|
||||
backlight {
|
||||
power-supply = <&vdd_1v2_bl>;
|
||||
};
|
||||
|
||||
gpio-keys {
|
||||
key-volume-up {
|
||||
label = "Volume Up";
|
||||
gpios = <&gpio TEGRA_GPIO(Q, 3) GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_UP>;
|
||||
};
|
||||
|
||||
key-volume-down {
|
||||
label = "Volume Down";
|
||||
gpios = <&gpio TEGRA_GPIO(Q, 4) GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_DOWN>;
|
||||
};
|
||||
};
|
||||
|
||||
/delete-node/ panel;
|
||||
|
||||
vdd_usd: regulator-usd {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vdd_usd";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
};
|
||||
|
||||
/delete-node/ regulator-pnl;
|
||||
/delete-node/ regulator-bl;
|
||||
};
|
13
arch/arm/dts/tegra30-asus-tf700t.dts
Normal file
13
arch/arm/dts/tegra30-asus-tf700t.dts
Normal file
|
@ -0,0 +1,13 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
/dts-v1/;
|
||||
|
||||
#include "tegra30-asus-transformer.dtsi"
|
||||
|
||||
/ {
|
||||
model = "ASUS Transformer Infinity TF700T";
|
||||
compatible = "asus,tf700t", "nvidia,tegra30";
|
||||
|
||||
/delete-node/ host1x@50000000;
|
||||
|
||||
/delete-node/ panel;
|
||||
};
|
211
arch/arm/dts/tegra30-asus-transformer.dtsi
Normal file
211
arch/arm/dts/tegra30-asus-transformer.dtsi
Normal file
|
@ -0,0 +1,211 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
#include <dt-bindings/input/input.h>
|
||||
|
||||
#include "tegra30.dtsi"
|
||||
|
||||
/ {
|
||||
chosen {
|
||||
stdout-path = &uarta;
|
||||
};
|
||||
|
||||
aliases {
|
||||
i2c0 = &pwr_i2c;
|
||||
i2c1 = &gen1_i2c;
|
||||
|
||||
mmc0 = &sdmmc4; /* eMMC */
|
||||
mmc1 = &sdmmc1; /* uSD slot */
|
||||
|
||||
rtc0 = &pmic;
|
||||
rtc1 = "/rtc@7000e000";
|
||||
|
||||
usb0 = &usb1;
|
||||
usb1 = &usb3; /* Dock USB */
|
||||
};
|
||||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
reg = <0x80000000 0x40000000>;
|
||||
};
|
||||
|
||||
host1x@50000000 {
|
||||
dc@54200000 {
|
||||
rgb {
|
||||
status = "okay";
|
||||
|
||||
nvidia,panel = <&panel>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
uarta: serial@70006000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
pwm: pwm@7000a000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
gen1_i2c: i2c@7000c000 {
|
||||
status = "okay";
|
||||
clock-frequency = <100000>;
|
||||
};
|
||||
|
||||
pwr_i2c: i2c@7000d000 {
|
||||
status = "okay";
|
||||
clock-frequency = <400000>;
|
||||
|
||||
/* Texas Instruments TPS659110 PMIC */
|
||||
pmic: tps65911@2d {
|
||||
compatible = "ti,tps65911";
|
||||
reg = <0x2d>;
|
||||
|
||||
interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-controller;
|
||||
|
||||
ti,system-power-controller;
|
||||
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
|
||||
regulators {
|
||||
/* eMMC VDD */
|
||||
vcore_emmc: ldo1 {
|
||||
regulator-name = "vdd_emmc_core";
|
||||
regulator-min-microvolt = <1000000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
|
||||
/* uSD slot VDD */
|
||||
vdd_usd: ldo2 {
|
||||
regulator-name = "vdd_usd";
|
||||
regulator-min-microvolt = <3100000>;
|
||||
regulator-max-microvolt = <3100000>;
|
||||
};
|
||||
|
||||
/* uSD slot VDDIO */
|
||||
vddio_usd: ldo3 {
|
||||
regulator-name = "vddio_usd";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <3100000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
sdmmc1: sdhci@78000000 {
|
||||
status = "okay";
|
||||
bus-width = <4>;
|
||||
|
||||
cd-gpios = <&gpio TEGRA_GPIO(I, 5) GPIO_ACTIVE_LOW>;
|
||||
power-gpios = <&gpio TEGRA_GPIO(D, 7) GPIO_ACTIVE_HIGH>;
|
||||
|
||||
vmmc-supply = <&vdd_usd>;
|
||||
vqmmc-supply = <&vddio_usd>;
|
||||
};
|
||||
|
||||
sdmmc4: sdhci@78000600 {
|
||||
status = "okay";
|
||||
bus-width = <8>;
|
||||
non-removable;
|
||||
};
|
||||
|
||||
/* USB via ASUS connector */
|
||||
usb1: usb@7d000000 {
|
||||
status = "okay";
|
||||
dr_mode = "otg";
|
||||
};
|
||||
|
||||
/* Dock's USB port */
|
||||
usb3: usb@7d008000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
backlight: backlight {
|
||||
compatible = "pwm-backlight";
|
||||
|
||||
enable-gpios = <&gpio TEGRA_GPIO(H, 2) GPIO_ACTIVE_HIGH>;
|
||||
power-supply = <&vdd_5v0_bl>;
|
||||
pwms = <&pwm 0 4000000>;
|
||||
|
||||
brightness-levels = <1 35 70 105 140 175 210 255>;
|
||||
default-brightness-level = <5>;
|
||||
};
|
||||
|
||||
/* PMIC has a built-in 32KHz oscillator which is used by PMC */
|
||||
clk32k_in: clock-32k {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <32768>;
|
||||
clock-output-names = "pmic-oscillator";
|
||||
};
|
||||
|
||||
gpio-keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
key-power {
|
||||
label = "Power";
|
||||
gpios = <&gpio TEGRA_GPIO(V, 0) GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_ENTER>;
|
||||
};
|
||||
|
||||
key-volume-up {
|
||||
label = "Volume Up";
|
||||
gpios = <&gpio TEGRA_GPIO(Q, 2) GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_UP>;
|
||||
};
|
||||
|
||||
key-volume-down {
|
||||
label = "Volume Down";
|
||||
gpios = <&gpio TEGRA_GPIO(Q, 3) GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_DOWN>;
|
||||
};
|
||||
};
|
||||
|
||||
panel: panel {
|
||||
compatible = "simple-panel";
|
||||
|
||||
power-supply = <&vdd_pnl_reg>;
|
||||
enable-gpios = <&gpio TEGRA_GPIO(N, 6) GPIO_ACTIVE_HIGH>;
|
||||
|
||||
backlight = <&backlight>;
|
||||
|
||||
display-timings {
|
||||
timing@0 {
|
||||
/* 1280x800@60Hz */
|
||||
clock-frequency = <68000000>;
|
||||
|
||||
hactive = <1280>;
|
||||
hfront-porch = <48>;
|
||||
hback-porch = <18>;
|
||||
hsync-len = <30>;
|
||||
|
||||
vactive = <800>;
|
||||
vfront-porch = <3>;
|
||||
vback-porch = <12>;
|
||||
vsync-len = <5>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
vdd_pnl_reg: regulator-pnl {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vdd_panel";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
gpio = <&gpio TEGRA_GPIO(W, 1) GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
};
|
||||
|
||||
vdd_5v0_bl: regulator-bl {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vdd_5v0_bl";
|
||||
regulator-min-microvolt = <5000000>;
|
||||
regulator-max-microvolt = <5000000>;
|
||||
regulator-boot-on;
|
||||
gpio = <&gpio TEGRA_GPIO(H, 3) GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
};
|
||||
};
|
166
arch/arm/dts/tegra30-htc-endeavoru.dts
Normal file
166
arch/arm/dts/tegra30-htc-endeavoru.dts
Normal file
|
@ -0,0 +1,166 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
/dts-v1/;
|
||||
|
||||
/* This dts file describes the HTC One X smartphone */
|
||||
/* CPU Speedo ID 4, Soc Speedo ID 1, CPU Process: 1, Core Process: 0 */
|
||||
|
||||
#include <dt-bindings/input/input.h>
|
||||
|
||||
#include "tegra30.dtsi"
|
||||
|
||||
/ {
|
||||
model = "HTC One X";
|
||||
compatible = "htc,endeavoru", "nvidia,tegra30";
|
||||
|
||||
chosen {
|
||||
stdout-path = &uarta;
|
||||
};
|
||||
|
||||
aliases {
|
||||
i2c0 = &pwr_i2c;
|
||||
|
||||
mmc0 = &sdmmc4; /* eMMC */
|
||||
|
||||
rtc0 = &pmic;
|
||||
rtc1 = "/rtc@7000e000";
|
||||
|
||||
usb0 = µ_usb;
|
||||
};
|
||||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
reg = <0x80000000 0x40000000>;
|
||||
};
|
||||
|
||||
host1x@50000000 {
|
||||
dc@54200000 {
|
||||
clocks = <&tegra_car TEGRA30_CLK_DISP1>,
|
||||
<&tegra_car TEGRA30_CLK_PLL_D_OUT0>;
|
||||
|
||||
rgb {
|
||||
status = "okay";
|
||||
|
||||
nvidia,panel = <&dsia>;
|
||||
};
|
||||
};
|
||||
|
||||
dsia: dsi@54300000 {
|
||||
status = "okay";
|
||||
|
||||
avdd-dsi-csi-supply = <&avdd_dsi_csi>;
|
||||
|
||||
panel = <&panel>;
|
||||
};
|
||||
};
|
||||
|
||||
uarta: serial@70006000 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
pwr_i2c: i2c@7000d000 {
|
||||
status = "okay";
|
||||
clock-frequency = <100000>;
|
||||
|
||||
/* Texas Instruments TPS80032 PMIC */
|
||||
pmic: tps80032@48 {
|
||||
compatible = "ti,tps80032";
|
||||
reg = <0x48>;
|
||||
|
||||
regulators {
|
||||
/* DSI VDD */
|
||||
avdd_dsi_csi: ldo1 {
|
||||
regulator-name = "avdd_dsi_csi";
|
||||
regulator-min-microvolt = <1200000>;
|
||||
regulator-max-microvolt = <1200000>;
|
||||
regulator-always-on;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
sdmmc4: sdhci@78000600 {
|
||||
status = "okay";
|
||||
bus-width = <8>;
|
||||
non-removable;
|
||||
};
|
||||
|
||||
micro_usb: usb@7d000000 {
|
||||
status = "okay";
|
||||
dr_mode = "otg";
|
||||
};
|
||||
|
||||
backlight: backlight {
|
||||
compatible = "nvidia,tegra-pwm-backlight";
|
||||
|
||||
nvidia,pwm-source = <1>;
|
||||
nvidia,default-brightness = <0x8E>;
|
||||
};
|
||||
|
||||
/* PMIC has a built-in 32KHz oscillator which is used by PMC */
|
||||
clk32k_in: clock-32k {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <32768>;
|
||||
clock-output-names = "pmic-oscillator";
|
||||
};
|
||||
|
||||
gpio-keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
key-power {
|
||||
label = "Power";
|
||||
gpios = <&gpio TEGRA_GPIO(U, 6) GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_ENTER>;
|
||||
};
|
||||
|
||||
key-volume-up {
|
||||
label = "Volume Up";
|
||||
gpios = <&gpio TEGRA_GPIO(S, 0) GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_UP>;
|
||||
};
|
||||
|
||||
key-volume-down {
|
||||
label = "Volume Down";
|
||||
gpios = <&gpio TEGRA_GPIO(W, 3) GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_DOWN>;
|
||||
};
|
||||
};
|
||||
|
||||
panel: panel {
|
||||
compatible = "htc,edge-panel";
|
||||
|
||||
reset-gpios = <&gpio TEGRA_GPIO(N, 6) GPIO_ACTIVE_LOW>;
|
||||
|
||||
vdd-supply = <&vdd_3v3_panel>;
|
||||
vddio-supply = <&vdd_1v8_panel>;
|
||||
|
||||
backlight = <&backlight>;
|
||||
};
|
||||
|
||||
vcore_emmc: regulator-emmc {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vdd_2v85_sdmmc";
|
||||
regulator-min-microvolt = <2850000>;
|
||||
regulator-max-microvolt = <2850000>;
|
||||
gpio = <&gpio TEGRA_GPIO(M, 3) GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
};
|
||||
|
||||
vdd_3v3_panel: regulator-lcm {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "v_lcm_3v3";
|
||||
regulator-min-microvolt = <3300000>;
|
||||
regulator-max-microvolt = <3300000>;
|
||||
gpio = <&gpio TEGRA_GPIO(E, 2) GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
};
|
||||
|
||||
vdd_1v8_panel: regulator-lcmio {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "v_lcmio_1v8";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
gpio = <&gpio TEGRA_GPIO(E, 5) GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
};
|
||||
};
|
40
arch/arm/dts/tegra30-lg-p880.dts
Normal file
40
arch/arm/dts/tegra30-lg-p880.dts
Normal file
|
@ -0,0 +1,40 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
/dts-v1/;
|
||||
|
||||
#include "tegra30-lg-x3.dtsi"
|
||||
|
||||
/ {
|
||||
model = "LG Optimus 4X HD";
|
||||
compatible = "lge,p880", "nvidia,tegra30";
|
||||
|
||||
aliases {
|
||||
mmc1 = &sdmmc3; /* uSD slot */
|
||||
};
|
||||
|
||||
sdmmc3: sdhci@78000400 {
|
||||
status = "okay";
|
||||
bus-width = <4>;
|
||||
|
||||
cd-gpios = <&gpio TEGRA_GPIO(W, 5) GPIO_ACTIVE_LOW>;
|
||||
|
||||
vmmc-supply = <&vdd_usd>;
|
||||
vqmmc-supply = <&vdd_1v8_vio>;
|
||||
};
|
||||
|
||||
gpio-keys {
|
||||
key-volume-up {
|
||||
label = "Volume Up";
|
||||
gpios = <&gpio TEGRA_GPIO(O, 7) GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_UP>;
|
||||
};
|
||||
};
|
||||
|
||||
panel: panel {
|
||||
compatible = "jdi,dx12d100vm0eaa";
|
||||
|
||||
enable-gpios = <&gpio TEGRA_GPIO(Y, 0) GPIO_ACTIVE_HIGH>;
|
||||
reset-gpios = <&gpio TEGRA_GPIO(W, 0) GPIO_ACTIVE_HIGH>;
|
||||
|
||||
backlight = <&backlight>;
|
||||
};
|
||||
};
|
50
arch/arm/dts/tegra30-lg-p895.dts
Normal file
50
arch/arm/dts/tegra30-lg-p895.dts
Normal file
|
@ -0,0 +1,50 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
/dts-v1/;
|
||||
|
||||
#include "tegra30-lg-x3.dtsi"
|
||||
|
||||
/ {
|
||||
model = "LG Optimus Vu";
|
||||
compatible = "lge,p895", "nvidia,tegra30";
|
||||
|
||||
gpio-keys {
|
||||
key-volume-up {
|
||||
label = "Volume Up";
|
||||
gpios = <&gpio TEGRA_GPIO(I, 6) GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_UP>;
|
||||
};
|
||||
};
|
||||
|
||||
panel: panel {
|
||||
compatible = "hitachi,tx13d100vm0eaa";
|
||||
|
||||
reset-gpios = <&gpio TEGRA_GPIO(W, 0) GPIO_ACTIVE_HIGH>;
|
||||
|
||||
renesas,gamma = <3>;
|
||||
renesas,inversion;
|
||||
renesas,contrast;
|
||||
|
||||
vcc-supply = <&vcc_3v0_lcd>;
|
||||
iovcc-supply = <&iovcc_1v8_lcd>;
|
||||
|
||||
backlight = <&backlight>;
|
||||
};
|
||||
|
||||
vcc_3v0_lcd: regulator-lcd {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "vcc_3v0_lcd";
|
||||
regulator-min-microvolt = <3000000>;
|
||||
regulator-max-microvolt = <3000000>;
|
||||
gpio = <&gpio TEGRA_GPIO(BB, 0) GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
};
|
||||
|
||||
iovcc_1v8_lcd: regulator-lcdvio {
|
||||
compatible = "regulator-fixed";
|
||||
regulator-name = "iovcc_1v8_lcd";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
gpio = <&gpio TEGRA_GPIO(Y, 0) GPIO_ACTIVE_HIGH>;
|
||||
enable-active-high;
|
||||
};
|
||||
};
|
180
arch/arm/dts/tegra30-lg-x3.dtsi
Normal file
180
arch/arm/dts/tegra30-lg-x3.dtsi
Normal file
|
@ -0,0 +1,180 @@
|
|||
// SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
#include <dt-bindings/input/input.h>
|
||||
|
||||
#include "tegra30.dtsi"
|
||||
|
||||
/ {
|
||||
chosen {
|
||||
stdout-path = &uartd;
|
||||
};
|
||||
|
||||
aliases {
|
||||
i2c0 = &pwr_i2c;
|
||||
i2c1 = &gen2_i2c;
|
||||
|
||||
mmc0 = &sdmmc4; /* eMMC */
|
||||
|
||||
rtc0 = &pmic;
|
||||
rtc1 = "/rtc@7000e000";
|
||||
|
||||
spi0 = &dsi_spi;
|
||||
|
||||
usb0 = µ_usb;
|
||||
};
|
||||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
reg = <0x80000000 0x40000000>;
|
||||
};
|
||||
|
||||
host1x@50000000 {
|
||||
dc@54200000 {
|
||||
rgb {
|
||||
status = "okay";
|
||||
|
||||
nvidia,panel = <&bridge>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
uartd: serial@70006300 {
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
gen2_i2c: i2c@7000c400 {
|
||||
status = "okay";
|
||||
clock-frequency = <400000>;
|
||||
|
||||
backlight: lm3533@36 {
|
||||
compatible = "ti,lm3533";
|
||||
reg = <0x36>;
|
||||
|
||||
enable-gpios = <&gpio TEGRA_GPIO(N, 6) GPIO_ACTIVE_HIGH>;
|
||||
default-brightness-level = <128>;
|
||||
};
|
||||
|
||||
muic@44 {
|
||||
compatible = "maxim,max14526-muic";
|
||||
reg = <0x44>;
|
||||
|
||||
maxim,ap-usb;
|
||||
|
||||
usif-gpios = <&gpio TEGRA_GPIO(Y, 3) GPIO_ACTIVE_HIGH>;
|
||||
dp2t-gpios = <&gpio TEGRA_GPIO(CC, 2) GPIO_ACTIVE_HIGH>;
|
||||
};
|
||||
};
|
||||
|
||||
pwr_i2c: i2c@7000d000 {
|
||||
status = "okay";
|
||||
clock-frequency = <400000>;
|
||||
|
||||
pmic: max77663@1c {
|
||||
compatible = "maxim,max77663";
|
||||
reg = <0x1c>;
|
||||
|
||||
interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#interrupt-cells = <2>;
|
||||
interrupt-controller;
|
||||
|
||||
#gpio-cells = <2>;
|
||||
gpio-controller;
|
||||
|
||||
system-power-controller;
|
||||
|
||||
regulators {
|
||||
vdd_1v8_vio: sd2 {
|
||||
regulator-name = "vdd_1v8_gen";
|
||||
regulator-min-microvolt = <1800000>;
|
||||
regulator-max-microvolt = <1800000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
vdd_usd: ldo3 {
|
||||
regulator-name = "vdd_sdmmc3";
|
||||
regulator-min-microvolt = <3000000>;
|
||||
regulator-max-microvolt = <3000000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
};
|
||||
|
||||
vcore_emmc: ldo5 {
|
||||
regulator-name = "vdd_ddr_rx";
|
||||
regulator-min-microvolt = <2850000>;
|
||||
regulator-max-microvolt = <2850000>;
|
||||
regulator-always-on;
|
||||
regulator-boot-on;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
dsi_spi: spi@7000dc00 {
|
||||
status = "okay";
|
||||
spi-max-frequency = <25000000>;
|
||||
|
||||
bridge: bridge-spi@2 {
|
||||
compatible = "solomon,ssd2825";
|
||||
reg = <2>;
|
||||
|
||||
spi-cpol;
|
||||
spi-cpha;
|
||||
|
||||
spi-max-frequency = <1000000>;
|
||||
|
||||
power-gpios = <&gpio TEGRA_GPIO(B, 1) GPIO_ACTIVE_HIGH>;
|
||||
reset-gpios = <&gpio TEGRA_GPIO(O, 2) GPIO_ACTIVE_HIGH>;
|
||||
|
||||
clocks = <&ssd2825_refclk>;
|
||||
clock-names = "tx_clk";
|
||||
|
||||
panel = <&panel>;
|
||||
};
|
||||
};
|
||||
|
||||
sdmmc4: sdhci@78000600 {
|
||||
status = "okay";
|
||||
bus-width = <8>;
|
||||
non-removable;
|
||||
|
||||
vmmc-supply = <&vcore_emmc>;
|
||||
vqmmc-supply = <&vdd_1v8_vio>;
|
||||
};
|
||||
|
||||
micro_usb: usb@7d000000 {
|
||||
status = "okay";
|
||||
dr_mode = "otg";
|
||||
};
|
||||
|
||||
/* PMIC has a built-in 32KHz oscillator which is used by PMC */
|
||||
clk32k_in: clock-32k {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <32768>;
|
||||
clock-output-names = "pmic-oscillator";
|
||||
};
|
||||
|
||||
ssd2825_refclk: clock-ssd2825 {
|
||||
compatible = "fixed-clock";
|
||||
#clock-cells = <0>;
|
||||
clock-frequency = <24000000>;
|
||||
clock-output-names = "ssd2825-refclk";
|
||||
};
|
||||
|
||||
gpio-keys {
|
||||
compatible = "gpio-keys";
|
||||
|
||||
key-power {
|
||||
label = "Power";
|
||||
gpios = <&gpio TEGRA_GPIO(C, 7) GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_ENTER>;
|
||||
};
|
||||
|
||||
key-volume-down {
|
||||
label = "Volume Down";
|
||||
gpios = <&gpio TEGRA_GPIO(O, 4) GPIO_ACTIVE_LOW>;
|
||||
linux,code = <KEY_DOWN>;
|
||||
};
|
||||
};
|
||||
};
|
|
@ -189,6 +189,21 @@ enum {
|
|||
DCLK_VOP_DIV_SHIFT = 0,
|
||||
DCLK_VOP_DIV_MASK = 0xff,
|
||||
|
||||
/* CRU_CLKSEL_CON10 */
|
||||
/* CRU_CLKSEL_CON13 */
|
||||
/* CRU_CLKSEL_CON16 */
|
||||
/* CRU_CLKSEL_CON19 */
|
||||
/* CRU_CLKSEL_CON22 */
|
||||
CLK_UART_PLL_SEL_SHIFT = 13,
|
||||
CLK_UART_PLL_SEL_MASK = 0x7 << CLK_UART_PLL_SEL_SHIFT,
|
||||
CLK_UART_PLL_SEL_DPLL = 0,
|
||||
CLK_UART_PLL_SEL_VPLL0,
|
||||
CLK_UART_PLL_SEL_VPLL1,
|
||||
CLK_UART_PLL_SEL_480M,
|
||||
CLK_UART_PLL_SEL_24M,
|
||||
CLK_UART_DIV_CON_SHIFT = 0,
|
||||
CLK_UART_DIV_CON_MASK = 0x1f << CLK_UART_DIV_CON_SHIFT,
|
||||
|
||||
/* CRU_CLK_SEL25_CON */
|
||||
/* CRU_CLK_SEL26_CON */
|
||||
/* CRU_CLK_SEL27_CON */
|
||||
|
|
|
@ -15,6 +15,8 @@
|
|||
# include <asm/arch-rockchip/cru_rk3288.h>
|
||||
#elif defined(CONFIG_ROCKCHIP_RK3399)
|
||||
# include <asm/arch-rockchip/cru_rk3399.h>
|
||||
#elif defined(CONFIG_ROCKCHIP_RK3568)
|
||||
#include <asm/arch-rockchip/cru_rk3568.h>
|
||||
#endif
|
||||
|
||||
/* CRU_GLB_RST_ST */
|
||||
|
|
|
@ -106,6 +106,8 @@ struct rk3568_cru {
|
|||
unsigned int emmc_con[2];/* Address Offset: 0x0598 */
|
||||
};
|
||||
|
||||
#define rockchip_cru rk3568_cru
|
||||
|
||||
check_member(rk3568_cru, mode_con00, 0xc0);
|
||||
check_member(rk3568_cru, softrst_con[0], 0x400);
|
||||
|
||||
|
@ -493,7 +495,7 @@ enum {
|
|||
|
||||
/* CRU_CLK_SEL81_CON */
|
||||
CPLL_25M_DIV_SHIFT = 8,
|
||||
CPLL_25M_DIV_MASK = 0x1f << CPLL_25M_DIV_SHIFT,
|
||||
CPLL_25M_DIV_MASK = 0x3f << CPLL_25M_DIV_SHIFT,
|
||||
CPLL_50M_DIV_SHIFT = 0,
|
||||
CPLL_50M_DIV_MASK = 0x1f << CPLL_50M_DIV_SHIFT,
|
||||
|
||||
|
|
|
@ -19,4 +19,11 @@ struct fuse_regs {
|
|||
u32 security_mode; /* 0x1A0: FUSE_SECURITY_MODE */
|
||||
};
|
||||
|
||||
/**
|
||||
* Calculate SoC UID
|
||||
*
|
||||
* Return: uid if ok, 0 on error
|
||||
*/
|
||||
unsigned long long tegra_chip_uid(void);
|
||||
|
||||
#endif /* ifndef _FUSE_H_ */
|
||||
|
|
|
@ -9,6 +9,11 @@
|
|||
* generate asm statements containing #defines,
|
||||
* compile this file to assembler, and then extract the
|
||||
* #defines from the assembly-language output.
|
||||
*
|
||||
* Copyright 2022-2023 Arm Limited and/or its affiliates <open-source-office@arm.com>
|
||||
*
|
||||
* Authors:
|
||||
* Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
|
@ -90,6 +95,17 @@ int main(void)
|
|||
DEFINE(ARM_SMCCC_RES_X2_OFFS, offsetof(struct arm_smccc_res, a2));
|
||||
DEFINE(ARM_SMCCC_QUIRK_ID_OFFS, offsetof(struct arm_smccc_quirk, id));
|
||||
DEFINE(ARM_SMCCC_QUIRK_STATE_OFFS, offsetof(struct arm_smccc_quirk, state));
|
||||
#ifdef CONFIG_ARM64
|
||||
DEFINE(ARM_SMCCC_1_2_REGS_X0_OFFS, offsetof(struct arm_smccc_1_2_regs, a0));
|
||||
DEFINE(ARM_SMCCC_1_2_REGS_X2_OFFS, offsetof(struct arm_smccc_1_2_regs, a2));
|
||||
DEFINE(ARM_SMCCC_1_2_REGS_X4_OFFS, offsetof(struct arm_smccc_1_2_regs, a4));
|
||||
DEFINE(ARM_SMCCC_1_2_REGS_X6_OFFS, offsetof(struct arm_smccc_1_2_regs, a6));
|
||||
DEFINE(ARM_SMCCC_1_2_REGS_X8_OFFS, offsetof(struct arm_smccc_1_2_regs, a8));
|
||||
DEFINE(ARM_SMCCC_1_2_REGS_X10_OFFS, offsetof(struct arm_smccc_1_2_regs, a10));
|
||||
DEFINE(ARM_SMCCC_1_2_REGS_X12_OFFS, offsetof(struct arm_smccc_1_2_regs, a12));
|
||||
DEFINE(ARM_SMCCC_1_2_REGS_X14_OFFS, offsetof(struct arm_smccc_1_2_regs, a14));
|
||||
DEFINE(ARM_SMCCC_1_2_REGS_X16_OFFS, offsetof(struct arm_smccc_1_2_regs, a16));
|
||||
#endif
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -333,7 +333,7 @@ phys_size_t get_effective_memsize(void)
|
|||
}
|
||||
}
|
||||
|
||||
phys_size_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
phys_addr_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
{
|
||||
ulong top_addr;
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@ DECLARE_GLOBAL_DATA_PTR;
|
|||
*/
|
||||
#define USABLE_RAM_SIZE 0x80000000ULL
|
||||
|
||||
phys_size_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
phys_addr_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
{
|
||||
unsigned long top = CFG_SYS_SDRAM_BASE + min(gd->ram_size, USABLE_RAM_SIZE);
|
||||
|
||||
|
|
|
@ -25,6 +25,13 @@ cmd_objcopy = $(OBJCOPY) --gap-fill=0x00 $(OBJCOPYFLAGS) \
|
|||
spl/u-boot-spl.srec: spl/u-boot-spl FORCE
|
||||
$(call if_changed,objcopy)
|
||||
|
||||
srec_cat_gte_160 := ${shell expr `srec_cat -VERSION | grep ^srec_cat | sed 's/^.* //g' | cut -f1-2 -d.` \>= "1.60"}
|
||||
ifeq "$(srec_cat_gte_160)" "1"
|
||||
srec_cat_le_cmd := "-constant-l-e"
|
||||
else
|
||||
srec_cat_le_cmd := "-l-e-constant"
|
||||
endif
|
||||
|
||||
ifneq ($(CONFIG_R8A774C0)$(CONFIG_R8A77990)$(CONFIG_R8A77995),)
|
||||
#
|
||||
# The first 6 generate statements generate the R-Car Gen3 SCIF loader header.
|
||||
|
@ -52,34 +59,34 @@ quiet_cmd_srec_cat = SRECCAT $@
|
|||
cmd_srec_cat = srec_cat -output $@ -M 8 $< -M 8 \
|
||||
-offset -0x13fd0 \
|
||||
-Output_Block_Size 16 \
|
||||
-generate 0xe6300400 0xe6300404 -l-e-constant 0x0 4 \
|
||||
-generate 0xe630048c 0xe6300490 -l-e-constant 0x0 4 \
|
||||
-generate 0xe63005d4 0xe63005d8 -l-e-constant 0xe6304000 4 \
|
||||
-generate 0xe63006e4 0xe63006e8 -l-e-constant $2 4 \
|
||||
-generate 0xe6301154 0xe6301158 -l-e-constant 0xe6304000 4 \
|
||||
-generate 0xe6301264 0xe6301268 -l-e-constant $2 4 \
|
||||
-generate 0xe6304000 0xe6304004 -l-e-constant 0xd2bcc000 4 \
|
||||
-generate 0xe6304004 0xe6304008 -l-e-constant 0xb26c0400 4 \
|
||||
-generate 0xe6304008 0xe630400c -l-e-constant 0xb2720001 4 \
|
||||
-generate 0xe630400c 0xe6304010 -l-e-constant 0xb27c0421 4 \
|
||||
-generate 0xe6304010 0xe6304014 -l-e-constant 0xb2710402 4 \
|
||||
-generate 0xe6304014 0xe6304018 -l-e-constant 0xaa0203e0 4 \
|
||||
-generate 0xe6304018 0xe630401c -l-e-constant 0xd28e0003 4 \
|
||||
-generate 0xe630401c 0xe6304020 -l-e-constant 0xa8c11424 4 \
|
||||
-generate 0xe6304020 0xe6304024 -l-e-constant 0xa8811444 4 \
|
||||
-generate 0xe6304024 0xe6304028 -l-e-constant 0xf1004063 4 \
|
||||
-generate 0xe6304028 0xe630402c -l-e-constant 0x54ffffaa 4 \
|
||||
-generate 0xe630402c 0xe6304030 -l-e-constant 0xd61f0000 4
|
||||
-generate 0xe6300400 0xe6300404 $(srec_cat_le_cmd) 0x0 4 \
|
||||
-generate 0xe630048c 0xe6300490 $(srec_cat_le_cmd) 0x0 4 \
|
||||
-generate 0xe63005d4 0xe63005d8 $(srec_cat_le_cmd) 0xe6304000 4 \
|
||||
-generate 0xe63006e4 0xe63006e8 $(srec_cat_le_cmd) $2 4 \
|
||||
-generate 0xe6301154 0xe6301158 $(srec_cat_le_cmd) 0xe6304000 4 \
|
||||
-generate 0xe6301264 0xe6301268 $(srec_cat_le_cmd) $2 4 \
|
||||
-generate 0xe6304000 0xe6304004 $(srec_cat_le_cmd) 0xd2bcc000 4 \
|
||||
-generate 0xe6304004 0xe6304008 $(srec_cat_le_cmd) 0xb26c0400 4 \
|
||||
-generate 0xe6304008 0xe630400c $(srec_cat_le_cmd) 0xb2720001 4 \
|
||||
-generate 0xe630400c 0xe6304010 $(srec_cat_le_cmd) 0xb27c0421 4 \
|
||||
-generate 0xe6304010 0xe6304014 $(srec_cat_le_cmd) 0xb2710402 4 \
|
||||
-generate 0xe6304014 0xe6304018 $(srec_cat_le_cmd) 0xaa0203e0 4 \
|
||||
-generate 0xe6304018 0xe630401c $(srec_cat_le_cmd) 0xd28e0003 4 \
|
||||
-generate 0xe630401c 0xe6304020 $(srec_cat_le_cmd) 0xa8c11424 4 \
|
||||
-generate 0xe6304020 0xe6304024 $(srec_cat_le_cmd) 0xa8811444 4 \
|
||||
-generate 0xe6304024 0xe6304028 $(srec_cat_le_cmd) 0xf1004063 4 \
|
||||
-generate 0xe6304028 0xe630402c $(srec_cat_le_cmd) 0x54ffffaa 4 \
|
||||
-generate 0xe630402c 0xe6304030 $(srec_cat_le_cmd) 0xd61f0000 4
|
||||
else
|
||||
quiet_cmd_srec_cat = SRECCAT $@
|
||||
cmd_srec_cat = srec_cat -output $@ -M 8 $< -M 8 \
|
||||
-Output_Block_Size 16 \
|
||||
-generate 0xe6300400 0xe6300404 -l-e-constant 0x0 4 \
|
||||
-generate 0xe630048c 0xe6300490 -l-e-constant 0x0 4 \
|
||||
-generate 0xe63005d4 0xe63005d8 -l-e-constant $(CONFIG_SPL_TEXT_BASE) 4 \
|
||||
-generate 0xe63006e4 0xe63006e8 -l-e-constant $2 4 \
|
||||
-generate 0xe6301154 0xe6301158 -l-e-constant $(CONFIG_SPL_TEXT_BASE) 4 \
|
||||
-generate 0xe6301264 0xe6301268 -l-e-constant $2 4
|
||||
-generate 0xe6300400 0xe6300404 $(srec_cat_le_cmd) 0x0 4 \
|
||||
-generate 0xe630048c 0xe6300490 $(srec_cat_le_cmd) 0x0 4 \
|
||||
-generate 0xe63005d4 0xe63005d8 $(srec_cat_le_cmd) $(CONFIG_SPL_TEXT_BASE) 4 \
|
||||
-generate 0xe63006e4 0xe63006e8 $(srec_cat_le_cmd) $2 4 \
|
||||
-generate 0xe6301154 0xe6301158 $(srec_cat_le_cmd) $(CONFIG_SPL_TEXT_BASE) 4 \
|
||||
-generate 0xe6301264 0xe6301268 $(srec_cat_le_cmd) $2 4
|
||||
endif
|
||||
|
||||
spl/u-boot-spl.scif: spl/u-boot-spl.srec spl/u-boot-spl.bin
|
||||
|
|
|
@ -86,7 +86,7 @@ static int rmobile_cpuinfo_idx(void)
|
|||
int i = 0;
|
||||
u32 cpu_type = rmobile_get_cpu_type();
|
||||
|
||||
for (; i < ARRAY_SIZE(rmobile_cpuinfo); i++)
|
||||
for (; i < ARRAY_SIZE(rmobile_cpuinfo) - 1; i++)
|
||||
if (rmobile_cpuinfo[i].cpu_type == cpu_type)
|
||||
break;
|
||||
|
||||
|
|
|
@ -359,6 +359,7 @@ config ROCKCHIP_RV1126
|
|||
select PMIC_RK8XX
|
||||
select BOARD_LATE_INIT
|
||||
imply ROCKCHIP_COMMON_BOARD
|
||||
imply OF_LIBFDT_OVERLAY
|
||||
imply TPL_DM
|
||||
imply TPL_LIBCOMMON_SUPPORT
|
||||
imply TPL_LIBGENERIC_SUPPORT
|
||||
|
|
|
@ -280,15 +280,5 @@ void spl_board_init(void)
|
|||
if (cru->glb_rst_st != 0)
|
||||
rk3399_force_power_on_reset();
|
||||
}
|
||||
|
||||
if (IS_ENABLED(CONFIG_SPL_DM_REGULATOR)) {
|
||||
/*
|
||||
* Turning the eMMC and SPI back on (if disabled via the Qseven
|
||||
* BIOS_ENABLE) signal is done through a always-on regulator).
|
||||
*/
|
||||
if (regulators_enable_boot_on(false))
|
||||
debug("%s: Cannot enable boot on regulator\n",
|
||||
__func__);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -216,7 +216,7 @@ int dram_init(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
phys_size_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
phys_addr_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
{
|
||||
unsigned long top = CFG_SYS_SDRAM_BASE + SDRAM_MAX_SIZE;
|
||||
|
||||
|
|
|
@ -112,19 +112,6 @@ void board_init_f(ulong dummy)
|
|||
{
|
||||
int ret;
|
||||
|
||||
#ifdef CONFIG_DEBUG_UART
|
||||
/*
|
||||
* Debug UART can be used from here if required:
|
||||
*
|
||||
* debug_uart_init();
|
||||
* printch('a');
|
||||
* printhex8(0x1234);
|
||||
* printascii("string");
|
||||
*/
|
||||
debug_uart_init();
|
||||
debug("\nspl:debug uart enabled in %s\n", __func__);
|
||||
#endif
|
||||
|
||||
board_early_init_f();
|
||||
|
||||
ret = spl_early_init();
|
||||
|
|
|
@ -40,7 +40,7 @@ int dram_init(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
phys_size_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
phys_addr_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
{
|
||||
phys_size_t size;
|
||||
phys_addr_t reg;
|
||||
|
|
|
@ -729,7 +729,7 @@ void __secure psci_system_suspend(u32 __always_unused function_id,
|
|||
setbits_le32(STM32_RCC_BASE + RCC_MP_CIER, RCC_MP_CIFR_WKUPF);
|
||||
|
||||
setbits_le32(STM32_PWR_BASE + PWR_MPUCR,
|
||||
PWR_MPUCR_CSSF | PWR_MPUCR_CSTDBYDIS | PWR_MPUCR_PDDS);
|
||||
PWR_MPUCR_CSSF | PWR_MPUCR_CSTDBYDIS);
|
||||
|
||||
saved_mcudivr = readl(STM32_RCC_BASE + RCC_MCUDIVR);
|
||||
saved_pll3cr = readl(STM32_RCC_BASE + RCC_PLL3CR);
|
||||
|
|
|
@ -64,7 +64,7 @@ static struct mm_region sunxi_mem_map[] = {
|
|||
};
|
||||
struct mm_region *mem_map = sunxi_mem_map;
|
||||
|
||||
phys_size_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
phys_addr_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
{
|
||||
/* Some devices (like the EMAC) have a 32-bit DMA limit. */
|
||||
if (gd->ram_top > (1ULL << 32))
|
||||
|
|
|
@ -32,6 +32,10 @@ endif
|
|||
obj-$(CONFIG_DISPLAY_CPUINFO) += sys_info.o
|
||||
obj-y += pmc.o
|
||||
|
||||
ifndef CONFIG_TEGRA186
|
||||
obj-y += fuse.o
|
||||
endif
|
||||
|
||||
obj-$(CONFIG_TEGRA20) += tegra20/
|
||||
obj-$(CONFIG_TEGRA30) += tegra30/
|
||||
obj-$(CONFIG_TEGRA114) += tegra114/
|
||||
|
|
|
@ -403,7 +403,7 @@ int dram_init_banksize(void)
|
|||
* This function is called before dram_init_banksize(), so we can't simply
|
||||
* return gd->bd->bi_dram[1].start + gd->bd->bi_dram[1].size.
|
||||
*/
|
||||
phys_size_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
phys_addr_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
{
|
||||
ulong ram_top;
|
||||
|
||||
|
|
151
arch/arm/mach-tegra/fuse.c
Normal file
151
arch/arm/mach-tegra/fuse.c
Normal file
|
@ -0,0 +1,151 @@
|
|||
// SPDX-License-Identifier: GPL-2.0+
|
||||
/*
|
||||
* (C) Copyright 2012-2013
|
||||
* NVIDIA Corporation <www.nvidia.com>
|
||||
*
|
||||
* (C) Copyright 2022
|
||||
* Svyatoslav Ryhel <clamor95@gmail.com>
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <linux/delay.h>
|
||||
#include <asm/io.h>
|
||||
|
||||
#include <asm/arch/tegra.h>
|
||||
#include <asm/arch/gp_padctrl.h>
|
||||
#include <asm/arch/clock.h>
|
||||
#include <asm/arch-tegra/fuse.h>
|
||||
|
||||
#include "cpu.h"
|
||||
|
||||
#define FUSE_UID_LOW 0x108
|
||||
#define FUSE_UID_HIGH 0x10c
|
||||
|
||||
#define FUSE_VENDOR_CODE 0x200
|
||||
#define FUSE_FAB_CODE 0x204
|
||||
#define FUSE_LOT_CODE_0 0x208
|
||||
#define FUSE_LOT_CODE_1 0x20c
|
||||
#define FUSE_WAFER_ID 0x210
|
||||
#define FUSE_X_COORDINATE 0x214
|
||||
#define FUSE_Y_COORDINATE 0x218
|
||||
|
||||
#define FUSE_VENDOR_CODE_MASK 0xf
|
||||
#define FUSE_FAB_CODE_MASK 0x3f
|
||||
#define FUSE_WAFER_ID_MASK 0x3f
|
||||
#define FUSE_X_COORDINATE_MASK 0x1ff
|
||||
#define FUSE_Y_COORDINATE_MASK 0x1ff
|
||||
|
||||
static u32 tegra_fuse_readl(unsigned long offset)
|
||||
{
|
||||
return readl(NV_PA_FUSE_BASE + offset);
|
||||
}
|
||||
|
||||
static void tegra_fuse_init(void)
|
||||
{
|
||||
u32 reg;
|
||||
|
||||
/*
|
||||
* Performed by downstream and is not
|
||||
* documented by TRM. Whithout setting
|
||||
* this bit fuse region will not work.
|
||||
*/
|
||||
reg = readl_relaxed(NV_PA_CLK_RST_BASE + 0x48);
|
||||
reg |= BIT(28);
|
||||
writel(reg, NV_PA_CLK_RST_BASE + 0x48);
|
||||
|
||||
clock_enable(PERIPH_ID_FUSE);
|
||||
udelay(2);
|
||||
reset_set_enable(PERIPH_ID_FUSE, 0);
|
||||
}
|
||||
|
||||
unsigned long long tegra_chip_uid(void)
|
||||
{
|
||||
u64 uid = 0ull;
|
||||
u32 reg;
|
||||
u32 cid;
|
||||
u32 vendor;
|
||||
u32 fab;
|
||||
u32 lot;
|
||||
u32 wafer;
|
||||
u32 x;
|
||||
u32 y;
|
||||
u32 i;
|
||||
|
||||
tegra_fuse_init();
|
||||
|
||||
/* This used to be so much easier in prior chips. Unfortunately, there
|
||||
is no one-stop shopping for the unique id anymore. It must be
|
||||
constructed from various bits of information burned into the fuses
|
||||
during the manufacturing process. The 64-bit unique id is formed
|
||||
by concatenating several bit fields. The notation used for the
|
||||
various fields is <fieldname:size_in_bits> with the UID composed
|
||||
thusly:
|
||||
<CID:4><VENDOR:4><FAB:6><LOT:26><WAFER:6><X:9><Y:9>
|
||||
Where:
|
||||
Field Bits Position Data
|
||||
------- ---- -------- ----------------------------------------
|
||||
CID 4 60 Chip id
|
||||
VENDOR 4 56 Vendor code
|
||||
FAB 6 50 FAB code
|
||||
LOT 26 24 Lot code (5-digit base-36-coded-decimal,
|
||||
re-encoded to 26 bits binary)
|
||||
WAFER 6 18 Wafer id
|
||||
X 9 9 Wafer X-coordinate
|
||||
Y 9 0 Wafer Y-coordinate
|
||||
------- ----
|
||||
Total 64
|
||||
*/
|
||||
|
||||
switch (tegra_get_chip()) {
|
||||
case CHIPID_TEGRA20:
|
||||
/* T20 has simple calculation */
|
||||
return ((unsigned long long)tegra_fuse_readl(FUSE_UID_HIGH) << 32ull) |
|
||||
(unsigned long long)tegra_fuse_readl(FUSE_UID_LOW);
|
||||
case CHIPID_TEGRA30:
|
||||
/* T30 chip id is 0 */
|
||||
cid = 0;
|
||||
break;
|
||||
case CHIPID_TEGRA114:
|
||||
/* T11x chip id is 1 */
|
||||
cid = 1;
|
||||
break;
|
||||
case CHIPID_TEGRA124:
|
||||
/* T12x chip id is 3 */
|
||||
cid = 3;
|
||||
break;
|
||||
case CHIPID_TEGRA210:
|
||||
/* T210 chip id is 5 */
|
||||
cid = 5;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
|
||||
vendor = tegra_fuse_readl(FUSE_VENDOR_CODE) & FUSE_VENDOR_CODE_MASK;
|
||||
fab = tegra_fuse_readl(FUSE_FAB_CODE) & FUSE_FAB_CODE_MASK;
|
||||
|
||||
/* Lot code must be re-encoded from a 5 digit base-36 'BCD' number
|
||||
to a binary number. */
|
||||
lot = 0;
|
||||
reg = tegra_fuse_readl(FUSE_LOT_CODE_0) << 2;
|
||||
|
||||
for (i = 0; i < 5; ++i) {
|
||||
u32 digit = (reg & 0xFC000000) >> 26;
|
||||
lot *= 36;
|
||||
lot += digit;
|
||||
reg <<= 6;
|
||||
}
|
||||
|
||||
wafer = tegra_fuse_readl(FUSE_WAFER_ID) & FUSE_WAFER_ID_MASK;
|
||||
x = tegra_fuse_readl(FUSE_X_COORDINATE) & FUSE_X_COORDINATE_MASK;
|
||||
y = tegra_fuse_readl(FUSE_Y_COORDINATE) & FUSE_Y_COORDINATE_MASK;
|
||||
|
||||
uid = ((unsigned long long)cid << 60ull)
|
||||
| ((unsigned long long)vendor << 56ull)
|
||||
| ((unsigned long long)fab << 50ull)
|
||||
| ((unsigned long long)lot << 24ull)
|
||||
| ((unsigned long long)wafer << 18ull)
|
||||
| ((unsigned long long)x << 9ull)
|
||||
| ((unsigned long long)y << 0ull);
|
||||
|
||||
return uid;
|
||||
}
|
|
@ -20,10 +20,26 @@ config TARGET_COLIBRI_T30
|
|||
bool "Toradex Colibri T30 board"
|
||||
select BOARD_LATE_INIT
|
||||
|
||||
config TARGET_ENDEAVORU
|
||||
bool "HTC Endeavoru T30 board"
|
||||
select BOARD_LATE_INIT
|
||||
|
||||
config TARGET_GROUPER
|
||||
bool "Asus and Google Grouper board"
|
||||
select BOARD_LATE_INIT
|
||||
|
||||
config TARGET_TEC_NG
|
||||
bool "Avionic Design TEC-NG board"
|
||||
select BOARD_LATE_INIT
|
||||
|
||||
config TARGET_TRANSFORMER_T30
|
||||
bool "Asus Tegra30 Transformer board"
|
||||
select BOARD_LATE_INIT
|
||||
|
||||
config TARGET_X3_T30
|
||||
bool "LG X3 Tegra30 board"
|
||||
select BOARD_LATE_INIT
|
||||
|
||||
endchoice
|
||||
|
||||
config SYS_SOC
|
||||
|
@ -33,6 +49,10 @@ source "board/toradex/apalis_t30/Kconfig"
|
|||
source "board/nvidia/beaver/Kconfig"
|
||||
source "board/nvidia/cardhu/Kconfig"
|
||||
source "board/toradex/colibri_t30/Kconfig"
|
||||
source "board/htc/endeavoru/Kconfig"
|
||||
source "board/asus/grouper/Kconfig"
|
||||
source "board/avionic-design/tec-ng/Kconfig"
|
||||
source "board/asus/transformer-t30/Kconfig"
|
||||
source "board/lg/x3-t30/Kconfig"
|
||||
|
||||
endif
|
||||
|
|
|
@ -76,7 +76,7 @@ void board_init_f(ulong dummy)
|
|||
}
|
||||
#endif /* CONFIG_SPL_BUILD */
|
||||
|
||||
phys_size_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
phys_addr_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
{
|
||||
return CFG_SYS_SDRAM_BASE + (256 * 1024 * 1024);
|
||||
}
|
||||
|
|
|
@ -77,7 +77,7 @@ phys_size_t get_effective_memsize(void)
|
|||
return UBOOT_RAM_SIZE_MAX;
|
||||
}
|
||||
|
||||
phys_size_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
phys_addr_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
{
|
||||
if (IS_ENABLED(CONFIG_RAM_OCTEON)) {
|
||||
/* Map a maximum of 256MiB - return not size but address */
|
||||
|
|
|
@ -64,6 +64,14 @@ config SPL_SYS_DCACHE_OFF
|
|||
help
|
||||
Do not enable data cache in SPL.
|
||||
|
||||
config SPL_ZERO_MEM_BEFORE_USE
|
||||
bool "Zero memory before use"
|
||||
depends on SPL
|
||||
default n
|
||||
help
|
||||
Zero stack/GD/malloc area in SPL before using them, this is needed for
|
||||
Sifive core devices that uses L2 cache to store SPL.
|
||||
|
||||
# board-specific options below
|
||||
source "board/AndesTech/ae350/Kconfig"
|
||||
source "board/emulation/qemu-riscv/Kconfig"
|
||||
|
|
|
@ -21,7 +21,7 @@ int dram_init_banksize(void)
|
|||
return fdtdec_setup_memory_banksize();
|
||||
}
|
||||
|
||||
phys_size_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
phys_addr_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
{
|
||||
/*
|
||||
* Ensure that we run from first 4GB so that all
|
||||
|
|
|
@ -20,7 +20,7 @@ int dram_init_banksize(void)
|
|||
return fdtdec_setup_memory_banksize();
|
||||
}
|
||||
|
||||
phys_size_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
phys_addr_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
{
|
||||
#ifdef CONFIG_64BIT
|
||||
/*
|
||||
|
|
|
@ -21,7 +21,7 @@ int dram_init_banksize(void)
|
|||
return fdtdec_setup_memory_banksize();
|
||||
}
|
||||
|
||||
phys_size_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
phys_addr_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
{
|
||||
/*
|
||||
* Ensure that we run from first 4GB so that all
|
||||
|
|
|
@ -13,6 +13,8 @@ config STARFIVE_JH7110
|
|||
select SUPPORT_SPL
|
||||
select SPL_RAM if SPL
|
||||
select SPL_STARFIVE_DDR
|
||||
select SYS_CACHE_SHIFT_6
|
||||
select SPL_ZERO_MEM_BEFORE_USE
|
||||
select PINCTRL_STARFIVE_JH7110
|
||||
imply MMC
|
||||
imply MMC_BROKEN_CD
|
||||
|
|
|
@ -21,7 +21,7 @@ int dram_init_banksize(void)
|
|||
return fdtdec_setup_memory_banksize();
|
||||
}
|
||||
|
||||
phys_size_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
phys_addr_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
{
|
||||
/*
|
||||
* Ensure that we run from first 4GB so that all
|
||||
|
|
|
@ -13,7 +13,6 @@
|
|||
#include <init.h>
|
||||
|
||||
#define CSR_U74_FEATURE_DISABLE 0x7c1
|
||||
#define L2_LIM_MEM_END 0x81FFFFFUL
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
|
@ -59,9 +58,6 @@ int spl_soc_init(void)
|
|||
|
||||
void harts_early_init(void)
|
||||
{
|
||||
ulong *ptr;
|
||||
u8 *tmp;
|
||||
ulong len, remain;
|
||||
/*
|
||||
* Feature Disable CSR
|
||||
*
|
||||
|
@ -70,25 +66,4 @@ void harts_early_init(void)
|
|||
*/
|
||||
if (CONFIG_IS_ENABLED(RISCV_MMODE))
|
||||
csr_write(CSR_U74_FEATURE_DISABLE, 0);
|
||||
|
||||
/* clear L2 LIM memory
|
||||
* set __bss_end to 0x81FFFFF region to zero
|
||||
* The L2 Cache Controller supports ECC. ECC is applied to SRAM.
|
||||
* If it is not cleared, the ECC part is invalid, and an ECC error
|
||||
* will be reported when reading data.
|
||||
*/
|
||||
ptr = (ulong *)__bss_end;
|
||||
len = L2_LIM_MEM_END - (ulong)__bss_end;
|
||||
remain = len % sizeof(ulong);
|
||||
len /= sizeof(ulong);
|
||||
|
||||
while (len--)
|
||||
*ptr++ = 0;
|
||||
|
||||
/* clear the remain bytes */
|
||||
if (remain) {
|
||||
tmp = (u8 *)ptr;
|
||||
while (remain--)
|
||||
*tmp++ = 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -111,6 +111,18 @@ call_board_init_f:
|
|||
* It's essential before any function call, otherwise, we get data-race.
|
||||
*/
|
||||
|
||||
/* clear stack if necessary */
|
||||
#if CONFIG_IS_ENABLED(ZERO_MEM_BEFORE_USE)
|
||||
clear_stack:
|
||||
li t1, 1
|
||||
slli t1, t1, CONFIG_STACK_SIZE_SHIFT
|
||||
sub t1, sp, t1
|
||||
clear_stack_loop:
|
||||
SREG zero, 0(t1) /* t1 is always 16 byte aligned */
|
||||
addi t1, t1, REGBYTES
|
||||
blt t1, sp, clear_stack_loop
|
||||
#endif
|
||||
|
||||
call_board_init_f_0:
|
||||
/* find top of reserve space */
|
||||
#if CONFIG_IS_ENABLED(SMP)
|
||||
|
|
|
@ -311,7 +311,7 @@
|
|||
|
||||
&pcie0 {
|
||||
reset-gpios = <&sysgpio 26 GPIO_ACTIVE_LOW>;
|
||||
status = "disabled";
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&pcie1 {
|
||||
|
|
|
@ -31,6 +31,8 @@ enum sbi_ext_id {
|
|||
SBI_EXT_DBCN = 0x4442434E,
|
||||
SBI_EXT_SUSP = 0x53555350,
|
||||
SBI_EXT_CPPC = 0x43505043,
|
||||
SBI_EXT_NACL = 0x4E41434C,
|
||||
SBI_EXT_STA = 0x535441,
|
||||
};
|
||||
|
||||
enum sbi_ext_base_fid {
|
||||
|
|
|
@ -451,6 +451,15 @@
|
|||
thermal {
|
||||
compatible = "sandbox,thermal";
|
||||
};
|
||||
|
||||
arm-ffa-emul {
|
||||
compatible = "sandbox,arm-ffa-emul";
|
||||
|
||||
sandbox-arm-ffa {
|
||||
compatible = "sandbox,arm-ffa";
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
&cros_ec {
|
||||
|
|
|
@ -1831,6 +1831,14 @@
|
|||
extcon {
|
||||
compatible = "sandbox,extcon";
|
||||
};
|
||||
|
||||
arm-ffa-emul {
|
||||
compatible = "sandbox,arm-ffa-emul";
|
||||
|
||||
sandbox-arm-ffa {
|
||||
compatible = "sandbox,arm-ffa";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
#include "sandbox_pmic.dtsi"
|
||||
|
|
72
arch/sandbox/include/asm/sandbox_arm_ffa.h
Normal file
72
arch/sandbox/include/asm/sandbox_arm_ffa.h
Normal file
|
@ -0,0 +1,72 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
/*
|
||||
* Copyright 2022-2023 Arm Limited and/or its affiliates <open-source-office@arm.com>
|
||||
*
|
||||
* Authors:
|
||||
* Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
|
||||
*/
|
||||
|
||||
#ifndef __SANDBOX_ARM_FFA_H
|
||||
#define __SANDBOX_ARM_FFA_H
|
||||
|
||||
#include <arm_ffa.h>
|
||||
|
||||
/*
|
||||
* This header provides public sandbox FF-A emulator declarations
|
||||
* and declarations needed by FF-A sandbox clients
|
||||
*/
|
||||
|
||||
/* UUIDs strings of the emulated services */
|
||||
#define SANDBOX_SERVICE1_UUID "ed32d533-4209-99e6-2d72-cdd998a79cc0"
|
||||
#define SANDBOX_SERVICE2_UUID "ed32d544-4209-99e6-2d72-cdd998a79cc0"
|
||||
|
||||
/* IDs of the emulated secure partitions (SPs) */
|
||||
#define SANDBOX_SP1_ID 0x1245
|
||||
#define SANDBOX_SP2_ID 0x9836
|
||||
#define SANDBOX_SP3_ID 0x6452
|
||||
#define SANDBOX_SP4_ID 0x7814
|
||||
|
||||
/* Invalid service UUID (no matching SP) */
|
||||
#define SANDBOX_SERVICE3_UUID "55d532ed-0942-e699-722d-c09ca798d9cd"
|
||||
|
||||
/* Invalid service UUID (invalid UUID string format) */
|
||||
#define SANDBOX_SERVICE4_UUID "32ed-0942-e699-722d-c09ca798d9cd"
|
||||
|
||||
/* Number of valid services */
|
||||
#define SANDBOX_SP_COUNT_PER_VALID_SERVICE 2
|
||||
|
||||
/**
|
||||
* struct ffa_sandbox_data - query ABI state data structure
|
||||
* @data0_size: size of the first argument
|
||||
* @data0: pointer to the first argument
|
||||
* @data1_size>: size of the second argument
|
||||
* @data1: pointer to the second argument
|
||||
*
|
||||
* Used to pass various types of data with different sizes between
|
||||
* the test cases and the sandbox emulator.
|
||||
* The data is for querying FF-A ABIs state.
|
||||
*/
|
||||
struct ffa_sandbox_data {
|
||||
u32 data0_size; /* size of the first argument */
|
||||
void *data0; /* pointer to the first argument */
|
||||
u32 data1_size; /* size of the second argument */
|
||||
void *data1; /* pointer to the second argument */
|
||||
};
|
||||
|
||||
/* The sandbox FF-A emulator public functions */
|
||||
|
||||
/**
|
||||
* sandbox_query_ffa_emul_state() - Inspect the FF-A ABIs
|
||||
* @queried_func_id: The FF-A function to be queried
|
||||
* @func_data: Pointer to the FF-A function arguments container structure
|
||||
*
|
||||
* Query the status of FF-A ABI specified in the input argument.
|
||||
*
|
||||
* Return:
|
||||
*
|
||||
* 0 on success. Otherwise, failure
|
||||
*/
|
||||
int sandbox_query_ffa_emul_state(u32 queried_func_id,
|
||||
struct ffa_sandbox_data *func_data);
|
||||
|
||||
#endif
|
121
arch/sandbox/include/asm/sandbox_arm_ffa_priv.h
Normal file
121
arch/sandbox/include/asm/sandbox_arm_ffa_priv.h
Normal file
|
@ -0,0 +1,121 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
/*
|
||||
* Copyright 2022-2023 Arm Limited and/or its affiliates <open-source-office@arm.com>
|
||||
*
|
||||
* Authors:
|
||||
* Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
|
||||
*/
|
||||
|
||||
#ifndef __SANDBOX_ARM_FFA_PRV_H
|
||||
#define __SANDBOX_ARM_FFA_PRV_H
|
||||
|
||||
#include <arm_ffa_priv.h>
|
||||
|
||||
/* This header is exclusively used by the Sandbox FF-A driver and emulator */
|
||||
|
||||
/* Non-secure physical FF-A instance */
|
||||
#define NS_PHYS_ENDPOINT_ID (0)
|
||||
|
||||
#define GET_NS_PHYS_ENDPOINT_ID_MASK GENMASK(31, 16)
|
||||
#define GET_NS_PHYS_ENDPOINT_ID(x) \
|
||||
((u16)(FIELD_GET(GET_NS_PHYS_ENDPOINT_ID_MASK, (x))))
|
||||
|
||||
/* Helper macro for reading the destination partition ID */
|
||||
#define GET_DST_SP_ID_MASK GENMASK(15, 0)
|
||||
#define GET_DST_SP_ID(x) \
|
||||
((u16)(FIELD_GET(GET_DST_SP_ID_MASK, (x))))
|
||||
|
||||
/* Helper macro for setting the source partition ID */
|
||||
#define PREP_SRC_SP_ID_MASK GENMASK(31, 16)
|
||||
#define PREP_SRC_SP_ID(x) \
|
||||
(FIELD_PREP(PREP_SRC_SP_ID_MASK, (x)))
|
||||
|
||||
/* Helper macro for setting the destination endpoint ID */
|
||||
#define PREP_NS_PHYS_ENDPOINT_ID_MASK GENMASK(15, 0)
|
||||
#define PREP_NS_PHYS_ENDPOINT_ID(x) \
|
||||
(FIELD_PREP(PREP_NS_PHYS_ENDPOINT_ID_MASK, (x)))
|
||||
|
||||
/* RX/TX buffers minimum size */
|
||||
#define RXTX_BUFFERS_MIN_SIZE (RXTX_4K)
|
||||
#define RXTX_BUFFERS_MIN_PAGES (1)
|
||||
|
||||
/* MBZ registers info */
|
||||
|
||||
/* x1-x7 MBZ */
|
||||
#define FFA_X1X7_MBZ_CNT (7)
|
||||
#define FFA_X1X7_MBZ_REG_START (&res->a1)
|
||||
|
||||
/* x4-x7 MBZ */
|
||||
#define FFA_X4X7_MBZ_CNT (4)
|
||||
#define FFA_X4X7_MBZ_REG_START (&res->a4)
|
||||
|
||||
/* x3-x7 MBZ */
|
||||
#define FFA_X3X7_MBZ_CNT (5)
|
||||
#define FFA_X3_MBZ_REG_START (&res->a3)
|
||||
|
||||
/* number of emulated FF-A secure partitions (SPs) */
|
||||
#define SANDBOX_PARTITIONS_CNT (4)
|
||||
|
||||
/* Binary data of the emulated services UUIDs */
|
||||
|
||||
/* service 1 UUID binary data (little-endian format) */
|
||||
#define SANDBOX_SERVICE1_UUID_A1 0xed32d533
|
||||
#define SANDBOX_SERVICE1_UUID_A2 0x99e64209
|
||||
#define SANDBOX_SERVICE1_UUID_A3 0x9cc02d72
|
||||
#define SANDBOX_SERVICE1_UUID_A4 0xcdd998a7
|
||||
|
||||
/* service 2 UUID binary data (little-endian format) */
|
||||
#define SANDBOX_SERVICE2_UUID_A1 0xed32d544
|
||||
#define SANDBOX_SERVICE2_UUID_A2 0x99e64209
|
||||
#define SANDBOX_SERVICE2_UUID_A3 0x9cc02d72
|
||||
#define SANDBOX_SERVICE2_UUID_A4 0xcdd998a7
|
||||
|
||||
/**
|
||||
* struct ffa_rxtxpair_info - structure hosting the RX/TX buffers flags
|
||||
* @rxbuf_owned: RX buffer ownership flag (the owner is non secure world)
|
||||
* @rxbuf_mapped: RX buffer mapping flag
|
||||
* @txbuf_owned TX buffer ownership flag
|
||||
* @txbuf_mapped: TX buffer mapping flag
|
||||
* @rxtx_buf_size: RX/TX buffers size
|
||||
*
|
||||
* Hosts the ownership/mapping flags of the RX/TX buffers
|
||||
* When a buffer is owned/mapped its corresponding flag is set to 1 otherwise 0.
|
||||
*/
|
||||
struct ffa_rxtxpair_info {
|
||||
u8 rxbuf_owned;
|
||||
u8 rxbuf_mapped;
|
||||
u8 txbuf_owned;
|
||||
u8 txbuf_mapped;
|
||||
u32 rxtx_buf_size;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct sandbox_ffa_emul - emulator data
|
||||
*
|
||||
* @fwk_version: FF-A framework version
|
||||
* @id: u-boot endpoint ID
|
||||
* @partitions: The partitions descriptors structure
|
||||
* @pair: The RX/TX buffers pair
|
||||
* @pair_info: The RX/TX buffers pair flags and size
|
||||
* @test_ffa_data: The data of the FF-A bus under test
|
||||
*
|
||||
* Hosts all the emulated secure world data.
|
||||
*/
|
||||
struct sandbox_ffa_emul {
|
||||
u32 fwk_version;
|
||||
u16 id;
|
||||
struct ffa_partitions partitions;
|
||||
struct ffa_rxtxpair pair;
|
||||
struct ffa_rxtxpair_info pair_info;
|
||||
};
|
||||
|
||||
/**
|
||||
* ffa_emul_find() - Finds the FF-A emulator
|
||||
* @dev: the sandbox FF-A device (sandbox-arm-ffa)
|
||||
* @emulp: the FF-A emulator device (sandbox-ffa-emul)
|
||||
* Return:
|
||||
* 0 on success. Otherwise, failure
|
||||
*/
|
||||
int ffa_emul_find(struct udevice *dev, struct udevice **emulp);
|
||||
|
||||
#endif
|
|
@ -25,7 +25,7 @@
|
|||
#include <asm/arch/pei_data.h>
|
||||
#include <asm/arch/pm.h>
|
||||
|
||||
phys_size_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
phys_addr_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
{
|
||||
return mrc_common_board_get_usable_ram_top(total_size);
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@ unsigned int install_e820_map(unsigned int max_entries,
|
|||
* address, and how far U-Boot is moved by relocation are set in the global
|
||||
* data structure.
|
||||
*/
|
||||
phys_size_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
phys_addr_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
{
|
||||
uintptr_t dest_addr = 0;
|
||||
int i;
|
||||
|
|
|
@ -27,7 +27,7 @@ DECLARE_GLOBAL_DATA_PTR;
|
|||
* the relocation address, and how far U-Boot is moved by relocation are
|
||||
* set in the global data structure.
|
||||
*/
|
||||
phys_size_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
phys_addr_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
{
|
||||
struct efi_mem_desc *desc, *end;
|
||||
struct efi_entry_memmap *map;
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
phys_size_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
phys_addr_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
{
|
||||
return (ulong)efi_get_ram_base() + gd->ram_size;
|
||||
}
|
||||
|
|
|
@ -46,7 +46,7 @@ DECLARE_GLOBAL_DATA_PTR;
|
|||
#define CMOS_OFFSET_MRC_SEED_S3 156
|
||||
#define CMOS_OFFSET_MRC_SEED_CHK 160
|
||||
|
||||
phys_size_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
phys_addr_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
{
|
||||
return mrc_common_board_get_usable_ram_top(total_size);
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@ config QEMU
|
|||
imply SYS_NS16550
|
||||
imply USB
|
||||
imply USB_EHCI_HCD
|
||||
imply VIDEO_BOCHS
|
||||
imply VIDEO_VESA
|
||||
|
||||
if QEMU
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
#include <asm/global_data.h>
|
||||
#include <asm/post.h>
|
||||
#include <asm/arch/qemu.h>
|
||||
#include <linux/sizes.h>
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
|
@ -71,7 +72,7 @@ int dram_init_banksize(void)
|
|||
* the relocation address, and how far U-Boot is moved by relocation are
|
||||
* set in the global data structure.
|
||||
*/
|
||||
phys_size_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
phys_addr_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
{
|
||||
return qemu_get_low_memory_size();
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
#include <asm/e820.h>
|
||||
#include <asm/arch/qemu.h>
|
||||
#include <asm/global_data.h>
|
||||
#include <linux/sizes.h>
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@ static void enable_pm_ich9(void)
|
|||
pci_write_config32(ICH9_PM, PMBA, CONFIG_ACPI_PM1_BASE | 1);
|
||||
}
|
||||
|
||||
static void qemu_chipset_init(void)
|
||||
void qemu_chipset_init(void)
|
||||
{
|
||||
u16 device, xbcs;
|
||||
int pam, i;
|
||||
|
|
|
@ -184,7 +184,7 @@ int dram_init_banksize(void)
|
|||
* the relocation address, and how far U-Boot is moved by relocation are
|
||||
* set in the global data structure.
|
||||
*/
|
||||
phys_size_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
phys_addr_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
{
|
||||
return gd->ram_size;
|
||||
}
|
||||
|
|
|
@ -48,7 +48,7 @@ static struct sbl_memory_map_info *get_memory_map_info(void)
|
|||
* @total_size: The memory size that u-boot occupies
|
||||
* Return: : The top available memory address lower than 4GB
|
||||
*/
|
||||
phys_size_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
phys_addr_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
{
|
||||
struct sbl_memory_map_info *data;
|
||||
int i;
|
||||
|
|
|
@ -204,7 +204,7 @@ unsigned int install_e820_map(unsigned int max_entries,
|
|||
* address, and how far U-Boot is moved by relocation are set in the global
|
||||
* data structure.
|
||||
*/
|
||||
phys_size_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
phys_addr_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
{
|
||||
struct sfi_table_simple *sb;
|
||||
struct sfi_mem_entry *mentry;
|
||||
|
|
14
arch/x86/include/asm/qemu.h
Normal file
14
arch/x86/include/asm/qemu.h
Normal file
|
@ -0,0 +1,14 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Generic QEMU header
|
||||
*
|
||||
* Copyright 2023 Google LLC
|
||||
*/
|
||||
|
||||
#ifndef __QEMU_H
|
||||
#define __QEMU_H
|
||||
|
||||
/* set up the chipset for QEMU so that video can be used */
|
||||
void qemu_chipset_init(void);
|
||||
|
||||
#endif
|
|
@ -77,7 +77,7 @@ int x86_cleanup_before_linux(void);
|
|||
void x86_enable_caches(void);
|
||||
void x86_disable_caches(void);
|
||||
int x86_init_cache(void);
|
||||
phys_size_t board_get_usable_ram_top(phys_size_t total_size);
|
||||
phys_addr_t board_get_usable_ram_top(phys_size_t total_size);
|
||||
int default_print_cpuinfo(void);
|
||||
|
||||
/* Set up a UART which can be used with printch(), printhex8(), etc. */
|
||||
|
|
|
@ -204,7 +204,7 @@ static u8 vbe_get_mode_info(struct vesa_state *mi)
|
|||
|
||||
realmode_interrupt(0x10, VESA_GET_MODE_INFO, 0x0000, mi->video_mode,
|
||||
0x0000, buffer_seg, buffer_adr);
|
||||
memcpy(mi->mode_info_block, buffer, sizeof(struct vesa_state));
|
||||
memcpy(mi->mode_info_block, buffer, sizeof(struct vesa_mode_info));
|
||||
mi->valid = true;
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -34,7 +34,7 @@ int dram_init(void)
|
|||
* the relocation address, and how far U-Boot is moved by relocation are
|
||||
* set in the global data structure.
|
||||
*/
|
||||
phys_size_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
phys_addr_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
{
|
||||
return fsp_get_usable_lowmem_top(gd->arch.hob_list);
|
||||
}
|
||||
|
|
|
@ -77,7 +77,7 @@ int dram_init(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
phys_size_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
phys_addr_t board_get_usable_ram_top(phys_size_t total_size)
|
||||
{
|
||||
if (!ll_boot_init())
|
||||
return gd->ram_size;
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
#include <common.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/i8254.h>
|
||||
#include <asm/ibmpc.h>
|
||||
|
||||
#define TIMER1_VALUE 18 /* 15.6us */
|
||||
#define BEEP_FREQUENCY_HZ 440
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
#include <asm/cpu.h>
|
||||
#include <asm/global_data.h>
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/sizes.h>
|
||||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
|
@ -144,7 +145,7 @@ static void x86_phys_memset_page(phys_addr_t map_addr, uintptr_t offset, int c,
|
|||
|
||||
/* Make sure the window is below U-Boot. */
|
||||
assert(window + LARGE_PAGE_SIZE <
|
||||
gd->relocaddr - CONFIG_SYS_MALLOC_LEN - CFG_SYS_STACK_SIZE);
|
||||
gd->relocaddr - CONFIG_SYS_MALLOC_LEN - SZ_32K);
|
||||
/* Map the page into the window and then memset the appropriate part. */
|
||||
x86_phys_map_page(window, map_addr, 1);
|
||||
memset((void *)(window + offset), c, size);
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
#include <asm/mtrr.h>
|
||||
#include <asm/pci.h>
|
||||
#include <asm/processor.h>
|
||||
#include <asm/qemu.h>
|
||||
#include <asm/spl.h>
|
||||
#include <asm-generic/sections.h>
|
||||
|
||||
|
@ -137,7 +138,6 @@ static int x86_spl_init(void)
|
|||
}
|
||||
|
||||
#ifndef CONFIG_SYS_COREBOOT
|
||||
log_debug("bss\n");
|
||||
debug("BSS clear from %lx to %lx len %lx\n", (ulong)__bss_start,
|
||||
(ulong)__bss_end, (ulong)__bss_end - (ulong)__bss_start);
|
||||
memset(__bss_start, 0, (ulong)__bss_end - (ulong)__bss_start);
|
||||
|
@ -292,6 +292,8 @@ void spl_board_init(void)
|
|||
#ifndef CONFIG_TPL
|
||||
preloader_console_init();
|
||||
#endif
|
||||
if (IS_ENABLED(CONFIG_QEMU))
|
||||
qemu_chipset_init();
|
||||
|
||||
if (CONFIG_IS_ENABLED(VIDEO)) {
|
||||
struct udevice *dev;
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue