From 6deb24c1da3f5021909fd4db1f90d33f95e7a9fe Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 7 Mar 2018 14:30:51 +0000 Subject: [PATCH] Fixes for Raspberry Pi 3 boot, Minor kernel install fixes, Enable am335x_evm_usbspl for Beagle Pocket --- 10-devicetree.install | 14 +- BeagleBoard.org-PocketBeagle.patch | 326 ++++++++++++++++++ arm-boards | 1 + dragonboard-fixes.patch | 62 ---- ...Partially-revert-spl-eMMC-SD-Provide.patch | 72 ---- rpi-Drain-RX-queue-on-setbrg.patch | 64 ++++ uboot-tools.spec | 14 +- 7 files changed, 409 insertions(+), 144 deletions(-) create mode 100644 BeagleBoard.org-PocketBeagle.patch delete mode 100644 imx-spl-Partially-revert-spl-eMMC-SD-Provide.patch create mode 100644 rpi-Drain-RX-queue-on-setbrg.patch diff --git a/10-devicetree.install b/10-devicetree.install index 33407b5..752e5d0 100755 --- a/10-devicetree.install +++ b/10-devicetree.install @@ -2,6 +2,8 @@ # set -x +if [[ "$(uname -m)" == arm* || "$(uname -m)" == aarch64 ]] +then COMMAND="$1" KERNEL_VERSION="$2" #BOOT_DIR_ABS="$3" @@ -19,8 +21,6 @@ KERNEL_VERSION="$2" # device progresses, it should never make backward incompatible changes. # So it should always be safe to use a newer dtb with an older kernel. -if [[ "$(uname -m)" == arm* || "$(uname -m)" == aarch64 ]] -then list_dtb_versions() { excluded_version="$1" for dtbdir in /boot/dtb-*; do @@ -42,13 +42,17 @@ then ret=0 case "$COMMAND" in add) - setup_dtb_link + # If we're adding a kernel we want that version + if [ -h /boot/dtb ]; then + rm -f /boot/dtb + fi + ln -s dtb-$KERNEL_VERSION /boot/dtb ret=$? - ;; + ;; remove) setup_dtb_link $KERNEL_VERSION ret=$? - ;; + ;; esac exit $ret else diff --git a/BeagleBoard.org-PocketBeagle.patch b/BeagleBoard.org-PocketBeagle.patch new file mode 100644 index 0000000..abe9f3c --- /dev/null +++ b/BeagleBoard.org-PocketBeagle.patch @@ -0,0 +1,326 @@ +From patchwork Wed Mar 7 10:40:41 2018 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Subject: [U-Boot,1/4] Add support for BeagleBoard.org PocketBeagle +X-Patchwork-Submitter: Jason Kridner +X-Patchwork-Id: 882566 +Message-Id: <20180307104044.4739-2-jdk@ti.com> +To: u-boot@lists.denx.de +Cc: Tom Rini , Jason Kridner +Date: Wed, 7 Mar 2018 05:40:41 -0500 +From: Jason Kridner +List-Id: U-Boot discussion + +Texas Instruments AM3358 based low-cost board using Octavo Systems OSD3358 SIP +with built-in TPS65217 PMIC and 512MB DDR3. Board features small 35mm x +55mm size, high-speed USB OTG, microSD and 72 0.1" expansion header +pins with 2xSPI, 2xI2C, 2xUART, USB, 8xADC, up-to-44 GPIO, PRU pins and much more. + +https://beagleboard.org/pocket + +This was tested using the am335x_evm_usbspl_defconfig. + +Note that MII pins are enabled despite not having Ethernet on this +board. This avoids an issue where otherwise many timeout errors would be +generated. See https://e2e.ti.com/support/arm/sitara_arm/f/791/t/298976 +for some related discussion. + +Signed-off-by: Jason Kridner +Cc: Tom Rini +--- + board/ti/am335x/board.c | 10 ++++++---- + board/ti/am335x/board.h | 7 ++++++- + board/ti/am335x/mux.c | 3 +++ + include/configs/am335x_evm.h | 2 ++ + 4 files changed, 17 insertions(+), 5 deletions(-) + +diff --git a/board/ti/am335x/board.c b/board/ti/am335x/board.c +index b144fd1821..87bdd2d63d 100644 +--- a/board/ti/am335x/board.c ++++ b/board/ti/am335x/board.c +@@ -264,7 +264,7 @@ const struct dpll_params *get_dpll_ddr_params(void) + + if (board_is_evm_sk()) + return &dpll_ddr3_303MHz[ind]; +- else if (board_is_bone_lt() || board_is_icev2()) ++ else if (board_is_pb() || board_is_bone_lt() || board_is_icev2()) + return &dpll_ddr3_400MHz[ind]; + else if (board_is_evm_15_or_later()) + return &dpll_ddr3_303MHz[ind]; +@@ -295,7 +295,7 @@ const struct dpll_params *get_dpll_mpu_params(void) + if (bone_not_connected_to_ac_power()) + freq = MPUPLL_M_600; + +- if (board_is_bone_lt()) ++ if (board_is_pb() || board_is_bone_lt()) + freq = MPUPLL_M_1000; + + switch (freq) { +@@ -341,7 +341,7 @@ static void scale_vcores_bone(int freq) + * Override what we have detected since we know if we have + * a Beaglebone Black it supports 1GHz. + */ +- if (board_is_bone_lt()) ++ if (board_is_pb() || board_is_bone_lt()) + freq = MPUPLL_M_1000; + + switch (freq) { +@@ -542,7 +542,7 @@ void sdram_init(void) + if (board_is_evm_sk()) + config_ddr(303, &ioregs_evmsk, &ddr3_data, + &ddr3_cmd_ctrl_data, &ddr3_emif_reg_data, 0); +- else if (board_is_bone_lt()) ++ else if (board_is_pb() || board_is_bone_lt()) + config_ddr(400, &ioregs_bonelt, + &ddr3_beagleblack_data, + &ddr3_beagleblack_cmd_ctrl_data, +@@ -931,6 +931,8 @@ int board_fit_config_name_match(const char *name) + return 0; + else if (board_is_bone_lt() && !strcmp(name, "am335x-boneblack")) + return 0; ++ else if (board_is_pb() && !strcmp(name, "am335x-pocketbeagle")) ++ return 0; + else if (board_is_evm_sk() && !strcmp(name, "am335x-evmsk")) + return 0; + else if (board_is_bbg1() && !strcmp(name, "am335x-bonegreen")) +diff --git a/board/ti/am335x/board.h b/board/ti/am335x/board.h +index e13fcff02a..bab5b77f34 100644 +--- a/board/ti/am335x/board.h ++++ b/board/ti/am335x/board.h +@@ -34,6 +34,11 @@ static inline int board_is_bone_lt(void) + return board_ti_is("A335BNLT"); + } + ++static inline int board_is_pb(void) ++{ ++ return board_ti_is("A335PBGL"); ++} ++ + static inline int board_is_bbg1(void) + { + return board_is_bone_lt() && !strncmp(board_ti_get_rev(), "BBG1", 4); +@@ -41,7 +46,7 @@ static inline int board_is_bbg1(void) + + static inline int board_is_beaglebonex(void) + { +- return board_is_bone() || board_is_bone_lt() || board_is_bbg1(); ++ return board_is_pb() || board_is_bone() || board_is_bone_lt() || board_is_bbg1(); + } + + static inline int board_is_evm_sk(void) +diff --git a/board/ti/am335x/mux.c b/board/ti/am335x/mux.c +index ad85b3a19a..aa187605d0 100644 +--- a/board/ti/am335x/mux.c ++++ b/board/ti/am335x/mux.c +@@ -390,6 +390,9 @@ void enable_board_pin_mux(void) + #else + configure_module_pin_mux(mmc1_pin_mux); + #endif ++ } else if (board_is_pb()) { ++ configure_module_pin_mux(mii1_pin_mux); ++ configure_module_pin_mux(mmc0_pin_mux); + } else if (board_is_icev2()) { + configure_module_pin_mux(mmc0_pin_mux); + configure_module_pin_mux(gpio0_18_pin_mux); +diff --git a/include/configs/am335x_evm.h b/include/configs/am335x_evm.h +index 158b7d4e8e..8d45b6fade 100644 +--- a/include/configs/am335x_evm.h ++++ b/include/configs/am335x_evm.h +@@ -133,6 +133,8 @@ + "setenv fdtfile am335x-bone.dtb; fi; " \ + "if test $board_name = A335BNLT; then " \ + "setenv fdtfile am335x-boneblack.dtb; fi; " \ ++ "if test $board_name = A335PBGL; then " \ ++ "setenv fdtfile am335x-pocketbeagle.dtb; fi; " \ + "if test $board_name = BBBW; then " \ + "setenv fdtfile am335x-boneblack-wireless.dtb; fi; " \ + "if test $board_name = BBG1; then " \ + +From patchwork Wed Mar 7 10:40:42 2018 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Subject: [U-Boot,2/4] am335x_evm: scan more partitions and use uname_r +X-Patchwork-Submitter: Jason Kridner +X-Patchwork-Id: 882567 +Message-Id: <20180307104044.4739-3-jdk@ti.com> +To: u-boot@lists.denx.de +Cc: Tom Rini , Jason Kridner +Date: Wed, 7 Mar 2018 05:40:42 -0500 +From: Jason Kridner +List-Id: U-Boot discussion + +This enables mainline u-boot to boot the BeagleBoard.org Debian +distribution builds without extensive environment modifications. + +Some boot layouts only have a single partition on the +MMC/eMMC. This will scan those partitions after the second +partition that was already being scanned. + +Some layouts use uname_r to define the kernel being used for the boot to +support multiple kernels stored within the boot file system without +using symlinks. + +See http://elinux.org/Beagleboard:U-boot_partitioning_layout_2.0 for +more details on the BeagleBoard.org Debian image layout. + +Signed-off-by: Jason Kridner +Cc: Robert Nelson +Cc: Tom Rini +--- + include/configs/am335x_evm.h | 5 ++++- + include/environment/ti/mmc.h | 13 +++++++++---- + 2 files changed, 13 insertions(+), 5 deletions(-) + +diff --git a/include/configs/am335x_evm.h b/include/configs/am335x_evm.h +index 8d45b6fade..32fe0e0cd5 100644 +--- a/include/configs/am335x_evm.h ++++ b/include/configs/am335x_evm.h +@@ -61,7 +61,10 @@ + #define BOOTENV_DEV_LEGACY_MMC(devtypeu, devtypel, instance) \ + "bootcmd_" #devtypel #instance "=" \ + "setenv mmcdev " #instance"; "\ +- "setenv bootpart " #instance":2 ; "\ ++ "setenv bootpart " #instance":2; "\ ++ "run mmcboot;"\ ++ "setenv mmcdev " #instance"; "\ ++ "setenv bootpart " #instance":1; "\ + "run mmcboot\0" + + #define BOOTENV_DEV_NAME_LEGACY_MMC(devtypeu, devtypel, instance) \ +diff --git a/include/environment/ti/mmc.h b/include/environment/ti/mmc.h +index 4305ebdaaf..b803ecccb7 100644 +--- a/include/environment/ti/mmc.h ++++ b/include/environment/ti/mmc.h +@@ -23,9 +23,10 @@ + "bootenvfile=uEnv.txt\0" \ + "importbootenv=echo Importing environment from mmc${mmcdev} ...; " \ + "env import -t ${loadaddr} ${filesize}\0" \ +- "loadbootenv=fatload mmc ${mmcdev} ${loadaddr} ${bootenvfile}\0" \ +- "loadimage=load ${devtype} ${bootpart} ${loadaddr} ${bootdir}/${bootfile}\0" \ +- "loadfdt=load ${devtype} ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}\0" \ ++ "loadbootenv=if fatload mmc ${mmcdev} ${loadaddr} ${bootdir}/${bootenvfile}; then echo Found ${bootdir}/${bootenvfile} in FAT partition; else load mmc ${mmcdev} ${loadaddr} ${bootdir}/${bootenvfile}; fi\0" \ ++ "loadimage=if test -n ${uname_r}; then load ${devtype} ${bootpart} ${loadaddr} ${bootdir}/vmlinuz-${uname_r}; run loadrd; else load ${devtype} ${bootpart} ${loadaddr} ${bootdir}/${bootfile}; fi\0" \ ++ "loadrd=load ${devtype} ${bootpart} ${rdaddr} ${bootdir}/initrd.img-${uname_r}; setenv rdsize ${filesize}\0" \ ++ "loadfdt=if test -n ${uname_r}; then load ${devtype} ${bootpart} ${fdtaddr} ${bootdir}/dtbs/${uname_r}/${fdtfile}; else load ${devtype} ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}; fi;\0" \ + "envboot=mmc dev ${mmcdev}; " \ + "if mmc rescan; then " \ + "echo SD/MMC found on device ${mmcdev};" \ +@@ -45,7 +46,11 @@ + "mmcloados=run args_mmc; " \ + "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \ + "if run loadfdt; then " \ +- "bootz ${loadaddr} - ${fdtaddr}; " \ ++ "if test -n ${uname_r}; then " \ ++ "bootz ${loadaddr} ${rdaddr}:${rdsize} ${fdtaddr}; " \ ++ "else " \ ++ "bootz ${loadaddr} - ${fdtaddr}; " \ ++ "fi; " \ + "else " \ + "if test ${boot_fdt} = try; then " \ + "bootz; " \ + +From patchwork Wed Mar 7 10:40:43 2018 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Subject: [U-Boot,3/4] Handle NETCONSOLE and SPL enabled +X-Patchwork-Submitter: Jason Kridner +X-Patchwork-Id: 882568 +Message-Id: <20180307104044.4739-4-jdk@ti.com> +To: u-boot@lists.denx.de +Cc: Joe Hershberger , + Jason Kridner , Jason Kridner +Date: Wed, 7 Mar 2018 05:40:43 -0500 +From: Jason Kridner +List-Id: U-Boot discussion + +From: Jason Kridner + +NETCONSOLE isn't compiled in with SPL, so the include file needs to recognize that. + +Signed-off-by: Jason Kridner +Cc: Joe Hershberger +--- + include/net.h | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/include/net.h b/include/net.h +index 455b48f6c7..3101096e9a 100644 +--- a/include/net.h ++++ b/include/net.h +@@ -676,7 +676,7 @@ int net_send_udp_packet(uchar *ether, struct in_addr dest, int dport, + /* Processes a received packet */ + void net_process_received_packet(uchar *in_packet, int len); + +-#ifdef CONFIG_NETCONSOLE ++#if defined(CONFIG_NETCONSOLE) && !defined(CONFIG_SPL_BUILD) + void nc_start(void); + int nc_input_packet(uchar *pkt, struct in_addr src_ip, unsigned dest_port, + unsigned src_port, unsigned len); +@@ -684,7 +684,7 @@ int nc_input_packet(uchar *pkt, struct in_addr src_ip, unsigned dest_port, + + static __always_inline int eth_is_on_demand_init(void) + { +-#ifdef CONFIG_NETCONSOLE ++#if defined(CONFIG_NETCONSOLE) && !defined(CONFIG_SPL_BUILD) + extern enum proto_t net_loop_last_protocol; + + return net_loop_last_protocol != NETCONS; +@@ -695,7 +695,7 @@ static __always_inline int eth_is_on_demand_init(void) + + static inline void eth_set_last_protocol(int protocol) + { +-#ifdef CONFIG_NETCONSOLE ++#if defined(CONFIG_NETCONSOLE) && !defined(CONFIG_SPL_BUILD) + extern enum proto_t net_loop_last_protocol; + + net_loop_last_protocol = protocol; + +From patchwork Wed Mar 7 10:40:44 2018 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Subject: [U-Boot,4/4] am335x: am335x_evm_usbspl_defconfig: NETCONSOLE +X-Patchwork-Submitter: Jason Kridner +X-Patchwork-Id: 882569 +Message-Id: <20180307104044.4739-5-jdk@ti.com> +To: u-boot@lists.denx.de +Cc: Tom Rini , Jason Kridner +Date: Wed, 7 Mar 2018 05:40:44 -0500 +From: Jason Kridner +List-Id: U-Boot discussion + +Enable NETCONSOLE by default. Still requires changes to the boot +environment to enable on the platform. + +Signed-of-by: Jason Kridner +Cc: Tom Rini +--- + configs/am335x_evm_usbspl_defconfig | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/configs/am335x_evm_usbspl_defconfig b/configs/am335x_evm_usbspl_defconfig +index e4bf757923..19f7c49951 100644 +--- a/configs/am335x_evm_usbspl_defconfig ++++ b/configs/am335x_evm_usbspl_defconfig +@@ -6,7 +6,13 @@ CONFIG_AM33XX=y + CONFIG_DISTRO_DEFAULTS=y + # CONFIG_ANDROID_BOOT_IMAGE is not set + CONFIG_BOOTCOMMAND="if test ${boot_fit} -eq 1; then run update_to_fit; fi; run findfdt; run init_console; run envboot; run distro_bootcmd" ++CONFIG_CONSOLE_MUX=y ++CONFIG_SYS_CONSOLE_IS_IN_ENV=y ++# CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE is not set ++CONFIG_SYS_CONSOLE_ENV_OVERWRITE=y + CONFIG_SYS_CONSOLE_INFO_QUIET=y ++# CONFIG_SYS_STDIO_DEREGISTER is not set ++# CONFIG_FIT_EMBED is not set + CONFIG_VERSION_VARIABLE=y + CONFIG_ARCH_MISC_INIT=y + CONFIG_SPL=y +@@ -50,3 +56,4 @@ CONFIG_USB_ETHER=y + CONFIG_LZO=y + CONFIG_OF_LIBFDT=y + CONFIG_OF_LIBFDT_OVERLAY=y ++CONFIG_NETCONSOLE=y diff --git a/arm-boards b/arm-boards index 3cf6bf3..210ac09 100644 --- a/arm-boards +++ b/arm-boards @@ -8,6 +8,7 @@ A20-OLinuXino-Lime2 A20-OLinuXino_MICRO am335x_boneblack am335x_evm +am335x_evm_usbspl am57xx_evm Ampe_A76 arndale diff --git a/dragonboard-fixes.patch b/dragonboard-fixes.patch index 1e6ec7b..6cae91a 100644 --- a/dragonboard-fixes.patch +++ b/dragonboard-fixes.patch @@ -120,65 +120,3 @@ index e6114db2ce..30e5cb3f5d 100644 CONFIG_OF_LIBFDT_OVERLAY=y -- 2.14.3 - -From 363da4f7cb3668077fc0bb83e36605080bba5aa7 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Tue, 6 Mar 2018 10:13:32 +0000 -Subject: [PATCH 4/4] db820c: config updates - -Enable LEDs, FAT write (useful for EFI boot), various DT functionality, wnable USB keyboards and -video output, and some common USB eth adapters - -Signed-off-by: Peter Robinson ---- - configs/dragonboard820c_defconfig | 28 ++++++++++++++++++++++++++++ - 1 file changed, 28 insertions(+) - -diff --git a/configs/dragonboard820c_defconfig b/configs/dragonboard820c_defconfig -index ec4a5b952e..11150a25a6 100644 ---- a/configs/dragonboard820c_defconfig -+++ b/configs/dragonboard820c_defconfig -@@ -25,8 +25,14 @@ CONFIG_ENV_IS_IN_EXT4=y - CONFIG_ENV_EXT4_INTERFACE="mmc" - CONFIG_ENV_EXT4_DEVICE_AND_PART="0:1" - CONFIG_ENV_EXT4_FILE="/uboot.env" -+CONFIG_FAT_WRITE=y -+CONFIG_OF_LIBFDT_OVERLAY=y -+CONFIG_OF_CONTROL=y -+CONFIG_OF_SEPARATE=y - CONFIG_CLK=y - CONFIG_PM8916_GPIO=y -+CONFIG_LED=y -+CONFIG_LED_GPIO=y - CONFIG_DM_MMC=y - CONFIG_MMC_SDHCI=y - CONFIG_MMC_SDHCI_MSM=y -@@ -34,3 +40,25 @@ CONFIG_DM_PMIC=y - CONFIG_PMIC_PM8916=y - CONFIG_MSM_SERIAL=y - CONFIG_SPMI_MSM=y -+CONFIG_DM_ETH=y -+CONFIG_DM_KEYBOARD=y -+CONFIG_DM_VIDEO=y -+CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y -+CONFIG_DM_VIDEO=y -+# CONFG_VIDEO_BPP8 is not set -+CONFIG_NO_FB_CLEAR=y -+CONFIG_VIDEO_SIMPLE=y -+CONFIG_USB=y -+CONFIG_DM_USB=y -+CONFIG_USB_EHCI_HCD=y -+CONFIG_USB_EHCI_MSM=y -+CONFIG_USB_KEYBOARD=y -+CONFIG_USB_ULPI_VIEWPORT=y -+CONFIG_USB_ULPI=y -+CONFIG_USB_STORAGE=y -+CONFIG_USB_HOST_ETHER=y -+CONFIG_USB_ETHER_ASIX=y -+CONFIG_USB_ETHER_ASIX88179=y -+CONFIG_USB_ETHER_MCS7830=y -+CONFIG_USB_ETHER_RTL8152=y -+CONFIG_USB_ETHER_SMSC95XX=y --- -2.14.3 - diff --git a/imx-spl-Partially-revert-spl-eMMC-SD-Provide.patch b/imx-spl-Partially-revert-spl-eMMC-SD-Provide.patch deleted file mode 100644 index ca05d0e..0000000 --- a/imx-spl-Partially-revert-spl-eMMC-SD-Provide.patch +++ /dev/null @@ -1,72 +0,0 @@ -From patchwork Thu Feb 15 14:41:40 2018 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -Subject: [U-Boot, - v3] imx: spl: Partially revert "spl: eMMC/SD: Provide one __weak - spl_boot_mode() function" -X-Patchwork-Submitter: Fabio Estevam -X-Patchwork-Id: 874073 -Message-Id: <1518705700-9402-1-git-send-email-fabio.estevam@nxp.com> -To: -Cc: trini@konsulko.com, u-boot@lists.denx.de, jsg@jsg.id.au, - Fabio Estevam -Date: Thu, 15 Feb 2018 12:41:40 -0200 -From: Fabio Estevam -List-Id: U-Boot discussion - -Commit d695d6627803 ("spl: eMMC/SD: Provide one __weak spl_boot_mode() -function") breaks the boot on several i.MX6 boards, -such as cuboxi and wandboard: - -U-Boot SPL 2018.03-rc1-00212-g48914fc119 (Feb 10 2018 - 11:04:33 +1300) -Trying to boot from MMC1 -Failed to mount ext2 filesystem... -spl_load_image_ext: ext4fs mount err - 0 - -Partially revert it so that we can boot U-Boot again on these -i.MX6 platforms. - -Reported-by: Jonathan Gray -Signed-off-by: Fabio Estevam ---- -Changes since v2: -- Do a partiall revert instead of full revert (Lukasz) - - arch/arm/mach-imx/spl.c | 23 +++++++++++++++++++++++ - 1 file changed, 23 insertions(+) - -diff --git a/arch/arm/mach-imx/spl.c b/arch/arm/mach-imx/spl.c -index a9079fc..b2521b2 100644 ---- a/arch/arm/mach-imx/spl.c -+++ b/arch/arm/mach-imx/spl.c -@@ -132,6 +132,29 @@ int g_dnl_bind_fixup(struct usb_device_descriptor *dev, const char *name) - } - #endif - -+#if defined(CONFIG_SPL_MMC_SUPPORT) -+/* called from spl_mmc to see type of boot mode for storage (RAW or FAT) */ -+u32 spl_boot_mode(const u32 boot_device) -+{ -+ switch (spl_boot_device()) { -+ /* for MMC return either RAW or FAT mode */ -+ case BOOT_DEVICE_MMC1: -+ case BOOT_DEVICE_MMC2: -+#if defined(CONFIG_SPL_FAT_SUPPORT) -+ return MMCSD_MODE_FS; -+#elif defined(CONFIG_SUPPORT_EMMC_BOOT) -+ return MMCSD_MODE_EMMCBOOT; -+#else -+ return MMCSD_MODE_RAW; -+#endif -+ break; -+ default: -+ puts("spl: ERROR: unsupported device\n"); -+ hang(); -+ } -+} -+#endif -+ - #if defined(CONFIG_SECURE_BOOT) - - /* diff --git a/rpi-Drain-RX-queue-on-setbrg.patch b/rpi-Drain-RX-queue-on-setbrg.patch new file mode 100644 index 0000000..afeee95 --- /dev/null +++ b/rpi-Drain-RX-queue-on-setbrg.patch @@ -0,0 +1,64 @@ +From patchwork Tue Mar 6 13:13:26 2018 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 8bit +Subject: [U-Boot, + 1/2] serial_bcm283x_mu: Flush RX queue after setting baud rate +X-Patchwork-Submitter: Alexander Graf +X-Patchwork-Id: 882056 +Message-Id: <20180306131327.61174-2-agraf@suse.de> +To: u-boot@lists.denx.de +Cc: Tom Rini +Date: Tue, 6 Mar 2018 14:13:26 +0100 +From: Alexander Graf +List-Id: U-Boot discussion + +After the UART was initialized, we may still have bogus data in the +RX queue if it was enabled with incorrect pin muxing before. + +So let's flush the RX queue whenever we initialize baud rates. + +This fixes a regression with the dynamic pinmuxing code when enable_uart=1 +is not set in config.txt. + +Fixes: caf2233b28 ("bcm283x: Add pinctrl driver") +Reported-by: Göran Lundberg +Reported-by: Peter Robinson +Signed-off-by: Alexander Graf +--- + drivers/serial/serial_bcm283x_mu.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/drivers/serial/serial_bcm283x_mu.c b/drivers/serial/serial_bcm283x_mu.c +index 40029fadbc..d87b44e902 100644 +--- a/drivers/serial/serial_bcm283x_mu.c ++++ b/drivers/serial/serial_bcm283x_mu.c +@@ -51,6 +51,8 @@ struct bcm283x_mu_priv { + struct bcm283x_mu_regs *regs; + }; + ++static int bcm283x_mu_serial_getc(struct udevice *dev); ++ + static int bcm283x_mu_serial_setbrg(struct udevice *dev, int baudrate) + { + struct bcm283x_mu_serial_platdata *plat = dev_get_platdata(dev); +@@ -59,13 +61,17 @@ static int bcm283x_mu_serial_setbrg(struct udevice *dev, int baudrate) + u32 divider; + + if (plat->skip_init) +- return 0; ++ goto out; + + divider = plat->clock / (baudrate * 8); + + writel(BCM283X_MU_LCR_DATA_SIZE_8, ®s->lcr); + writel(divider - 1, ®s->baud); + ++out: ++ /* Flush the RX queue - all data in there is bogus */ ++ while (bcm283x_mu_serial_getc(dev) != -EAGAIN) ; ++ + return 0; + } + + diff --git a/uboot-tools.spec b/uboot-tools.spec index d393b54..a3aa9ee 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -21,19 +21,20 @@ Patch1: uefi-use-Fedora-specific-path-name.patch Patch2: uefi-distro-load-FDT-from-any-partition-on-boot-device.patch Patch3: usb-kbd-fixes.patch Patch4: Add-fix-for-Pine64-gigabit-throughput-issues.patch -Patch5: imx-spl-Partially-revert-spl-eMMC-SD-Provide.patch +Patch5: rpi-Drain-RX-queue-on-setbrg.patch Patch6: rk33xx-make_fit_atf-fix.patch Patch7: rk33xx-enable-make-itb.patch Patch8: mx6cuboxi-add-support-for-detecting-Revision-1.5-SoM.patch # Board fixes and enablement Patch10: dragonboard-fixes.patch -# Patch11: mvebu-enable-generic-distro-boot-config.patch +Patch11: BeagleBoard.org-PocketBeagle.patch +# Patch19: mvebu-enable-generic-distro-boot-config.patch BuildRequires: bc BuildRequires: dtc -BuildRequires: gcc -BuildRequires: git +BuildRequires: gcc make +BuildRequires: git-core BuildRequires: openssl-devel BuildRequires: python2-devel BuildRequires: python2-setuptools @@ -287,8 +288,11 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog -* Tue Mar 6 2018 Peter Robinson 2018.03-0.9.rc4 +* Wed Mar 7 2018 Peter Robinson 2018.03-0.9.rc4 - 2018.03 RC4 +- Fixes for Raspberry Pi 3 boot +- Minor kernel install fixes +- Enable am335x_evm_usbspl for Beagle Pocket - DragonBoard patch rebase * Sun Mar 4 2018 Peter Robinson 2018.03-0.8.rc3