diff --git a/dwc2-USB-controller-hangs-with-lan78xx.patch b/dwc2-USB-controller-hangs-with-lan78xx.patch new file mode 100644 index 0000000..ea7e71c --- /dev/null +++ b/dwc2-USB-controller-hangs-with-lan78xx.patch @@ -0,0 +1,45 @@ +From patchwork Mon Jun 18 18:56:06 2018 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Subject: [U-Boot,1/1] dwc2 USB controller hangs with lan78xx +X-Patchwork-Submitter: Andrew Thomas +X-Patchwork-Id: 931158 +Message-Id: <1529348166-130059-2-git-send-email-andrew.thomas@oracle.com> +To: u-boot@lists.denx.de +Cc: Andrew Thomas +Date: Mon, 18 Jun 2018 11:56:06 -0700 +From: Andrew Thomas +List-Id: U-Boot discussion + +This bug is the combination of dwc2 USB controller and lan78xx +USB ethernet controller, which is the combination in use on +the Raspberry Pi Model 3 B+. + +When the host attempts to receive a packet, but a packet has not +arrived, the lan78xx controller responds by setting BIR +(Bulk-In Empty Response) to NAK. Unfortunately, this hangs +the USB controller and requires the USB controller to +be reset. + +The fix proposed is to have the lan78xx controller respond +by setting BIR to ZLP. + +Signed-off-by: Andrew Thomas +--- + drivers/usb/eth/lan78xx.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/drivers/usb/eth/lan78xx.c b/drivers/usb/eth/lan78xx.c +index c5ff379..e8ee665 100644 +--- a/drivers/usb/eth/lan78xx.c ++++ b/drivers/usb/eth/lan78xx.c +@@ -296,7 +296,7 @@ static int lan78xx_basic_reset(struct usb_device *udev, + ret = lan7x_read_reg(udev, LAN78XX_USB_CFG0, &val); + if (ret) + return ret; +- val |= LAN78XX_USB_CFG0_BIR; ++ val &= ~LAN78XX_USB_CFG0_BIR; + return lan7x_write_reg(udev, LAN78XX_USB_CFG0, val); + } + diff --git a/sunxi-A64-H5-devices-enable-usb-keyboard-support.patch b/sunxi-A64-H5-devices-enable-usb-keyboard-support.patch deleted file mode 100644 index 3acfa9b..0000000 --- a/sunxi-A64-H5-devices-enable-usb-keyboard-support.patch +++ /dev/null @@ -1,122 +0,0 @@ -From b2735176dd5378e4279449100673c83b0675e443 Mon Sep 17 00:00:00 2001 -From: Peter Robinson -Date: Sun, 15 Apr 2018 13:20:05 +0100 -Subject: [PATCH 3/3] sunxi: A64/H5 devices: enable usb keyboard support - -Signed-off-by: Peter Robinson ---- - configs/a64-olinuxino_defconfig | 2 ++ - configs/bananapi_m64_defconfig | 2 ++ - configs/nanopi_a64_defconfig | 2 ++ - configs/nanopi_neo2_defconfig | 2 ++ - configs/nanopi_neo_plus2_defconfig | 2 ++ - configs/orangepi_pc2_defconfig | 2 ++ - configs/orangepi_win_defconfig | 2 ++ - configs/orangepi_zero_plus2_defconfig | 2 ++ - configs/pine64_plus_defconfig | 2 ++ - configs/sopine_baseboard_defconfig | 2 ++ - 10 files changed, 20 insertions(+) - -diff --git a/configs/a64-olinuxino_defconfig b/configs/a64-olinuxino_defconfig -index cabbba7484..0df218a216 100644 ---- a/configs/a64-olinuxino_defconfig -+++ b/configs/a64-olinuxino_defconfig -@@ -14,3 +14,5 @@ CONFIG_SPL=y - CONFIG_SUN8I_EMAC=y - CONFIG_USB_EHCI_HCD=y - CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y -+CONFIG_DM_KEYBOARD=y -+CONFIG_USB_KEYBOARD=y -diff --git a/configs/bananapi_m64_defconfig b/configs/bananapi_m64_defconfig -index 8679ff5bf4..169c423b6f 100644 ---- a/configs/bananapi_m64_defconfig -+++ b/configs/bananapi_m64_defconfig -@@ -15,3 +15,5 @@ CONFIG_SPL=y - CONFIG_SUN8I_EMAC=y - CONFIG_USB_EHCI_HCD=y - CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y -+CONFIG_DM_KEYBOARD=y -+CONFIG_USB_KEYBOARD=y -diff --git a/configs/nanopi_a64_defconfig b/configs/nanopi_a64_defconfig -index 76a86594f2..58a5bc60dd 100644 ---- a/configs/nanopi_a64_defconfig -+++ b/configs/nanopi_a64_defconfig -@@ -13,3 +13,5 @@ CONFIG_SPL=y - CONFIG_SUN8I_EMAC=y - CONFIG_USB_EHCI_HCD=y - CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y -+CONFIG_DM_KEYBOARD=y -+CONFIG_USB_KEYBOARD=y -diff --git a/configs/nanopi_neo2_defconfig b/configs/nanopi_neo2_defconfig -index 0d6926e9ab..af37f4bee9 100644 ---- a/configs/nanopi_neo2_defconfig -+++ b/configs/nanopi_neo2_defconfig -@@ -14,3 +14,5 @@ CONFIG_SPL=y - CONFIG_SUN8I_EMAC=y - CONFIG_USB_EHCI_HCD=y - CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y -+CONFIG_DM_KEYBOARD=y -+CONFIG_USB_KEYBOARD=y -diff --git a/configs/nanopi_neo_plus2_defconfig b/configs/nanopi_neo_plus2_defconfig -index 975321825c..3e891ab5e8 100644 ---- a/configs/nanopi_neo_plus2_defconfig -+++ b/configs/nanopi_neo_plus2_defconfig -@@ -15,3 +15,5 @@ CONFIG_SPL=y - # CONFIG_SPL_EFI_PARTITION is not set - CONFIG_SUN8I_EMAC=y - CONFIG_USB_EHCI_HCD=y -+CONFIG_DM_KEYBOARD=y -+CONFIG_USB_KEYBOARD=y -diff --git a/configs/orangepi_pc2_defconfig b/configs/orangepi_pc2_defconfig -index a6777ac4d7..13406ae1d1 100644 ---- a/configs/orangepi_pc2_defconfig -+++ b/configs/orangepi_pc2_defconfig -@@ -16,3 +16,5 @@ CONFIG_SPL_SPI_SUNXI=y - CONFIG_SUN8I_EMAC=y - CONFIG_USB_EHCI_HCD=y - CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y -+CONFIG_DM_KEYBOARD=y -+CONFIG_USB_KEYBOARD=y -diff --git a/configs/orangepi_win_defconfig b/configs/orangepi_win_defconfig -index f21ea328ae..3d5422e63c 100644 ---- a/configs/orangepi_win_defconfig -+++ b/configs/orangepi_win_defconfig -@@ -14,3 +14,5 @@ CONFIG_SPL_SPI_SUNXI=y - CONFIG_SUN8I_EMAC=y - CONFIG_USB_EHCI_HCD=y - CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y -+CONFIG_DM_KEYBOARD=y -+CONFIG_USB_KEYBOARD=y -diff --git a/configs/orangepi_zero_plus2_defconfig b/configs/orangepi_zero_plus2_defconfig -index f8b626e70b..6a4b1992a0 100644 ---- a/configs/orangepi_zero_plus2_defconfig -+++ b/configs/orangepi_zero_plus2_defconfig -@@ -16,3 +16,5 @@ CONFIG_SPL=y - CONFIG_SUN8I_EMAC=y - CONFIG_USB_EHCI_HCD=y - CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y -+CONFIG_DM_KEYBOARD=y -+CONFIG_USB_KEYBOARD=y -diff --git a/configs/pine64_plus_defconfig b/configs/pine64_plus_defconfig -index 520bd21f44..3564816139 100644 ---- a/configs/pine64_plus_defconfig -+++ b/configs/pine64_plus_defconfig -@@ -16,3 +16,5 @@ CONFIG_USB_EHCI_HCD=y - CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y - CONFIG_PHY_REALTEK=y - CONFIG_RTL8211E_PINE64_GIGABIT_FIX=y -+CONFIG_DM_KEYBOARD=y -+CONFIG_USB_KEYBOARD=y -diff --git a/configs/sopine_baseboard_defconfig b/configs/sopine_baseboard_defconfig -index 8ca43a6eac..fb623a079f 100644 ---- a/configs/sopine_baseboard_defconfig -+++ b/configs/sopine_baseboard_defconfig -@@ -20,3 +20,5 @@ CONFIG_SPL_SPI_SUNXI=y - CONFIG_SUN8I_EMAC=y - CONFIG_USB_EHCI_HCD=y - CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y -+CONFIG_DM_KEYBOARD=y -+CONFIG_USB_KEYBOARD=y --- -2.17.0 - diff --git a/sunxi-improve-throughput-in-the-sunxi_mmc-driver.patch b/sunxi-improve-throughput-in-the-sunxi_mmc-driver.patch deleted file mode 100644 index d6c707b..0000000 --- a/sunxi-improve-throughput-in-the-sunxi_mmc-driver.patch +++ /dev/null @@ -1,128 +0,0 @@ -From patchwork Wed Mar 21 11:18:58 2018 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 8bit -Subject: [U-Boot] sunxi: improve throughput in the sunxi_mmc driver -X-Patchwork-Submitter: Maxime Ripard -X-Patchwork-Id: 888703 -X-Patchwork-Delegate: jagannadh.teki@gmail.com -Message-Id: <20180321111858.16576-1-maxime.ripard@bootlin.com> -To: Jaehoon Chung -Cc: Mylene Josserand , - Maxime Ripard , u-boot@lists.denx.de, - Jagan Teki -Date: Wed, 21 Mar 2018 12:18:58 +0100 -From: Maxime Ripard -List-Id: U-Boot discussion - -From: Philipp Tomsich - -Throughput tests have shown the sunxi_mmc driver to take over 10s to -read 10MB from a fast eMMC device due to excessive delays in polling -loops. - -This commit restructures the main polling loops to use get_timer(...) -to determine whether a (millisecond) timeout has expired. We choose -not to use the wait_bit function, as we don't need interruptability -with ctrl-c and have at least one case where two bits (one for an -error condition and another one for completion) need to be read and -using wait_bit would have not added to the clarity. - -The observed speedup in testing on a A31 is greater than 10x (e.g. a -10MB write decreases from 9.302s to 0.884s). - -Signed-off-by: Philipp Tomsich -Signed-off-by: Maxime Ripard -Tested-by: Mylène Josserand ---- - drivers/mmc/sunxi_mmc.c | 27 ++++++++++++++++----------- - 1 file changed, 16 insertions(+), 11 deletions(-) - -diff --git a/drivers/mmc/sunxi_mmc.c b/drivers/mmc/sunxi_mmc.c -index 4edb4be46c81..d36c1689e7b1 100644 ---- a/drivers/mmc/sunxi_mmc.c -+++ b/drivers/mmc/sunxi_mmc.c -@@ -187,15 +187,16 @@ static int mmc_update_clk(struct sunxi_mmc_priv *priv) - { - unsigned int cmd; - unsigned timeout_msecs = 2000; -+ unsigned long start = get_timer(0); - - cmd = SUNXI_MMC_CMD_START | - SUNXI_MMC_CMD_UPCLK_ONLY | - SUNXI_MMC_CMD_WAIT_PRE_OVER; -+ - writel(cmd, &priv->reg->cmd); - while (readl(&priv->reg->cmd) & SUNXI_MMC_CMD_START) { -- if (!timeout_msecs--) -+ if (get_timer(start) > timeout_msecs) - return -1; -- udelay(1000); - } - - /* clock update sets various irq status bits, clear these */ -@@ -276,18 +277,21 @@ static int mmc_trans_data_by_cpu(struct sunxi_mmc_priv *priv, struct mmc *mmc, - unsigned i; - unsigned *buff = (unsigned int *)(reading ? data->dest : data->src); - unsigned byte_cnt = data->blocksize * data->blocks; -- unsigned timeout_usecs = (byte_cnt >> 8) * 1000; -- if (timeout_usecs < 2000000) -- timeout_usecs = 2000000; -+ unsigned timeout_msecs = byte_cnt >> 8; -+ unsigned long start; -+ -+ if (timeout_msecs < 2000) -+ timeout_msecs = 2000; - - /* Always read / write data through the CPU */ - setbits_le32(&priv->reg->gctrl, SUNXI_MMC_GCTRL_ACCESS_BY_AHB); - -+ start = get_timer(0); -+ - for (i = 0; i < (byte_cnt >> 2); i++) { - while (readl(&priv->reg->status) & status_bit) { -- if (!timeout_usecs--) -+ if (get_timer(start) > timeout_msecs) - return -1; -- udelay(1); - } - - if (reading) -@@ -303,16 +307,16 @@ static int mmc_rint_wait(struct sunxi_mmc_priv *priv, struct mmc *mmc, - uint timeout_msecs, uint done_bit, const char *what) - { - unsigned int status; -+ unsigned long start = get_timer(0); - - do { - status = readl(&priv->reg->rint); -- if (!timeout_msecs-- || -+ if ((get_timer(start) > timeout_msecs) || - (status & SUNXI_MMC_RINT_INTERRUPT_ERROR_BIT)) { - debug("%s timeout %x\n", what, - status & SUNXI_MMC_RINT_INTERRUPT_ERROR_BIT); - return -ETIMEDOUT; - } -- udelay(1000); - } while (!(status & done_bit)); - - return 0; -@@ -404,15 +408,16 @@ static int sunxi_mmc_send_cmd_common(struct sunxi_mmc_priv *priv, - } - - if (cmd->resp_type & MMC_RSP_BUSY) { -+ unsigned long start = get_timer(0); - timeout_msecs = 2000; -+ - do { - status = readl(&priv->reg->status); -- if (!timeout_msecs--) { -+ if (get_timer(start) > timeout_msecs) { - debug("busy timeout\n"); - error = -ETIMEDOUT; - goto out; - } -- udelay(1000); - } while (status & SUNXI_MMC_STATUS_CARD_DATA_BUSY); - } - diff --git a/uboot-tools.spec b/uboot-tools.spec index 7bd6b94..1a18da2 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -24,6 +24,7 @@ Patch4: rk33xx-make_fit_atf-fix.patch Patch5: rk33xx-enable-make-itb.patch Patch6: net-Only-access-network-devices-after-init.patch Patch7: uefi-fixes.patch +Patch8: uefi-efi_loader-Fix-GOP-32bpp-exposure.patch # Board fixes and enablement Patch10: dragonboard-fixes.patch @@ -31,15 +32,12 @@ Patch11: BeagleBoard.org-PocketBeagle.patch Patch12: mx6cuboxi-add-support-for-detecting-Revision-1.5-SoM.patch Patch13: rpi-3-plus-support.patch Patch14: rpi-Adjust-fdt_addr_r-to-a-sane-address.patch +Patch15: dwc2-USB-controller-hangs-with-lan78xx.patch Patch16: mmc-use-core-clock-frequency-in-bcm2835-sdhost.patch -Patch19: mmc-mv_sdhci-zero-out-sdhci_host-structure.patch -Patch20: mvneta-support-setting-hardware-address.patch -Patch21: sunxi-improve-throughput-in-the-sunxi_mmc-driver.patch -Patch22: sunxi-Add-fix-for-Pine64-gigabit-throughput-issues.patch -Patch23: sunxi-A64-H5-devices-enable-usb-keyboard-support.patch -Patch24: sunxi-fix-eMMC-stability-issues-on-A64.patch - -# Patch99: mvebu-enable-generic-distro-boot-config.patch +Patch17: mmc-mv_sdhci-zero-out-sdhci_host-structure.patch +Patch18: mvneta-support-setting-hardware-address.patch +Patch19: sunxi-Add-fix-for-Pine64-gigabit-throughput-issues.patch +Patch20: sunxi-fix-eMMC-stability-issues-on-A64.patch BuildRequires: bc BuildRequires: dtc @@ -298,8 +296,10 @@ cp -p board/warp7/README builds/docs/README.warp7 %endif %changelog -* Mon Apr 30 2018 Peter Robinson 2018.03-6 +* Tue Jun 19 2018 Peter Robinson 2018.03-6 - Patch to improve MMC on AllWinner A64 SoCs +- Patch to fix RPi3B+ network errors (rhbz 1573261) +- Fix incorrect colours in uEFI console in Linux * Sun Apr 15 2018 Peter Robinson 2018.03-5 - Raspberry Pi fixes diff --git a/uefi-efi_loader-Fix-GOP-32bpp-exposure.patch b/uefi-efi_loader-Fix-GOP-32bpp-exposure.patch new file mode 100644 index 0000000..35e7195 --- /dev/null +++ b/uefi-efi_loader-Fix-GOP-32bpp-exposure.patch @@ -0,0 +1,37 @@ +From patchwork Tue Jun 19 11:47:01 2018 +Content-Type: text/plain; charset="utf-8" +MIME-Version: 1.0 +Content-Transfer-Encoding: 7bit +Subject: [U-Boot] efi_loader: Fix GOP 32bpp exposure +X-Patchwork-Submitter: Alexander Graf +X-Patchwork-Id: 931555 +Message-Id: <20180619114701.87820-1-agraf@suse.de> +To: u-boot@lists.denx.de +Cc: Heinrich Schuchardt , Fabian Vogt +Date: Tue, 19 Jun 2018 13:47:01 +0200 +From: Alexander Graf +List-Id: U-Boot discussion + +We store pixels as BGRA in memory, as can be seen from struct efi_gop_pixel. +So we need to expose the same format to UEFI payloads to actually have them +use the correct colors. + +Reported-by: Fabian Vogt +Signed-off-by: Alexander Graf +--- + lib/efi_loader/efi_gop.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/efi_loader/efi_gop.c b/lib/efi_loader/efi_gop.c +index 1afe8418e1..3a36bbcbfa 100644 +--- a/lib/efi_loader/efi_gop.c ++++ b/lib/efi_loader/efi_gop.c +@@ -472,7 +472,7 @@ efi_status_t efi_gop_register(void) + gopobj->info.version = 0; + gopobj->info.width = col; + gopobj->info.height = row; +- gopobj->info.pixel_format = EFI_GOT_RGBA8; ++ gopobj->info.pixel_format = EFI_GOT_BGRA8; + gopobj->info.pixels_per_scanline = col; + + gopobj->bpix = bpix;