All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 0/9] ufs: Add a PCI UFS controller support
@ 2023-10-11 13:15 Bin Meng
  2023-10-11 13:15 ` [PATCH v2 1/9] ufs: Correct the UFS terminlogy Bin Meng
                   ` (10 more replies)
  0 siblings, 11 replies; 31+ messages in thread
From: Bin Meng @ 2023-10-11 13:15 UTC (permalink / raw)
  To: Bhupesh Sharma, Neha Malcom Francis; +Cc: Simon Glass, u-boot

This adds a PCI UFS controller support and enables the support on
QEMU RISC-V for testing.

Requiring QEMU v8.2+.

This series is avaiable at u-boot-x86/ufs for testing.

Changes in v2:
- fix a build warning

Bin Meng (9):
  ufs: Correct the UFS terminlogy
  ufs: Add a line feed to the end of some dev_xxx() messages
  cmd: kconfig: Make ufs prompt look similar to other commands
  cmd: ufs: Correct the help text
  pci_ids: Add Red Hat vendor and device IDs
  ufs: Allow mmio registers on the PCI bus
  ufs: Add a PCI based UFS controller driver
  ufs: Handle UFS 3.1 controllers
  qemu: riscv: Enable UFS support

 board/emulation/qemu-riscv/Kconfig |  2 ++
 cmd/Kconfig                        |  2 +-
 cmd/ufs.c                          |  2 +-
 doc/board/emulation/qemu-riscv.rst |  8 +++++-
 drivers/ufs/Kconfig                | 11 ++++++++
 drivers/ufs/Makefile               |  1 +
 drivers/ufs/ufs-pci.c              | 45 ++++++++++++++++++++++++++++++
 drivers/ufs/ufs-uclass.c           |  2 +-
 drivers/ufs/ufs.c                  | 31 ++++++++++++--------
 drivers/ufs/ufs.h                  |  1 +
 include/pci_ids.h                  |  7 +++++
 11 files changed, 97 insertions(+), 15 deletions(-)
 create mode 100644 drivers/ufs/ufs-pci.c

-- 
2.34.1


^ permalink raw reply	[flat|nested] 31+ messages in thread

* [PATCH v2 1/9] ufs: Correct the UFS terminlogy
  2023-10-11 13:15 [PATCH v2 0/9] ufs: Add a PCI UFS controller support Bin Meng
@ 2023-10-11 13:15 ` Bin Meng
  2023-10-12  3:41   ` Simon Glass
  2023-11-23  4:24   ` Neha Malcom Francis
  2023-10-11 13:15 ` [PATCH v2 2/9] ufs: Add a line feed to the end of some dev_xxx() messages Bin Meng
                   ` (9 subsequent siblings)
  10 siblings, 2 replies; 31+ messages in thread
From: Bin Meng @ 2023-10-11 13:15 UTC (permalink / raw)
  To: Bhupesh Sharma, Neha Malcom Francis; +Cc: Simon Glass, u-boot

UFS stands for Universal Flash Storage, not Subsytem.

Signed-off-by: Bin Meng <bmeng@tinylab.org>
---

(no changes since v1)

 cmd/Kconfig              | 2 +-
 drivers/ufs/ufs-uclass.c | 2 +-
 drivers/ufs/ufs.c        | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/cmd/Kconfig b/cmd/Kconfig
index 6470b138d2..a59c67e333 100644
--- a/cmd/Kconfig
+++ b/cmd/Kconfig
@@ -1536,7 +1536,7 @@ config CMD_TSI148
 	  Turndra tsi148 device. See the command help for full details.
 
 config CMD_UFS
-	bool "Enable UFS - Universal Flash Subsystem commands"
+	bool "Enable UFS - Universal Flash Storage commands"
 	depends on UFS
 	help
 	  "This provides commands to initialise and configure universal flash
diff --git a/drivers/ufs/ufs-uclass.c b/drivers/ufs/ufs-uclass.c
index ceea30c4a9..ffae811d46 100644
--- a/drivers/ufs/ufs-uclass.c
+++ b/drivers/ufs/ufs-uclass.c
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0
 /**
- * ufs-uclass.c - Universal Flash Subsystem (UFS) Uclass driver
+ * ufs-uclass.c - Universal Flash Storage (UFS) Uclass driver
  *
  * Copyright (C) 2019 Texas Instruments Incorporated - http://www.ti.com
  */
diff --git a/drivers/ufs/ufs.c b/drivers/ufs/ufs.c
index 7c48d57f99..f534d6e29f 100644
--- a/drivers/ufs/ufs.c
+++ b/drivers/ufs/ufs.c
@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0+
 /**
- * ufs.c - Universal Flash Subsystem (UFS) driver
+ * ufs.c - Universal Flash Storage (UFS) driver
  *
  * Taken from Linux Kernel v5.2 (drivers/scsi/ufs/ufshcd.c) and ported
  * to u-boot.
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH v2 2/9] ufs: Add a line feed to the end of some dev_xxx() messages
  2023-10-11 13:15 [PATCH v2 0/9] ufs: Add a PCI UFS controller support Bin Meng
  2023-10-11 13:15 ` [PATCH v2 1/9] ufs: Correct the UFS terminlogy Bin Meng
@ 2023-10-11 13:15 ` Bin Meng
  2023-10-12  3:41   ` Simon Glass
  2023-11-23  4:25   ` Neha Malcom Francis
  2023-10-11 13:15 ` [PATCH v2 3/9] cmd: kconfig: Make ufs prompt look similar to other commands Bin Meng
                   ` (8 subsequent siblings)
  10 siblings, 2 replies; 31+ messages in thread
From: Bin Meng @ 2023-10-11 13:15 UTC (permalink / raw)
  To: Bhupesh Sharma, Neha Malcom Francis; +Cc: Simon Glass, u-boot

Add a line feed to improve readability of some dev_xxx() messages.

Signed-off-by: Bin Meng <bmeng@tinylab.org>
---

(no changes since v1)

 drivers/ufs/ufs.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/drivers/ufs/ufs.c b/drivers/ufs/ufs.c
index f534d6e29f..96801866d3 100644
--- a/drivers/ufs/ufs.c
+++ b/drivers/ufs/ufs.c
@@ -320,7 +320,7 @@ static int ufshcd_disable_tx_lcc(struct ufs_hba *hba, bool peer)
 					UIC_ARG_MPHY_TX_GEN_SEL_INDEX(i)),
 					0);
 		if (err) {
-			dev_err(hba->dev, "%s: TX LCC Disable failed, peer = %d, lane = %d, err = %d",
+			dev_err(hba->dev, "%s: TX LCC Disable failed, peer = %d, lane = %d, err = %d\n",
 				__func__, peer, i, err);
 			break;
 		}
@@ -441,7 +441,7 @@ static int ufshcd_make_hba_operational(struct ufs_hba *hba)
 		ufshcd_enable_run_stop_reg(hba);
 	} else {
 		dev_err(hba->dev,
-			"Host controller not ready to process requests");
+			"Host controller not ready to process requests\n");
 		err = -EIO;
 		goto out;
 	}
@@ -930,7 +930,7 @@ static int ufshcd_copy_query_response(struct ufs_hba *hba)
 			memcpy(hba->dev_cmd.query.descriptor, descp, resp_len);
 		} else {
 			dev_warn(hba->dev,
-				 "%s: Response size is bigger than buffer",
+				 "%s: Response size is bigger than buffer\n",
 				 __func__);
 			return -EINVAL;
 		}
@@ -1179,11 +1179,11 @@ static int ufshcd_read_desc_length(struct ufs_hba *hba, enum desc_idn desc_id,
 					    &header_len);
 
 	if (ret) {
-		dev_err(hba->dev, "%s: Failed to get descriptor header id %d",
+		dev_err(hba->dev, "%s: Failed to get descriptor header id %d\n",
 			__func__, desc_id);
 		return ret;
 	} else if (desc_id != header[QUERY_DESC_DESC_TYPE_OFFSET]) {
-		dev_warn(hba->dev, "%s: descriptor header id %d and desc_id %d mismatch",
+		dev_warn(hba->dev, "%s: descriptor header id %d and desc_id %d mismatch\n",
 			 __func__, header[QUERY_DESC_DESC_TYPE_OFFSET],
 			 desc_id);
 		ret = -EINVAL;
@@ -1302,7 +1302,7 @@ int ufshcd_read_desc_param(struct ufs_hba *hba, enum desc_idn desc_id,
 
 	/* Sanity checks */
 	if (ret || !buff_len) {
-		dev_err(hba->dev, "%s: Failed to get full descriptor length",
+		dev_err(hba->dev, "%s: Failed to get full descriptor length\n",
 			__func__);
 		return ret;
 	}
@@ -1323,14 +1323,14 @@ int ufshcd_read_desc_param(struct ufs_hba *hba, enum desc_idn desc_id,
 					    &buff_len);
 
 	if (ret) {
-		dev_err(hba->dev, "%s: Failed reading descriptor. desc_id %d, desc_index %d, param_offset %d, ret %d",
+		dev_err(hba->dev, "%s: Failed reading descriptor. desc_id %d, desc_index %d, param_offset %d, ret %d\n",
 			__func__, desc_id, desc_index, param_offset, ret);
 		goto out;
 	}
 
 	/* Sanity check */
 	if (desc_buf[QUERY_DESC_DESC_TYPE_OFFSET] != desc_id) {
-		dev_err(hba->dev, "%s: invalid desc_id %d in descriptor header",
+		dev_err(hba->dev, "%s: invalid desc_id %d in descriptor header\n",
 			__func__, desc_buf[QUERY_DESC_DESC_TYPE_OFFSET]);
 		ret = -EINVAL;
 		goto out;
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH v2 3/9] cmd: kconfig: Make ufs prompt look similar to other commands
  2023-10-11 13:15 [PATCH v2 0/9] ufs: Add a PCI UFS controller support Bin Meng
  2023-10-11 13:15 ` [PATCH v2 1/9] ufs: Correct the UFS terminlogy Bin Meng
  2023-10-11 13:15 ` [PATCH v2 2/9] ufs: Add a line feed to the end of some dev_xxx() messages Bin Meng
@ 2023-10-11 13:15 ` Bin Meng
  2023-10-12  3:41   ` Simon Glass
  2023-11-23  4:25   ` Neha Malcom Francis
  2023-10-11 13:15 ` [PATCH v2 4/9] cmd: ufs: Correct the help text Bin Meng
                   ` (7 subsequent siblings)
  10 siblings, 2 replies; 31+ messages in thread
From: Bin Meng @ 2023-10-11 13:15 UTC (permalink / raw)
  To: Bhupesh Sharma, Neha Malcom Francis; +Cc: Simon Glass, u-boot

At present the 'ufs' command prompt does not look similar like other
commands. Update it.

Signed-off-by: Bin Meng <bmeng@tinylab.org>
---

(no changes since v1)

 cmd/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/cmd/Kconfig b/cmd/Kconfig
index a59c67e333..0b4e76c262 100644
--- a/cmd/Kconfig
+++ b/cmd/Kconfig
@@ -1536,7 +1536,7 @@ config CMD_TSI148
 	  Turndra tsi148 device. See the command help for full details.
 
 config CMD_UFS
-	bool "Enable UFS - Universal Flash Storage commands"
+	bool "ufs - Universal Flash Storage commands"
 	depends on UFS
 	help
 	  "This provides commands to initialise and configure universal flash
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH v2 4/9] cmd: ufs: Correct the help text
  2023-10-11 13:15 [PATCH v2 0/9] ufs: Add a PCI UFS controller support Bin Meng
                   ` (2 preceding siblings ...)
  2023-10-11 13:15 ` [PATCH v2 3/9] cmd: kconfig: Make ufs prompt look similar to other commands Bin Meng
@ 2023-10-11 13:15 ` Bin Meng
  2023-10-12  3:41   ` Simon Glass
  2023-11-23  4:28   ` Neha Malcom Francis
  2023-10-11 13:15 ` [PATCH v2 5/9] pci_ids: Add Red Hat vendor and device IDs Bin Meng
                   ` (6 subsequent siblings)
  10 siblings, 2 replies; 31+ messages in thread
From: Bin Meng @ 2023-10-11 13:15 UTC (permalink / raw)
  To: Bhupesh Sharma, Neha Malcom Francis; +Cc: Simon Glass, u-boot

Remove the additional space and use "sub-system" for consistency
with other commands like "scsi" and "usb".

Signed-off-by: Bin Meng <bmeng@tinylab.org>
---

(no changes since v1)

 cmd/ufs.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/cmd/ufs.c b/cmd/ufs.c
index 143e946370..2c8d88df18 100644
--- a/cmd/ufs.c
+++ b/cmd/ufs.c
@@ -32,6 +32,6 @@ static int do_ufs(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
 }
 
 U_BOOT_CMD(ufs, 3, 1, do_ufs,
-	   "UFS  sub system",
+	   "UFS sub-system",
 	   "init [dev] - init UFS subsystem\n"
 );
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH v2 5/9] pci_ids: Add Red Hat vendor and device IDs
  2023-10-11 13:15 [PATCH v2 0/9] ufs: Add a PCI UFS controller support Bin Meng
                   ` (3 preceding siblings ...)
  2023-10-11 13:15 ` [PATCH v2 4/9] cmd: ufs: Correct the help text Bin Meng
@ 2023-10-11 13:15 ` Bin Meng
  2023-10-12  3:41   ` Simon Glass
  2023-11-23  4:30   ` Neha Malcom Francis
  2023-10-11 13:15 ` [PATCH v2 6/9] ufs: Allow mmio registers on the PCI bus Bin Meng
                   ` (5 subsequent siblings)
  10 siblings, 2 replies; 31+ messages in thread
From: Bin Meng @ 2023-10-11 13:15 UTC (permalink / raw)
  To: Bhupesh Sharma, Neha Malcom Francis; +Cc: Simon Glass, u-boot

Red Hat, Inc. donates a part of its device ID range [1] to QEMU,
to be used for virtual devices. This commit adds several typical
devices that are useful in U-Boot.

[1] https://www.qemu.org/docs/master/specs/pci-ids.html

Signed-off-by: Bin Meng <bmeng@tinylab.org>
---

(no changes since v1)

 include/pci_ids.h | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/include/pci_ids.h b/include/pci_ids.h
index 88b0a64045..b63bf45168 100644
--- a/include/pci_ids.h
+++ b/include/pci_ids.h
@@ -1363,6 +1363,13 @@
 #define PCI_DEVICE_ID_XILINX_HAMMERFALL_DSP 0x3fc5
 #define PCI_DEVICE_ID_XILINX_HAMMERFALL_DSP_MADI 0x3fc6
 
+/* Per https://www.qemu.org/docs/master/specs/pci-ids.html */
+#define PCI_VENDOR_ID_REDHAT            0x1b36
+#define PCI_DEVICE_ID_REDHAT_SDHCI      0x0007
+#define PCI_DEVICE_ID_REDHAT_XHCI       0x000d
+#define PCI_DEVICE_ID_REDHAT_NVME       0x0010
+#define PCI_DEVICE_ID_REDHAT_UFS        0x0013
+
 #define PCI_VENDOR_ID_INIT		0x1101
 
 #define PCI_VENDOR_ID_CREATIVE		0x1102 /* duplicate: ECTIVA */
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH v2 6/9] ufs: Allow mmio registers on the PCI bus
  2023-10-11 13:15 [PATCH v2 0/9] ufs: Add a PCI UFS controller support Bin Meng
                   ` (4 preceding siblings ...)
  2023-10-11 13:15 ` [PATCH v2 5/9] pci_ids: Add Red Hat vendor and device IDs Bin Meng
@ 2023-10-11 13:15 ` Bin Meng
  2023-10-12  3:41   ` Simon Glass
  2023-11-23  4:45   ` Neha Malcom Francis
  2023-10-11 13:15 ` [PATCH v2 7/9] ufs: Add a PCI based UFS controller driver Bin Meng
                   ` (4 subsequent siblings)
  10 siblings, 2 replies; 31+ messages in thread
From: Bin Meng @ 2023-10-11 13:15 UTC (permalink / raw)
  To: Bhupesh Sharma, Neha Malcom Francis; +Cc: Simon Glass, u-boot

Check if the UFS controller is on the PCI bus, and get its register
base address accordingly.

Signed-off-by: Bin Meng <bmeng@tinylab.org>
---

(no changes since v1)

 drivers/ufs/ufs.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/drivers/ufs/ufs.c b/drivers/ufs/ufs.c
index 96801866d3..fb2a607ef1 100644
--- a/drivers/ufs/ufs.c
+++ b/drivers/ufs/ufs.c
@@ -1914,6 +1914,7 @@ int ufshcd_probe(struct udevice *ufs_dev, struct ufs_hba_ops *hba_ops)
 	struct ufs_hba *hba = dev_get_uclass_priv(ufs_dev);
 	struct scsi_plat *scsi_plat;
 	struct udevice *scsi_dev;
+	void __iomem *mmio_base;
 	int err;
 
 	device_find_first_child(ufs_dev, &scsi_dev);
@@ -1927,7 +1928,14 @@ int ufshcd_probe(struct udevice *ufs_dev, struct ufs_hba_ops *hba_ops)
 
 	hba->dev = ufs_dev;
 	hba->ops = hba_ops;
-	hba->mmio_base = dev_read_addr_ptr(ufs_dev);
+
+	if (device_is_on_pci_bus(ufs_dev)) {
+		mmio_base = dm_pci_map_bar(ufs_dev, PCI_BASE_ADDRESS_0, 0, 0,
+					   PCI_REGION_TYPE, PCI_REGION_MEM);
+	} else {
+		mmio_base = dev_read_addr_ptr(ufs_dev);
+	}
+	hba->mmio_base = mmio_base;
 
 	/* Set descriptor lengths to specification defaults */
 	ufshcd_def_desc_sizes(hba);
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH v2 7/9] ufs: Add a PCI based UFS controller driver
  2023-10-11 13:15 [PATCH v2 0/9] ufs: Add a PCI UFS controller support Bin Meng
                   ` (5 preceding siblings ...)
  2023-10-11 13:15 ` [PATCH v2 6/9] ufs: Allow mmio registers on the PCI bus Bin Meng
@ 2023-10-11 13:15 ` Bin Meng
  2023-10-12  3:41   ` Simon Glass
  2023-11-23  4:48   ` Neha Malcom Francis
  2023-10-11 13:15 ` [PATCH v2 8/9] ufs: Handle UFS 3.1 controllers Bin Meng
                   ` (3 subsequent siblings)
  10 siblings, 2 replies; 31+ messages in thread
From: Bin Meng @ 2023-10-11 13:15 UTC (permalink / raw)
  To: Bhupesh Sharma, Neha Malcom Francis; +Cc: Simon Glass, u-boot

This adds a simple PCI based UFS controller driver with a QEMU
emulated UFS controller on the PCI bus.

Requiring QEMU v8.2+.

Signed-off-by: Bin Meng <bmeng@tinylab.org>

---

Changes in v2:
- fix a build warning

 drivers/ufs/Kconfig   | 11 +++++++++++
 drivers/ufs/Makefile  |  1 +
 drivers/ufs/ufs-pci.c | 45 +++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 57 insertions(+)
 create mode 100644 drivers/ufs/ufs-pci.c

diff --git a/drivers/ufs/Kconfig b/drivers/ufs/Kconfig
index 0e0cc58e3d..42797ce052 100644
--- a/drivers/ufs/Kconfig
+++ b/drivers/ufs/Kconfig
@@ -15,6 +15,17 @@ config CADENCE_UFS
 	  This selects the platform driver for the Cadence UFS host
 	  controller present on present TI's J721e devices.
 
+config UFS_PCI
+	bool "PCI bus based UFS Controller support"
+	depends on PCI && UFS
+	help
+	  This selects the PCI UFS Host Controller Interface. Select this if
+	  you have UFS Host Controller with PCI Interface.
+
+	  If you have a controller with this interface, say Y here.
+
+	  If unsure, say N.
+
 config TI_J721E_UFS
 	bool "Glue Layer driver for UFS on TI J721E devices"
 	help
diff --git a/drivers/ufs/Makefile b/drivers/ufs/Makefile
index 4f3344fd4e..13f1e689ef 100644
--- a/drivers/ufs/Makefile
+++ b/drivers/ufs/Makefile
@@ -6,4 +6,5 @@
 obj-$(CONFIG_UFS) += ufs.o ufs-uclass.o
 obj-$(CONFIG_CADENCE_UFS) += cdns-platform.o
 obj-$(CONFIG_TI_J721E_UFS) += ti-j721e-ufs.o
+obj-$(CONFIG_UFS_PCI) += ufs-pci.o
 obj-$(CONFIG_UFS_RENESAS) += ufs-renesas.o
diff --git a/drivers/ufs/ufs-pci.c b/drivers/ufs/ufs-pci.c
new file mode 100644
index 0000000000..ad41358727
--- /dev/null
+++ b/drivers/ufs/ufs-pci.c
@@ -0,0 +1,45 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2023 tinylab.org
+ * Author: Bin Meng <bmeng@tinylab.org>
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <errno.h>
+#include <pci.h>
+#include <ufs.h>
+#include <dm/device_compat.h>
+#include "ufs.h"
+
+static int ufs_pci_bind(struct udevice *dev)
+{
+	struct udevice *scsi_dev;
+
+	return ufs_scsi_bind(dev, &scsi_dev);
+}
+
+static int ufs_pci_probe(struct udevice *dev)
+{
+	int err;
+
+	err = ufshcd_probe(dev, NULL);
+	if (err)
+		dev_err(dev, "%s failed (ret=%d)\n", __func__, err);
+
+	return err;
+}
+
+U_BOOT_DRIVER(ufs_pci) = {
+	.name	= "ufs_pci",
+	.id	= UCLASS_UFS,
+	.bind	= ufs_pci_bind,
+	.probe	= ufs_pci_probe,
+};
+
+static struct pci_device_id ufs_supported[] = {
+	{ PCI_DEVICE(PCI_VENDOR_ID_REDHAT, PCI_DEVICE_ID_REDHAT_UFS) },
+	{},
+};
+
+U_BOOT_PCI_DEVICE(ufs_pci, ufs_supported);
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH v2 8/9] ufs: Handle UFS 3.1 controllers
  2023-10-11 13:15 [PATCH v2 0/9] ufs: Add a PCI UFS controller support Bin Meng
                   ` (6 preceding siblings ...)
  2023-10-11 13:15 ` [PATCH v2 7/9] ufs: Add a PCI based UFS controller driver Bin Meng
@ 2023-10-11 13:15 ` Bin Meng
  2023-10-12  3:41   ` Simon Glass
  2023-11-23  4:48   ` Neha Malcom Francis
  2023-10-11 13:15 ` [PATCH v2 9/9] qemu: riscv: Enable UFS support Bin Meng
                   ` (2 subsequent siblings)
  10 siblings, 2 replies; 31+ messages in thread
From: Bin Meng @ 2023-10-11 13:15 UTC (permalink / raw)
  To: Bhupesh Sharma, Neha Malcom Francis; +Cc: Simon Glass, u-boot

Extend the version check to handle UFS 3.1 controllers as well.
Tested on QEMU emulated UFS 3.1 controller.

Signed-off-by: Bin Meng <bmeng@tinylab.org>
---

(no changes since v1)

 drivers/ufs/ufs.c | 3 ++-
 drivers/ufs/ufs.h | 1 +
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/ufs/ufs.c b/drivers/ufs/ufs.c
index fb2a607ef1..6287ce91a3 100644
--- a/drivers/ufs/ufs.c
+++ b/drivers/ufs/ufs.c
@@ -1953,7 +1953,8 @@ int ufshcd_probe(struct udevice *ufs_dev, struct ufs_hba_ops *hba_ops)
 	    hba->version != UFSHCI_VERSION_11 &&
 	    hba->version != UFSHCI_VERSION_20 &&
 	    hba->version != UFSHCI_VERSION_21 &&
-	    hba->version != UFSHCI_VERSION_30)
+	    hba->version != UFSHCI_VERSION_30 &&
+	    hba->version != UFSHCI_VERSION_31)
 		dev_err(hba->dev, "invalid UFS version 0x%x\n",
 			hba->version);
 
diff --git a/drivers/ufs/ufs.h b/drivers/ufs/ufs.h
index 9daaf03d22..816a5ce0ca 100644
--- a/drivers/ufs/ufs.h
+++ b/drivers/ufs/ufs.h
@@ -782,6 +782,7 @@ enum {
 	UFSHCI_VERSION_20 = 0x00000200, /* 2.0 */
 	UFSHCI_VERSION_21 = 0x00000210, /* 2.1 */
 	UFSHCI_VERSION_30 = 0x00000300, /* 3.0 */
+	UFSHCI_VERSION_31 = 0x00000310, /* 3.1 */
 };
 
 /* Interrupt disable masks */
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 31+ messages in thread

* [PATCH v2 9/9] qemu: riscv: Enable UFS support
  2023-10-11 13:15 [PATCH v2 0/9] ufs: Add a PCI UFS controller support Bin Meng
                   ` (7 preceding siblings ...)
  2023-10-11 13:15 ` [PATCH v2 8/9] ufs: Handle UFS 3.1 controllers Bin Meng
@ 2023-10-11 13:15 ` Bin Meng
  2023-10-12  3:41   ` Simon Glass
  2023-11-23  4:48   ` Neha Malcom Francis
  2023-10-19  5:08 ` [PATCH v2 0/9] ufs: Add a PCI UFS controller support Bin Meng
  2023-11-27 22:27 ` Tom Rini
  10 siblings, 2 replies; 31+ messages in thread
From: Bin Meng @ 2023-10-11 13:15 UTC (permalink / raw)
  To: Bhupesh Sharma, Neha Malcom Francis; +Cc: Simon Glass, u-boot

This enables UFS support for QEMU RISC-V 'virt' machine.

Signed-off-by: Bin Meng <bmeng@tinylab.org>

---

(no changes since v1)

 board/emulation/qemu-riscv/Kconfig | 2 ++
 doc/board/emulation/qemu-riscv.rst | 8 +++++++-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/board/emulation/qemu-riscv/Kconfig b/board/emulation/qemu-riscv/Kconfig
index d56b4b5bc1..f3ee1f6e90 100644
--- a/board/emulation/qemu-riscv/Kconfig
+++ b/board/emulation/qemu-riscv/Kconfig
@@ -82,5 +82,7 @@ config BOARD_SPECIFIC_OPTIONS # dummy
 	imply USB_XHCI_PCI
 	imply USB_KEYBOARD
 	imply CMD_USB
+	imply UFS
+	imply UFS_PCI
 
 endif
diff --git a/doc/board/emulation/qemu-riscv.rst b/doc/board/emulation/qemu-riscv.rst
index 61137bcbf1..8a5eb1eda5 100644
--- a/doc/board/emulation/qemu-riscv.rst
+++ b/doc/board/emulation/qemu-riscv.rst
@@ -131,7 +131,13 @@ An attached disk can be emulated in RISC-V virt machine by adding::
     -drive if=none,file=riscv64.img,format=raw,id=mydisk \
     -device ide-hd,drive=mydisk,bus=ahci.0
 
-You will have to run 'scsi scan' to use it.
+or alternatively attach an emulated UFS::
+
+    -device ufs,id=ufs0 \
+    -drive if=none,file=test.img,format=raw,id=lun0 \
+    -device ufs-lu,drive=lun0,bus=ufs0
+
+You will have to run 'scsi scan' to use them.
 
 A video console can be emulated in RISC-V virt machine by removing "-nographic"
 and adding::
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 31+ messages in thread

* Re: [PATCH v2 2/9] ufs: Add a line feed to the end of some dev_xxx() messages
  2023-10-11 13:15 ` [PATCH v2 2/9] ufs: Add a line feed to the end of some dev_xxx() messages Bin Meng
@ 2023-10-12  3:41   ` Simon Glass
  2023-11-23  4:25   ` Neha Malcom Francis
  1 sibling, 0 replies; 31+ messages in thread
From: Simon Glass @ 2023-10-12  3:41 UTC (permalink / raw)
  To: bmeng; +Cc: Bhupesh Sharma, Neha Malcom Francis, u-boot

On Wed, 11 Oct 2023 at 06:16, Bin Meng <bmeng@tinylab.org> wrote:
>
> Add a line feed to improve readability of some dev_xxx() messages.
>
> Signed-off-by: Bin Meng <bmeng@tinylab.org>
> ---
>
> (no changes since v1)
>
>  drivers/ufs/ufs.c | 16 ++++++++--------
>  1 file changed, 8 insertions(+), 8 deletions(-)

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH v2 3/9] cmd: kconfig: Make ufs prompt look similar to other commands
  2023-10-11 13:15 ` [PATCH v2 3/9] cmd: kconfig: Make ufs prompt look similar to other commands Bin Meng
@ 2023-10-12  3:41   ` Simon Glass
  2023-11-23  4:25   ` Neha Malcom Francis
  1 sibling, 0 replies; 31+ messages in thread
From: Simon Glass @ 2023-10-12  3:41 UTC (permalink / raw)
  To: bmeng; +Cc: Bhupesh Sharma, Neha Malcom Francis, u-boot

On Wed, 11 Oct 2023 at 06:16, Bin Meng <bmeng@tinylab.org> wrote:
>
> At present the 'ufs' command prompt does not look similar like other
> commands. Update it.
>
> Signed-off-by: Bin Meng <bmeng@tinylab.org>
> ---
>
> (no changes since v1)
>
>  cmd/Kconfig | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH v2 1/9] ufs: Correct the UFS terminlogy
  2023-10-11 13:15 ` [PATCH v2 1/9] ufs: Correct the UFS terminlogy Bin Meng
@ 2023-10-12  3:41   ` Simon Glass
  2023-11-23  4:24   ` Neha Malcom Francis
  1 sibling, 0 replies; 31+ messages in thread
From: Simon Glass @ 2023-10-12  3:41 UTC (permalink / raw)
  To: bmeng; +Cc: Bhupesh Sharma, Neha Malcom Francis, u-boot

On Wed, 11 Oct 2023 at 06:16, Bin Meng <bmeng@tinylab.org> wrote:
>
> UFS stands for Universal Flash Storage, not Subsytem.
>
> Signed-off-by: Bin Meng <bmeng@tinylab.org>
> ---
>
> (no changes since v1)
>
>  cmd/Kconfig              | 2 +-
>  drivers/ufs/ufs-uclass.c | 2 +-
>  drivers/ufs/ufs.c        | 2 +-
>  3 files changed, 3 insertions(+), 3 deletions(-)

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH v2 4/9] cmd: ufs: Correct the help text
  2023-10-11 13:15 ` [PATCH v2 4/9] cmd: ufs: Correct the help text Bin Meng
@ 2023-10-12  3:41   ` Simon Glass
  2023-11-23  4:28   ` Neha Malcom Francis
  1 sibling, 0 replies; 31+ messages in thread
From: Simon Glass @ 2023-10-12  3:41 UTC (permalink / raw)
  To: bmeng; +Cc: Bhupesh Sharma, Neha Malcom Francis, u-boot

On Wed, 11 Oct 2023 at 06:16, Bin Meng <bmeng@tinylab.org> wrote:
>
> Remove the additional space and use "sub-system" for consistency
> with other commands like "scsi" and "usb".
>
> Signed-off-by: Bin Meng <bmeng@tinylab.org>
> ---
>
> (no changes since v1)
>
>  cmd/ufs.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH v2 5/9] pci_ids: Add Red Hat vendor and device IDs
  2023-10-11 13:15 ` [PATCH v2 5/9] pci_ids: Add Red Hat vendor and device IDs Bin Meng
@ 2023-10-12  3:41   ` Simon Glass
  2023-11-23  4:30   ` Neha Malcom Francis
  1 sibling, 0 replies; 31+ messages in thread
From: Simon Glass @ 2023-10-12  3:41 UTC (permalink / raw)
  To: bmeng; +Cc: Bhupesh Sharma, Neha Malcom Francis, u-boot

On Wed, 11 Oct 2023 at 06:16, Bin Meng <bmeng@tinylab.org> wrote:
>
> Red Hat, Inc. donates a part of its device ID range [1] to QEMU,
> to be used for virtual devices. This commit adds several typical
> devices that are useful in U-Boot.
>
> [1] https://www.qemu.org/docs/master/specs/pci-ids.html
>
> Signed-off-by: Bin Meng <bmeng@tinylab.org>
> ---
>
> (no changes since v1)
>
>  include/pci_ids.h | 7 +++++++
>  1 file changed, 7 insertions(+)

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH v2 6/9] ufs: Allow mmio registers on the PCI bus
  2023-10-11 13:15 ` [PATCH v2 6/9] ufs: Allow mmio registers on the PCI bus Bin Meng
@ 2023-10-12  3:41   ` Simon Glass
  2023-11-23  4:45   ` Neha Malcom Francis
  1 sibling, 0 replies; 31+ messages in thread
From: Simon Glass @ 2023-10-12  3:41 UTC (permalink / raw)
  To: bmeng; +Cc: Bhupesh Sharma, Neha Malcom Francis, u-boot

On Wed, 11 Oct 2023 at 06:16, Bin Meng <bmeng@tinylab.org> wrote:
>
> Check if the UFS controller is on the PCI bus, and get its register
> base address accordingly.
>
> Signed-off-by: Bin Meng <bmeng@tinylab.org>
> ---
>
> (no changes since v1)
>
>  drivers/ufs/ufs.c | 10 +++++++++-
>  1 file changed, 9 insertions(+), 1 deletion(-)
>

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH v2 7/9] ufs: Add a PCI based UFS controller driver
  2023-10-11 13:15 ` [PATCH v2 7/9] ufs: Add a PCI based UFS controller driver Bin Meng
@ 2023-10-12  3:41   ` Simon Glass
  2023-11-23  4:48   ` Neha Malcom Francis
  1 sibling, 0 replies; 31+ messages in thread
From: Simon Glass @ 2023-10-12  3:41 UTC (permalink / raw)
  To: bmeng; +Cc: Bhupesh Sharma, Neha Malcom Francis, u-boot

On Wed, 11 Oct 2023 at 06:16, Bin Meng <bmeng@tinylab.org> wrote:
>
> This adds a simple PCI based UFS controller driver with a QEMU
> emulated UFS controller on the PCI bus.
>
> Requiring QEMU v8.2+.
>
> Signed-off-by: Bin Meng <bmeng@tinylab.org>
>
> ---
>
> Changes in v2:
> - fix a build warning
>
>  drivers/ufs/Kconfig   | 11 +++++++++++
>  drivers/ufs/Makefile  |  1 +
>  drivers/ufs/ufs-pci.c | 45 +++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 57 insertions(+)
>  create mode 100644 drivers/ufs/ufs-pci.c

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH v2 8/9] ufs: Handle UFS 3.1 controllers
  2023-10-11 13:15 ` [PATCH v2 8/9] ufs: Handle UFS 3.1 controllers Bin Meng
@ 2023-10-12  3:41   ` Simon Glass
  2023-11-23  4:48   ` Neha Malcom Francis
  1 sibling, 0 replies; 31+ messages in thread
From: Simon Glass @ 2023-10-12  3:41 UTC (permalink / raw)
  To: bmeng; +Cc: Bhupesh Sharma, Neha Malcom Francis, u-boot

On Wed, 11 Oct 2023 at 06:16, Bin Meng <bmeng@tinylab.org> wrote:
>
> Extend the version check to handle UFS 3.1 controllers as well.
> Tested on QEMU emulated UFS 3.1 controller.
>
> Signed-off-by: Bin Meng <bmeng@tinylab.org>
> ---
>
> (no changes since v1)
>
>  drivers/ufs/ufs.c | 3 ++-
>  drivers/ufs/ufs.h | 1 +
>  2 files changed, 3 insertions(+), 1 deletion(-)
>

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH v2 9/9] qemu: riscv: Enable UFS support
  2023-10-11 13:15 ` [PATCH v2 9/9] qemu: riscv: Enable UFS support Bin Meng
@ 2023-10-12  3:41   ` Simon Glass
  2023-11-23  4:48   ` Neha Malcom Francis
  1 sibling, 0 replies; 31+ messages in thread
From: Simon Glass @ 2023-10-12  3:41 UTC (permalink / raw)
  To: bmeng; +Cc: Bhupesh Sharma, Neha Malcom Francis, u-boot

On Wed, 11 Oct 2023 at 06:16, Bin Meng <bmeng@tinylab.org> wrote:
>
> This enables UFS support for QEMU RISC-V 'virt' machine.
>
> Signed-off-by: Bin Meng <bmeng@tinylab.org>
>
> ---
>
> (no changes since v1)
>
>  board/emulation/qemu-riscv/Kconfig | 2 ++
>  doc/board/emulation/qemu-riscv.rst | 8 +++++++-
>  2 files changed, 9 insertions(+), 1 deletion(-)

Reviewed-by: Simon Glass <sjg@chromium.org>

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH v2 0/9] ufs: Add a PCI UFS controller support
  2023-10-11 13:15 [PATCH v2 0/9] ufs: Add a PCI UFS controller support Bin Meng
                   ` (8 preceding siblings ...)
  2023-10-11 13:15 ` [PATCH v2 9/9] qemu: riscv: Enable UFS support Bin Meng
@ 2023-10-19  5:08 ` Bin Meng
  2023-10-19 12:48   ` Marek Vasut
  2023-11-27 22:27 ` Tom Rini
  10 siblings, 1 reply; 31+ messages in thread
From: Bin Meng @ 2023-10-19  5:08 UTC (permalink / raw)
  To: Bin Meng, Marek Vasut
  Cc: Bhupesh Sharma, Neha Malcom Francis, Simon Glass, u-boot

+ Marek,

On Wed, Oct 11, 2023 at 9:16 PM Bin Meng <bmeng@tinylab.org> wrote:
>
> This adds a PCI UFS controller support and enables the support on
> QEMU RISC-V for testing.
>
> Requiring QEMU v8.2+.
>
> This series is avaiable at u-boot-x86/ufs for testing.
>
> Changes in v2:
> - fix a build warning
>
> Bin Meng (9):
>   ufs: Correct the UFS terminlogy
>   ufs: Add a line feed to the end of some dev_xxx() messages
>   cmd: kconfig: Make ufs prompt look similar to other commands
>   cmd: ufs: Correct the help text
>   pci_ids: Add Red Hat vendor and device IDs
>   ufs: Allow mmio registers on the PCI bus
>   ufs: Add a PCI based UFS controller driver
>   ufs: Handle UFS 3.1 controllers
>   qemu: riscv: Enable UFS support
>
>  board/emulation/qemu-riscv/Kconfig |  2 ++
>  cmd/Kconfig                        |  2 +-
>  cmd/ufs.c                          |  2 +-
>  doc/board/emulation/qemu-riscv.rst |  8 +++++-
>  drivers/ufs/Kconfig                | 11 ++++++++
>  drivers/ufs/Makefile               |  1 +
>  drivers/ufs/ufs-pci.c              | 45 ++++++++++++++++++++++++++++++
>  drivers/ufs/ufs-uclass.c           |  2 +-
>  drivers/ufs/ufs.c                  | 31 ++++++++++++--------
>  drivers/ufs/ufs.h                  |  1 +
>  include/pci_ids.h                  |  7 +++++
>  11 files changed, 97 insertions(+), 15 deletions(-)
>  create mode 100644 drivers/ufs/ufs-pci.c
>

Ping?

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH v2 0/9] ufs: Add a PCI UFS controller support
  2023-10-19  5:08 ` [PATCH v2 0/9] ufs: Add a PCI UFS controller support Bin Meng
@ 2023-10-19 12:48   ` Marek Vasut
  0 siblings, 0 replies; 31+ messages in thread
From: Marek Vasut @ 2023-10-19 12:48 UTC (permalink / raw)
  To: Bin Meng, Bin Meng
  Cc: Bhupesh Sharma, Neha Malcom Francis, Simon Glass, u-boot

On 10/19/23 07:08, Bin Meng wrote:
> + Marek,
> 
> On Wed, Oct 11, 2023 at 9:16 PM Bin Meng <bmeng@tinylab.org> wrote:
>>
>> This adds a PCI UFS controller support and enables the support on
>> QEMU RISC-V for testing.
>>
>> Requiring QEMU v8.2+.
>>
>> This series is avaiable at u-boot-x86/ufs for testing.
>>
>> Changes in v2:
>> - fix a build warning
>>
>> Bin Meng (9):
>>    ufs: Correct the UFS terminlogy
>>    ufs: Add a line feed to the end of some dev_xxx() messages
>>    cmd: kconfig: Make ufs prompt look similar to other commands
>>    cmd: ufs: Correct the help text
>>    pci_ids: Add Red Hat vendor and device IDs
>>    ufs: Allow mmio registers on the PCI bus
>>    ufs: Add a PCI based UFS controller driver
>>    ufs: Handle UFS 3.1 controllers
>>    qemu: riscv: Enable UFS support
>>
>>   board/emulation/qemu-riscv/Kconfig |  2 ++
>>   cmd/Kconfig                        |  2 +-
>>   cmd/ufs.c                          |  2 +-
>>   doc/board/emulation/qemu-riscv.rst |  8 +++++-
>>   drivers/ufs/Kconfig                | 11 ++++++++
>>   drivers/ufs/Makefile               |  1 +
>>   drivers/ufs/ufs-pci.c              | 45 ++++++++++++++++++++++++++++++
>>   drivers/ufs/ufs-uclass.c           |  2 +-
>>   drivers/ufs/ufs.c                  | 31 ++++++++++++--------
>>   drivers/ufs/ufs.h                  |  1 +
>>   include/pci_ids.h                  |  7 +++++
>>   11 files changed, 97 insertions(+), 15 deletions(-)
>>   create mode 100644 drivers/ufs/ufs-pci.c

Thanks, uh ... could you please just CC me on V3 (if there is one) ?

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH v2 1/9] ufs: Correct the UFS terminlogy
  2023-10-11 13:15 ` [PATCH v2 1/9] ufs: Correct the UFS terminlogy Bin Meng
  2023-10-12  3:41   ` Simon Glass
@ 2023-11-23  4:24   ` Neha Malcom Francis
  1 sibling, 0 replies; 31+ messages in thread
From: Neha Malcom Francis @ 2023-11-23  4:24 UTC (permalink / raw)
  To: Bin Meng, Bhupesh Sharma; +Cc: Simon Glass, u-boot

Hi Bin,

On 11/10/23 18:45, Bin Meng wrote:
> UFS stands for Universal Flash Storage, not Subsytem.
> 
> Signed-off-by: Bin Meng <bmeng@tinylab.org>
> ---
> 
> (no changes since v1)
> 
>   cmd/Kconfig              | 2 +-
>   drivers/ufs/ufs-uclass.c | 2 +-
>   drivers/ufs/ufs.c        | 2 +-
>   3 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/cmd/Kconfig b/cmd/Kconfig
> index 6470b138d2..a59c67e333 100644
> --- a/cmd/Kconfig
> +++ b/cmd/Kconfig
> @@ -1536,7 +1536,7 @@ config CMD_TSI148
>   	  Turndra tsi148 device. See the command help for full details.
>   
>   config CMD_UFS
> -	bool "Enable UFS - Universal Flash Subsystem commands"
> +	bool "Enable UFS - Universal Flash Storage commands"
>   	depends on UFS
>   	help
>   	  "This provides commands to initialise and configure universal flash
> diff --git a/drivers/ufs/ufs-uclass.c b/drivers/ufs/ufs-uclass.c
> index ceea30c4a9..ffae811d46 100644
> --- a/drivers/ufs/ufs-uclass.c
> +++ b/drivers/ufs/ufs-uclass.c
> @@ -1,6 +1,6 @@
>   // SPDX-License-Identifier: GPL-2.0
>   /**
> - * ufs-uclass.c - Universal Flash Subsystem (UFS) Uclass driver
> + * ufs-uclass.c - Universal Flash Storage (UFS) Uclass driver
>    *
>    * Copyright (C) 2019 Texas Instruments Incorporated - http://www.ti.com
>    */
> diff --git a/drivers/ufs/ufs.c b/drivers/ufs/ufs.c
> index 7c48d57f99..f534d6e29f 100644
> --- a/drivers/ufs/ufs.c
> +++ b/drivers/ufs/ufs.c
> @@ -1,6 +1,6 @@
>   // SPDX-License-Identifier: GPL-2.0+
>   /**
> - * ufs.c - Universal Flash Subsystem (UFS) driver
> + * ufs.c - Universal Flash Storage (UFS) driver
>    *
>    * Taken from Linux Kernel v5.2 (drivers/scsi/ufs/ufshcd.c) and ported
>    * to u-boot.

Reviewed-by: Neha Malcom Francis <n-francis@ti.com>

-- 
Thanking You
Neha Malcom Francis

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH v2 2/9] ufs: Add a line feed to the end of some dev_xxx() messages
  2023-10-11 13:15 ` [PATCH v2 2/9] ufs: Add a line feed to the end of some dev_xxx() messages Bin Meng
  2023-10-12  3:41   ` Simon Glass
@ 2023-11-23  4:25   ` Neha Malcom Francis
  1 sibling, 0 replies; 31+ messages in thread
From: Neha Malcom Francis @ 2023-11-23  4:25 UTC (permalink / raw)
  To: Bin Meng, Bhupesh Sharma; +Cc: Simon Glass, u-boot

Hi Bin,

On 11/10/23 18:45, Bin Meng wrote:
> Add a line feed to improve readability of some dev_xxx() messages.
> 
> Signed-off-by: Bin Meng <bmeng@tinylab.org>
> ---
> 
> (no changes since v1)
> 
>   drivers/ufs/ufs.c | 16 ++++++++--------
>   1 file changed, 8 insertions(+), 8 deletions(-)
> 
> diff --git a/drivers/ufs/ufs.c b/drivers/ufs/ufs.c
> index f534d6e29f..96801866d3 100644
> --- a/drivers/ufs/ufs.c
> +++ b/drivers/ufs/ufs.c
> @@ -320,7 +320,7 @@ static int ufshcd_disable_tx_lcc(struct ufs_hba *hba, bool peer)
>   					UIC_ARG_MPHY_TX_GEN_SEL_INDEX(i)),
>   					0);
>   		if (err) {
> -			dev_err(hba->dev, "%s: TX LCC Disable failed, peer = %d, lane = %d, err = %d",
> +			dev_err(hba->dev, "%s: TX LCC Disable failed, peer = %d, lane = %d, err = %d\n",
>   				__func__, peer, i, err);
>   			break;
>   		}
> @@ -441,7 +441,7 @@ static int ufshcd_make_hba_operational(struct ufs_hba *hba)
>   		ufshcd_enable_run_stop_reg(hba);
>   	} else {
>   		dev_err(hba->dev,
> -			"Host controller not ready to process requests");
> +			"Host controller not ready to process requests\n");
>   		err = -EIO;
>   		goto out;
>   	}
> @@ -930,7 +930,7 @@ static int ufshcd_copy_query_response(struct ufs_hba *hba)
>   			memcpy(hba->dev_cmd.query.descriptor, descp, resp_len);
>   		} else {
>   			dev_warn(hba->dev,
> -				 "%s: Response size is bigger than buffer",
> +				 "%s: Response size is bigger than buffer\n",
>   				 __func__);
>   			return -EINVAL;
>   		}
> @@ -1179,11 +1179,11 @@ static int ufshcd_read_desc_length(struct ufs_hba *hba, enum desc_idn desc_id,
>   					    &header_len);
>   
>   	if (ret) {
> -		dev_err(hba->dev, "%s: Failed to get descriptor header id %d",
> +		dev_err(hba->dev, "%s: Failed to get descriptor header id %d\n",
>   			__func__, desc_id);
>   		return ret;
>   	} else if (desc_id != header[QUERY_DESC_DESC_TYPE_OFFSET]) {
> -		dev_warn(hba->dev, "%s: descriptor header id %d and desc_id %d mismatch",
> +		dev_warn(hba->dev, "%s: descriptor header id %d and desc_id %d mismatch\n",
>   			 __func__, header[QUERY_DESC_DESC_TYPE_OFFSET],
>   			 desc_id);
>   		ret = -EINVAL;
> @@ -1302,7 +1302,7 @@ int ufshcd_read_desc_param(struct ufs_hba *hba, enum desc_idn desc_id,
>   
>   	/* Sanity checks */
>   	if (ret || !buff_len) {
> -		dev_err(hba->dev, "%s: Failed to get full descriptor length",
> +		dev_err(hba->dev, "%s: Failed to get full descriptor length\n",
>   			__func__);
>   		return ret;
>   	}
> @@ -1323,14 +1323,14 @@ int ufshcd_read_desc_param(struct ufs_hba *hba, enum desc_idn desc_id,
>   					    &buff_len);
>   
>   	if (ret) {
> -		dev_err(hba->dev, "%s: Failed reading descriptor. desc_id %d, desc_index %d, param_offset %d, ret %d",
> +		dev_err(hba->dev, "%s: Failed reading descriptor. desc_id %d, desc_index %d, param_offset %d, ret %d\n",
>   			__func__, desc_id, desc_index, param_offset, ret);
>   		goto out;
>   	}
>   
>   	/* Sanity check */
>   	if (desc_buf[QUERY_DESC_DESC_TYPE_OFFSET] != desc_id) {
> -		dev_err(hba->dev, "%s: invalid desc_id %d in descriptor header",
> +		dev_err(hba->dev, "%s: invalid desc_id %d in descriptor header\n",
>   			__func__, desc_buf[QUERY_DESC_DESC_TYPE_OFFSET]);
>   		ret = -EINVAL;
>   		goto out;

Reviewed-by: Neha Malcom Francis <n-francis@ti.com>

-- 
Thanking You
Neha Malcom Francis

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH v2 3/9] cmd: kconfig: Make ufs prompt look similar to other commands
  2023-10-11 13:15 ` [PATCH v2 3/9] cmd: kconfig: Make ufs prompt look similar to other commands Bin Meng
  2023-10-12  3:41   ` Simon Glass
@ 2023-11-23  4:25   ` Neha Malcom Francis
  1 sibling, 0 replies; 31+ messages in thread
From: Neha Malcom Francis @ 2023-11-23  4:25 UTC (permalink / raw)
  To: Bin Meng, Bhupesh Sharma; +Cc: Simon Glass, u-boot

Hi Bin,

On 11/10/23 18:45, Bin Meng wrote:
> At present the 'ufs' command prompt does not look similar like other
> commands. Update it.
> 
> Signed-off-by: Bin Meng <bmeng@tinylab.org>
> ---
> 
> (no changes since v1)
> 
>   cmd/Kconfig | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/cmd/Kconfig b/cmd/Kconfig
> index a59c67e333..0b4e76c262 100644
> --- a/cmd/Kconfig
> +++ b/cmd/Kconfig
> @@ -1536,7 +1536,7 @@ config CMD_TSI148
>   	  Turndra tsi148 device. See the command help for full details.
>   
>   config CMD_UFS
> -	bool "Enable UFS - Universal Flash Storage commands"
> +	bool "ufs - Universal Flash Storage commands"
>   	depends on UFS
>   	help
>   	  "This provides commands to initialise and configure universal flash

Reviewed-by: Neha Malcom Francis <n-francis@ti.com>

-- 
Thanking You
Neha Malcom Francis

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH v2 4/9] cmd: ufs: Correct the help text
  2023-10-11 13:15 ` [PATCH v2 4/9] cmd: ufs: Correct the help text Bin Meng
  2023-10-12  3:41   ` Simon Glass
@ 2023-11-23  4:28   ` Neha Malcom Francis
  1 sibling, 0 replies; 31+ messages in thread
From: Neha Malcom Francis @ 2023-11-23  4:28 UTC (permalink / raw)
  To: Bin Meng, Bhupesh Sharma; +Cc: Simon Glass, u-boot

Hi Bin,

On 11/10/23 18:45, Bin Meng wrote:
> Remove the additional space and use "sub-system" for consistency
> with other commands like "scsi" and "usb".
> 
> Signed-off-by: Bin Meng <bmeng@tinylab.org>
> ---
> 
> (no changes since v1)
> 
>   cmd/ufs.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/cmd/ufs.c b/cmd/ufs.c
> index 143e946370..2c8d88df18 100644
> --- a/cmd/ufs.c
> +++ b/cmd/ufs.c
> @@ -32,6 +32,6 @@ static int do_ufs(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
>   }
>   
>   U_BOOT_CMD(ufs, 3, 1, do_ufs,
> -	   "UFS  sub system",
> +	   "UFS sub-system",
>   	   "init [dev] - init UFS subsystem\n"
>   );

Reviewed-by: Neha Malcom Francis <n-francis@ti.com>

-- 
Thanking You
Neha Malcom Francis

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH v2 5/9] pci_ids: Add Red Hat vendor and device IDs
  2023-10-11 13:15 ` [PATCH v2 5/9] pci_ids: Add Red Hat vendor and device IDs Bin Meng
  2023-10-12  3:41   ` Simon Glass
@ 2023-11-23  4:30   ` Neha Malcom Francis
  1 sibling, 0 replies; 31+ messages in thread
From: Neha Malcom Francis @ 2023-11-23  4:30 UTC (permalink / raw)
  To: Bin Meng, Bhupesh Sharma; +Cc: Simon Glass, u-boot

Hi Bin

On 11/10/23 18:45, Bin Meng wrote:
> Red Hat, Inc. donates a part of its device ID range [1] to QEMU,
> to be used for virtual devices. This commit adds several typical
> devices that are useful in U-Boot.
> 
> [1] https://www.qemu.org/docs/master/specs/pci-ids.html
> 
> Signed-off-by: Bin Meng <bmeng@tinylab.org>
> ---
> 
> (no changes since v1)
> 
>   include/pci_ids.h | 7 +++++++
>   1 file changed, 7 insertions(+)
> 
> diff --git a/include/pci_ids.h b/include/pci_ids.h
> index 88b0a64045..b63bf45168 100644
> --- a/include/pci_ids.h
> +++ b/include/pci_ids.h
> @@ -1363,6 +1363,13 @@
>   #define PCI_DEVICE_ID_XILINX_HAMMERFALL_DSP 0x3fc5
>   #define PCI_DEVICE_ID_XILINX_HAMMERFALL_DSP_MADI 0x3fc6
>   
> +/* Per https://www.qemu.org/docs/master/specs/pci-ids.html */
> +#define PCI_VENDOR_ID_REDHAT            0x1b36
> +#define PCI_DEVICE_ID_REDHAT_SDHCI      0x0007
> +#define PCI_DEVICE_ID_REDHAT_XHCI       0x000d
> +#define PCI_DEVICE_ID_REDHAT_NVME       0x0010
> +#define PCI_DEVICE_ID_REDHAT_UFS        0x0013
> +
>   #define PCI_VENDOR_ID_INIT		0x1101
>   
>   #define PCI_VENDOR_ID_CREATIVE		0x1102 /* duplicate: ECTIVA */

Reviewed-by: Neha Malcom Francis <n-francis@ti.com>

-- 
Thanking You
Neha Malcom Francis

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH v2 6/9] ufs: Allow mmio registers on the PCI bus
  2023-10-11 13:15 ` [PATCH v2 6/9] ufs: Allow mmio registers on the PCI bus Bin Meng
  2023-10-12  3:41   ` Simon Glass
@ 2023-11-23  4:45   ` Neha Malcom Francis
  1 sibling, 0 replies; 31+ messages in thread
From: Neha Malcom Francis @ 2023-11-23  4:45 UTC (permalink / raw)
  To: Bin Meng, Bhupesh Sharma; +Cc: Simon Glass, u-boot

Hi Bin,

On 11/10/23 18:45, Bin Meng wrote:
> Check if the UFS controller is on the PCI bus, and get its register
> base address accordingly.
> 
> Signed-off-by: Bin Meng <bmeng@tinylab.org>
> ---
> 
> (no changes since v1)
> 
>   drivers/ufs/ufs.c | 10 +++++++++-
>   1 file changed, 9 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/ufs/ufs.c b/drivers/ufs/ufs.c
> index 96801866d3..fb2a607ef1 100644
> --- a/drivers/ufs/ufs.c
> +++ b/drivers/ufs/ufs.c
> @@ -1914,6 +1914,7 @@ int ufshcd_probe(struct udevice *ufs_dev, struct ufs_hba_ops *hba_ops)
>   	struct ufs_hba *hba = dev_get_uclass_priv(ufs_dev);
>   	struct scsi_plat *scsi_plat;
>   	struct udevice *scsi_dev;
> +	void __iomem *mmio_base;
>   	int err;
>   
>   	device_find_first_child(ufs_dev, &scsi_dev);
> @@ -1927,7 +1928,14 @@ int ufshcd_probe(struct udevice *ufs_dev, struct ufs_hba_ops *hba_ops)
>   
>   	hba->dev = ufs_dev;
>   	hba->ops = hba_ops;
> -	hba->mmio_base = dev_read_addr_ptr(ufs_dev);
> +
> +	if (device_is_on_pci_bus(ufs_dev)) {
> +		mmio_base = dm_pci_map_bar(ufs_dev, PCI_BASE_ADDRESS_0, 0, 0,
> +					   PCI_REGION_TYPE, PCI_REGION_MEM);
> +	} else {
> +		mmio_base = dev_read_addr_ptr(ufs_dev);
> +	}
> +	hba->mmio_base = mmio_base;
>   
>   	/* Set descriptor lengths to specification defaults */
>   	ufshcd_def_desc_sizes(hba);

Reviewed-by: Neha Malcom Francis <n-francis@ti.com>

-- 
Thanking You
Neha Malcom Francis

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH v2 7/9] ufs: Add a PCI based UFS controller driver
  2023-10-11 13:15 ` [PATCH v2 7/9] ufs: Add a PCI based UFS controller driver Bin Meng
  2023-10-12  3:41   ` Simon Glass
@ 2023-11-23  4:48   ` Neha Malcom Francis
  1 sibling, 0 replies; 31+ messages in thread
From: Neha Malcom Francis @ 2023-11-23  4:48 UTC (permalink / raw)
  To: Bin Meng, Bhupesh Sharma; +Cc: Simon Glass, u-boot

Hi Bin,

On 11/10/23 18:45, Bin Meng wrote:
> This adds a simple PCI based UFS controller driver with a QEMU
> emulated UFS controller on the PCI bus.
> 
> Requiring QEMU v8.2+.
> 
> Signed-off-by: Bin Meng <bmeng@tinylab.org>
> 
> ---
> 
> Changes in v2:
> - fix a build warning
> 
>   drivers/ufs/Kconfig   | 11 +++++++++++
>   drivers/ufs/Makefile  |  1 +
>   drivers/ufs/ufs-pci.c | 45 +++++++++++++++++++++++++++++++++++++++++++
>   3 files changed, 57 insertions(+)
>   create mode 100644 drivers/ufs/ufs-pci.c
> 

Reviewed-by: Neha Malcom Francis <n-francis@ti.com>

-- 
Thanking You
Neha Malcom Francis

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH v2 8/9] ufs: Handle UFS 3.1 controllers
  2023-10-11 13:15 ` [PATCH v2 8/9] ufs: Handle UFS 3.1 controllers Bin Meng
  2023-10-12  3:41   ` Simon Glass
@ 2023-11-23  4:48   ` Neha Malcom Francis
  1 sibling, 0 replies; 31+ messages in thread
From: Neha Malcom Francis @ 2023-11-23  4:48 UTC (permalink / raw)
  To: Bin Meng, Bhupesh Sharma; +Cc: Simon Glass, u-boot

Hi Bin

On 11/10/23 18:45, Bin Meng wrote:
> Extend the version check to handle UFS 3.1 controllers as well.
> Tested on QEMU emulated UFS 3.1 controller.
> 
> Signed-off-by: Bin Meng <bmeng@tinylab.org>
> ---
> 
> (no changes since v1)
> 
>   drivers/ufs/ufs.c | 3 ++-
>   drivers/ufs/ufs.h | 1 +
>   2 files changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/ufs/ufs.c b/drivers/ufs/ufs.c
> index fb2a607ef1..6287ce91a3 100644
> --- a/drivers/ufs/ufs.c
> +++ b/drivers/ufs/ufs.c
> @@ -1953,7 +1953,8 @@ int ufshcd_probe(struct udevice *ufs_dev, struct ufs_hba_ops *hba_ops)
>   	    hba->version != UFSHCI_VERSION_11 &&
>   	    hba->version != UFSHCI_VERSION_20 &&
>   	    hba->version != UFSHCI_VERSION_21 &&
> -	    hba->version != UFSHCI_VERSION_30)
> +	    hba->version != UFSHCI_VERSION_30 &&
> +	    hba->version != UFSHCI_VERSION_31)
>   		dev_err(hba->dev, "invalid UFS version 0x%x\n",
>   			hba->version);
>   
> diff --git a/drivers/ufs/ufs.h b/drivers/ufs/ufs.h
> index 9daaf03d22..816a5ce0ca 100644
> --- a/drivers/ufs/ufs.h
> +++ b/drivers/ufs/ufs.h
> @@ -782,6 +782,7 @@ enum {
>   	UFSHCI_VERSION_20 = 0x00000200, /* 2.0 */
>   	UFSHCI_VERSION_21 = 0x00000210, /* 2.1 */
>   	UFSHCI_VERSION_30 = 0x00000300, /* 3.0 */
> +	UFSHCI_VERSION_31 = 0x00000310, /* 3.1 */
>   };
>   
>   /* Interrupt disable masks */

Reviewed-by: Neha Malcom Francis <n-francis@ti.com>

-- 
Thanking You
Neha Malcom Francis

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH v2 9/9] qemu: riscv: Enable UFS support
  2023-10-11 13:15 ` [PATCH v2 9/9] qemu: riscv: Enable UFS support Bin Meng
  2023-10-12  3:41   ` Simon Glass
@ 2023-11-23  4:48   ` Neha Malcom Francis
  1 sibling, 0 replies; 31+ messages in thread
From: Neha Malcom Francis @ 2023-11-23  4:48 UTC (permalink / raw)
  To: Bin Meng, Bhupesh Sharma; +Cc: Simon Glass, u-boot

Hi Bin

On 11/10/23 18:45, Bin Meng wrote:
> This enables UFS support for QEMU RISC-V 'virt' machine.
> 
> Signed-off-by: Bin Meng <bmeng@tinylab.org>
> 
> ---
> 
> (no changes since v1)
> 
>   board/emulation/qemu-riscv/Kconfig | 2 ++
>   doc/board/emulation/qemu-riscv.rst | 8 +++++++-
>   2 files changed, 9 insertions(+), 1 deletion(-)
> 
> diff --git a/board/emulation/qemu-riscv/Kconfig b/board/emulation/qemu-riscv/Kconfig
> index d56b4b5bc1..f3ee1f6e90 100644
> --- a/board/emulation/qemu-riscv/Kconfig
> +++ b/board/emulation/qemu-riscv/Kconfig
> @@ -82,5 +82,7 @@ config BOARD_SPECIFIC_OPTIONS # dummy
>   	imply USB_XHCI_PCI
>   	imply USB_KEYBOARD
>   	imply CMD_USB
> +	imply UFS
> +	imply UFS_PCI
>   
>   endif
> diff --git a/doc/board/emulation/qemu-riscv.rst b/doc/board/emulation/qemu-riscv.rst
> index 61137bcbf1..8a5eb1eda5 100644
> --- a/doc/board/emulation/qemu-riscv.rst
> +++ b/doc/board/emulation/qemu-riscv.rst
> @@ -131,7 +131,13 @@ An attached disk can be emulated in RISC-V virt machine by adding::
>       -drive if=none,file=riscv64.img,format=raw,id=mydisk \
>       -device ide-hd,drive=mydisk,bus=ahci.0
>   
> -You will have to run 'scsi scan' to use it.
> +or alternatively attach an emulated UFS::
> +
> +    -device ufs,id=ufs0 \
> +    -drive if=none,file=test.img,format=raw,id=lun0 \
> +    -device ufs-lu,drive=lun0,bus=ufs0
> +
> +You will have to run 'scsi scan' to use them.
>   
>   A video console can be emulated in RISC-V virt machine by removing "-nographic"
>   and adding::

Reviewed-by: Neha Malcom Francis <n-francis@ti.com>

-- 
Thanking You
Neha Malcom Francis

^ permalink raw reply	[flat|nested] 31+ messages in thread

* Re: [PATCH v2 0/9] ufs: Add a PCI UFS controller support
  2023-10-11 13:15 [PATCH v2 0/9] ufs: Add a PCI UFS controller support Bin Meng
                   ` (9 preceding siblings ...)
  2023-10-19  5:08 ` [PATCH v2 0/9] ufs: Add a PCI UFS controller support Bin Meng
@ 2023-11-27 22:27 ` Tom Rini
  10 siblings, 0 replies; 31+ messages in thread
From: Tom Rini @ 2023-11-27 22:27 UTC (permalink / raw)
  To: Bhupesh Sharma, Neha Malcom Francis, Bin Meng; +Cc: Simon Glass, u-boot

On Wed, 11 Oct 2023 21:15:43 +0800, Bin Meng wrote:

> This adds a PCI UFS controller support and enables the support on
> QEMU RISC-V for testing.
> 
> Requiring QEMU v8.2+.
> 
> This series is avaiable at u-boot-x86/ufs for testing.
> 
> [...]

Applied to u-boot/next, thanks!

-- 
Tom



^ permalink raw reply	[flat|nested] 31+ messages in thread

end of thread, other threads:[~2023-11-27 22:27 UTC | newest]

Thread overview: 31+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-10-11 13:15 [PATCH v2 0/9] ufs: Add a PCI UFS controller support Bin Meng
2023-10-11 13:15 ` [PATCH v2 1/9] ufs: Correct the UFS terminlogy Bin Meng
2023-10-12  3:41   ` Simon Glass
2023-11-23  4:24   ` Neha Malcom Francis
2023-10-11 13:15 ` [PATCH v2 2/9] ufs: Add a line feed to the end of some dev_xxx() messages Bin Meng
2023-10-12  3:41   ` Simon Glass
2023-11-23  4:25   ` Neha Malcom Francis
2023-10-11 13:15 ` [PATCH v2 3/9] cmd: kconfig: Make ufs prompt look similar to other commands Bin Meng
2023-10-12  3:41   ` Simon Glass
2023-11-23  4:25   ` Neha Malcom Francis
2023-10-11 13:15 ` [PATCH v2 4/9] cmd: ufs: Correct the help text Bin Meng
2023-10-12  3:41   ` Simon Glass
2023-11-23  4:28   ` Neha Malcom Francis
2023-10-11 13:15 ` [PATCH v2 5/9] pci_ids: Add Red Hat vendor and device IDs Bin Meng
2023-10-12  3:41   ` Simon Glass
2023-11-23  4:30   ` Neha Malcom Francis
2023-10-11 13:15 ` [PATCH v2 6/9] ufs: Allow mmio registers on the PCI bus Bin Meng
2023-10-12  3:41   ` Simon Glass
2023-11-23  4:45   ` Neha Malcom Francis
2023-10-11 13:15 ` [PATCH v2 7/9] ufs: Add a PCI based UFS controller driver Bin Meng
2023-10-12  3:41   ` Simon Glass
2023-11-23  4:48   ` Neha Malcom Francis
2023-10-11 13:15 ` [PATCH v2 8/9] ufs: Handle UFS 3.1 controllers Bin Meng
2023-10-12  3:41   ` Simon Glass
2023-11-23  4:48   ` Neha Malcom Francis
2023-10-11 13:15 ` [PATCH v2 9/9] qemu: riscv: Enable UFS support Bin Meng
2023-10-12  3:41   ` Simon Glass
2023-11-23  4:48   ` Neha Malcom Francis
2023-10-19  5:08 ` [PATCH v2 0/9] ufs: Add a PCI UFS controller support Bin Meng
2023-10-19 12:48   ` Marek Vasut
2023-11-27 22:27 ` Tom Rini

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.