diff --git a/device/community/u-boot-pinebookpro/0001-enable-rockchip-rng.patch b/device/community/u-boot-pinebookpro/0001-enable-rockchip-rng.patch deleted file mode 100644 index c406ef9d6..000000000 --- a/device/community/u-boot-pinebookpro/0001-enable-rockchip-rng.patch +++ /dev/null @@ -1,43 +0,0 @@ -diff --git a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -index 1a2e24d3ef..296321d697 100644 ---- a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -+++ b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -@@ -24,6 +24,10 @@ - u-boot,dm-pre-reloc; - }; - -+&rng { -+ status = "okay"; -+}; -+ - &sdhci { - max-frequency = <25000000>; - u-boot,dm-pre-reloc; -diff --git a/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi b/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi -index bac09df4a3..cb8991aa25 100644 ---- a/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi -+++ b/arch/arm/dts/rk3399-rockpro64-u-boot.dtsi -@@ -19,6 +19,10 @@ - }; - }; - -+&rng { -+ status = "okay"; -+}; -+ - &spi1 { - spi_flash: flash@0 { - u-boot,dm-pre-reloc; -diff --git a/configs/pinebook-pro-rk3399_defconfig b/configs/pinebook-pro-rk3399_defconfig -index 0c129b9aeb..21eecf477c 100644 ---- a/configs/pinebook-pro-rk3399_defconfig -+++ b/configs/pinebook-pro-rk3399_defconfig -@@ -54,6 +54,8 @@ CONFIG_DM_PMIC_FAN53555=y - CONFIG_PMIC_RK8XX=y - CONFIG_REGULATOR_PWM=y - CONFIG_REGULATOR_RK8XX=y -+CONFIG_DM_RNG=y -+CONFIG_RNG_ROCKCHIP=y - CONFIG_PWM_ROCKCHIP=y - CONFIG_RAM_RK3399_LPDDR4=y - CONFIG_DM_RESET=y diff --git a/device/community/u-boot-pinebookpro/0001-pinebook-pro-ensure-USB-keyboards-are-available.patch b/device/community/u-boot-pinebookpro/0001-pinebook-pro-ensure-USB-keyboards-are-available.patch new file mode 100644 index 000000000..c7c4b841e --- /dev/null +++ b/device/community/u-boot-pinebookpro/0001-pinebook-pro-ensure-USB-keyboards-are-available.patch @@ -0,0 +1,25 @@ +From 7f584296b5c198c2a4b6fa80cf33ee52e00eec6a Mon Sep 17 00:00:00 2001 +From: Hugo Osvaldo Barrera +Date: Tue, 19 May 2026 12:38:40 +0200 +Subject: [PATCH 1/8] pinebook-pro: ensure USB keyboards are available + +Ensure that USB keyboards are available when the boot menu appears. +--- + configs/pinebook-pro-rk3399_defconfig | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/configs/pinebook-pro-rk3399_defconfig b/configs/pinebook-pro-rk3399_defconfig +index cbf95b4692f..af09eb18b13 100644 +--- a/configs/pinebook-pro-rk3399_defconfig ++++ b/configs/pinebook-pro-rk3399_defconfig +@@ -22,6 +22,7 @@ CONFIG_PCI=y + CONFIG_DEBUG_UART=y + CONFIG_BOOTDELAY=3 + CONFIG_USE_PREBOOT=y ++CONFIG_PREBOOT="usb start" + CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-pinebook-pro.dtb" + CONFIG_DISPLAY_BOARDINFO_LATE=y + CONFIG_SPL_MAX_SIZE=0x40000 +-- +2.54.0 + diff --git a/device/community/u-boot-pinebookpro/0002-drivers-video-rockchip-rk_edp.c-Change-clock-rate.patch b/device/community/u-boot-pinebookpro/0002-drivers-video-rockchip-rk_edp.c-Change-clock-rate.patch new file mode 100644 index 000000000..f8158248d --- /dev/null +++ b/device/community/u-boot-pinebookpro/0002-drivers-video-rockchip-rk_edp.c-Change-clock-rate.patch @@ -0,0 +1,32 @@ +From 6f53cd84db63766408953cd5ff7aa7f0b1f8e290 Mon Sep 17 00:00:00 2001 +From: Arnaud Patard +Date: Fri, 11 Sep 2020 16:26:12 -0400 +Subject: [PATCH 2/8] drivers/video/rockchip/rk_edp.c: Change clock rate + +The current code is setting the clock rate to 192000000, but +due to the current device-tree configuration and linux code, +it should rather be 100000000. + +Signed-off-by: Arnaud Patard + +Origin: http://people.hupstream.com/~rtp/pbp/20200911/rk_vop_clk_rate.patch +--- + drivers/video/rockchip/rk_edp.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/video/rockchip/rk_edp.c b/drivers/video/rockchip/rk_edp.c +index 0ba68dbce3d..fcac6f0a6bd 100644 +--- a/drivers/video/rockchip/rk_edp.c ++++ b/drivers/video/rockchip/rk_edp.c +@@ -1100,7 +1100,7 @@ static int rk_edp_probe(struct udevice *dev) + } + ret = clk_get_by_index(uc_plat->src_dev, 0, &clk); + if (ret >= 0) +- ret = clk_set_rate(&clk, 192000000); ++ ret = clk_set_rate(&clk, 100000000); + if (ret < 0) { + debug("%s: Failed to set clock in source device '%s': ret=%d\n", + __func__, uc_plat->src_dev->name, ret); +-- +2.54.0 + diff --git a/device/community/u-boot-pinebookpro/0002-enable-usb-keyboard.patch b/device/community/u-boot-pinebookpro/0002-enable-usb-keyboard.patch deleted file mode 100644 index 43dd887d5..000000000 --- a/device/community/u-boot-pinebookpro/0002-enable-usb-keyboard.patch +++ /dev/null @@ -1,37 +0,0 @@ -diff --git a/configs/pinebook-pro-rk3399_defconfig b/configs/pinebook-pro-rk3399_defconfig -index 21eecf477c..733463556a 100644 ---- a/configs/pinebook-pro-rk3399_defconfig -+++ b/configs/pinebook-pro-rk3399_defconfig -@@ -61,6 +61,8 @@ CONFIG_RAM_RK3399_LPDDR4=y - CONFIG_DM_RESET=y - CONFIG_BAUDRATE=1500000 - CONFIG_DEBUG_UART_SHIFT=2 -+CONFIG_USE_PREBOOT=y -+CONFIG_PREBOOT="usb start" - CONFIG_ROCKCHIP_SPI=y - CONFIG_SYSRESET=y - CONFIG_USB=y -@@ -68,8 +70,11 @@ CONFIG_USB_XHCI_HCD=y - CONFIG_USB_XHCI_DWC3=y - CONFIG_USB_EHCI_HCD=y - CONFIG_USB_EHCI_GENERIC=y -+CONFIG_USB_OHCI_HCD=y -+CONFIG_USB_OHCI_GENERIC=y - CONFIG_USB_DWC3=y - CONFIG_ROCKCHIP_USB2_PHY=y -+CONFIG_DM_KEYBOARD=y - CONFIG_USB_KEYBOARD=y - CONFIG_USB_HOST_ETHER=y - CONFIG_USB_ETHER_ASIX=y -diff --git a/include/configs/pinebook-pro-rk3399.h b/include/configs/pinebook-pro-rk3399.h -index 4bc8802d11..d910830582 100644 ---- a/include/configs/pinebook-pro-rk3399.h -+++ b/include/configs/pinebook-pro-rk3399.h -@@ -25,4 +25,7 @@ - - #define SDRAM_BANK_SIZE (2UL << 30) - -+#define CONFIG_USB_OHCI_NEW -+#define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS 2 -+ - #endif diff --git a/device/community/u-boot-pinebookpro/0003-display-support.patch b/device/community/u-boot-pinebookpro/0003-display-support.patch deleted file mode 100644 index 86a1f0873..000000000 --- a/device/community/u-boot-pinebookpro/0003-display-support.patch +++ /dev/null @@ -1,646 +0,0 @@ -From 5ae3afa4547eb82b92d93553ff07892eb8ff1665 Mon Sep 17 00:00:00 2001 -From: Arnaud Patard -Date: Fri, 11 Sep 2020 16:26:11 -0400 -Subject: [PATCH 01/11] drivers/video/rockchip/rk_vop.c: Use endpoint - compatible string to find VOP mode - -The current code is using an hard coded enum and the of node reg value of -endpoint to find out if the endpoint is mipi/hdmi/lvds/edp/dp. The order -is different between rk3288, rk3399 vop little, rk3399 vop big. - -A possible solution would be to make sure that the rk3288.dtsi and -rk3399.dtsi files have "expected" reg value or an other solution is -to find the kind of endpoint by comparing the endpoint compatible value. - -This patch is implementing the more flexible second solution. - -Signed-off-by: Arnaud Patard - -Origin: http://people.hupstream.com/~rtp/pbp/20200911/dts_vop_mode.patch ---- - .../include/asm/arch-rockchip/vop_rk3288.h | 15 +---------- - drivers/video/rockchip/rk_vop.c | 25 +++++++++++++++++-- - 2 files changed, 24 insertions(+), 16 deletions(-) - -diff --git a/arch/arm/include/asm/arch-rockchip/vop_rk3288.h b/arch/arm/include/asm/arch-rockchip/vop_rk3288.h -index 872a158b71..bf19e05997 100644 ---- a/arch/arm/include/asm/arch-rockchip/vop_rk3288.h -+++ b/arch/arm/include/asm/arch-rockchip/vop_rk3288.h -@@ -85,26 +85,13 @@ enum { - LB_RGB_1280X8 = 0x5 - }; - --#if defined(CONFIG_ROCKCHIP_RK3399) - enum vop_modes { - VOP_MODE_EDP = 0, - VOP_MODE_MIPI, - VOP_MODE_HDMI, -- VOP_MODE_MIPI1, -- VOP_MODE_DP, -- VOP_MODE_NONE, --}; --#else --enum vop_modes { -- VOP_MODE_EDP = 0, -- VOP_MODE_HDMI, - VOP_MODE_LVDS, -- VOP_MODE_MIPI, -- VOP_MODE_NONE, -- VOP_MODE_AUTO_DETECT, -- VOP_MODE_UNKNOWN, -+ VOP_MODE_DP, - }; --#endif - - /* VOP_VERSION_INFO */ - #define M_FPGA_VERSION (0xffff << 16) -diff --git a/drivers/video/rockchip/rk_vop.c b/drivers/video/rockchip/rk_vop.c -index 9032eb430e..6cd4ccc97a 100644 ---- a/drivers/video/rockchip/rk_vop.c -+++ b/drivers/video/rockchip/rk_vop.c -@@ -235,12 +235,11 @@ static int rk_display_init(struct udevice *dev, ulong fbbase, ofnode ep_node) - struct clk clk; - enum video_log2_bpp l2bpp; - ofnode remote; -+ const char *compat; - - debug("%s(%s, %lu, %s)\n", __func__, - dev_read_name(dev), fbbase, ofnode_get_name(ep_node)); - -- vop_id = ofnode_read_s32_default(ep_node, "reg", -1); -- debug("vop_id=%d\n", vop_id); - ret = ofnode_read_u32(ep_node, "remote-endpoint", &remote_phandle); - if (ret) - return ret; -@@ -282,6 +281,28 @@ static int rk_display_init(struct udevice *dev, ulong fbbase, ofnode ep_node) - if (disp) - break; - }; -+ compat = ofnode_get_property(remote, "compatible", NULL); -+ if (!compat) { -+ debug("%s(%s): Failed to find compatible property\n", -+ __func__, dev_read_name(dev)); -+ return -EINVAL; -+ } -+ if (strstr(compat, "edp")) { -+ vop_id = VOP_MODE_EDP; -+ } else if (strstr(compat, "mipi")) { -+ vop_id = VOP_MODE_MIPI; -+ } else if (strstr(compat, "hdmi")) { -+ vop_id = VOP_MODE_HDMI; -+ } else if (strstr(compat, "cdn-dp")) { -+ vop_id = VOP_MODE_DP; -+ } else if (strstr(compat, "lvds")) { -+ vop_id = VOP_MODE_LVDS; -+ } else { -+ debug("%s(%s): Failed to find vop mode for %s\n", -+ __func__, dev_read_name(dev), compat); -+ return -EINVAL; -+ } -+ debug("vop_id=%d\n", vop_id); - - disp_uc_plat = dev_get_uclass_platdata(disp); - debug("Found device '%s', disp_uc_priv=%p\n", disp->name, disp_uc_plat); --- -2.25.4 - - -From 382c53d4970c609a9f787422fbcd5f804ee00c3f Mon Sep 17 00:00:00 2001 -From: Arnaud Patard -Date: Fri, 11 Sep 2020 16:26:11 -0400 -Subject: [PATCH 02/11] drivers/video/rockchip/rk_edp.c: Add rk3399 support - -According to linux commit "drm/rockchip: analogix_dp: add rk3399 eDP -support" (82872e42bb1501dd9e60ca430f4bae45a469aa64), rk3288 and rk3399 -eDP IPs are nearly the same, the difference is in the grf register -(SOC_CON6 versus SOC_CON20). So, change the code to use the right -register on each IP. - -The clocks don't seem to be the same, the eDP clock is not at index 1 -on rk3399, so don't try changing the clock at index 1 to rate 0 on -rk3399. - -Signed-off-by: Arnaud Patard - -Origin: http://people.hupstream.com/~rtp/pbp/20200911/rk_edp_rk3399.patch ---- - .../include/asm/arch-rockchip/edp_rk3288.h | 5 +- - drivers/video/rockchip/rk_edp.c | 85 ++++++++++++++----- - 2 files changed, 68 insertions(+), 22 deletions(-) - -diff --git a/arch/arm/include/asm/arch-rockchip/edp_rk3288.h b/arch/arm/include/asm/arch-rockchip/edp_rk3288.h -index 105a335dab..c861f0eab1 100644 ---- a/arch/arm/include/asm/arch-rockchip/edp_rk3288.h -+++ b/arch/arm/include/asm/arch-rockchip/edp_rk3288.h -@@ -232,8 +232,9 @@ check_member(rk3288_edp, pll_reg_5, 0xa00); - #define PD_CH0 (0x1 << 0) - - /* pll_reg_1 */ --#define REF_CLK_24M (0x1 << 1) --#define REF_CLK_27M (0x0 << 1) -+#define REF_CLK_24M (0x1 << 0) -+#define REF_CLK_27M (0x0 << 0) -+#define REF_CLK_MASK (0x1 << 0) - - /* line_map */ - #define LANE3_MAP_LOGIC_LANE_0 (0x0 << 6) -diff --git a/drivers/video/rockchip/rk_edp.c b/drivers/video/rockchip/rk_edp.c -index 000bd48140..1b2f5f706d 100644 ---- a/drivers/video/rockchip/rk_edp.c -+++ b/drivers/video/rockchip/rk_edp.c -@@ -17,11 +17,10 @@ - #include - #include - #include -+#include - #include - #include --#include --#include --#include -+#include - - #define MAX_CR_LOOP 5 - #define MAX_EQ_LOOP 5 -@@ -37,18 +36,42 @@ static const char * const pre_emph_names[] = { - #define DP_VOLTAGE_MAX DP_TRAIN_VOLTAGE_SWING_1200 - #define DP_PRE_EMPHASIS_MAX DP_TRAIN_PRE_EMPHASIS_9_5 - -+#define RK3288_GRF_SOC_CON6 0x025c -+#define RK3288_GRF_SOC_CON12 0x0274 -+#define RK3399_GRF_SOC_CON20 0x6250 -+#define RK3399_GRF_SOC_CON25 0x6264 -+ -+enum rockchip_dp_types { -+ RK3288_DP = 0, -+ RK3399_EDP -+}; -+ -+struct rockchip_dp_data { -+ unsigned long reg_vop_big_little; -+ unsigned long reg_vop_big_little_sel; -+ unsigned long reg_ref_clk_sel; -+ unsigned long ref_clk_sel_bit; -+ enum rockchip_dp_types chip_type; -+}; -+ - struct rk_edp_priv { - struct rk3288_edp *regs; -- struct rk3288_grf *grf; -+ void *grf; - struct udevice *panel; - struct link_train link_train; - u8 train_set[4]; - }; - --static void rk_edp_init_refclk(struct rk3288_edp *regs) -+static void rk_edp_init_refclk(struct rk3288_edp *regs, enum rockchip_dp_types chip_type) - { - writel(SEL_24M, ®s->analog_ctl_2); -- writel(REF_CLK_24M, ®s->pll_reg_1); -+ u32 reg; -+ -+ reg = REF_CLK_24M; -+ if (chip_type == RK3288_DP) -+ reg ^= REF_CLK_MASK; -+ writel(reg, ®s->pll_reg_1); -+ - - writel(LDO_OUTPUT_V_SEL_145 | KVCO_DEFALUT | CHG_PUMP_CUR_SEL_5US | - V2L_CUR_SEL_1MA, ®s->pll_reg_2); -@@ -1023,6 +1046,8 @@ static int rk_edp_probe(struct udevice *dev) - struct display_plat *uc_plat = dev_get_uclass_platdata(dev); - struct rk_edp_priv *priv = dev_get_priv(dev); - struct rk3288_edp *regs = priv->regs; -+ struct rockchip_dp_data *edp_data = (struct rockchip_dp_data *)dev_get_driver_data(dev); -+ - struct clk clk; - int ret; - -@@ -1037,16 +1062,17 @@ 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); - -- ret = clk_get_by_index(dev, 1, &clk); -- if (ret >= 0) { -- ret = clk_set_rate(&clk, 0); -- clk_free(&clk); -- } -- if (ret) { -- debug("%s: Failed to set EDP clock: ret=%d\n", __func__, ret); -- return ret; -+ if (edp_data->chip_type == RK3288_DP) { -+ ret = clk_get_by_index(dev, 1, &clk); -+ if (ret >= 0) { -+ ret = clk_set_rate(&clk, 0); -+ clk_free(&clk); -+ } -+ if (ret) { -+ debug("%s: Failed to set EDP clock: ret=%d\n", __func__, ret); -+ return ret; -+ } - } -- - ret = clk_get_by_index(uc_plat->src_dev, 0, &clk); - if (ret >= 0) { - ret = clk_set_rate(&clk, 192000000); -@@ -1059,15 +1085,17 @@ static int rk_edp_probe(struct udevice *dev) - } - - /* grf_edp_ref_clk_sel: from internal 24MHz or 27MHz clock */ -- rk_setreg(&priv->grf->soc_con12, 1 << 4); -+ rk_setreg(priv->grf + edp_data->reg_ref_clk_sel, -+ edp_data->ref_clk_sel_bit); - - /* select epd signal from vop0 or vop1 */ -- rk_clrsetreg(&priv->grf->soc_con6, (1 << 5), -- (vop_id == 1) ? (1 << 5) : (0 << 5)); -+ rk_clrsetreg(priv->grf + edp_data->reg_vop_big_little, -+ edp_data->reg_vop_big_little_sel, -+ (vop_id == 1) ? edp_data->reg_vop_big_little_sel : 0); - - rockchip_edp_wait_hpd(priv); - -- rk_edp_init_refclk(regs); -+ rk_edp_init_refclk(regs, edp_data->chip_type); - rk_edp_init_interrupt(regs); - rk_edp_enable_sw_function(regs); - ret = rk_edp_init_analog_func(regs); -@@ -1083,8 +1111,25 @@ static const struct dm_display_ops dp_rockchip_ops = { - .enable = rk_edp_enable, - }; - -+static const struct rockchip_dp_data rk3399_edp = { -+ .reg_vop_big_little = RK3399_GRF_SOC_CON20, -+ .reg_vop_big_little_sel = BIT(5), -+ .reg_ref_clk_sel = RK3399_GRF_SOC_CON25, -+ .ref_clk_sel_bit = BIT(11), -+ .chip_type = RK3399_EDP, -+}; -+ -+static const struct rockchip_dp_data rk3288_dp = { -+ .reg_vop_big_little = RK3288_GRF_SOC_CON6, -+ .reg_vop_big_little_sel = BIT(5), -+ .reg_ref_clk_sel = RK3288_GRF_SOC_CON12, -+ .ref_clk_sel_bit = BIT(4), -+ .chip_type = RK3288_DP, -+}; -+ - static const struct udevice_id rockchip_dp_ids[] = { -- { .compatible = "rockchip,rk3288-edp" }, -+ { .compatible = "rockchip,rk3288-edp", .data = (ulong)&rk3288_dp }, -+ { .compatible = "rockchip,rk3399-edp", .data = (ulong)&rk3399_edp }, - { } - }; - --- -2.25.4 - - -From b5776e11f8e7c79ff61bc2b93be9b6253db939f1 Mon Sep 17 00:00:00 2001 -From: Arnaud Patard -Date: Fri, 11 Sep 2020 16:26:12 -0400 -Subject: [PATCH 03/11] drivers/video/rockchip/rk_edp.c: Change interrupt - polarity configuration - -The linux code is setting polarity configuration to 3 but -uboot code is setting it to 1. Change the configuration to match the -linux configuration - -Signed-off-by: Arnaud Patard - -Origin: http://people.hupstream.com/~rtp/pbp/20200911/rk_edp_vs_linux.patch ---- - drivers/video/rockchip/rk_edp.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/drivers/video/rockchip/rk_edp.c b/drivers/video/rockchip/rk_edp.c -index 1b2f5f706d..13fa78aced 100644 ---- a/drivers/video/rockchip/rk_edp.c -+++ b/drivers/video/rockchip/rk_edp.c -@@ -100,10 +100,13 @@ static void rk_edp_init_refclk(struct rk3288_edp *regs, enum rockchip_dp_types c - ®s->dp_reserv2); - } - -+#define INT_POL1 (0x1 << 1) -+#define INT_POL0 (0x1 << 0) -+ - static void rk_edp_init_interrupt(struct rk3288_edp *regs) - { - /* Set interrupt pin assertion polarity as high */ -- writel(INT_POL, ®s->int_ctl); -+ writel(INT_POL0 | INT_POL1, ®s->int_ctl); - - /* Clear pending registers */ - writel(0xff, ®s->common_int_sta_1); --- -2.25.4 - - -From c1f23be1f6e1aa94e6b22e0a403ec061ca311f42 Mon Sep 17 00:00:00 2001 -From: Arnaud Patard -Date: Fri, 11 Sep 2020 16:26:12 -0400 -Subject: [PATCH 04/11] drivers/video/rockchip/rk_edp.c: Change clock rate - -The current code is setting the clock rate to 192000000, but -due to the current device-tree configuration and linux code, -it should rather be 100000000. - -Signed-off-by: Arnaud Patard - -Origin: http://people.hupstream.com/~rtp/pbp/20200911/rk_vop_clk_rate.patch ---- - drivers/video/rockchip/rk_edp.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/drivers/video/rockchip/rk_edp.c b/drivers/video/rockchip/rk_edp.c -index 13fa78aced..c2dc79faac 100644 ---- a/drivers/video/rockchip/rk_edp.c -+++ b/drivers/video/rockchip/rk_edp.c -@@ -1078,7 +1078,7 @@ static int rk_edp_probe(struct udevice *dev) - } - ret = clk_get_by_index(uc_plat->src_dev, 0, &clk); - if (ret >= 0) { -- ret = clk_set_rate(&clk, 192000000); -+ ret = clk_set_rate(&clk, 100000000); - clk_free(&clk); - } - if (ret < 0) { --- -2.25.4 - - -From 8ecab272ff922477da225f1856cb4bc492d41fb2 Mon Sep 17 00:00:00 2001 -From: Arnaud Patard -Date: Fri, 11 Sep 2020 16:26:12 -0400 -Subject: [PATCH 05/11] drivers/video/rockchip/rk_vop.c: Reserve efi fb memory - -When booting with EFI and graphics, the memory used for framebuffer -has to be reserved, otherwise it may leads to kernel memory -overwrite. - -Signed-off-by: Arnaud Patard - -Origin: http://people.hupstream.com/~rtp/pbp/20200911/rk_vop_reserve_fb_memory.patch ---- - drivers/video/rockchip/rk_vop.c | 9 +++++++++ - 1 file changed, 9 insertions(+) - -diff --git a/drivers/video/rockchip/rk_vop.c b/drivers/video/rockchip/rk_vop.c -index 6cd4ccc97a..98d33a3cec 100644 ---- a/drivers/video/rockchip/rk_vop.c -+++ b/drivers/video/rockchip/rk_vop.c -@@ -20,6 +20,8 @@ - #include - #include - #include -+#include -+#include - #include - #include - #include -@@ -394,6 +396,13 @@ int rk_vop_probe(struct udevice *dev) - if (!(gd->flags & GD_FLG_RELOC)) - return 0; - -+ plat->base = gd->bd->bi_dram[0].start + gd->bd->bi_dram[0].size - plat->size; -+ -+#if defined(CONFIG_EFI_LOADER) -+ debug("Adding to EFI map %d @ %lx\n", plat->size, plat->base); -+ efi_add_memory_map(plat->base, plat->size, EFI_RESERVED_MEMORY_TYPE); -+#endif -+ - priv->regs = (struct rk3288_vop *)dev_read_addr(dev); - - /* --- -2.25.4 - - -From 68098155f59cf102add0817d65a3570513500092 Mon Sep 17 00:00:00 2001 -From: Arnaud Patard -Date: Fri, 11 Sep 2020 16:26:12 -0400 -Subject: [PATCH 06/11] rk3399-pinebook-pro-u-boot.dtsi: Enable edp - -- uboot rockchip edp code is looking for a rockchip,panel property - for the edp dts node, so add it. - -Signed-off-by: Arnaud Patard - -Origin: http://people.hupstream.com/~rtp/pbp/20200911/update_pinebook_pro_uboot_dtsi.patch ---- - arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -index 1a2e24d3ef..f0b58909a4 100644 ---- a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -+++ b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -@@ -41,3 +41,7 @@ - &vdd_log { - regulator-init-microvolt = <950000>; - }; -+ -+&edp { -+ rockchip,panel = <&edp_panel>; -+}; --- -2.25.4 - - -From cc514ca0d224b80713b0a653094f498c520bd1b3 Mon Sep 17 00:00:00 2001 -From: Arnaud Patard -Date: Fri, 11 Sep 2020 16:26:13 -0400 -Subject: [PATCH 07/11] configs/pinebook-pro-rk3399_defconfig: enable - SYS_USB_EVENT_POLL_VIA_INT_QUEUE - -The default configuration will use SYS_USB_EVENT_POLL for handling the -usb keyboard and it makes the system really slow (eg slow keypress, -loading kernel/initrd from grub-efi is taking ages). - -Using CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE seems to be improving -things a lot, so use it. - -Tested-by: Samuel Dionne-Riel -Signed-off-by: Arnaud Patard - -Origin: http://people.hupstream.com/~rtp/pbp/20200911/pbp_defconfig_usb_poll.patch ---- - configs/pinebook-pro-rk3399_defconfig | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/configs/pinebook-pro-rk3399_defconfig b/configs/pinebook-pro-rk3399_defconfig -index 0c129b9aeb..fa53bef6b9 100644 ---- a/configs/pinebook-pro-rk3399_defconfig -+++ b/configs/pinebook-pro-rk3399_defconfig -@@ -69,6 +69,7 @@ CONFIG_USB_EHCI_GENERIC=y - CONFIG_USB_DWC3=y - CONFIG_ROCKCHIP_USB2_PHY=y - CONFIG_USB_KEYBOARD=y -+CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y - CONFIG_USB_HOST_ETHER=y - CONFIG_USB_ETHER_ASIX=y - CONFIG_USB_ETHER_RTL8152=y --- -2.25.4 - - -From f3cae111f1daf8ef6a085cc435d37f741141675a Mon Sep 17 00:00:00 2001 -From: Arnaud Patard -Date: Fri, 11 Sep 2020 16:26:13 -0400 -Subject: [PATCH 08/11] drivers/pwm/rk_pwm.c: Fix default polarity - -In the code, the default polarity is set to positive/positive, -which is neither normal polarity or inverted polarity. It's -only the hardware default. This leads to booting linux with -wrong polarity setting. - -Update the code to use PWM_DUTY_POSTIVE | PWM_INACTIVE_NEGATIVE -by default instead. - -Signed-off-by: Arnaud Patard - -Origin: http://people.hupstream.com/~rtp/pbp/20200911/pwm-fix-default-polarity.patch ---- - drivers/pwm/rk_pwm.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/drivers/pwm/rk_pwm.c b/drivers/pwm/rk_pwm.c -index 911da1d426..c743feb920 100644 ---- a/drivers/pwm/rk_pwm.c -+++ b/drivers/pwm/rk_pwm.c -@@ -146,7 +146,7 @@ static int rk_pwm_probe(struct udevice *dev) - priv->data = (struct rockchip_pwm_data *)dev_get_driver_data(dev); - - if (priv->data->supports_polarity) -- priv->conf_polarity = PWM_DUTY_POSTIVE | PWM_INACTIVE_POSTIVE; -+ priv->conf_polarity = PWM_DUTY_POSTIVE | PWM_INACTIVE_NEGATIVE; - - return 0; - } --- -2.25.4 - - -From 60046c90d749e29348ee140583b0646e63c838be Mon Sep 17 00:00:00 2001 -From: Arnaud Patard -Date: Fri, 11 Sep 2020 16:26:13 -0400 -Subject: [PATCH 09/11] [HACK NOTFORMERGE] PBP: Fix panel reset - -On warm reset, the pinebook pro panel is not working correctly. -The issue is not yet debugged so, for now, this hack seems to be -enough. It toggles the GPIO1_C6 gpio [ LCDVCC_EN signal in the -schematics ] used by the vcc3v3_panel regulator. - -There's no gpio_request, since the gpio is already in use at this -stage, so it can only fail. - -Origin: http://people.hupstream.com/~rtp/pbp/20200911/hack-reset.patch ---- - board/pine64/pinebook-pro-rk3399/pinebook-pro-rk3399.c | 9 +++++++++ - 1 file changed, 9 insertions(+) - -diff --git a/board/pine64/pinebook-pro-rk3399/pinebook-pro-rk3399.c b/board/pine64/pinebook-pro-rk3399/pinebook-pro-rk3399.c -index 516292aaa5..6b8376d6cd 100644 ---- a/board/pine64/pinebook-pro-rk3399/pinebook-pro-rk3399.c -+++ b/board/pine64/pinebook-pro-rk3399/pinebook-pro-rk3399.c -@@ -7,9 +7,12 @@ - #include - #include - #include -+#include -+#include - #include - #include - #include -+#include - #include - #include - #include -@@ -59,6 +62,7 @@ int misc_init_r(void) - const u32 cpuid_length = 0x10; - u8 cpuid[cpuid_length]; - int ret; -+ unsigned int gpio; - - setup_iodomain(); - -@@ -70,6 +74,11 @@ int misc_init_r(void) - if (ret) - return ret; - -+ gpio_lookup_name("B22", NULL, NULL, &gpio); -+ gpio_direction_output(gpio, 0); -+ mdelay(500); -+ gpio_direction_output(gpio, 1); -+ - return ret; - } - #endif --- -2.25.4 - - -From 5e8bdb80f959e8fab2821191ec7f2868871a9798 Mon Sep 17 00:00:00 2001 -From: Arnaud Patard -Date: Fri, 11 Sep 2020 16:26:13 -0400 -Subject: [PATCH 10/11] SPL malloc() before relocation used 0x22d0 bytes (8 KB) - >>TPL: board_init_r() spl_init Trying to boot from BOOTROM Returning to boot - ROM... spl_early_init pmic@1b: ret=-6 i2c@ff3c0000: ret=-6 dm_scan_fdt() - failed: -6 dm_extended_scan_dt() failed: -6 dm_init_and_scan() returned error - -6 spl_early_init() failed: -6 ### ERROR ### Please RESET the board ### - -Origin: http://people.hupstream.com/~rtp/pbp/20200911/pmic-dm-reloc.patch ---- - arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -index f0b58909a4..0f8879c4ca 100644 ---- a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -+++ b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -@@ -20,9 +20,9 @@ - u-boot,dm-pre-reloc; - }; - --&rk808 { -+/*&rk808 { - u-boot,dm-pre-reloc; --}; -+};*/ - - &sdhci { - max-frequency = <25000000>; --- -2.25.4 - - -From 771c6108e693223e82d2672a18a81d8468c2d0f4 Mon Sep 17 00:00:00 2001 -From: Arnaud Patard -Date: Fri, 11 Sep 2020 16:26:14 -0400 -Subject: [PATCH 11/11] (patch file disable_cdp_dp.patch) - -Origin: http://people.hupstream.com/~rtp/pbp/20200911/disable_cdp_dp.patch ---- - arch/arm/dts/rk3399-pinebook-pro.dts | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/arch/arm/dts/rk3399-pinebook-pro.dts b/arch/arm/dts/rk3399-pinebook-pro.dts -index 294d21bf45..4e2dd14084 100644 ---- a/arch/arm/dts/rk3399-pinebook-pro.dts -+++ b/arch/arm/dts/rk3399-pinebook-pro.dts -@@ -372,9 +372,9 @@ - }; - }; - --&cdn_dp { -+/*&cdn_dp { - status = "okay"; --}; -+};*/ - - &cpu_b0 { - cpu-supply = <&vdd_cpu_b>; --- -2.25.4 - diff --git a/device/community/u-boot-pinebookpro/0003-vidconsole-uclass-Implement-ANSI_CURSOR_COLUMN.patch b/device/community/u-boot-pinebookpro/0003-vidconsole-uclass-Implement-ANSI_CURSOR_COLUMN.patch new file mode 100644 index 000000000..93d806b63 --- /dev/null +++ b/device/community/u-boot-pinebookpro/0003-vidconsole-uclass-Implement-ANSI_CURSOR_COLUMN.patch @@ -0,0 +1,35 @@ +From 1b9016041a69a8aa5e8502c9f867c8d3ee5b67fe Mon Sep 17 00:00:00 2001 +From: Samuel Dionne-Riel +Date: Tue, 7 Jul 2020 05:04:53 -0400 +Subject: [PATCH 3/8] vidconsole-uclass: Implement ANSI_CURSOR_COLUMN + +--- + drivers/video/vidconsole-uclass.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/drivers/video/vidconsole-uclass.c b/drivers/video/vidconsole-uclass.c +index f1b2d61bd8f..f277328675e 100644 +--- a/drivers/video/vidconsole-uclass.c ++++ b/drivers/video/vidconsole-uclass.c +@@ -264,6 +264,18 @@ static void vidconsole_escape_char(struct udevice *dev, char ch) + set_cursor_position(dev, row, col); + break; + } ++ case 'G': { ++ int row, col; ++ get_cursor_position(priv, &row, &col); ++ char *s = priv->escape_buf; ++ s++; /* [ */ ++ s = parsenum(s, &col); ++ col = col-1; ++ if (col < 0) ++ col = 0; ++ set_cursor_position(dev, row, col); ++ break; ++ } + case 'H': + case 'f': { + int row, col; +-- +2.54.0 + diff --git a/device/community/u-boot-pinebookpro/0004-Configure-boot-splash-logo.patch b/device/community/u-boot-pinebookpro/0004-Configure-boot-splash-logo.patch new file mode 100644 index 000000000..eea3d5066 --- /dev/null +++ b/device/community/u-boot-pinebookpro/0004-Configure-boot-splash-logo.patch @@ -0,0 +1,54 @@ +From 264ef8ba822ed2e28eb5c5c7fc95e92171e85194 Mon Sep 17 00:00:00 2001 +From: Samuel Dionne-Riel +Date: Wed, 8 Jul 2020 01:26:55 -0400 +Subject: [PATCH 4/8] Configure boot splash logo + +This assumes LOGO_BMP is set by the derivation as a make flag. + +Co-Authored-By: Hugo Osvaldo Barrera +--- + configs/pinebook-pro-rk3399_defconfig | 6 ++++++ + include/configs/pinebook-pro-rk3399.h | 8 +++++++- + 2 files changed, 13 insertions(+), 1 deletion(-) + +diff --git a/configs/pinebook-pro-rk3399_defconfig b/configs/pinebook-pro-rk3399_defconfig +index af09eb18b13..ebc03751237 100644 +--- a/configs/pinebook-pro-rk3399_defconfig ++++ b/configs/pinebook-pro-rk3399_defconfig +@@ -101,3 +101,9 @@ CONFIG_DISPLAY=y + CONFIG_VIDEO_ROCKCHIP=y + CONFIG_DISPLAY_ROCKCHIP_EDP=y + CONFIG_ERRNO_STR=y ++CONFIG_SPLASH_SCREEN=y ++CONFIG_SPLASH_SCREEN_ALIGN=y ++CONFIG_CMD_BMP=y ++CONFIG_VIDEO_BMP_RLE8=y ++CONFIG_VIDEO_LOGO=y ++CONFIG_VIDEO_LOGO_MAX_SIZE=0x7E8480 +diff --git a/include/configs/pinebook-pro-rk3399.h b/include/configs/pinebook-pro-rk3399.h +index 141ffcd036b..e737a075105 100644 +--- a/include/configs/pinebook-pro-rk3399.h ++++ b/include/configs/pinebook-pro-rk3399.h +@@ -7,11 +7,17 @@ + #ifndef __PINEBOOK_PRO_RK3399_H + #define __PINEBOOK_PRO_RK3399_H + ++#define SPLASH_ENV \ ++ "splashimage=0x08080000\0" \ ++ "splashpos=m,m\0" \ ++ "splashsource=mmc_fs\0" ++ + #define ROCKCHIP_DEVICE_SETTINGS \ ++ SPLASH_ENV \ + "stdin=serial,usbkbd\0" \ + "stdout=serial,vidconsole\0" \ + "stderr=serial,vidconsole\0" + + #include + +-#endif ++#endif +\ No newline at end of file +-- +2.54.0 + diff --git a/device/community/u-boot-pinebookpro/0004-rk3399-light-pinebook-power-and-standby-leds.patch b/device/community/u-boot-pinebookpro/0004-rk3399-light-pinebook-power-and-standby-leds.patch deleted file mode 100644 index 70907bfca..000000000 --- a/device/community/u-boot-pinebookpro/0004-rk3399-light-pinebook-power-and-standby-leds.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 61eb4a33dfbffbf19ab5aca62533d20b0e4cba43 Mon Sep 17 00:00:00 2001 -From: dhivael -Date: Sat, 11 Jan 2020 15:04:46 +0100 -Subject: [PATCH] rk3399: light pinebook power and standby leds during early - boot - -this is a hack, but it works for now. - -Origin: https://git.eno.space/pbp-uboot.git/commit/?id=1a01021c9361c4e017cb5b032300f5555c393710 ---- - arch/arm/mach-rockchip/rk3399/rk3399.c | 12 +++++++++++- - 1 file changed, 11 insertions(+), 1 deletion(-) - -diff --git a/arch/arm/mach-rockchip/rk3399/rk3399.c b/arch/arm/mach-rockchip/rk3399/rk3399.c -index 4fda93b1527..952ac881711 100644 ---- a/arch/arm/mach-rockchip/rk3399/rk3399.c -+++ b/arch/arm/mach-rockchip/rk3399/rk3399.c -@@ -19,6 +19,8 @@ - #include - #include - #include -+#include -+#include - - DECLARE_GLOBAL_DATA_PTR; - -@@ -119,8 +121,8 @@ void board_debug_uart_init(void) - struct rk3399_grf_regs * const grf = (void *)GRF_BASE; - #ifdef CONFIG_TARGET_CHROMEBOOK_BOB - struct rk3399_pmugrf_regs * const pmugrf = (void *)PMUGRF_BASE; -- struct rockchip_gpio_regs * const gpio = (void *)GPIO0_BASE; - #endif -+ struct rockchip_gpio_regs * const gpio = (void *)GPIO0_BASE; - - #if defined(CONFIG_DEBUG_UART_BASE) && (CONFIG_DEBUG_UART_BASE == 0xff180000) - /* Enable early UART0 on the RK3399 */ -@@ -153,6 +155,14 @@ void board_debug_uart_init(void) - spl_gpio_set_pull(&pmugrf->gpio0_p, GPIO(BANK_B, 4), GPIO_PULL_NORMAL); - #endif /* CONFIG_TARGET_CHROMEBOOK_BOB */ - -+ { -+ // set GPIO0_A2/B3 to GPIO_ACTIVE_HIGH -+ // set GPIO0_A2/B3 to OUTPUT -+ int mask = (1UL << RK_PA2)/* | (1UL << RK_PB3) green LED */; -+ setbits_le32(&gpio->swport_dr, mask); -+ setbits_le32(&gpio->swport_ddr, mask); -+ } -+ - /* Enable early UART2 channel C on the RK3399 */ - rk_clrsetreg(&grf->gpio4c_iomux, - GRF_GPIO4C3_SEL_MASK, --- -2.25.4 - diff --git a/device/community/u-boot-pinebookpro/0005-cli-Clear-ctrl-c-before-running-a-command.patch b/device/community/u-boot-pinebookpro/0005-cli-Clear-ctrl-c-before-running-a-command.patch new file mode 100644 index 000000000..7e3359b1d --- /dev/null +++ b/device/community/u-boot-pinebookpro/0005-cli-Clear-ctrl-c-before-running-a-command.patch @@ -0,0 +1,63 @@ +From 8d80a591d67e75c0ec10320fdc127ab40e72dc8a Mon Sep 17 00:00:00 2001 +From: Samuel Dionne-Riel +Date: Thu, 9 Jul 2020 02:50:29 -0400 +Subject: [PATCH 5/8] cli: Clear ctrl+c before running a command + +This fixes an issue where: + +With an environment like so: + + bootmenu_0=Default U-Boot boot=run distro_bootcmd; $menucmd -1 + + * Running bootmenu + * Running the option + * Cancelling using CTRL-C + +Would show the menu as expected, but running *any* command +post-cancellation would spuriously exit in unexplainable ways. +--- + common/cli.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/common/cli.c b/common/cli.c +index 4694a35cd0e..75b0a2c0a40 100644 +--- a/common/cli.c ++++ b/common/cli.c +@@ -57,6 +57,9 @@ int run_command(const char *cmd, int flag) + + if (flag & CMD_FLAG_ENV) + hush_flags |= FLAG_CONT_ON_NEWLINE; ++ ++ clear_ctrlc(); /* forget any previous Control C */ ++ + return parse_string_outer(cmd, hush_flags); + } + /* +@@ -93,6 +96,8 @@ int run_command_repeatable(const char *cmd, int flag) + int ret; + + if (use_hush_old()) { ++ clear_ctrlc(); /* forget any previous Control C */ ++ + ret = parse_string_outer(cmd, + FLAG_PARSE_SEMICOLON + | FLAG_EXIT_FROM_LOOP); +@@ -146,6 +151,8 @@ int run_command_list(const char *cmd, int len, int flag) + } + #ifdef CONFIG_HUSH_PARSER + if (use_hush_old()) { ++ clear_ctrlc(); /* forget any previous Control C */ ++ + rcode = parse_string_outer(buff, FLAG_PARSE_SEMICOLON); + } else { + rcode = parse_string_outer_modern(buff, FLAG_PARSE_SEMICOLON); +@@ -339,4 +346,4 @@ void cli_init(void) + + if (CONFIG_IS_ENABLED(VIDEO_ANSI)) + printf(ANSI_CURSOR_SHOW "\n"); +-} ++} +\ No newline at end of file +-- +2.54.0 + diff --git a/device/community/u-boot-pinebookpro/0005-support-SPI-flash-boot.patch b/device/community/u-boot-pinebookpro/0005-support-SPI-flash-boot.patch deleted file mode 100644 index a19d30162..000000000 --- a/device/community/u-boot-pinebookpro/0005-support-SPI-flash-boot.patch +++ /dev/null @@ -1,53 +0,0 @@ -From f091aa06bfd4f7f9066dabe7a7caf268cd9c6683 Mon Sep 17 00:00:00 2001 -From: dhivael -Date: Thu, 6 Feb 2020 22:34:34 +0100 -Subject: [PATCH] support SPI flash boot - -SPI uboot images can be built with - - tools/mkimage -n rk3399 -T rkspi -d tpl/u-boot-tpl-dtb.bin:spl/u-boot-spl-dtb.bin spl.bin - cat <(dd if=spl.bin bs=512K conv=sync) u-boot.itb >spiflash.bin - -and written to spi flash with uboot sf commands, any hardware flasher -available, rkdeveloptool, or possibly other methods. - -Origin: https://git.eno.space/pbp-uboot.git/commit/?id=3d3dbebfe8726cf2ae51ed44dc49bbc497d62ac5 ---- - arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi | 2 +- - configs/pinebook-pro-rk3399_defconfig | 10 ++++++++++ - 2 files changed, 11 insertions(+), 1 deletion(-) - -diff --git a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -index f3d85e1dba1..a40b71fa204 100644 ---- a/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -+++ b/arch/arm/dts/rk3399-pinebook-pro-u-boot.dtsi -@@ -12,7 +12,7 @@ - }; - - chosen { -- u-boot,spl-boot-order = "same-as-spl", &sdhci, &sdmmc; -+ u-boot,spl-boot-order = "same-as-spl", &spiflash, &sdhci, &sdmmc; - }; - }; - -diff --git a/configs/pinebook-pro-rk3399_defconfig b/configs/pinebook-pro-rk3399_defconfig -index 733463556a2..dbbd43ed9f3 100644 ---- a/configs/pinebook-pro-rk3399_defconfig -+++ b/configs/pinebook-pro-rk3399_defconfig -@@ -85,3 +85,13 @@ CONFIG_VIDEO_ROCKCHIP=y - CONFIG_DISPLAY_ROCKCHIP_EDP=y - CONFIG_SPL_TINY_MEMSET=y - CONFIG_ERRNO_STR=y -+ -+# SPI boot Support -+CONFIG_MTD=y -+CONFIG_DM_MTD=y -+CONFIG_SPI_FLASH_SFDP_SUPPORT=y -+CONFIG_SPL_DM_SPI=y -+CONFIG_SPL_SPI_FLASH_TINY=n -+CONFIG_SPL_SPI_FLASH_SFDP_SUPPORT=y -+CONFIG_SPL_SPI_LOAD=y -+CONFIG_SYS_SPI_U_BOOT_OFFS=0x80000 --- -2.25.4 - diff --git a/device/community/u-boot-pinebookpro/0006-implement-boot-menu.patch b/device/community/u-boot-pinebookpro/0006-implement-boot-menu.patch deleted file mode 100644 index 80b16a890..000000000 --- a/device/community/u-boot-pinebookpro/0006-implement-boot-menu.patch +++ /dev/null @@ -1,640 +0,0 @@ -From 375503f9a98878297ee05ba12c3be14afa795812 Mon Sep 17 00:00:00 2001 -From: Da Xue -Date: Fri, 8 May 2020 16:35:27 -0400 -Subject: [PATCH] splash: fix CONFIG_SPLASH_SOURCE and enable backup logo load - -Origin: https://github.com/libre-computer-project/libretech-u-boot/commit/8ddf2cded4efad8b5596b0b15a507aa3fb00f6d0 ---- - common/splash.c | 11 ++++++----- - 1 file changed, 6 insertions(+), 5 deletions(-) - -diff --git a/common/splash.c b/common/splash.c -index 2b9313e03f1..cca81bff8ed 100644 ---- a/common/splash.c -+++ b/common/splash.c -@@ -82,11 +82,12 @@ static inline int splash_video_logo_load(void) { return -ENOSYS; } - - __weak int splash_screen_prepare(void) - { -- if (CONFIG_IS_ENABLED(SPLASH_SOURCE)) -- return splash_source_load(default_splash_locations, -- ARRAY_SIZE(default_splash_locations)); -- -- return splash_video_logo_load(); -+ return -+#ifdef CONFIG_SPLASH_SOURCE -+ splash_source_load(default_splash_locations, -+ ARRAY_SIZE(default_splash_locations)) && -+#endif -+ splash_video_logo_load(); - } - - #ifdef CONFIG_SPLASH_SCREEN_ALIGN --- -2.25.4 - -From 02328c238f24591e135bd7bae7ac5ca3f8bb59fa Mon Sep 17 00:00:00 2001 -From: Da Xue -Date: Tue, 7 Jul 2020 04:47:48 -0400 -Subject: [PATCH] hack: bmp: compressed logo - -Origin: https://github.com/libre-computer-project/libretech-u-boot/commit/9f849b044b60cf9a05618ef7da13db3961120304 ---- - tools/Makefile | 6 +++++- - tools/bmp_logo.c | 29 +++++++++++++++++++++++++---- - 2 files changed, 30 insertions(+), 5 deletions(-) - -diff --git a/tools/Makefile b/tools/Makefile -index 879c3fd4a74..199378d8cea 100644 ---- a/tools/Makefile -+++ b/tools/Makefile -@@ -256,7 +256,6 @@ ifneq ($(wildcard $(srctree)/$(src)/logos/$(VENDOR).bmp),) - LOGO_BMP= $(srctree)/$(src)/logos/$(VENDOR).bmp - endif - endif -- - endif # !LOGO_BMP - - # -@@ -279,8 +278,13 @@ $(LOGO_H): $(obj)/bmp_logo $(LOGO_BMP) - $(obj)/bmp_logo --gen-info $(LOGO_BMP) > $@ - - ifeq ($(CONFIG_DM_VIDEO),y) -+ifneq ($(wildcard $(LOGO_BMP).gz),) -+$(LOGO_DATA_H): $(obj)/bmp_logo $(LOGO_BMP) -+ $(obj)/bmp_logo --gen-bmp-gz $(LOGO_BMP) $(LOGO_BMP).gz > $@ -+else - $(LOGO_DATA_H): $(obj)/bmp_logo $(LOGO_BMP) - $(obj)/bmp_logo --gen-bmp $(LOGO_BMP) > $@ -+endif - else - $(LOGO_DATA_H): $(obj)/bmp_logo $(LOGO_BMP) - $(obj)/bmp_logo --gen-data $(LOGO_BMP) > $@ -diff --git a/tools/bmp_logo.c b/tools/bmp_logo.c -index 74fcadca63e..d8727c227fd 100644 ---- a/tools/bmp_logo.c -+++ b/tools/bmp_logo.c -@@ -3,7 +3,8 @@ - enum { - MODE_GEN_INFO, - MODE_GEN_DATA, -- MODE_GEN_BMP -+ MODE_GEN_BMP, -+ MODE_GEN_BMP_GZ - }; - - typedef struct bitmap_s { /* bitmap description */ -@@ -17,7 +18,7 @@ typedef struct bitmap_s { /* bitmap description */ - - void usage(const char *prog) - { -- fprintf(stderr, "Usage: %s [--gen-info|--gen-data|--gen-bmp] file\n", -+ fprintf(stderr, "Usage: %s [--gen-info|--gen-data|--gen-bmp|--gen-bmp-gz] file\n", - prog); - } - -@@ -76,7 +77,7 @@ int main (int argc, char *argv[]) - { - int mode, i, x; - int size; -- FILE *fp; -+ FILE *fp, *gzfp; - bitmap_t bmp; - bitmap_t *b = &bmp; - uint16_t data_offset, n_colors, hdr_size; -@@ -92,6 +93,8 @@ int main (int argc, char *argv[]) - mode = MODE_GEN_DATA; - else if (!strcmp(argv[1], "--gen-bmp")) - mode = MODE_GEN_BMP; -+ else if (!strcmp(argv[1], "--gen-bmp-gz")) -+ mode = MODE_GEN_BMP_GZ; - else { - usage(argv[0]); - exit(EXIT_FAILURE); -@@ -102,9 +105,17 @@ int main (int argc, char *argv[]) - perror(argv[2]); - exit (EXIT_FAILURE); - } -- -+ - if (fgetc (fp) != 'B' || fgetc (fp) != 'M') - error ("Input file is not a bitmap", fp); -+ -+ if (mode == MODE_GEN_BMP_GZ){ -+ gzfp = fopen(argv[3], "rb"); -+ if (!gzfp) { -+ perror(argv[3]); -+ exit (EXIT_FAILURE); -+ } -+ } - - /* - * read width and height of the image, and the number of colors used; -@@ -182,6 +193,11 @@ int main (int argc, char *argv[]) - fseek(fp, 0L, SEEK_END); - size = ftell(fp); - fseek(fp, 0L, SEEK_SET); -+ } else if (mode == MODE_GEN_BMP_GZ) { -+ /* copy full bmp file */ -+ fseek(gzfp, 0L, SEEK_END); -+ size = ftell(gzfp); -+ fseek(gzfp, 0L, SEEK_SET); - } else { - fseek(fp, (long)data_offset, SEEK_SET); - } -@@ -200,6 +216,10 @@ int main (int argc, char *argv[]) - /* write full bmp */ - for (i = 0; i < size; i++) - b->data[i] = (uint8_t)fgetc(fp); -+ } else if (mode == MODE_GEN_BMP_GZ) { -+ /* write full bmp */ -+ for (i = 0; i < size; i++) -+ b->data[i] = (uint8_t)fgetc(gzfp); - } else { - for (i = (b->height - 1) * b->width; i >= 0; i -= b->width) { - for (x = 0; x < b->width; x++) { -@@ -224,5 +244,6 @@ int main (int argc, char *argv[]) - - out: - fclose(fp); -+ if (mode == MODE_GEN_BMP_GZ) fclose(gzfp); - return 0; - } --- -2.25.4 - -From 1cc7a56f46f8b8195ece2d8f647cfed45505a457 Mon Sep 17 00:00:00 2001 -From: Samuel Dionne-Riel -Date: Tue, 7 Jul 2020 00:59:45 -0400 -Subject: [PATCH] bootmenu: Replace reverse for truetype console - -The truetype console doesn't support many ANSI escape sequences, among -those the reverse sequence is *broken*. It reverses the text, but does -not change the background color. - -This, instead, uses characters to show which option is currently active. ---- - cmd/bootmenu.c | 15 ++++++++------- - 1 file changed, 8 insertions(+), 7 deletions(-) - -diff --git a/cmd/bootmenu.c b/cmd/bootmenu.c -index 18efe25751f..7b7db74c8e2 100644 ---- a/cmd/bootmenu.c -+++ b/cmd/bootmenu.c -@@ -61,23 +61,24 @@ static char *bootmenu_getoption(unsigned short int n) - static void bootmenu_print_entry(void *data) - { - struct bootmenu_entry *entry = data; -- int reverse = (entry->menu->active == entry->num); -+ int active = (entry->menu->active == entry->num); - - /* - * Move cursor to line where the entry will be drown (entry->num) - * First 3 lines contain bootmenu header + 1 empty line - */ - printf(ANSI_CURSOR_POSITION, entry->num + 4, 1); -+ puts(ANSI_CLEAR_LINE); - -- puts(" "); -- -- if (reverse) -- puts(ANSI_COLOR_REVERSE); -+ if (active) -+ puts(" => ["); -+ else -+ puts(" "); - - puts(entry->title); - -- if (reverse) -- puts(ANSI_COLOR_RESET); -+ if (active) -+ puts("]"); - } - - static void bootmenu_autoboot_loop(struct bootmenu_data *menu, --- -2.25.4 - -From c904267ca621815876eba5c21b967306a30c4cce Mon Sep 17 00:00:00 2001 -From: Samuel Dionne-Riel -Date: Tue, 7 Jul 2020 05:04:53 -0400 -Subject: [PATCH] vidconsole-uclass: Implement ANSI_CURSOR_COLUMN - ---- - drivers/video/vidconsole-uclass.c | 12 ++++++++++++ - 1 file changed, 12 insertions(+) - -diff --git a/drivers/video/vidconsole-uclass.c b/drivers/video/vidconsole-uclass.c -index 9b761547212..3e8895017a1 100644 ---- a/drivers/video/vidconsole-uclass.c -+++ b/drivers/video/vidconsole-uclass.c -@@ -306,6 +306,18 @@ static void vidconsole_escape_char(struct udevice *dev, char ch) - set_cursor_position(priv, row, col); - break; - } -+ case 'G': { -+ int row, col; -+ get_cursor_position(priv, &row, &col); -+ char *s = priv->escape_buf; -+ s++; /* [ */ -+ s = parsenum(s, &col); -+ col = col-1; -+ if (col < 0) -+ col = 0; -+ set_cursor_position(priv, row, col); -+ break; -+ } - case 'H': - case 'f': { - int row, col; --- -2.25.4 - -From 6676c66c0108f4a2db1d17ce8c742189df7fb7eb Mon Sep 17 00:00:00 2001 -From: Samuel Dionne-Riel -Date: Tue, 7 Jul 2020 22:17:36 -0400 -Subject: [PATCH] autoboot: Make all prompts configurable - -This is a multi-purpose commit. Though it is hard to split into distinct -changes. - -1. Allows the non-keyed prompt to be configured - -This is self-explanatory. This allows better customization for the -integrator. Though, more to the point, this reduces the confusion that -comes from the option name and description. Now it is used for all -auto-boot prompts, not only for the keyed prompt. - -2. Redraws using ANSI escapes - -This is required for (1), as we can't backspace over the arbitrary -amount of characters to redraw the countdown. - -This is done through resetting the column to 1 and clearing the line for -maximum compatibility. Tested against serial, default dm_video and the -truetype console. ---- - cmd/Kconfig | 4 ++-- - common/autoboot.c | 15 ++++++++++----- - 2 files changed, 12 insertions(+), 7 deletions(-) - -diff --git a/cmd/Kconfig b/cmd/Kconfig -index 192b3b262f1..f5d6781473a 100644 ---- a/cmd/Kconfig -+++ b/cmd/Kconfig -@@ -86,8 +86,8 @@ config AUTOBOOT_KEYED - - config AUTOBOOT_PROMPT - string "Autoboot stop prompt" -- depends on AUTOBOOT_KEYED -- default "Autoboot in %d seconds\\n" -+ default "Autoboot in %d seconds\\n" if AUTOBOOT_KEYED -+ default "Hit any key to stop autoboot: %2d \\n" - help - This string is displayed before the boot delay selected by - CONFIG_BOOTDELAY starts. If it is not defined there is no -diff --git a/common/autoboot.c b/common/autoboot.c -index 6d78716a266..a3b2fb0c16f 100644 ---- a/common/autoboot.c -+++ b/common/autoboot.c -@@ -5,6 +5,7 @@ - */ - - #include -+#include - #include - #include - #include -@@ -251,14 +252,16 @@ static int abortboot_single_key(int bootdelay) - int abort = 0; - unsigned long ts; - -- printf("Hit any key to stop autoboot: %2d ", bootdelay); -+ printf(CONFIG_AUTOBOOT_PROMPT, bootdelay); - - /* - * Check if key already pressed - */ - if (tstc()) { /* we got a key press */ -- (void) getc(); /* consume input */ -- puts("\b\b\b 0"); -+ (void) getc(); /* consume input */ -+ puts(ANSI_CLEAR_LINE); -+ printf(ANSI_CURSOR_COLUMN, 1); -+ printf(CONFIG_AUTOBOOT_PROMPT, 0); - abort = 1; /* don't auto boot */ - } - -@@ -272,7 +275,7 @@ static int abortboot_single_key(int bootdelay) - - abort = 1; /* don't auto boot */ - bootdelay = 0; /* no more delay */ -- key = getc(); /* consume input */ -+ key = getc(); /* consume input */ - if (IS_ENABLED(CONFIG_USE_AUTOBOOT_MENUKEY)) - menukey = key; - break; -@@ -280,7 +283,9 @@ static int abortboot_single_key(int bootdelay) - udelay(10000); - } while (!abort && get_timer(ts) < 1000); - -- printf("\b\b\b%2d ", bootdelay); -+ puts(ANSI_CLEAR_LINE); -+ printf(ANSI_CURSOR_COLUMN, 1); -+ printf(CONFIG_AUTOBOOT_PROMPT, bootdelay); - } - - putc('\n'); --- -2.25.4 - -From 0a4a4fca5af332e93d9b44032fe8afd7686387f4 Mon Sep 17 00:00:00 2001 -From: Da Xue -Date: Tue, 7 Jul 2020 22:23:48 -0400 -Subject: [PATCH] autoboot: correct config naming, only allow escape key to - menu - -Origin: https://github.com/libre-computer-project/libretech-u-boot/commit/e8dc057670e9ff0e8ecfea4fd549ce8cc2516378 ---- - common/autoboot.c | 51 ++++++++++++++++++++++++++++++++--------------- - 1 file changed, 35 insertions(+), 16 deletions(-) - -diff --git a/common/autoboot.c b/common/autoboot.c -index a3b2fb0c16f..82eb7ba3440 100644 ---- a/common/autoboot.c -+++ b/common/autoboot.c -@@ -44,8 +44,12 @@ static int menukey; - #define AUTOBOOT_STOP_STR_SHA256 "" - #endif - --#ifdef CONFIG_USE_AUTOBOOT_MENUKEY --#define AUTOBOOT_MENUKEY CONFIG_USE_AUTOBOOT_MENUKEY -+#ifdef CONFIG_AUTOBOOT_USE_MENUKEY -+#ifdef CONFIG_AUTOBOOT_MENUKEY -+#define AUTOBOOT_MENUKEY CONFIG_AUTOBOOT_MENUKEY -+#else -+#define AUTOBOOT_MENUKEY 0 -+#endif - #else - #define AUTOBOOT_MENUKEY 0 - #endif -@@ -258,11 +262,22 @@ static int abortboot_single_key(int bootdelay) - * Check if key already pressed - */ - if (tstc()) { /* we got a key press */ -- (void) getc(); /* consume input */ -- puts(ANSI_CLEAR_LINE); -- printf(ANSI_CURSOR_COLUMN, 1); -- printf(CONFIG_AUTOBOOT_PROMPT, 0); -- abort = 1; /* don't auto boot */ -+ if (IS_ENABLED(CONFIG_AUTOBOOT_USE_MENUKEY)){ -+ menukey = getc(); -+ puts(ANSI_CLEAR_LINE); -+ printf(ANSI_CURSOR_COLUMN, 1); -+ printf(CONFIG_AUTOBOOT_PROMPT, 0); -+ if (menukey == AUTOBOOT_MENUKEY) { -+ abort = 1; -+ bootdelay = 0; -+ } -+ } else { -+ (void) getc(); /* consume input */ -+ puts(ANSI_CLEAR_LINE); -+ printf(ANSI_CURSOR_COLUMN, 1); -+ printf(CONFIG_AUTOBOOT_PROMPT, 0); -+ abort = 1; /* don't auto boot */ -+ } - } - - while ((bootdelay > 0) && (!abort)) { -@@ -271,13 +286,18 @@ static int abortboot_single_key(int bootdelay) - ts = get_timer(0); - do { - if (tstc()) { /* we got a key press */ -- int key; -- -- abort = 1; /* don't auto boot */ -- bootdelay = 0; /* no more delay */ -- key = getc(); /* consume input */ -- if (IS_ENABLED(CONFIG_USE_AUTOBOOT_MENUKEY)) -- menukey = key; -+ -+ if (IS_ENABLED(CONFIG_AUTOBOOT_USE_MENUKEY)){ -+ menukey = getc(); -+ if (menukey == AUTOBOOT_MENUKEY){ -+ abort = 1; -+ bootdelay = 0; -+ } -+ } else { -+ abort = 1; /* don't auto boot */ -+ bootdelay = 0; /* no more delay */ -+ menukey = getc(); /* consume input */ -+ } - break; - } - udelay(10000); -@@ -383,8 +403,7 @@ void autoboot_command(const char *s) - disable_ctrlc(prev); /* restore Ctrl-C checking */ - } - -- if (IS_ENABLED(CONFIG_USE_AUTOBOOT_MENUKEY) && -- menukey == AUTOBOOT_MENUKEY) { -+ if (IS_ENABLED(CONFIG_AUTOBOOT_USE_MENUKEY)) { - s = env_get("menucmd"); - if (s) - run_command_list(s, -1, 0); --- -2.25.4 - -From c2832bcbc0ae86b2fe85abc68dd98a406ee0deeb Mon Sep 17 00:00:00 2001 -From: Samuel Dionne-Riel -Date: Wed, 8 Jul 2020 01:26:30 -0400 -Subject: [PATCH] Define a very-opinionated boot sequence - ---- - configs/pinebook-pro-rk3399_defconfig | 25 +++++++++++++++++++++++++ - include/configs/pinebook-pro-rk3399.h | 17 +++++++++++++++++ - 2 files changed, 42 insertions(+) - -diff --git a/configs/pinebook-pro-rk3399_defconfig b/configs/pinebook-pro-rk3399_defconfig -index dbbd43ed9f3..4acccdfb0f7 100644 ---- a/configs/pinebook-pro-rk3399_defconfig -+++ b/configs/pinebook-pro-rk3399_defconfig -@@ -95,3 +95,28 @@ CONFIG_SPL_SPI_FLASH_TINY=n - CONFIG_SPL_SPI_FLASH_SFDP_SUPPORT=y - CONFIG_SPL_SPI_LOAD=y - CONFIG_SYS_SPI_U_BOOT_OFFS=0x80000 -+ -+# Boot menu required for the menu (duh) -+CONFIG_CMD_BOOTMENU=y -+ -+# Truetype console configuration -+CONFIG_CONSOLE_TRUETYPE=y -+CONFIG_CONSOLE_TRUETYPE_NIMBUS=y -+CONFIG_CONSOLE_TRUETYPE_SIZE=26 -+ -+# Boot menu and default boot configuration -+ -+# Gives *some* time for the user to act. -+# Though an already-knowledgeable user will know they can use the key before -+# the message is shown. -+# Conversely, CTRL+C can cancel the default boot, showing the menu as expected -+# In reality, this gives us MUCH MORE slop in the time window than 1 second. -+CONFIG_BOOTDELAY=1 -+# This would be escape, but the USB drivers don't really play well and -+# escape doesn't work from the keyboard. -+CONFIG_AUTOBOOT_MENUKEY=27 -+# So we'll fake that using CTRL+C is what we want... -+# It's only a side-effect. -+CONFIG_AUTOBOOT_PROMPT="Press CTRL+C for the boot menu." -+# And this ends up causing the menu to be used on CTRL+C (or escape) -+CONFIG_AUTOBOOT_USE_MENUKEY=y -diff --git a/include/configs/pinebook-pro-rk3399.h b/include/configs/pinebook-pro-rk3399.h -index d9108305824..5b1234ac7ad 100644 ---- a/include/configs/pinebook-pro-rk3399.h -+++ b/include/configs/pinebook-pro-rk3399.h -@@ -7,7 +7,24 @@ - #ifndef __PINEBOOK_PRO_RK3399_H - #define __PINEBOOK_PRO_RK3399_H - -+// This sets up additional environment variables for our opinionated setup. -+// (See rk3399_common.h, it should be apended to ROCKCHIP_DEVICE_SETTINGS here -+// but it makes patches harder to apply...) -+#define OPINIONATED_ENV \ -+ "setup_leds=led green:power on; led red:standby on\0" \ -+ "bootcmd=run setup_leds; run distro_bootcmd\0" \ -+ "bootmenu_delay=-1\0" \ -+ "bootmenu_0=Default U-Boot boot=run distro_bootcmd; echo \"Boot failed.\"; sleep 5; $menucmd -1\0" \ -+ "bootmenu_1=Boot from eMMC=run bootcmd_mmc0; echo \"eMMC Boot failed.\"; sleep 5; $menucmd -1\0" \ -+ "bootmenu_2=Boot from SD=run bootcmd_mmc1; echo \"SD Boot failed.\"; sleep 5; $menucmd -1\0" \ -+ "bootmenu_3=Boot from USB=run bootcmd_usb0; echo \"USB Boot failed.\"; sleep 5; $menucmd -1\0" \ -+ "bootmenu_4=Boot PXE=run bootcmd_pxe; echo \"PXE Boot failed.\"; sleep 5; $menucmd -1\0" \ -+ "bootmenu_5=Boot DHCP=run bootcmd_dhcp; echo \"DHCP Boot failed.\"; sleep 5; $menucmd -1\0" \ -+ "bootmenu_6=Reboot=reset\0" \ -+ "menucmd=bootmenu\0" -+ - #define ROCKCHIP_DEVICE_SETTINGS \ -+ OPINIONATED_ENV \ - "stdin=serial,usbkbd\0" \ - "stdout=serial,vidconsole\0" \ - "stderr=serial,vidconsole\0" --- -2.25.4 - -From 7fad5fa92dc905a11cf53549a4fc52940571e204 Mon Sep 17 00:00:00 2001 -From: Samuel Dionne-Riel -Date: Wed, 8 Jul 2020 01:26:55 -0400 -Subject: [PATCH] Configure boot splash logo - -This assumes LOGO_BMP is set by the derivation as a make flag. ---- - configs/pinebook-pro-rk3399_defconfig | 3 +++ - include/configs/pinebook-pro-rk3399.h | 16 ++++++++++++++++ - 2 files changed, 19 insertions(+) - -diff --git a/configs/pinebook-pro-rk3399_defconfig b/configs/pinebook-pro-rk3399_defconfig -index 4acccdfb0f7..8dc5bc95cd9 100644 ---- a/configs/pinebook-pro-rk3399_defconfig -+++ b/configs/pinebook-pro-rk3399_defconfig -@@ -99,6 +99,9 @@ CONFIG_SYS_SPI_U_BOOT_OFFS=0x80000 - # Boot menu required for the menu (duh) - CONFIG_CMD_BOOTMENU=y - -+# Required for the splash (see include/configs/pinebook-pro-rk3399.h) -+CONFIG_CMD_BMP=y -+ - # Truetype console configuration - CONFIG_CONSOLE_TRUETYPE=y - CONFIG_CONSOLE_TRUETYPE_NIMBUS=y -diff --git a/include/configs/pinebook-pro-rk3399.h b/include/configs/pinebook-pro-rk3399.h -index 5b1234ac7ad..2c276476ca8 100644 ---- a/include/configs/pinebook-pro-rk3399.h -+++ b/include/configs/pinebook-pro-rk3399.h -@@ -7,10 +7,26 @@ - #ifndef __PINEBOOK_PRO_RK3399_H - #define __PINEBOOK_PRO_RK3399_H - -+// The following bunch of defines is for the splash -+#define CONFIG_SPLASHIMAGE_GUARD -+#define CONFIG_SPLASH_SCREEN -+#define CONFIG_SPLASH_SCREEN_ALIGN -+#define CONFIG_SPLASH_SOURCE -+#define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE (1920*1080*4) -+#define CONFIG_VIDEO_BMP_GZIP -+#define CONFIG_VIDEO_BMP_LOGO -+#define CONFIG_VIDEO_BMP_RLE8 -+#define CONFIG_VIDEO_LOGO -+#define SPLASH_ENV \ -+ "splashimage=0x08080000\0" \ -+ "splashpos=m,m\0" \ -+ "splashsource=mmc_fs\0" -+ - // This sets up additional environment variables for our opinionated setup. - // (See rk3399_common.h, it should be apended to ROCKCHIP_DEVICE_SETTINGS here - // but it makes patches harder to apply...) - #define OPINIONATED_ENV \ -+ SPLASH_ENV \ - "setup_leds=led green:power on; led red:standby on\0" \ - "bootcmd=run setup_leds; run distro_bootcmd\0" \ - "bootmenu_delay=-1\0" \ --- -2.25.4 - -From 025775cd6469ed0a5a818d2708cc82a43755abb9 Mon Sep 17 00:00:00 2001 -From: Samuel Dionne-Riel -Date: Thu, 9 Jul 2020 02:50:29 -0400 -Subject: [PATCH] [WIP] cli: Clear ctrl+c before running a command - -This fixes an issue where: - -With an environment like so: - - bootmenu_0=Default U-Boot boot=run distro_bootcmd; $menucmd -1 - - * Running bootmenu - * Running the option - * Cancelling using CTRL-C - -Would show the menu as expected, but running *any* command -post-cancellation would spuriously exit in unexplainable ways. ---- - common/cli.c | 9 +++++++++ - 1 file changed, 9 insertions(+) - -diff --git a/common/cli.c b/common/cli.c -index 6635ab2bcf8..f49a0689cc7 100644 ---- a/common/cli.c -+++ b/common/cli.c -@@ -45,6 +45,9 @@ int run_command(const char *cmd, int flag) - - if (flag & CMD_FLAG_ENV) - hush_flags |= FLAG_CONT_ON_NEWLINE; -+ -+ clear_ctrlc(); /* forget any previous Control C */ -+ - return parse_string_outer(cmd, hush_flags); - #endif - } -@@ -65,6 +68,9 @@ int run_command_repeatable(const char *cmd, int flag) - * parse_string_outer() returns 1 for failure, so clean up - * its result. - */ -+ -+ clear_ctrlc(); /* forget any previous Control C */ -+ - if (parse_string_outer(cmd, - FLAG_PARSE_SEMICOLON | FLAG_EXIT_FROM_LOOP)) - return -1; -@@ -105,6 +111,9 @@ int run_command_list(const char *cmd, int len, int flag) - buff[len] = '\0'; - } - #ifdef CONFIG_HUSH_PARSER -+ -+ clear_ctrlc(); /* forget any previous Control C */ -+ - rcode = parse_string_outer(buff, FLAG_PARSE_SEMICOLON); - #else - /* --- -2.25.4 - diff --git a/device/community/u-boot-pinebookpro/0006-rockchip-move-usb0-after-mmc1-in-default-boot-order.patch b/device/community/u-boot-pinebookpro/0006-rockchip-move-usb0-after-mmc1-in-default-boot-order.patch new file mode 100644 index 000000000..6c3af9409 --- /dev/null +++ b/device/community/u-boot-pinebookpro/0006-rockchip-move-usb0-after-mmc1-in-default-boot-order.patch @@ -0,0 +1,27 @@ +From e95e40a662f7563b80896a6e5f70cf4b2183a459 Mon Sep 17 00:00:00 2001 +From: dhivael +Date: Sat, 11 Jan 2020 15:04:04 +0100 +Subject: [PATCH 6/8] rockchip: move usb0 after mmc1 in default boot order + +now that we support booting from USB we should prefer USB boot over eMMC +boot. we still try to boot from SD cards first. +--- + include/configs/rockchip-common.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/include/configs/rockchip-common.h b/include/configs/rockchip-common.h +index d5550a46575..21c95c75d05 100644 +--- a/include/configs/rockchip-common.h ++++ b/include/configs/rockchip-common.h +@@ -14,7 +14,7 @@ + #ifndef CONFIG_XPL_BUILD + + #ifndef BOOT_TARGETS +-#define BOOT_TARGETS "mmc1 mmc0 nvme scsi usb pxe dhcp spi" ++#define BOOT_TARGETS "mmc1 usb nvme scsi mmc0 pxe dhcp spi" + #endif + + #ifdef CONFIG_ARM64 +-- +2.54.0 + diff --git a/device/community/u-boot-pinebookpro/0007-pinebook-pro-Fix-vcc_sdio-regulator-max-voltage.patch b/device/community/u-boot-pinebookpro/0007-pinebook-pro-Fix-vcc_sdio-regulator-max-voltage.patch new file mode 100644 index 000000000..95fc63339 --- /dev/null +++ b/device/community/u-boot-pinebookpro/0007-pinebook-pro-Fix-vcc_sdio-regulator-max-voltage.patch @@ -0,0 +1,41 @@ +From 1385d1131866384e43531074a781978f04b6ac4e Mon Sep 17 00:00:00 2001 +From: Hugo Osvaldo Barrera +Date: Tue, 19 May 2026 08:31:20 +0000 +Subject: [PATCH 7/8] pinebook-pro: Fix vcc_sdio regulator max voltage +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Commit 0b75109b6aa (v2026.01) made dw_mmc return an error when voltage +setting is outside of the supported range, and fall back back to the +minimal value (1.8V in this case). + +Prior to this, the error was silently ignored, no fallback was applied, +and the voltage remained the default (3.0V). + +The device tree specifies that the regulator supports 1.8V–3.0V, but the +RK808 LDO4 datasheet specifies that it supports 1.8V–3.4V. + +Change regulator-max-microvolt to 3400000 µV as per the RK808 datasheet. + +Patch submitted upstream: https://lists.infradead.org/pipermail/linux-rockchip/2026-May/071171.html +--- + dts/upstream/src/arm64/rockchip/rk3399-pinebook-pro.dts | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/dts/upstream/src/arm64/rockchip/rk3399-pinebook-pro.dts b/dts/upstream/src/arm64/rockchip/rk3399-pinebook-pro.dts +index eaaca08a760..ac3926bb7ff 100644 +--- a/dts/upstream/src/arm64/rockchip/rk3399-pinebook-pro.dts ++++ b/dts/upstream/src/arm64/rockchip/rk3399-pinebook-pro.dts +@@ -532,7 +532,7 @@ + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <1800000>; +- regulator-max-microvolt = <3000000>; ++ regulator-max-microvolt = <3400000>; /* RK808 LDO4 supports 1.8V-3.4V */ + + regulator-state-mem { + regulator-on-in-suspend; +-- +2.54.0 + diff --git a/device/community/u-boot-pinebookpro/0007-rockchip-boot-order.patch b/device/community/u-boot-pinebookpro/0007-rockchip-boot-order.patch deleted file mode 100644 index 0bf389fa2..000000000 --- a/device/community/u-boot-pinebookpro/0007-rockchip-boot-order.patch +++ /dev/null @@ -1,29 +0,0 @@ -From dd52b971005271d615e63f4f946a0ee9331925bc Mon Sep 17 00:00:00 2001 -From: dhivael -Date: Sat, 11 Jan 2020 15:04:04 +0100 -Subject: [PATCH 3/5] rockchip: move mmc1 before mmc0 in default boot order - -on pinebooks mmc1 is the external card, which should take boot priority -over the internal emmc even if the emmc is bootable. ---- - include/configs/rockchip-common.h | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/include/configs/rockchip-common.h b/include/configs/rockchip-common.h -index 0b9e24d1db4..6610f95b7b9 100644 ---- a/include/configs/rockchip-common.h -+++ b/include/configs/rockchip-common.h -@@ -17,8 +17,8 @@ - /* First try to boot from SD (index 0), then eMMC (index 1) */ - #if CONFIG_IS_ENABLED(CMD_MMC) - #define BOOT_TARGET_MMC(func) \ -- func(MMC, mmc, 0) \ -- func(MMC, mmc, 1) -+ func(MMC, mmc, 1) \ -+ func(MMC, mmc, 0) - #else - #define BOOT_TARGET_MMC(func) - #endif --- -2.25.3 - diff --git a/device/community/u-boot-pinebookpro/0008-rockchip-boot-order-add-usb.patch b/device/community/u-boot-pinebookpro/0008-rockchip-boot-order-add-usb.patch deleted file mode 100644 index 9ae3514f3..000000000 --- a/device/community/u-boot-pinebookpro/0008-rockchip-boot-order-add-usb.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 4b11a4444983c997addc5c581da1ec287f27fa47 Mon Sep 17 00:00:00 2001 -From: dhivael -Date: Sat, 11 Jan 2020 15:04:04 +0100 -Subject: [PATCH 4/5] rockchip: move usb0 after mmc1 in default boot order - -now that we support booting from USB we should prefer USB boot over eMMC -boot. we still try to boot from SD cards first. ---- - include/configs/rockchip-common.h | 15 ++++++++------- - 1 file changed, 8 insertions(+), 7 deletions(-) - -diff --git a/include/configs/rockchip-common.h b/include/configs/rockchip-common.h -index 6610f95b7b9..d743ebe83e6 100644 ---- a/include/configs/rockchip-common.h -+++ b/include/configs/rockchip-common.h -@@ -16,11 +16,10 @@ - - /* First try to boot from SD (index 0), then eMMC (index 1) */ - #if CONFIG_IS_ENABLED(CMD_MMC) -- #define BOOT_TARGET_MMC(func) \ -- func(MMC, mmc, 1) \ -- func(MMC, mmc, 0) -+ #define BOOT_TARGET_MMC(func, idx) \ -+ func(MMC, mmc, idx) - #else -- #define BOOT_TARGET_MMC(func) -+ #define BOOT_TARGET_MMC(func, idx) - #endif - - #if CONFIG_IS_ENABLED(CMD_NVME) -@@ -55,16 +54,18 @@ - - #ifdef CONFIG_ROCKCHIP_RK3399 - #define BOOT_TARGET_DEVICES(func) \ -- BOOT_TARGET_MMC(func) \ -- BOOT_TARGET_NVME(func) \ -+ BOOT_TARGET_MMC(func, 1) \ - BOOT_TARGET_USB(func) \ -+ BOOT_TARGET_NVME(func) \ -+ BOOT_TARGET_MMC(func, 0) \ - BOOT_TARGET_PXE(func) \ - BOOT_TARGET_DHCP(func) \ - BOOT_TARGET_SF(func) - #else - #define BOOT_TARGET_DEVICES(func) \ -- BOOT_TARGET_MMC(func) \ -+ BOOT_TARGET_MMC(func, 1) \ - BOOT_TARGET_USB(func) \ -+ BOOT_TARGET_MMC(func, 0) \ - BOOT_TARGET_PXE(func) \ - BOOT_TARGET_DHCP(func) - #endif --- -2.25.3 - diff --git a/device/community/u-boot-pinebookpro/0009-rk3399-support-compressed-kernel.patch b/device/community/u-boot-pinebookpro/0009-rk3399-support-compressed-kernel.patch deleted file mode 100644 index 5a3b3e8ca..000000000 --- a/device/community/u-boot-pinebookpro/0009-rk3399-support-compressed-kernel.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 9482bb0eea3ad397b06ef195f9c2f09de94e74cb Mon Sep 17 00:00:00 2001 -From: Tian Yuanhao -Date: Mon, 6 Jul 2020 16:46:33 +0800 -Subject: [PATCH] rk3399: boot from compressed Image - -Add kernel_comp_addr_r and kernel_comp_size to rk3399_common.h, so that -people can use compressed Image (e.g. Image.gz) in extlinux.conf. - -Signed-off-by: Tian Yuanhao ---- - include/configs/rk3399_common.h | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/include/configs/rk3399_common.h b/include/configs/rk3399_common.h -index f0ae6e67a7..6a275818d0 100644 ---- a/include/configs/rk3399_common.h -+++ b/include/configs/rk3399_common.h -@@ -53,7 +53,9 @@ - "pxefile_addr_r=0x00600000\0" \ - "fdt_addr_r=0x01f00000\0" \ - "kernel_addr_r=0x02080000\0" \ -- "ramdisk_addr_r=0x06000000\0" -+ "kernel_comp_addr_r=0x06000000\0" \ -+ "kernel_comp_size=0x02000000\0" \ -+ "ramdisk_addr_r=0x08000000\0" - - #ifndef ROCKCHIP_DEVICE_SETTINGS - #define ROCKCHIP_DEVICE_SETTINGS diff --git a/device/community/u-boot-pinebookpro/APKBUILD b/device/community/u-boot-pinebookpro/APKBUILD index aed78771b..e2dfbb62f 100644 --- a/device/community/u-boot-pinebookpro/APKBUILD +++ b/device/community/u-boot-pinebookpro/APKBUILD @@ -1,9 +1,9 @@ # Seperate u-boot package for the pine64-pinebookpro because this includes # a driver for the display and supports efi loading operating systems -maintainer="Quade Curry " +maintainer="Hugo Osvaldo Barrera " pkgname=u-boot-pinebookpro -pkgver=2020.07 -pkgrel=5 +pkgver=2026.04 +pkgrel=0 pkgdesc="u-boot bootloader for the rk3399" url="https://gitlab.denx.de/u-boot/u-boot" arch="aarch64" @@ -11,27 +11,29 @@ license="GPL-2.0-or-later OFL-1.1 BSD-2-Clause BSD-3-Clause eCos-2.0 IBM-pibs ISC LGPL-2.0-only LGPL-2.1-only X11" makedepends="$depends_dev arm-trusted-firmware + bash bc bison dtc flex + gnutls-dev openssl-dev python3-dev + py3-elftools + py3-setuptools swig u-boot-tools " options="!check" source=" ftp://ftp.denx.de/pub/u-boot/u-boot-${pkgver//_/-}.tar.bz2 - 0001-enable-rockchip-rng.patch - 0002-enable-usb-keyboard.patch - 0003-display-support.patch - 0004-rk3399-light-pinebook-power-and-standby-leds.patch - 0005-support-SPI-flash-boot.patch - 0006-implement-boot-menu.patch - 0007-rockchip-boot-order.patch - 0008-rockchip-boot-order-add-usb.patch - 0009-rk3399-support-compressed-kernel.patch + 0001-pinebook-pro-ensure-USB-keyboards-are-available.patch + 0002-drivers-video-rockchip-rk_edp.c-Change-clock-rate.patch + 0003-vidconsole-uclass-Implement-ANSI_CURSOR_COLUMN.patch + 0004-Configure-boot-splash-logo.patch + 0005-cli-Clear-ctrl-c-before-running-a-command.patch + 0006-rockchip-move-usb0-after-mmc1-in-default-boot-order.patch + 0007-pinebook-pro-Fix-vcc_sdio-regulator-max-voltage.patch pine64.bmp " builddir="$srcdir"/u-boot-${pkgver//_/-} @@ -68,14 +70,14 @@ package() { } -sha512sums="df91264fe8a42e676c3f2aa09d644c6a3035cc8169bf52a8ab95efe7e542cfc758a0ef150949b0d9f03c7dec7d95f8d20a2efe2dbb60c2ef1a61c8063770478d u-boot-2020.07.tar.bz2 -058408fdf8921bcde5f9ca9ea03fdad6d87dd94f09bd6768792d72af43e64e801dfd8cb3f16e83be14153d9c38b3e3e23fe949778d9347ff72bada996bd82cfe 0001-enable-rockchip-rng.patch -8e454e486a7c9fe486a1bdbececf8c6b163b90b7b57a3822afb2a30f42ba9552439360d08a6ecc19a2ebe807c6c15961a73e0fe47dce9d2a7f86ce4742cb2510 0002-enable-usb-keyboard.patch -7292dab0af5b0127663eac7966499fc5af87c544485168b5269cdf16a226cd8a215b76a4745cf19afb751ea6fea680e26b86adfdaab54e3ec7fc8fd8bec85c6b 0003-display-support.patch -5188c54bb1efe18471b3e0ff8113b0d46d6ecad2be222416c7fb89021e76f2816771793d3efaba561602064a8079cf0da66e25228e132d44a0f6b14658f93ffb 0004-rk3399-light-pinebook-power-and-standby-leds.patch -ee51dca25a5a00011186c7f750e20ed08061a5a64a67bd81ca6d96cefdb139a15078d48c2c5b6ecb09b4ab5d778e11f3b62ff3daa74ffc7d73963b15e4eee215 0005-support-SPI-flash-boot.patch -8d989d200639204c8f7fb2620209bd1e096e8c5ea04085f68486b71490deb60e89e2d54704508bfe22c006b0d331dcc0c5cbfac6c0e02328a01b0f0b611d6b58 0006-implement-boot-menu.patch -3a91ae0f499ca668ac95cc24c3b2794b0884acfcba2a76493cb2329b8e00d84eb1bbfdcdb2475064cc5b0fb0b52df849afc59b6399de44699db9dfda4d0c5f3c 0007-rockchip-boot-order.patch -b655dfd83c12925d5e90f317c97d8bca9f047df337202627bfe40e0ebaba79d8adc429575a04f5af531bcc2626521b517ea7b9026dbdffb54ba97316d1674cf9 0008-rockchip-boot-order-add-usb.patch -cc03b87e42ce0ade1d3ddd9eebc76304451c01c4ee2ea2f52aa572ab8a30d84960df4d47f14315d96943467793fccee2052f53ace9fbac059e30c86c749d7ccc 0009-rk3399-support-compressed-kernel.patch -e317f8527dbb3b8a40a45d20da6c42f8cfd98b968060d6b4f1fa5453736441d36d1048bdc4359af47c2129fa86b6d43b3e263ef282f5c7b2e54f702d8b6bd8b1 pine64.bmp" +sha512sums=" +c5fca2abc533759985dfcc6d071d154007535787b0bbd569b61bda1fe2f3a31fba08481c8caf18cf5f2bc79609f50dee504977a8b65e8c4cc21f277268232e03 u-boot-2026.04.tar.bz2 +572d24d70d96e84649b71a0a460ac9b9ae26d155d549bda1bc2534a54d102b158319caef24609fdbef6465a63d6c2624a42851bcad5b5cb60373abef62bd1850 0001-pinebook-pro-ensure-USB-keyboards-are-available.patch +3657612c577076c733637cf1b52ece1722369f3a7b821e6a08b7650e85692f5e69acc8f1d4a20d36b701a5bcc4a5bc306456ac371689fcc69ee4c4626ec78483 0002-drivers-video-rockchip-rk_edp.c-Change-clock-rate.patch +e1dc0553c3685ea1f52f067907b042f54f8244060f9ba865a81970bceba387fe1581d6ea05f6d1aa1ca81513a8e92580781ecb20f9d02d83c56033809ede4ccc 0003-vidconsole-uclass-Implement-ANSI_CURSOR_COLUMN.patch +da1b515afbbe2387f6fee1028277cb19f5536598ba3fe7cd940d11476f41f162d3d4c08d9ee0ff5554e16dd9cbb4fc70015b5cc5eed885e75267a9e82bf7209f 0004-Configure-boot-splash-logo.patch +11be09f9dc0bd2eefb645fcc3d5681ade90e104aa8e7c9de549b20393761074edd0e42828fb5147e186d995e11e1397bc94dd2cc521f307d8d26b6925fe22f1b 0005-cli-Clear-ctrl-c-before-running-a-command.patch +5fdf9a5b42b271414b1f07a8cd94b537562d4994b5cb21377dddc065754b3977a8a3af646c9db0736eeb9cb7e9be0da7838721c5c1bc58f6de00bc1cbed54604 0006-rockchip-move-usb0-after-mmc1-in-default-boot-order.patch +3537d81c0a839f2a35e28ef0dc9126e3d175950a0752b363839970c64db4c5aa6afceb8912a2e0a3a09d14fceb94704be2f752a0c002ace51676e736a58ba435 0007-pinebook-pro-Fix-vcc_sdio-regulator-max-voltage.patch +e317f8527dbb3b8a40a45d20da6c42f8cfd98b968060d6b4f1fa5453736441d36d1048bdc4359af47c2129fa86b6d43b3e263ef282f5c7b2e54f702d8b6bd8b1 pine64.bmp +"