Bump U-Boot to v2023.01-rc1 (#2234)

* Bump Raspberry Pi/Yellow to U-Boot 2023.01-rc1

* Add necessary configurations for NVMe via PCIe support
This commit is contained in:
Stefan Agner 2022-11-17 12:31:12 +01:00 committed by GitHub
parent c525ee9480
commit 7e8166b045
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 135 additions and 243 deletions

View File

@ -1,5 +1,5 @@
From 24b77460dbfa2497ceb7a1611bf28b6eb88a1d74 Mon Sep 17 00:00:00 2001 From 135d886b4e5077c8fa96a5449a70d81ae9c1c3d0 Mon Sep 17 00:00:00 2001
Message-Id: <24b77460dbfa2497ceb7a1611bf28b6eb88a1d74.1654086219.git.stefan@agner.ch> Message-Id: <135d886b4e5077c8fa96a5449a70d81ae9c1c3d0.1668448794.git.stefan@agner.ch>
From: Pascal Vizeli <pvizeli@syshack.ch> From: Pascal Vizeli <pvizeli@syshack.ch>
Date: Tue, 10 Dec 2019 09:48:46 +0000 Date: Tue, 10 Dec 2019 09:48:46 +0000
Subject: [PATCH] rpi: Use CONFIG_OF_BOARD instead of CONFIG_EMBED Subject: [PATCH] rpi: Use CONFIG_OF_BOARD instead of CONFIG_EMBED
@ -14,10 +14,10 @@ Signed-off-by: Pascal Vizeli <pvizeli@syshack.ch>
5 files changed, 5 insertions(+), 5 deletions(-) 5 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/configs/rpi_0_w_defconfig b/configs/rpi_0_w_defconfig diff --git a/configs/rpi_0_w_defconfig b/configs/rpi_0_w_defconfig
index 6d76d12910..ebc2be002f 100644 index baa8c37810..f20aa164e5 100644
--- a/configs/rpi_0_w_defconfig --- a/configs/rpi_0_w_defconfig
+++ b/configs/rpi_0_w_defconfig +++ b/configs/rpi_0_w_defconfig
@@ -18,7 +18,7 @@ CONFIG_CMD_GPIO=y @@ -23,7 +23,7 @@ CONFIG_CMD_GPIO=y
CONFIG_CMD_MMC=y CONFIG_CMD_MMC=y
CONFIG_CMD_USB=y CONFIG_CMD_USB=y
CONFIG_CMD_FS_UUID=y CONFIG_CMD_FS_UUID=y
@ -27,10 +27,10 @@ index 6d76d12910..ebc2be002f 100644
CONFIG_SYS_RELOC_GD_ENV_ADDR=y CONFIG_SYS_RELOC_GD_ENV_ADDR=y
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
diff --git a/configs/rpi_2_defconfig b/configs/rpi_2_defconfig diff --git a/configs/rpi_2_defconfig b/configs/rpi_2_defconfig
index 1931607132..164562cd57 100644 index baae6d4871..60987ad91a 100644
--- a/configs/rpi_2_defconfig --- a/configs/rpi_2_defconfig
+++ b/configs/rpi_2_defconfig +++ b/configs/rpi_2_defconfig
@@ -19,7 +19,7 @@ CONFIG_CMD_GPIO=y @@ -24,7 +24,7 @@ CONFIG_CMD_GPIO=y
CONFIG_CMD_MMC=y CONFIG_CMD_MMC=y
CONFIG_CMD_USB=y CONFIG_CMD_USB=y
CONFIG_CMD_FS_UUID=y CONFIG_CMD_FS_UUID=y
@ -40,10 +40,10 @@ index 1931607132..164562cd57 100644
CONFIG_SYS_RELOC_GD_ENV_ADDR=y CONFIG_SYS_RELOC_GD_ENV_ADDR=y
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
diff --git a/configs/rpi_3_32b_defconfig b/configs/rpi_3_32b_defconfig diff --git a/configs/rpi_3_32b_defconfig b/configs/rpi_3_32b_defconfig
index 060fd36da5..78448bbbfe 100644 index f51f3de596..e6de8669d0 100644
--- a/configs/rpi_3_32b_defconfig --- a/configs/rpi_3_32b_defconfig
+++ b/configs/rpi_3_32b_defconfig +++ b/configs/rpi_3_32b_defconfig
@@ -20,7 +20,7 @@ CONFIG_CMD_GPIO=y @@ -23,7 +23,7 @@ CONFIG_CMD_GPIO=y
CONFIG_CMD_MMC=y CONFIG_CMD_MMC=y
CONFIG_CMD_USB=y CONFIG_CMD_USB=y
CONFIG_CMD_FS_UUID=y CONFIG_CMD_FS_UUID=y
@ -53,10 +53,10 @@ index 060fd36da5..78448bbbfe 100644
CONFIG_SYS_RELOC_GD_ENV_ADDR=y CONFIG_SYS_RELOC_GD_ENV_ADDR=y
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
diff --git a/configs/rpi_3_defconfig b/configs/rpi_3_defconfig diff --git a/configs/rpi_3_defconfig b/configs/rpi_3_defconfig
index 8016fe1d55..b49dd9af98 100644 index bc1a318db4..70f4f8ed70 100644
--- a/configs/rpi_3_defconfig --- a/configs/rpi_3_defconfig
+++ b/configs/rpi_3_defconfig +++ b/configs/rpi_3_defconfig
@@ -19,7 +19,7 @@ CONFIG_CMD_GPIO=y @@ -22,7 +22,7 @@ CONFIG_CMD_GPIO=y
CONFIG_CMD_MMC=y CONFIG_CMD_MMC=y
CONFIG_CMD_USB=y CONFIG_CMD_USB=y
CONFIG_CMD_FS_UUID=y CONFIG_CMD_FS_UUID=y
@ -66,10 +66,10 @@ index 8016fe1d55..b49dd9af98 100644
CONFIG_SYS_RELOC_GD_ENV_ADDR=y CONFIG_SYS_RELOC_GD_ENV_ADDR=y
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
diff --git a/configs/rpi_defconfig b/configs/rpi_defconfig diff --git a/configs/rpi_defconfig b/configs/rpi_defconfig
index 8acf04d0e4..5d5e700224 100644 index 1d356b4b2e..6f345c790b 100644
--- a/configs/rpi_defconfig --- a/configs/rpi_defconfig
+++ b/configs/rpi_defconfig +++ b/configs/rpi_defconfig
@@ -18,7 +18,7 @@ CONFIG_CMD_GPIO=y @@ -23,7 +23,7 @@ CONFIG_CMD_GPIO=y
CONFIG_CMD_MMC=y CONFIG_CMD_MMC=y
CONFIG_CMD_USB=y CONFIG_CMD_USB=y
CONFIG_CMD_FS_UUID=y CONFIG_CMD_FS_UUID=y
@ -79,5 +79,5 @@ index 8acf04d0e4..5d5e700224 100644
CONFIG_SYS_RELOC_GD_ENV_ADDR=y CONFIG_SYS_RELOC_GD_ENV_ADDR=y
CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
-- --
2.36.1 2.38.1

View File

@ -1,7 +1,7 @@
From ae45864457182fcaa67911e1e3d8db242dff3646 Mon Sep 17 00:00:00 2001 From 191b5f4e0408e40f35379fdaab6b37a7ad93e298 Mon Sep 17 00:00:00 2001
Message-Id: <ae45864457182fcaa67911e1e3d8db242dff3646.1654086219.git.stefan@agner.ch> Message-Id: <191b5f4e0408e40f35379fdaab6b37a7ad93e298.1668448794.git.stefan@agner.ch>
In-Reply-To: <24b77460dbfa2497ceb7a1611bf28b6eb88a1d74.1654086219.git.stefan@agner.ch> In-Reply-To: <135d886b4e5077c8fa96a5449a70d81ae9c1c3d0.1668448794.git.stefan@agner.ch>
References: <24b77460dbfa2497ceb7a1611bf28b6eb88a1d74.1654086219.git.stefan@agner.ch> References: <135d886b4e5077c8fa96a5449a70d81ae9c1c3d0.1668448794.git.stefan@agner.ch>
From: Stefan Agner <stefan@agner.ch> From: Stefan Agner <stefan@agner.ch>
Date: Tue, 29 Dec 2020 23:34:52 +0100 Date: Tue, 29 Dec 2020 23:34:52 +0100
Subject: [PATCH] rpi: add NVMe to boot order Subject: [PATCH] rpi: add NVMe to boot order
@ -15,10 +15,10 @@ Signed-off-by: Stefan Agner <stefan@agner.ch>
1 file changed, 7 insertions(+) 1 file changed, 7 insertions(+)
diff --git a/include/configs/rpi.h b/include/configs/rpi.h diff --git a/include/configs/rpi.h b/include/configs/rpi.h
index 4c5c1ac31f..e24c94c7d2 100644 index cd8fe8b518..7257659932 100644
--- a/include/configs/rpi.h --- a/include/configs/rpi.h
+++ b/include/configs/rpi.h +++ b/include/configs/rpi.h
@@ -143,6 +143,12 @@ @@ -131,6 +131,12 @@
#define BOOT_TARGET_MMC(func) #define BOOT_TARGET_MMC(func)
#endif #endif
@ -31,7 +31,7 @@ index 4c5c1ac31f..e24c94c7d2 100644
#if CONFIG_IS_ENABLED(CMD_USB) #if CONFIG_IS_ENABLED(CMD_USB)
#define BOOT_TARGET_USB(func) func(USB, usb, 0) #define BOOT_TARGET_USB(func) func(USB, usb, 0)
#else #else
@@ -163,6 +169,7 @@ @@ -151,6 +157,7 @@
#define BOOT_TARGET_DEVICES(func) \ #define BOOT_TARGET_DEVICES(func) \
BOOT_TARGET_MMC(func) \ BOOT_TARGET_MMC(func) \
@ -40,5 +40,5 @@ index 4c5c1ac31f..e24c94c7d2 100644
BOOT_TARGET_PXE(func) \ BOOT_TARGET_PXE(func) \
BOOT_TARGET_DHCP(func) BOOT_TARGET_DHCP(func)
-- --
2.36.1 2.38.1

View File

@ -1,87 +0,0 @@
From c942eb452c1c31fe6259178b6e9fea5456d7fb9c Mon Sep 17 00:00:00 2001
Message-Id: <c942eb452c1c31fe6259178b6e9fea5456d7fb9c.1654086219.git.stefan@agner.ch>
In-Reply-To: <24b77460dbfa2497ceb7a1611bf28b6eb88a1d74.1654086219.git.stefan@agner.ch>
References: <24b77460dbfa2497ceb7a1611bf28b6eb88a1d74.1654086219.git.stefan@agner.ch>
From: Stefan Agner <stefan@agner.ch>
Date: Mon, 27 Sep 2021 12:28:04 +0200
Subject: [PATCH] usb: xhci: reset endpoint on USB stall
There are devices which cause a USB stall when trying to read strings.
Specifically Arduino Mega R3 stalls when trying to read the product
string.
The stall currently remains unhandled, and subsequent retries submit new
transfers on a stopped endpoint which ultimately cause a crash in
abort_td():
WARN halted endpoint, queueing URB anyway.
XHCI control transfer timed out, aborting...
Unexpected XHCI event TRB, skipping... (3affe040 00000000 13000000 02008401)
BUG at drivers/usb/host/xhci-ring.c:505/abort_td()!
BUG!
resetting ...
Linux seems to be able to recover from the stall by issuing a
TRB_RESET_EP command.
Introduce reset_ep() which issues a TRB_RESET_EP followed by setting the
transfer ring dequeue pointer via TRB_SET_DEQ. This allows to properly
recover from a USB stall error and continue communicating with the USB
device.
Signed-off-by: Stefan Agner <stefan@agner.ch>
---
drivers/usb/host/xhci-ring.c | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)
diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
index 35bd5cd29e..430823cb9d 100644
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
@@ -481,6 +481,33 @@ union xhci_trb *xhci_wait_for_event(struct xhci_ctrl *ctrl, trb_type expected)
BUG();
}
+/*
+ * Issue reset endpoint command for an endpoint. This is required to recover
+ * a halted endpoint (e.g. due to a stall error).
+ */
+static void reset_ep(struct usb_device *udev, int ep_index)
+{
+ struct xhci_ctrl *ctrl = xhci_get_ctrl(udev);
+ struct xhci_ring *ring = ctrl->devs[udev->slot_id]->eps[ep_index].ring;
+ union xhci_trb *event;
+ u32 field;
+
+ printf("Resetting EP...\n");
+ xhci_queue_command(ctrl, NULL, udev->slot_id, ep_index, TRB_RESET_EP);
+ event = xhci_wait_for_event(ctrl, TRB_COMPLETION);
+ field = le32_to_cpu(event->trans_event.flags);
+ BUG_ON(TRB_TO_SLOT_ID(field) != udev->slot_id);
+ xhci_acknowledge_event(ctrl);
+
+ xhci_queue_command(ctrl, (void *)((uintptr_t)ring->enqueue |
+ ring->cycle_state), udev->slot_id, ep_index, TRB_SET_DEQ);
+ event = xhci_wait_for_event(ctrl, TRB_COMPLETION);
+ BUG_ON(TRB_TO_SLOT_ID(le32_to_cpu(event->event_cmd.flags))
+ != udev->slot_id || GET_COMP_CODE(le32_to_cpu(
+ event->event_cmd.status)) != COMP_SUCCESS);
+ xhci_acknowledge_event(ctrl);
+}
+
/*
* Stops transfer processing for an endpoint and throws away all unprocessed
* TRBs by setting the xHC's dequeue pointer to our enqueue pointer. The next
@@ -928,6 +955,10 @@ int xhci_ctrl_tx(struct usb_device *udev, unsigned long pipe,
record_transfer_result(udev, event, length);
xhci_acknowledge_event(ctrl);
+ if (udev->status == USB_ST_STALLED) {
+ reset_ep(udev, ep_index);
+ return -EPIPE;
+ }
/* Invalidate buffer to make it available to usb-core */
if (length > 0)
--
2.36.1

View File

@ -1,7 +1,7 @@
From 3a13ff4eb509e8e80a52ae45c9a5573e745803c3 Mon Sep 17 00:00:00 2001 From 644bd3743aa8771ef7ecb7b7239308d6da2a5b35 Mon Sep 17 00:00:00 2001
Message-Id: <3a13ff4eb509e8e80a52ae45c9a5573e745803c3.1654086219.git.stefan@agner.ch> Message-Id: <644bd3743aa8771ef7ecb7b7239308d6da2a5b35.1668448794.git.stefan@agner.ch>
In-Reply-To: <24b77460dbfa2497ceb7a1611bf28b6eb88a1d74.1654086219.git.stefan@agner.ch> In-Reply-To: <135d886b4e5077c8fa96a5449a70d81ae9c1c3d0.1668448794.git.stefan@agner.ch>
References: <24b77460dbfa2497ceb7a1611bf28b6eb88a1d74.1654086219.git.stefan@agner.ch> References: <135d886b4e5077c8fa96a5449a70d81ae9c1c3d0.1668448794.git.stefan@agner.ch>
From: Stefan Agner <stefan@agner.ch> From: Stefan Agner <stefan@agner.ch>
Date: Thu, 23 Sep 2021 23:43:31 +0200 Date: Thu, 23 Sep 2021 23:43:31 +0200
Subject: [PATCH] Revert "nvme: Correct the prps per page calculation method" Subject: [PATCH] Revert "nvme: Correct the prps per page calculation method"
@ -26,10 +26,10 @@ Cc: Wesley Sheng <wesleyshenggit@sina.com>
1 file changed, 1 insertion(+), 1 deletion(-) 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/nvme/nvme.c b/drivers/nvme/nvme.c diff --git a/drivers/nvme/nvme.c b/drivers/nvme/nvme.c
index 3c529a2fce..3bda491e12 100644 index 6d0d3f3ca2..73db80a294 100644
--- a/drivers/nvme/nvme.c --- a/drivers/nvme/nvme.c
+++ b/drivers/nvme/nvme.c +++ b/drivers/nvme/nvme.c
@@ -81,7 +81,7 @@ static int nvme_setup_prps(struct nvme_dev *dev, u64 *prp2, @@ -52,7 +52,7 @@ static int nvme_setup_prps(struct nvme_dev *dev, u64 *prp2,
u64 *prp_pool; u64 *prp_pool;
int length = total_len; int length = total_len;
int i, nprps; int i, nprps;
@ -39,5 +39,5 @@ index 3c529a2fce..3bda491e12 100644
length -= (page_size - offset); length -= (page_size - offset);
-- --
2.36.1 2.38.1

View File

@ -1,7 +1,7 @@
From b00922ee48987ef91f0ca2aa3a66ad22c6c83d57 Mon Sep 17 00:00:00 2001 From de29ca70117fb2bfafa8b5699b34e9e94560b785 Mon Sep 17 00:00:00 2001
Message-Id: <b00922ee48987ef91f0ca2aa3a66ad22c6c83d57.1654086219.git.stefan@agner.ch> Message-Id: <de29ca70117fb2bfafa8b5699b34e9e94560b785.1668448794.git.stefan@agner.ch>
In-Reply-To: <24b77460dbfa2497ceb7a1611bf28b6eb88a1d74.1654086219.git.stefan@agner.ch> In-Reply-To: <135d886b4e5077c8fa96a5449a70d81ae9c1c3d0.1668448794.git.stefan@agner.ch>
References: <24b77460dbfa2497ceb7a1611bf28b6eb88a1d74.1654086219.git.stefan@agner.ch> References: <135d886b4e5077c8fa96a5449a70d81ae9c1c3d0.1668448794.git.stefan@agner.ch>
From: Stefan Agner <stefan@agner.ch> From: Stefan Agner <stefan@agner.ch>
Date: Thu, 7 Oct 2021 12:02:39 +0200 Date: Thu, 7 Oct 2021 12:02:39 +0200
Subject: [PATCH] usb: xhci-brcm: Make driver compatible with downstream device Subject: [PATCH] usb: xhci-brcm: Make driver compatible with downstream device
@ -29,5 +29,5 @@ index fe17924028..0c6938187b 100644
}; };
-- --
2.36.1 2.38.1

View File

@ -1,7 +1,7 @@
From 4ef63d77803aeb322fe72eb5445897eba52c68ff Mon Sep 17 00:00:00 2001 From ab2790f8ff78790ea8a9cb0b05cafc55648ebbc4 Mon Sep 17 00:00:00 2001
Message-Id: <4ef63d77803aeb322fe72eb5445897eba52c68ff.1654086219.git.stefan@agner.ch> Message-Id: <ab2790f8ff78790ea8a9cb0b05cafc55648ebbc4.1668448794.git.stefan@agner.ch>
In-Reply-To: <24b77460dbfa2497ceb7a1611bf28b6eb88a1d74.1654086219.git.stefan@agner.ch> In-Reply-To: <135d886b4e5077c8fa96a5449a70d81ae9c1c3d0.1668448794.git.stefan@agner.ch>
References: <24b77460dbfa2497ceb7a1611bf28b6eb88a1d74.1654086219.git.stefan@agner.ch> References: <135d886b4e5077c8fa96a5449a70d81ae9c1c3d0.1668448794.git.stefan@agner.ch>
From: Stefan Agner <stefan@agner.ch> From: Stefan Agner <stefan@agner.ch>
Date: Thu, 23 Sep 2021 23:52:44 +0200 Date: Thu, 23 Sep 2021 23:52:44 +0200
Subject: [PATCH] nvme: improve readability of nvme_setup_prps() Subject: [PATCH] nvme: improve readability of nvme_setup_prps()
@ -11,14 +11,14 @@ appropriate and adding variables with discriptive name.
Signed-off-by: Stefan Agner <stefan@agner.ch> Signed-off-by: Stefan Agner <stefan@agner.ch>
--- ---
drivers/nvme/nvme.c | 10 +++++----- drivers/nvme/nvme.c | 8 ++++----
1 file changed, 5 insertions(+), 5 deletions(-) 1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/nvme/nvme.c b/drivers/nvme/nvme.c diff --git a/drivers/nvme/nvme.c b/drivers/nvme/nvme.c
index 3bda491e12..1601651449 100644 index 73db80a294..751abc3cd5 100644
--- a/drivers/nvme/nvme.c --- a/drivers/nvme/nvme.c
+++ b/drivers/nvme/nvme.c +++ b/drivers/nvme/nvme.c
@@ -76,12 +76,12 @@ static int nvme_wait_ready(struct nvme_dev *dev, bool enabled) @@ -47,12 +47,12 @@ static int nvme_wait_csts(struct nvme_dev *dev, u32 mask, u32 val)
static int nvme_setup_prps(struct nvme_dev *dev, u64 *prp2, static int nvme_setup_prps(struct nvme_dev *dev, u64 *prp2,
int total_len, u64 dma_addr) int total_len, u64 dma_addr)
{ {
@ -33,19 +33,17 @@ index 3bda491e12..1601651449 100644
u32 num_pages; u32 num_pages;
length -= (page_size - offset); length -= (page_size - offset);
@@ -119,9 +119,9 @@ static int nvme_setup_prps(struct nvme_dev *dev, u64 *prp2, @@ -91,8 +91,8 @@ static int nvme_setup_prps(struct nvme_dev *dev, u64 *prp2,
prp_pool = dev->prp_pool;
i = 0; i = 0;
while (nprps) { while (nprps) {
- if (i == ((page_size >> 3) - 1)) { if ((i == (prps_per_page - 1)) && nprps > 1) {
- *(prp_pool + i) = cpu_to_le64((ulong)prp_pool + - *(prp_pool + i) = cpu_to_le64((ulong)prp_pool +
- page_size); - page_size);
+ if (i == prps_per_page) {
+ u64 next_prp_list = (u64)prp_pool + page_size; + u64 next_prp_list = (u64)prp_pool + page_size;
+ *(prp_pool + i) = cpu_to_le64(next_prp_list); + *(prp_pool + i) = cpu_to_le64(next_prp_list);
i = 0; i = 0;
prp_pool += page_size; prp_pool += page_size;
} }
-- --
2.36.1 2.38.1

View File

@ -1,7 +1,7 @@
From b3441191724335b5a41d73875584ea293f85a56b Mon Sep 17 00:00:00 2001 From 2b508d92673738d837576301866dc234d8b008c4 Mon Sep 17 00:00:00 2001
Message-Id: <b3441191724335b5a41d73875584ea293f85a56b.1654086219.git.stefan@agner.ch> Message-Id: <2b508d92673738d837576301866dc234d8b008c4.1668448794.git.stefan@agner.ch>
In-Reply-To: <24b77460dbfa2497ceb7a1611bf28b6eb88a1d74.1654086219.git.stefan@agner.ch> In-Reply-To: <135d886b4e5077c8fa96a5449a70d81ae9c1c3d0.1668448794.git.stefan@agner.ch>
References: <24b77460dbfa2497ceb7a1611bf28b6eb88a1d74.1654086219.git.stefan@agner.ch> References: <135d886b4e5077c8fa96a5449a70d81ae9c1c3d0.1668448794.git.stefan@agner.ch>
From: Stefan Agner <stefan@agner.ch> From: Stefan Agner <stefan@agner.ch>
Date: Thu, 23 Sep 2021 23:58:35 +0200 Date: Thu, 23 Sep 2021 23:58:35 +0200
Subject: [PATCH] nvme: Use pointer for CPU addressed buffers Subject: [PATCH] nvme: Use pointer for CPU addressed buffers
@ -18,10 +18,10 @@ Signed-off-by: Stefan Agner <stefan@agner.ch>
3 files changed, 33 insertions(+), 33 deletions(-) 3 files changed, 33 insertions(+), 33 deletions(-)
diff --git a/drivers/nvme/nvme.c b/drivers/nvme/nvme.c diff --git a/drivers/nvme/nvme.c b/drivers/nvme/nvme.c
index 1601651449..6ab94ada7e 100644 index 751abc3cd5..352c94ea91 100644
--- a/drivers/nvme/nvme.c --- a/drivers/nvme/nvme.c
+++ b/drivers/nvme/nvme.c +++ b/drivers/nvme/nvme.c
@@ -74,11 +74,11 @@ static int nvme_wait_ready(struct nvme_dev *dev, bool enabled) @@ -45,11 +45,11 @@ static int nvme_wait_csts(struct nvme_dev *dev, u32 mask, u32 val)
} }
static int nvme_setup_prps(struct nvme_dev *dev, u64 *prp2, static int nvme_setup_prps(struct nvme_dev *dev, u64 *prp2,
@ -35,7 +35,7 @@ index 1601651449..6ab94ada7e 100644
u64 *prp_pool; u64 *prp_pool;
int length = total_len; int length = total_len;
int i, nprps; int i, nprps;
@@ -92,10 +92,10 @@ static int nvme_setup_prps(struct nvme_dev *dev, u64 *prp2, @@ -63,10 +63,10 @@ static int nvme_setup_prps(struct nvme_dev *dev, u64 *prp2,
} }
if (length) if (length)
@ -48,7 +48,7 @@ index 1601651449..6ab94ada7e 100644
return 0; return 0;
} }
@@ -125,11 +125,11 @@ static int nvme_setup_prps(struct nvme_dev *dev, u64 *prp2, @@ -96,11 +96,11 @@ static int nvme_setup_prps(struct nvme_dev *dev, u64 *prp2,
i = 0; i = 0;
prp_pool += page_size; prp_pool += page_size;
} }
@ -62,8 +62,8 @@ index 1601651449..6ab94ada7e 100644
+ *prp2 = (u64)dev->prp_pool; + *prp2 = (u64)dev->prp_pool;
flush_dcache_range((ulong)dev->prp_pool, (ulong)dev->prp_pool + flush_dcache_range((ulong)dev->prp_pool, (ulong)dev->prp_pool +
dev->prp_entry_num * sizeof(u64)); num_pages * page_size);
@@ -450,42 +450,42 @@ static int nvme_alloc_sq(struct nvme_dev *dev, u16 qid, @@ -447,42 +447,42 @@ static int nvme_alloc_sq(struct nvme_dev *dev, u16 qid,
} }
int nvme_identify(struct nvme_dev *dev, unsigned nsid, int nvme_identify(struct nvme_dev *dev, unsigned nsid,
@ -116,7 +116,7 @@ index 1601651449..6ab94ada7e 100644
{ {
struct nvme_command c; struct nvme_command c;
int ret; int ret;
@@ -493,7 +493,7 @@ int nvme_get_features(struct nvme_dev *dev, unsigned fid, unsigned nsid, @@ -490,7 +490,7 @@ int nvme_get_features(struct nvme_dev *dev, unsigned fid, unsigned nsid,
memset(&c, 0, sizeof(c)); memset(&c, 0, sizeof(c));
c.features.opcode = nvme_admin_get_features; c.features.opcode = nvme_admin_get_features;
c.features.nsid = cpu_to_le32(nsid); c.features.nsid = cpu_to_le32(nsid);
@ -125,7 +125,7 @@ index 1601651449..6ab94ada7e 100644
c.features.fid = cpu_to_le32(fid); c.features.fid = cpu_to_le32(fid);
ret = nvme_submit_admin_cmd(dev, &c, result); ret = nvme_submit_admin_cmd(dev, &c, result);
@@ -513,13 +513,13 @@ int nvme_get_features(struct nvme_dev *dev, unsigned fid, unsigned nsid, @@ -510,13 +510,13 @@ int nvme_get_features(struct nvme_dev *dev, unsigned fid, unsigned nsid,
} }
int nvme_set_features(struct nvme_dev *dev, unsigned fid, unsigned dword11, int nvme_set_features(struct nvme_dev *dev, unsigned fid, unsigned dword11,
@ -141,7 +141,7 @@ index 1601651449..6ab94ada7e 100644
c.features.fid = cpu_to_le32(fid); c.features.fid = cpu_to_le32(fid);
c.features.dword11 = cpu_to_le32(dword11); c.features.dword11 = cpu_to_le32(dword11);
@@ -570,7 +570,7 @@ static int nvme_set_queue_count(struct nvme_dev *dev, int count) @@ -567,7 +567,7 @@ static int nvme_set_queue_count(struct nvme_dev *dev, int count)
u32 q_count = (count - 1) | ((count - 1) << 16); u32 q_count = (count - 1) | ((count - 1) << 16);
status = nvme_set_features(dev, NVME_FEAT_NUM_QUEUES, status = nvme_set_features(dev, NVME_FEAT_NUM_QUEUES,
@ -150,7 +150,7 @@ index 1601651449..6ab94ada7e 100644
if (status < 0) if (status < 0)
return status; return status;
@@ -622,7 +622,7 @@ static int nvme_get_info_from_identify(struct nvme_dev *dev) @@ -619,7 +619,7 @@ static int nvme_get_info_from_identify(struct nvme_dev *dev)
if (!ctrl) if (!ctrl)
return -ENOMEM; return -ENOMEM;
@ -159,7 +159,7 @@ index 1601651449..6ab94ada7e 100644
if (ret) { if (ret) {
free(ctrl); free(ctrl);
return -EIO; return -EIO;
@@ -708,7 +708,7 @@ static int nvme_blk_probe(struct udevice *udev) @@ -704,7 +704,7 @@ static int nvme_blk_probe(struct udevice *udev)
ns->dev = ndev; ns->dev = ndev;
/* extract the namespace id from the block device name */ /* extract the namespace id from the block device name */
ns->ns_id = trailing_strtol(udev->name); ns->ns_id = trailing_strtol(udev->name);
@ -168,7 +168,7 @@ index 1601651449..6ab94ada7e 100644
free(id); free(id);
return -EIO; return -EIO;
} }
@@ -743,7 +743,7 @@ static ulong nvme_blk_rw(struct udevice *udev, lbaint_t blknr, @@ -738,7 +738,7 @@ static ulong nvme_blk_rw(struct udevice *udev, lbaint_t blknr,
u64 prp2; u64 prp2;
u64 total_len = blkcnt << desc->log2blksz; u64 total_len = blkcnt << desc->log2blksz;
u64 temp_len = total_len; u64 temp_len = total_len;
@ -177,7 +177,7 @@ index 1601651449..6ab94ada7e 100644
u64 slba = blknr; u64 slba = blknr;
u16 lbas = 1 << (dev->max_transfer_shift - ns->lba_shift); u16 lbas = 1 << (dev->max_transfer_shift - ns->lba_shift);
@@ -890,7 +890,7 @@ static int nvme_probe(struct udevice *udev) @@ -872,7 +872,7 @@ int nvme_init(struct udevice *udev)
char name[20]; char name[20];
memset(id, 0, sizeof(*id)); memset(id, 0, sizeof(*id));
@ -187,26 +187,27 @@ index 1601651449..6ab94ada7e 100644
goto free_id; goto free_id;
} }
diff --git a/drivers/nvme/nvme_show.c b/drivers/nvme/nvme_show.c diff --git a/drivers/nvme/nvme_show.c b/drivers/nvme/nvme_show.c
index 15e459da1a..c30adfada5 100644 index 72cbac82bc..ac9b5cc9bd 100644
--- a/drivers/nvme/nvme_show.c --- a/drivers/nvme/nvme_show.c
+++ b/drivers/nvme/nvme_show.c +++ b/drivers/nvme/nvme_show.c
@@ -111,14 +111,14 @@ int nvme_print_info(struct udevice *udev) @@ -114,7 +114,7 @@ int nvme_print_info(struct udevice *udev)
ALLOC_CACHE_ALIGN_BUFFER(char, buf_ctrl, sizeof(struct nvme_id_ctrl)); if (!ctrl)
struct nvme_id_ctrl *ctrl = (struct nvme_id_ctrl *)buf_ctrl; return -ENOMEM;
- if (nvme_identify(dev, 0, 1, (dma_addr_t)(long)ctrl)) - if (nvme_identify(dev, 0, 1, (dma_addr_t)(long)ctrl)) {
+ if (nvme_identify(dev, 0, 1, ctrl)) + if (nvme_identify(dev, 0, 1, ctrl)) {
return -EIO; ret = -EIO;
goto free_ctrl;
}
@@ -129,7 +129,7 @@ int nvme_print_info(struct udevice *udev)
goto free_ctrl;
}
print_optional_admin_cmd(le16_to_cpu(ctrl->oacs), ns->devnum); - if (nvme_identify(dev, ns->ns_id, 0, (dma_addr_t)(long)id)) {
print_optional_nvm_cmd(le16_to_cpu(ctrl->oncs), ns->devnum); + if (nvme_identify(dev, ns->ns_id, 0, id)) {
print_format_nvme_attributes(ctrl->fna, ns->devnum); ret = -EIO;
goto free_id;
- if (nvme_identify(dev, ns->ns_id, 0, (dma_addr_t)(long)id)) }
+ if (nvme_identify(dev, ns->ns_id, 0, id))
return -EIO;
print_formats(id, ns);
diff --git a/include/nvme.h b/include/nvme.h diff --git a/include/nvme.h b/include/nvme.h
index 2cdf8ce320..8ff823cd81 100644 index 2cdf8ce320..8ff823cd81 100644
--- a/include/nvme.h --- a/include/nvme.h
@ -259,5 +260,5 @@ index 2cdf8ce320..8ff823cd81 100644
/** /**
* nvme_scan_namespace - scan all namespaces attached to NVMe controllers * nvme_scan_namespace - scan all namespaces attached to NVMe controllers
-- --
2.36.1 2.38.1

View File

@ -1,7 +1,7 @@
From 54d797d83265e31e16db922eb7c12d4bbc749127 Mon Sep 17 00:00:00 2001 From c70926d8b8ad11b8e489e92a8ca9ca93fb201595 Mon Sep 17 00:00:00 2001
Message-Id: <54d797d83265e31e16db922eb7c12d4bbc749127.1654086219.git.stefan@agner.ch> Message-Id: <c70926d8b8ad11b8e489e92a8ca9ca93fb201595.1668448794.git.stefan@agner.ch>
In-Reply-To: <24b77460dbfa2497ceb7a1611bf28b6eb88a1d74.1654086219.git.stefan@agner.ch> In-Reply-To: <135d886b4e5077c8fa96a5449a70d81ae9c1c3d0.1668448794.git.stefan@agner.ch>
References: <24b77460dbfa2497ceb7a1611bf28b6eb88a1d74.1654086219.git.stefan@agner.ch> References: <135d886b4e5077c8fa96a5449a70d81ae9c1c3d0.1668448794.git.stefan@agner.ch>
From: Stefan Agner <stefan@agner.ch> From: Stefan Agner <stefan@agner.ch>
Date: Fri, 24 Sep 2021 00:27:39 +0200 Date: Fri, 24 Sep 2021 00:27:39 +0200
Subject: [PATCH] nvme: translate virtual addresses into the bus's address Subject: [PATCH] nvme: translate virtual addresses into the bus's address
@ -24,15 +24,15 @@ address space").
Signed-off-by: Stefan Agner <stefan@agner.ch> Signed-off-by: Stefan Agner <stefan@agner.ch>
--- ---
drivers/nvme/nvme.c | 32 ++++++++++++++++++-------------- drivers/nvme/nvme.c | 31 +++++++++++++++++--------------
drivers/nvme/nvme.h | 15 +++++++++++++++ drivers/nvme/nvme.h | 8 ++++++++
2 files changed, 33 insertions(+), 14 deletions(-) 2 files changed, 25 insertions(+), 14 deletions(-)
diff --git a/drivers/nvme/nvme.c b/drivers/nvme/nvme.c diff --git a/drivers/nvme/nvme.c b/drivers/nvme/nvme.c
index 6ab94ada7e..dd190bd654 100644 index 352c94ea91..fdfc49677b 100644
--- a/drivers/nvme/nvme.c --- a/drivers/nvme/nvme.c
+++ b/drivers/nvme/nvme.c +++ b/drivers/nvme/nvme.c
@@ -95,7 +95,7 @@ static int nvme_setup_prps(struct nvme_dev *dev, u64 *prp2, @@ -66,7 +66,7 @@ static int nvme_setup_prps(struct nvme_dev *dev, u64 *prp2,
buffer += (page_size - offset); buffer += (page_size - offset);
if (length <= page_size) { if (length <= page_size) {
@ -41,10 +41,10 @@ index 6ab94ada7e..dd190bd654 100644
return 0; return 0;
} }
@@ -120,16 +120,16 @@ static int nvme_setup_prps(struct nvme_dev *dev, u64 *prp2, @@ -91,16 +91,16 @@ static int nvme_setup_prps(struct nvme_dev *dev, u64 *prp2,
i = 0; i = 0;
while (nprps) { while (nprps) {
if (i == prps_per_page) { if ((i == (prps_per_page - 1)) && nprps > 1) {
- u64 next_prp_list = (u64)prp_pool + page_size; - u64 next_prp_list = (u64)prp_pool + page_size;
- *(prp_pool + i) = cpu_to_le64(next_prp_list); - *(prp_pool + i) = cpu_to_le64(next_prp_list);
+ u64 next = nvme_virt_to_bus(dev, prp_pool + page_size); + u64 next = nvme_virt_to_bus(dev, prp_pool + page_size);
@ -61,8 +61,8 @@ index 6ab94ada7e..dd190bd654 100644
+ *prp2 = nvme_virt_to_bus(dev, dev->prp_pool); + *prp2 = nvme_virt_to_bus(dev, dev->prp_pool);
flush_dcache_range((ulong)dev->prp_pool, (ulong)dev->prp_pool + flush_dcache_range((ulong)dev->prp_pool, (ulong)dev->prp_pool +
dev->prp_entry_num * sizeof(u64)); num_pages * page_size);
@@ -356,6 +356,7 @@ static int nvme_configure_admin_queue(struct nvme_dev *dev) @@ -353,6 +353,7 @@ static int nvme_configure_admin_queue(struct nvme_dev *dev)
int result; int result;
u32 aqa; u32 aqa;
u64 cap = dev->cap; u64 cap = dev->cap;
@ -70,7 +70,7 @@ index 6ab94ada7e..dd190bd654 100644
struct nvme_queue *nvmeq; struct nvme_queue *nvmeq;
/* most architectures use 4KB as the page size */ /* most architectures use 4KB as the page size */
unsigned page_shift = 12; unsigned page_shift = 12;
@@ -396,8 +397,10 @@ static int nvme_configure_admin_queue(struct nvme_dev *dev) @@ -393,8 +394,10 @@ static int nvme_configure_admin_queue(struct nvme_dev *dev)
dev->ctrl_config |= NVME_CC_IOSQES | NVME_CC_IOCQES; dev->ctrl_config |= NVME_CC_IOSQES | NVME_CC_IOCQES;
writel(aqa, &dev->bar->aqa); writel(aqa, &dev->bar->aqa);
@ -83,7 +83,7 @@ index 6ab94ada7e..dd190bd654 100644
result = nvme_enable_ctrl(dev); result = nvme_enable_ctrl(dev);
if (result) if (result)
@@ -423,7 +426,7 @@ static int nvme_alloc_cq(struct nvme_dev *dev, u16 qid, @@ -420,7 +423,7 @@ static int nvme_alloc_cq(struct nvme_dev *dev, u16 qid,
memset(&c, 0, sizeof(c)); memset(&c, 0, sizeof(c));
c.create_cq.opcode = nvme_admin_create_cq; c.create_cq.opcode = nvme_admin_create_cq;
@ -92,7 +92,7 @@ index 6ab94ada7e..dd190bd654 100644
c.create_cq.cqid = cpu_to_le16(qid); c.create_cq.cqid = cpu_to_le16(qid);
c.create_cq.qsize = cpu_to_le16(nvmeq->q_depth - 1); c.create_cq.qsize = cpu_to_le16(nvmeq->q_depth - 1);
c.create_cq.cq_flags = cpu_to_le16(flags); c.create_cq.cq_flags = cpu_to_le16(flags);
@@ -440,7 +443,7 @@ static int nvme_alloc_sq(struct nvme_dev *dev, u16 qid, @@ -437,7 +440,7 @@ static int nvme_alloc_sq(struct nvme_dev *dev, u16 qid,
memset(&c, 0, sizeof(c)); memset(&c, 0, sizeof(c));
c.create_sq.opcode = nvme_admin_create_sq; c.create_sq.opcode = nvme_admin_create_sq;
@ -101,7 +101,7 @@ index 6ab94ada7e..dd190bd654 100644
c.create_sq.sqid = cpu_to_le16(qid); c.create_sq.sqid = cpu_to_le16(qid);
c.create_sq.qsize = cpu_to_le16(nvmeq->q_depth - 1); c.create_sq.qsize = cpu_to_le16(nvmeq->q_depth - 1);
c.create_sq.sq_flags = cpu_to_le16(flags); c.create_sq.sq_flags = cpu_to_le16(flags);
@@ -461,14 +464,14 @@ int nvme_identify(struct nvme_dev *dev, unsigned nsid, @@ -458,14 +461,14 @@ int nvme_identify(struct nvme_dev *dev, unsigned nsid,
memset(&c, 0, sizeof(c)); memset(&c, 0, sizeof(c));
c.identify.opcode = nvme_admin_identify; c.identify.opcode = nvme_admin_identify;
c.identify.nsid = cpu_to_le32(nsid); c.identify.nsid = cpu_to_le32(nsid);
@ -118,7 +118,7 @@ index 6ab94ada7e..dd190bd654 100644
} }
c.identify.cns = cpu_to_le32(cns); c.identify.cns = cpu_to_le32(cns);
@@ -493,7 +496,7 @@ int nvme_get_features(struct nvme_dev *dev, unsigned fid, unsigned nsid, @@ -490,7 +493,7 @@ int nvme_get_features(struct nvme_dev *dev, unsigned fid, unsigned nsid,
memset(&c, 0, sizeof(c)); memset(&c, 0, sizeof(c));
c.features.opcode = nvme_admin_get_features; c.features.opcode = nvme_admin_get_features;
c.features.nsid = cpu_to_le32(nsid); c.features.nsid = cpu_to_le32(nsid);
@ -127,7 +127,7 @@ index 6ab94ada7e..dd190bd654 100644
c.features.fid = cpu_to_le32(fid); c.features.fid = cpu_to_le32(fid);
ret = nvme_submit_admin_cmd(dev, &c, result); ret = nvme_submit_admin_cmd(dev, &c, result);
@@ -519,7 +522,7 @@ int nvme_set_features(struct nvme_dev *dev, unsigned fid, unsigned dword11, @@ -516,7 +519,7 @@ int nvme_set_features(struct nvme_dev *dev, unsigned fid, unsigned dword11,
memset(&c, 0, sizeof(c)); memset(&c, 0, sizeof(c));
c.features.opcode = nvme_admin_set_features; c.features.opcode = nvme_admin_set_features;
@ -136,7 +136,7 @@ index 6ab94ada7e..dd190bd654 100644
c.features.fid = cpu_to_le32(fid); c.features.fid = cpu_to_le32(fid);
c.features.dword11 = cpu_to_le32(dword11); c.features.dword11 = cpu_to_le32(dword11);
@@ -776,7 +779,7 @@ static ulong nvme_blk_rw(struct udevice *udev, lbaint_t blknr, @@ -771,7 +774,7 @@ static ulong nvme_blk_rw(struct udevice *udev, lbaint_t blknr,
c.rw.slba = cpu_to_le64(slba); c.rw.slba = cpu_to_le64(slba);
slba += lbas; slba += lbas;
c.rw.length = cpu_to_le16(lbas - 1); c.rw.length = cpu_to_le16(lbas - 1);
@ -145,54 +145,32 @@ index 6ab94ada7e..dd190bd654 100644
c.rw.prp2 = cpu_to_le64(prp2); c.rw.prp2 = cpu_to_le64(prp2);
status = nvme_submit_sync_cmd(dev->queues[NVME_IO_Q], status = nvme_submit_sync_cmd(dev->queues[NVME_IO_Q],
&c, NULL, IO_TIMEOUT); &c, NULL, IO_TIMEOUT);
@@ -835,6 +838,7 @@ static int nvme_probe(struct udevice *udev)
struct nvme_id_ns *id;
ndev->instance = trailing_strtol(udev->name);
+ ndev->dev = udev->parent;
INIT_LIST_HEAD(&ndev->namespaces);
ndev->bar = dm_pci_map_bar(udev, PCI_BASE_ADDRESS_0,
diff --git a/drivers/nvme/nvme.h b/drivers/nvme/nvme.h diff --git a/drivers/nvme/nvme.h b/drivers/nvme/nvme.h
index c6aae4da5d..31e6899bca 100644 index bc1d612dde..f52103c009 100644
--- a/drivers/nvme/nvme.h --- a/drivers/nvme/nvme.h
+++ b/drivers/nvme/nvme.h +++ b/drivers/nvme/nvme.h
@@ -7,8 +7,15 @@ @@ -7,8 +7,11 @@
#ifndef __DRIVER_NVME_H__ #ifndef __DRIVER_NVME_H__
#define __DRIVER_NVME_H__ #define __DRIVER_NVME_H__
+#include <phys2bus.h> +#include <phys2bus.h>
#include <asm/io.h> #include <asm/io.h>
+#if CONFIG_IS_ENABLED(DM_USB) +#define nvme_to_dev(_dev) _dev->udev
+#define nvme_to_dev(_dev) _dev->dev
+#else
+#define nvme_to_dev(_dev) NULL
+#endif
+ +
struct nvme_id_power_state { struct nvme_id_power_state {
__le16 max_power; /* centiwatts */ __le16 max_power; /* centiwatts */
__u8 rsvd2; __u8 rsvd2;
@@ -596,6 +603,9 @@ enum { @@ -705,4 +708,9 @@ int nvme_init(struct udevice *udev);
*/
/* Represents an NVM Express device. Each nvme_dev is a PCI function. */ int nvme_shutdown(struct udevice *udev);
struct nvme_dev {
+#if CONFIG_IS_ENABLED(DM_USB)
+ struct udevice *dev;
+#endif
struct list_head node;
struct nvme_queue **queues;
u32 __iomem *dbs;
@@ -635,4 +645,9 @@ struct nvme_ns {
u8 flbas;
};
+static inline dma_addr_t nvme_virt_to_bus(struct nvme_dev *dev, void *addr) +static inline dma_addr_t nvme_virt_to_bus(struct nvme_dev *dev, void *addr)
+{ +{
+ return dev_phys_to_bus(nvme_to_dev(dev), virt_to_phys(addr)); + return dev_phys_to_bus(nvme_to_dev(dev)->parent, virt_to_phys(addr));
+} +}
+ +
#endif /* __DRIVER_NVME_H__ */ #endif /* __DRIVER_NVME_H__ */
-- --
2.36.1 2.38.1

View File

@ -1,2 +1,3 @@
CONFIG_NVME_PCI=y
CONFIG_CMD_NVME=y CONFIG_CMD_NVME=y
CONFIG_NVME=y CONFIG_NVME=y

View File

@ -1,8 +1,8 @@
From 78704bc154d695ee16fdf8396f4d60b740190014 Mon Sep 17 00:00:00 2001 From 85fb54b621c1ca79f1ec8634b0597a038338e51d Mon Sep 17 00:00:00 2001
Message-Id: <78704bc154d695ee16fdf8396f4d60b740190014.1650924333.git.stefan@agner.ch> Message-Id: <85fb54b621c1ca79f1ec8634b0597a038338e51d.1668448114.git.stefan@agner.ch>
From: Stefan Agner <stefan@agner.ch> From: Stefan Agner <stefan@agner.ch>
Date: Thu, 14 Apr 2022 12:15:26 +0200 Date: Thu, 14 Apr 2022 12:15:26 +0200
Subject: [PATCH 1/5] drivers: bcm283x: don't explicitly disable init Subject: [PATCH] drivers: bcm283x: don't explicitly disable init
It seems that the reason why init doesn't succeed is the lack of clock It seems that the reason why init doesn't succeed is the lack of clock
support in U-Boot. Setting the default clock of 48MHz for the PL011 support in U-Boot. Setting the default clock of 48MHz for the PL011
@ -19,7 +19,7 @@ Signed-off-by: Stefan Agner <stefan@agner.ch>
2 files changed, 3 insertions(+), 6 deletions(-) 2 files changed, 3 insertions(+), 6 deletions(-)
diff --git a/drivers/serial/serial_bcm283x_pl011.c b/drivers/serial/serial_bcm283x_pl011.c diff --git a/drivers/serial/serial_bcm283x_pl011.c b/drivers/serial/serial_bcm283x_pl011.c
index 2d2e970316..182274036c 100644 index 7d172cdac0..fcba07f1c5 100644
--- a/drivers/serial/serial_bcm283x_pl011.c --- a/drivers/serial/serial_bcm283x_pl011.c
+++ b/drivers/serial/serial_bcm283x_pl011.c +++ b/drivers/serial/serial_bcm283x_pl011.c
@@ -51,12 +51,6 @@ static int bcm283x_pl011_serial_probe(struct udevice *dev) @@ -51,12 +51,6 @@ static int bcm283x_pl011_serial_probe(struct udevice *dev)
@ -36,19 +36,19 @@ index 2d2e970316..182274036c 100644
} }
diff --git a/include/configs/rpi.h b/include/configs/rpi.h diff --git a/include/configs/rpi.h b/include/configs/rpi.h
index e24c94c7d2..98ba4dc052 100644 index 7257659932..7fdf2a891d 100644
--- a/include/configs/rpi.h --- a/include/configs/rpi.h
+++ b/include/configs/rpi.h +++ b/include/configs/rpi.h
@@ -40,6 +40,9 @@ @@ -33,6 +33,9 @@
#define CONFIG_SYS_BOOTM_LEN SZ_64M */
#endif #define CONFIG_SYS_SDRAM_SIZE SZ_128M
+/* Define PL011 default clock */ +/* Define PL011 default clock */
+#define CONFIG_PL011_CLOCK 48000000 +#define CONFIG_PL011_CLOCK 48000000
+ +
/* Devices */ /* Devices */
/* GPIO */ /* LCD */
#define CONFIG_BCM2835_GPIO
-- --
2.36.0 2.38.1

View File

@ -1,10 +1,10 @@
From c2447aa922068cebd9bbaac45acae3d853abf687 Mon Sep 17 00:00:00 2001 From 921f4b6d8cb3b997dd5c54fd436bb8223046421e Mon Sep 17 00:00:00 2001
Message-Id: <c2447aa922068cebd9bbaac45acae3d853abf687.1650924333.git.stefan@agner.ch> Message-Id: <921f4b6d8cb3b997dd5c54fd436bb8223046421e.1668448114.git.stefan@agner.ch>
In-Reply-To: <78704bc154d695ee16fdf8396f4d60b740190014.1650924333.git.stefan@agner.ch> In-Reply-To: <85fb54b621c1ca79f1ec8634b0597a038338e51d.1668448114.git.stefan@agner.ch>
References: <78704bc154d695ee16fdf8396f4d60b740190014.1650924333.git.stefan@agner.ch> References: <85fb54b621c1ca79f1ec8634b0597a038338e51d.1668448114.git.stefan@agner.ch>
From: Stefan Agner <stefan@agner.ch> From: Stefan Agner <stefan@agner.ch>
Date: Thu, 14 Apr 2022 12:18:41 +0200 Date: Thu, 14 Apr 2022 12:18:41 +0200
Subject: [PATCH 2/5] drivers: bcm283x: allow to spawn any PL011 UART Subject: [PATCH] drivers: bcm283x: allow to spawn any PL011 UART
The current code checks pinmux for the first PL011 only. Raspberry Pi 4 The current code checks pinmux for the first PL011 only. Raspberry Pi 4
has multiple PL011 UARTs. This code prevents probing of other UARTs in has multiple PL011 UARTs. This code prevents probing of other UARTs in
@ -22,7 +22,7 @@ Signed-off-by: Stefan Agner <stefan@agner.ch>
1 file changed, 27 deletions(-) 1 file changed, 27 deletions(-)
diff --git a/drivers/serial/serial_bcm283x_pl011.c b/drivers/serial/serial_bcm283x_pl011.c diff --git a/drivers/serial/serial_bcm283x_pl011.c b/drivers/serial/serial_bcm283x_pl011.c
index 182274036c..98628e1ca4 100644 index fcba07f1c5..98628e1ca4 100644
--- a/drivers/serial/serial_bcm283x_pl011.c --- a/drivers/serial/serial_bcm283x_pl011.c
+++ b/drivers/serial/serial_bcm283x_pl011.c +++ b/drivers/serial/serial_bcm283x_pl011.c
@@ -11,37 +11,10 @@ @@ -11,37 +11,10 @@
@ -35,14 +35,14 @@ index 182274036c..98628e1ca4 100644
- * The serial device will only work properly if it has been muxed to the serial - * The serial device will only work properly if it has been muxed to the serial
- * pins by firmware. Check whether that happened here. - * pins by firmware. Check whether that happened here.
- * - *
- * @return true if serial device is muxed, false if not - * Return: true if serial device is muxed, false if not
- */ - */
-static bool bcm283x_is_serial_muxed(void) -static bool bcm283x_is_serial_muxed(void)
-{ -{
- int serial_gpio = 15; - int serial_gpio = 15;
- struct udevice *dev; - struct udevice *dev;
- -
- if (uclass_first_device(UCLASS_PINCTRL, &dev) || !dev) - if (uclass_first_device_err(UCLASS_PINCTRL, &dev))
- return false; - return false;
- -
- if (pinctrl_get_gpio_mux(dev, 0, serial_gpio) != BCM2835_GPIO_ALT0) - if (pinctrl_get_gpio_mux(dev, 0, serial_gpio) != BCM2835_GPIO_ALT0)
@ -64,5 +64,5 @@ index 182274036c..98628e1ca4 100644
* Read the ofdata here rather than in an of_to_plat() method * Read the ofdata here rather than in an of_to_plat() method
* since we need the soc simple-bus to be probed so that the 'ranges' * since we need the soc simple-bus to be probed so that the 'ranges'
-- --
2.36.0 2.38.1

View File

@ -1,3 +1,4 @@
CONFIG_NVME_PCI=y
CONFIG_CMD_NVME=y CONFIG_CMD_NVME=y
CONFIG_NVME=y CONFIG_NVME=y
CONFIG_CMD_USB_MASS_STORAGE=y CONFIG_CMD_USB_MASS_STORAGE=y

View File

@ -100,7 +100,7 @@ BR2_TARGET_ROOTFS_SQUASHFS4_LZ4=y
BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
BR2_TARGET_UBOOT_CUSTOM_VERSION=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y
BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2022.01" BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.01-rc1"
BR2_TARGET_UBOOT_BOARD_DEFCONFIG="rpi_2" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="rpi_2"
BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/bootloader/uboot.config $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/uboot.config" BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/bootloader/uboot.config $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/uboot.config"
BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_DOSFSTOOLS=y

View File

@ -102,7 +102,7 @@ BR2_TARGET_ROOTFS_SQUASHFS4_LZ4=y
BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
BR2_TARGET_UBOOT_CUSTOM_VERSION=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y
BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2022.01" BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.01-rc1"
BR2_TARGET_UBOOT_BOARD_DEFCONFIG="rpi_3" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="rpi_3"
BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/bootloader/uboot.config $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/uboot.config" BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/bootloader/uboot.config $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/uboot.config"
BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_DOSFSTOOLS=y

View File

@ -103,7 +103,7 @@ BR2_TARGET_ROOTFS_SQUASHFS4_LZ4=y
BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
BR2_TARGET_UBOOT_CUSTOM_VERSION=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y
BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2022.01" BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.01-rc1"
BR2_TARGET_UBOOT_BOARD_DEFCONFIG="rpi_3_32b" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="rpi_3_32b"
BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/bootloader/uboot.config $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/uboot.config" BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/bootloader/uboot.config $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/uboot.config"
BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_DOSFSTOOLS=y

View File

@ -103,7 +103,7 @@ BR2_TARGET_ROOTFS_SQUASHFS4_LZ4=y
BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
BR2_TARGET_UBOOT_CUSTOM_VERSION=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y
BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2022.01" BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.01-rc1"
BR2_TARGET_UBOOT_BOARD_DEFCONFIG="rpi_4" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="rpi_4"
BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/bootloader/uboot.config $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/uboot.config $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/rpi4-64/uboot.config" BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/bootloader/uboot.config $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/uboot.config $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/rpi4-64/uboot.config"
BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_DOSFSTOOLS=y

View File

@ -102,7 +102,7 @@ BR2_TARGET_ROOTFS_SQUASHFS4_LZ4=y
BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
BR2_TARGET_UBOOT_CUSTOM_VERSION=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y
BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2022.01" BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.01-rc1"
BR2_TARGET_UBOOT_BOARD_DEFCONFIG="rpi_4_32b" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="rpi_4_32b"
BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/bootloader/uboot.config $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/uboot.config $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/rpi4/uboot.config" BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/bootloader/uboot.config $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/uboot.config $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/rpi4/uboot.config"
BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_DOSFSTOOLS=y

View File

@ -102,7 +102,7 @@ BR2_TARGET_ROOTFS_SQUASHFS4_LZ4=y
BR2_TARGET_UBOOT=y BR2_TARGET_UBOOT=y
BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG=y
BR2_TARGET_UBOOT_CUSTOM_VERSION=y BR2_TARGET_UBOOT_CUSTOM_VERSION=y
BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2022.01" BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2023.01-rc1"
BR2_TARGET_UBOOT_BOARD_DEFCONFIG="rpi_4" BR2_TARGET_UBOOT_BOARD_DEFCONFIG="rpi_4"
BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/bootloader/uboot.config $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/uboot.config $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/yellow/uboot.config" BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES="$(BR2_EXTERNAL_HASSOS_PATH)/bootloader/uboot.config $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/uboot.config $(BR2_EXTERNAL_HASSOS_PATH)/board/raspberrypi/yellow/uboot.config"
BR2_PACKAGE_HOST_DOSFSTOOLS=y BR2_PACKAGE_HOST_DOSFSTOOLS=y