Fixes for Raspberry Pi 3 boot, Minor kernel install fixes, Enable am335x_evm_usbspl for Beagle Pocket

This commit is contained in:
Peter Robinson 2018-03-07 14:30:51 +00:00
parent 64787aacdc
commit 6deb24c1da
7 changed files with 409 additions and 144 deletions

View File

@ -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

View File

@ -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 <jkridner@gmail.com>
X-Patchwork-Id: 882566
Message-Id: <20180307104044.4739-2-jdk@ti.com>
To: u-boot@lists.denx.de
Cc: Tom Rini <trini@konsulko.com>, Jason Kridner <jdk@ti.com>
Date: Wed, 7 Mar 2018 05:40:41 -0500
From: Jason Kridner <jkridner@gmail.com>
List-Id: U-Boot discussion <u-boot.lists.denx.de>
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 <jdk@ti.com>
Cc: Tom Rini <trini@konsulko.com>
---
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 <jkridner@gmail.com>
X-Patchwork-Id: 882567
Message-Id: <20180307104044.4739-3-jdk@ti.com>
To: u-boot@lists.denx.de
Cc: Tom Rini <trini@konsulko.com>, Jason Kridner <jdk@ti.com>
Date: Wed, 7 Mar 2018 05:40:42 -0500
From: Jason Kridner <jkridner@gmail.com>
List-Id: U-Boot discussion <u-boot.lists.denx.de>
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 <jdk@ti.com>
Cc: Robert Nelson <robertcnelson@gmail.com>
Cc: Tom Rini <trini@konsulko.com>
---
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 <jkridner@gmail.com>
X-Patchwork-Id: 882568
Message-Id: <20180307104044.4739-4-jdk@ti.com>
To: u-boot@lists.denx.de
Cc: Joe Hershberger <joe.hershberger@ni.com>,
Jason Kridner <jkridner@beagleboard.org>, Jason Kridner <jdk@ti.com>
Date: Wed, 7 Mar 2018 05:40:43 -0500
From: Jason Kridner <jkridner@gmail.com>
List-Id: U-Boot discussion <u-boot.lists.denx.de>
From: Jason Kridner <jkridner@beagleboard.org>
NETCONSOLE isn't compiled in with SPL, so the include file needs to recognize that.
Signed-off-by: Jason Kridner <jdk@ti.com>
Cc: Joe Hershberger <joe.hershberger@ni.com>
---
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 <jkridner@gmail.com>
X-Patchwork-Id: 882569
Message-Id: <20180307104044.4739-5-jdk@ti.com>
To: u-boot@lists.denx.de
Cc: Tom Rini <trini@konsulko.com>, Jason Kridner <jdk@ti.com>
Date: Wed, 7 Mar 2018 05:40:44 -0500
From: Jason Kridner <jkridner@gmail.com>
List-Id: U-Boot discussion <u-boot.lists.denx.de>
Enable NETCONSOLE by default. Still requires changes to the boot
environment to enable on the platform.
Signed-of-by: Jason Kridner <jdk@ti.com>
Cc: Tom Rini <trini@konsulko.com>
---
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

View File

@ -8,6 +8,7 @@ A20-OLinuXino-Lime2
A20-OLinuXino_MICRO
am335x_boneblack
am335x_evm
am335x_evm_usbspl
am57xx_evm
Ampe_A76
arndale

View File

@ -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 <pbrobinson@gmail.com>
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 <pbrobinson@gmail.com>
---
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

View File

@ -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 <fabio.estevam@nxp.com>
X-Patchwork-Id: 874073
Message-Id: <1518705700-9402-1-git-send-email-fabio.estevam@nxp.com>
To: <sbabic@denx.de>
Cc: trini@konsulko.com, u-boot@lists.denx.de, jsg@jsg.id.au,
Fabio Estevam <fabio.estevam@nxp.com>
Date: Thu, 15 Feb 2018 12:41:40 -0200
From: Fabio Estevam <fabio.estevam@nxp.com>
List-Id: U-Boot discussion <u-boot.lists.denx.de>
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 <jsg@jsg.id.au>
Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com>
---
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)
/*

View File

@ -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 <agraf@suse.de>
X-Patchwork-Id: 882056
Message-Id: <20180306131327.61174-2-agraf@suse.de>
To: u-boot@lists.denx.de
Cc: Tom Rini <trini@konsulko.com>
Date: Tue, 6 Mar 2018 14:13:26 +0100
From: Alexander Graf <agraf@suse.de>
List-Id: U-Boot discussion <u-boot.lists.denx.de>
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 <goran@lundberg.email>
Reported-by: Peter Robinson <pbrobinson@gmail.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
---
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, &regs->lcr);
writel(divider - 1, &regs->baud);
+out:
+ /* Flush the RX queue - all data in there is bogus */
+ while (bcm283x_mu_serial_getc(dev) != -EAGAIN) ;
+
return 0;
}

View File

@ -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 <pbrobinson@fedoraproject.org> 2018.03-0.9.rc4
* Wed Mar 7 2018 Peter Robinson <pbrobinson@fedoraproject.org> 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 <pbrobinson@fedoraproject.org> 2018.03-0.8.rc3