diff --git a/api/api.c b/api/api.c index 89003c161c..580f8bd441 100644 --- a/api/api.c +++ b/api/api.c @@ -292,6 +292,11 @@ static int API_dev_close(va_list ap) if (!err) di->state = DEV_STA_CLOSED; + if (dcache_status()) + flush_dcache_all(); + if (icache_status()) + invalidate_icache_all(); + return err; } diff --git a/api/api_storage.c b/api/api_storage.c index a0dacad1a5..5373035bb3 100644 --- a/api/api_storage.c +++ b/api/api_storage.c @@ -70,13 +70,6 @@ void dev_stor_init(void) specs[ENUM_SATA].type = DEV_TYP_STOR | DT_STOR_SATA; specs[ENUM_SATA].name = "sata"; #endif -#if defined(CONFIG_SCSI) - specs[ENUM_SCSI].max_dev = CONFIG_SYS_SCSI_MAX_DEVICE; - specs[ENUM_SCSI].enum_started = 0; - specs[ENUM_SCSI].enum_ended = 0; - specs[ENUM_SCSI].type = DEV_TYP_STOR | DT_STOR_SCSI; - specs[ENUM_SCSI].name = "scsi"; -#endif #if defined(CONFIG_CMD_USB) && defined(CONFIG_USB_STORAGE) specs[ENUM_USB].max_dev = USB_MAX_STOR_DEV; specs[ENUM_USB].enum_started = 0; @@ -282,7 +275,7 @@ int dev_enum_storage(struct device_info *di) { int i; - /* check: ide, usb, scsi, mmc */ + /* check: ide, usb, mmc */ for (i = ENUM_IDE; i < ENUM_MAX; i ++) { if (dev_enum_stor(i, di)) return 1; diff --git a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi index 1eafb40ce3..2d87bea933 100644 --- a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi +++ b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi @@ -16,6 +16,10 @@ }; }; +&edp { + rockchip,panel = <&edp_panel>; +}; + &i2c0 { u-boot,dm-pre-reloc; }; diff --git a/arch/arm/dts/rk3399-pinebook-pro.dts b/arch/arm/dts/rk3399-pinebook-pro.dts index 294d21bf45..124f86350c 100644 --- a/arch/arm/dts/rk3399-pinebook-pro.dts +++ b/arch/arm/dts/rk3399-pinebook-pro.dts @@ -290,7 +290,7 @@ pinctrl-names = "default"; pinctrl-0 = <&lcdvcc_en_gpio>; regulator-name = "vcc3v3_panel"; - regulator-always-on; + /*regulator-always-on;*/ regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-enable-ramp-delay = <100000>; @@ -891,6 +891,30 @@ }; }; }; +&cru { + assigned-clocks = + <&cru PLL_GPLL>, <&cru PLL_CPLL>, + <&cru PLL_NPLL>, + <&cru ACLK_PERIHP>, <&cru HCLK_PERIHP>, + <&cru PCLK_PERIHP>, + <&cru ACLK_PERILP0>, <&cru HCLK_PERILP0>, + <&cru PCLK_PERILP0>, <&cru ACLK_CCI>, + <&cru HCLK_PERILP1>, <&cru PCLK_PERILP1>, + <&cru ACLK_VIO>, <&cru ACLK_HDCP>, + <&cru ACLK_GIC_PRE>, + <&cru PCLK_DDR>,<&cru ACLK_VOP1>; + assigned-clock-rates= + <594000000>, <800000000>, + <1000000000>, + <150000000>, <75000000>, + <37500000>, + <100000000>, <100000000>, + <50000000>, <600000000>, + <100000000>, <50000000>, + <400000000>, <400000000>, + <200000000>, + <200000000>, <594000000>; + }; &pmu_io_domains { pmu1830-supply = <&vcc_3v0>; diff --git a/arch/arm/dts/rk3399.dtsi b/arch/arm/dts/rk3399.dtsi index 74f2c3d490..cf17f04ef2 100644 --- a/arch/arm/dts/rk3399.dtsi +++ b/arch/arm/dts/rk3399.dtsi @@ -1604,13 +1604,13 @@ #address-cells = <1>; #size-cells = <0>; - vopl_out_mipi: endpoint@0 { - reg = <0>; + vopl_out_mipi: endpoint@1 { + reg = <1>; remote-endpoint = <&mipi_in_vopl>; }; - vopl_out_edp: endpoint@1 { - reg = <1>; + vopl_out_edp: endpoint@0 { + reg = <0>; remote-endpoint = <&edp_in_vopl>; }; diff --git a/arch/arm/mach-rockchip/make_fit_atf.py b/arch/arm/mach-rockchip/make_fit_atf.py index f3224d2555..9fcfe1d23d 100755 --- a/arch/arm/mach-rockchip/make_fit_atf.py +++ b/arch/arm/mach-rockchip/make_fit_atf.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python3 +#!/usr/local/bin/python3.7 """ # SPDX-License-Identifier: GPL-2.0+ # diff --git a/cmd/boot.c b/cmd/boot.c index 36aba22b30..4d966cfd79 100644 --- a/cmd/boot.c +++ b/cmd/boot.c @@ -18,6 +18,10 @@ __attribute__((weak)) unsigned long do_go_exec(ulong (*entry)(int, char * const []), int argc, char *const argv[]) { + if (dcache_status()) + flush_dcache_all(); + if (icache_status()) + invalidate_icache_all(); return entry (argc, argv); } diff --git a/cmd/elf.c b/cmd/elf.c index d44b95d903..611914c0b4 100644 --- a/cmd/elf.c +++ b/cmd/elf.c @@ -26,6 +26,11 @@ static unsigned long do_bootelf_exec(ulong (*entry)(int, char * const[]), { unsigned long ret; + if (dcache_status()) + flush_dcache_all(); + if (icache_status()) + invalidate_icache_all(); + /* * pass address parameter as argv[0] (aka command name), * and all remaining args diff --git a/common/bootm.c b/common/bootm.c index 8298693900..086ff92285 100644 --- a/common/bootm.c +++ b/common/bootm.c @@ -464,7 +464,12 @@ ulong bootm_disable_interrupts(void) * updated every 1 ms within the HCCA structure in SDRAM! For more * details see the OpenHCI specification. */ + /* + * FreeBSD Hack, on some board this cause efi_exit_bootservice to hang + * for some yet unknown reason. + * This only does this when doing netboot ??? usb_stop(); + */ #endif return iflag; } diff --git a/drivers/video/rockchip/rk_edp.c b/drivers/video/rockchip/rk_edp.c index 0be60e169e..424093fa01 100644 --- a/drivers/video/rockchip/rk_edp.c +++ b/drivers/video/rockchip/rk_edp.c @@ -18,9 +18,15 @@ #include #include #include +#if defined(CONFIG_ROCKCHIP_RK3288) #include -#include #include +#endif +#if defined(CONFIG_ROCKCHIP_RK3399) +#include +#include +#endif +#include #include #define MAX_CR_LOOP 5 @@ -39,7 +45,12 @@ static const char * const pre_emph_names[] = { struct rk_edp_priv { struct rk3288_edp *regs; +#if defined(CONFIG_ROCKCHIP_RK3288) struct rk3288_grf *grf; +#endif +#if defined(CONFIG_ROCKCHIP_RK3399) + struct rk3399_grf_regs *grf; +#endif struct udevice *panel; struct link_train link_train; u8 train_set[4]; @@ -1043,6 +1054,7 @@ static int rk_edp_probe(struct udevice *dev) int vop_id = uc_plat->source_id; debug("%s, uc_plat=%p, vop_id=%u\n", __func__, uc_plat, vop_id); +#if defined(CONFIG_ROCKCHIP_RK3288) ret = clk_get_by_index(dev, 1, &clk); if (ret >= 0) { ret = clk_set_rate(&clk, 0); @@ -1052,6 +1064,7 @@ static int rk_edp_probe(struct udevice *dev) debug("%s: Failed to set EDP clock: ret=%d\n", __func__, ret); return ret; } +#endif ret = clk_get_by_index(uc_plat->src_dev, 0, &clk); if (ret >= 0) { @@ -1063,14 +1076,20 @@ static int rk_edp_probe(struct udevice *dev) __func__, uc_plat->src_dev->name, ret); return ret; } - +#if defined(CONFIG_ROCKCHIP_RK3288) /* grf_edp_ref_clk_sel: from internal 24MHz or 27MHz clock */ rk_setreg(&priv->grf->soc_con12, 1 << 4); /* select epd signal from vop0 or vop1 */ rk_clrsetreg(&priv->grf->soc_con6, (1 << 5), (vop_id == 1) ? (1 << 5) : (0 << 5)); +#endif +#if defined(CONFIG_ROCKCHIP_RK3399) + /* select epd signal from vop0 or vop1 */ + rk_clrsetreg(&priv->grf->soc_con20, (1 << 5), + (vop_id == 1) ? (1 << 5) : (0 << 5)); +#endif rockchip_edp_wait_hpd(priv); rk_edp_init_refclk(regs); @@ -1091,6 +1110,7 @@ static const struct dm_display_ops dp_rockchip_ops = { static const struct udevice_id rockchip_dp_ids[] = { { .compatible = "rockchip,rk3288-edp" }, + { .compatible = "rockchip,rk3399-edp" }, { } }; diff --git a/lib/efi_loader/efi_disk.c b/lib/efi_loader/efi_disk.c index d0aad0252a..ea9d763072 100644 --- a/lib/efi_loader/efi_disk.c +++ b/lib/efi_loader/efi_disk.c @@ -147,7 +147,7 @@ static efi_status_t EFIAPI efi_disk_read_blocks(struct efi_block_io *this, (uintptr_t)buffer & (this->media->io_align - 1)) return EFI_INVALID_PARAMETER; if (lba * this->media->block_size + buffer_size > - this->media->last_block * this->media->block_size) + this->media->last_block * this->media->block_size + this->media->block_size) return EFI_INVALID_PARAMETER; #ifdef CONFIG_EFI_LOADER_BOUNCE_BUFFER diff --git a/lib/fdtdec.c b/lib/fdtdec.c index a2d2fb4e1f..54f7a1fe47 100644 --- a/lib/fdtdec.c +++ b/lib/fdtdec.c @@ -1253,7 +1253,7 @@ __weak void *board_fdt_blob_setup(void) void *fdt_blob = NULL; #ifdef CONFIG_SPL_BUILD /* FDT is at end of BSS unless it is in a different memory region */ - if (CONFIG_IS_ENABLED(SEPARATE_BSS)) + if (IS_ENABLED(CONFIG_SPL_SEPARATE_BSS)) fdt_blob = (ulong *)&_image_binary_end; else fdt_blob = (ulong *)&__bss_end; diff --git a/tools/binman/main.py b/tools/binman/main.py index 8c1e478d54..092498ac1f 100755 --- a/tools/binman/main.py +++ b/tools/binman/main.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python3 +#!/usr/local/bin/python3.7 # SPDX-License-Identifier: GPL-2.0+ # Copyright (c) 2016 Google, Inc