* [PATCH RFC v4 1/4] mmc: dw_mmc: hi3798cv200: rename to dw_mmc-histb
2023-04-16 9:19 [PATCH RFC v4 0/4] mmc: add support for the dw-mmc controller on Hi3798MV200 Yang Xiwen via B4 Relay
@ 2023-04-16 9:19 ` Yang Xiwen via B4 Relay
2023-04-16 9:19 ` [PATCH RFC v4 2/4] mmc: dw_mmc: histb: add support for hi3798mv200 Yang Xiwen via B4 Relay
` (3 subsequent siblings)
4 siblings, 0 replies; 11+ messages in thread
From: Yang Xiwen via B4 Relay @ 2023-04-16 9:19 UTC (permalink / raw)
To: Ulf Hansson, Jaehoon Chung, Rob Herring, Krzysztof Kozlowski,
Yang Xiwen
Cc: tianshuliang, Jiancheng Xue, Shawn Guo, David Yang, linux-mmc,
linux-kernel, devicetree
From: Yang Xiwen <forbidden405@outlook.com>
Rename to dw_mmc-histb and introduce a mechanism similar to
dw-mmc_exynos to support more devices in a single driver. It is a
preparation for introducing extension for Hi3798MV200.
Signed-off-by: Yang Xiwen <forbidden405@outlook.com>
---
drivers/mmc/host/Kconfig | 8 +--
drivers/mmc/host/Makefile | 2 +-
.../host/{dw_mmc-hi3798cv200.c => dw_mmc-histb.c} | 79 ++++++++++++++--------
3 files changed, 57 insertions(+), 32 deletions(-)
diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
index 4745fe217ade3..0aef4d845b743 100644
--- a/drivers/mmc/host/Kconfig
+++ b/drivers/mmc/host/Kconfig
@@ -779,14 +779,14 @@ config MMC_DW_EXYNOS
Synopsys DesignWare Memory Card Interface driver. Select this option
for platforms based on Exynos4 and Exynos5 SoC's.
-config MMC_DW_HI3798CV200
- tristate "Hi3798CV200 specific extensions for Synopsys DW Memory Card Interface"
+config MMC_DW_HISTB
+ tristate "HiSTB specific extensions for Synopsys DW Memory Card Interface"
depends on MMC_DW
select MMC_DW_PLTFM
help
- This selects support for HiSilicon Hi3798CV200 SoC specific extensions to the
+ This selects support for HiSilicon HiSTB SoC specific extensions to the
Synopsys DesignWare Memory Card Interface driver. Select this option
- for platforms based on HiSilicon Hi3798CV200 SoC.
+ for platforms based on HiSilicon HiSTB SoC.
config MMC_DW_K3
tristate "K3 specific extensions for Synopsys DW Memory Card Interface"
diff --git a/drivers/mmc/host/Makefile b/drivers/mmc/host/Makefile
index a693fa3d3f1cc..0373741afebf1 100644
--- a/drivers/mmc/host/Makefile
+++ b/drivers/mmc/host/Makefile
@@ -50,7 +50,7 @@ obj-$(CONFIG_MMC_DW) += dw_mmc.o
obj-$(CONFIG_MMC_DW_PLTFM) += dw_mmc-pltfm.o
obj-$(CONFIG_MMC_DW_BLUEFIELD) += dw_mmc-bluefield.o
obj-$(CONFIG_MMC_DW_EXYNOS) += dw_mmc-exynos.o
-obj-$(CONFIG_MMC_DW_HI3798CV200) += dw_mmc-hi3798cv200.o
+obj-$(CONFIG_MMC_DW_HISTB) += dw_mmc-histb.o
obj-$(CONFIG_MMC_DW_K3) += dw_mmc-k3.o
obj-$(CONFIG_MMC_DW_PCI) += dw_mmc-pci.o
obj-$(CONFIG_MMC_DW_ROCKCHIP) += dw_mmc-rockchip.o
diff --git a/drivers/mmc/host/dw_mmc-hi3798cv200.c b/drivers/mmc/host/dw_mmc-histb.c
similarity index 69%
rename from drivers/mmc/host/dw_mmc-hi3798cv200.c
rename to drivers/mmc/host/dw_mmc-histb.c
index 6f22fe0540879..106e586bcff4b 100644
--- a/drivers/mmc/host/dw_mmc-hi3798cv200.c
+++ b/drivers/mmc/host/dw_mmc-histb.c
@@ -18,14 +18,29 @@
#define ALL_INT_CLR 0x1ffff
-struct hi3798cv200_priv {
+enum dw_mci_histb_type {
+ DW_MCI_TYPE_HI3798CV200,
+};
+
+static struct dw_mci_histb_compat {
+ const char * const compatible;
+ enum dw_mci_histb_type ctrl_type;
+} histb_compat[] = {
+ {
+ .compatible = "hisilicon,hi3798cv200-dw-mshc",
+ .ctrl_type = DW_MCI_TYPE_HI3798CV200,
+ },
+};
+
+struct dw_mci_histb_priv {
+ enum dw_mci_histb_type ctrl_type;
struct clk *sample_clk;
struct clk *drive_clk;
};
-static void dw_mci_hi3798cv200_set_ios(struct dw_mci *host, struct mmc_ios *ios)
+static void dw_mci_histb_set_ios(struct dw_mci *host, struct mmc_ios *ios)
{
- struct hi3798cv200_priv *priv = host->priv;
+ struct dw_mci_histb_priv *priv = host->priv;
u32 val;
val = mci_readl(host, UHS_REG);
@@ -62,7 +77,7 @@ static int dw_mci_hi3798cv200_execute_tuning(struct dw_mci_slot *slot,
{
static const int degrees[] = { 0, 45, 90, 135, 180, 225, 270, 315 };
struct dw_mci *host = slot->host;
- struct hi3798cv200_priv *priv = host->priv;
+ struct dw_mci_histb_priv *priv = host->priv;
int raise_point = -1, fall_point = -1;
int err, prev_err = -1;
int found = 0;
@@ -118,15 +133,21 @@ static int dw_mci_hi3798cv200_execute_tuning(struct dw_mci_slot *slot,
return err;
}
-static int dw_mci_hi3798cv200_init(struct dw_mci *host)
+static int dw_mci_histb_init(struct dw_mci *host)
{
- struct hi3798cv200_priv *priv;
- int ret;
+ struct dw_mci_histb_priv *priv;
+ struct device_node *np = host->dev->of_node;
+ int ret, idx;
priv = devm_kzalloc(host->dev, sizeof(*priv), GFP_KERNEL);
if (!priv)
return -ENOMEM;
+ for (idx = 0; idx < ARRAY_SIZE(histb_compat); idx++) {
+ if (of_device_is_compatible(np, histb_compat[idx].compatible))
+ priv->ctrl_type = histb_compat[idx].ctrl_type;
+ }
+
priv->sample_clk = devm_clk_get(host->dev, "ciu-sample");
if (IS_ERR(priv->sample_clk)) {
dev_err(host->dev, "failed to get ciu-sample clock\n");
@@ -161,20 +182,29 @@ static int dw_mci_hi3798cv200_init(struct dw_mci *host)
static const struct dw_mci_drv_data hi3798cv200_data = {
.common_caps = MMC_CAP_CMD23,
- .init = dw_mci_hi3798cv200_init,
- .set_ios = dw_mci_hi3798cv200_set_ios,
+ .init = dw_mci_histb_init,
+ .set_ios = dw_mci_histb_set_ios,
.execute_tuning = dw_mci_hi3798cv200_execute_tuning,
};
-static int dw_mci_hi3798cv200_probe(struct platform_device *pdev)
+static const struct of_device_id dw_mci_histb_match[] = {
+ { .compatible = "hisilicon,hi3798cv200-dw-mshc", .data = &hi3798cv200_data },
+ {},
+};
+
+static int dw_mci_histb_probe(struct platform_device *pdev)
{
- return dw_mci_pltfm_register(pdev, &hi3798cv200_data);
+ const struct of_device_id *match;
+
+ match = of_match_node(dw_mci_histb_match, pdev->dev.of_node);
+
+ return dw_mci_pltfm_register(pdev, match->data);
}
-static int dw_mci_hi3798cv200_remove(struct platform_device *pdev)
+static int dw_mci_histb_remove(struct platform_device *pdev)
{
struct dw_mci *host = platform_get_drvdata(pdev);
- struct hi3798cv200_priv *priv = host->priv;
+ struct dw_mci_histb_priv *priv = host->priv;
clk_disable_unprepare(priv->drive_clk);
clk_disable_unprepare(priv->sample_clk);
@@ -184,23 +214,18 @@ static int dw_mci_hi3798cv200_remove(struct platform_device *pdev)
return 0;
}
-static const struct of_device_id dw_mci_hi3798cv200_match[] = {
- { .compatible = "hisilicon,hi3798cv200-dw-mshc", },
- {},
-};
-
-MODULE_DEVICE_TABLE(of, dw_mci_hi3798cv200_match);
-static struct platform_driver dw_mci_hi3798cv200_driver = {
- .probe = dw_mci_hi3798cv200_probe,
- .remove = dw_mci_hi3798cv200_remove,
+MODULE_DEVICE_TABLE(of, dw_mci_histb_match);
+static struct platform_driver dw_mci_histb_driver = {
+ .probe = dw_mci_histb_probe,
+ .remove = dw_mci_histb_remove,
.driver = {
- .name = "dwmmc_hi3798cv200",
+ .name = "dwmmc_histb",
.probe_type = PROBE_PREFER_ASYNCHRONOUS,
- .of_match_table = dw_mci_hi3798cv200_match,
+ .of_match_table = dw_mci_histb_match,
},
};
-module_platform_driver(dw_mci_hi3798cv200_driver);
+module_platform_driver(dw_mci_histb_driver);
-MODULE_DESCRIPTION("HiSilicon Hi3798CV200 Specific DW-MSHC Driver Extension");
+MODULE_DESCRIPTION("HiSilicon HiSTB Specific DW-MSHC Driver Extension");
MODULE_LICENSE("GPL v2");
-MODULE_ALIAS("platform:dwmmc_hi3798cv200");
+MODULE_ALIAS("platform:dwmmc_histb");
--
2.39.2
^ permalink raw reply related [flat|nested] 11+ messages in thread* [PATCH RFC v4 2/4] mmc: dw_mmc: histb: add support for hi3798mv200
2023-04-16 9:19 [PATCH RFC v4 0/4] mmc: add support for the dw-mmc controller on Hi3798MV200 Yang Xiwen via B4 Relay
2023-04-16 9:19 ` [PATCH RFC v4 1/4] mmc: dw_mmc: hi3798cv200: rename to dw_mmc-histb Yang Xiwen via B4 Relay
@ 2023-04-16 9:19 ` Yang Xiwen via B4 Relay
2023-04-16 9:19 ` [PATCH RFC v4 3/4] dt-binding: mmc: hi3798cv200-dw-mshc: convert to YAML and rename to histb-dw-mshc Yang Xiwen via B4 Relay
` (2 subsequent siblings)
4 siblings, 0 replies; 11+ messages in thread
From: Yang Xiwen via B4 Relay @ 2023-04-16 9:19 UTC (permalink / raw)
To: Ulf Hansson, Jaehoon Chung, Rob Herring, Krzysztof Kozlowski,
Yang Xiwen
Cc: tianshuliang, Jiancheng Xue, Shawn Guo, David Yang, linux-mmc,
linux-kernel, devicetree
From: Yang Xiwen <forbidden405@outlook.com>
Add support for Hi3798MV200 specific extension.
Signed-off-by: Yang Xiwen <forbidden405@outlook.com>
---
drivers/mmc/host/dw_mmc-histb.c | 110 +++++++++++++++++++++++++++++++++++++++-
1 file changed, 109 insertions(+), 1 deletion(-)
diff --git a/drivers/mmc/host/dw_mmc-histb.c b/drivers/mmc/host/dw_mmc-histb.c
index 106e586bcff4b..039b6df0e8c4d 100644
--- a/drivers/mmc/host/dw_mmc-histb.c
+++ b/drivers/mmc/host/dw_mmc-histb.c
@@ -16,10 +16,14 @@
#include "dw_mmc.h"
#include "dw_mmc-pltfm.h"
+#define SDMMC_TUNING_CTRL 0x118
+#define SDMMC_TUNING_FIND_EDGE BIT(5)
+
#define ALL_INT_CLR 0x1ffff
enum dw_mci_histb_type {
DW_MCI_TYPE_HI3798CV200,
+ DW_MCI_TYPE_HI3798MV200,
};
static struct dw_mci_histb_compat {
@@ -29,6 +33,9 @@ static struct dw_mci_histb_compat {
{
.compatible = "hisilicon,hi3798cv200-dw-mshc",
.ctrl_type = DW_MCI_TYPE_HI3798CV200,
+ }, {
+ .compatible = "hisilicon,hi3798mv200-dw-mshc",
+ .ctrl_type = DW_MCI_TYPE_HI3798MV200,
},
};
@@ -36,6 +43,7 @@ struct dw_mci_histb_priv {
enum dw_mci_histb_type ctrl_type;
struct clk *sample_clk;
struct clk *drive_clk;
+ struct clk *sap_dll_mode_clk;
};
static void dw_mci_histb_set_ios(struct dw_mci *host, struct mmc_ios *ios)
@@ -68,7 +76,10 @@ static void dw_mci_histb_set_ios(struct dw_mci *host, struct mmc_ios *ios)
if (ios->timing == MMC_TIMING_MMC_HS ||
ios->timing == MMC_TIMING_LEGACY)
clk_set_phase(priv->drive_clk, 180);
- else if (ios->timing == MMC_TIMING_MMC_HS200)
+ else if (ios->timing == MMC_TIMING_MMC_DDR52) {
+ clk_set_phase(priv->drive_clk, 90);
+ clk_set_phase(priv->sample_clk, 45);
+ } else if (ios->timing == MMC_TIMING_MMC_HS200)
clk_set_phase(priv->drive_clk, 135);
}
@@ -133,6 +144,75 @@ static int dw_mci_hi3798cv200_execute_tuning(struct dw_mci_slot *slot,
return err;
}
+static int dw_mci_hi3798mv200_execute_tuning_mix_mode(struct dw_mci_slot *slot,
+ u32 opcode)
+{
+ static const int degrees[] = { 0, 45, 90, 135, 180, 225, 270, 315 };
+ struct dw_mci *host = slot->host;
+ struct dw_mci_histb_priv *priv = host->priv;
+ int raise_point = -1, fall_point = -1;
+ int err, prev_err = -1;
+ int found = 0;
+ int regval;
+ int i;
+
+ clk_disable(priv->sap_dll_mode_clk);
+ for (i = 0; i < ARRAY_SIZE(degrees); i++) {
+ clk_set_phase(priv->sample_clk, degrees[i]);
+ mci_writel(host, RINTSTS, ALL_INT_CLR);
+
+ err = mmc_send_tuning(slot->mmc, opcode, NULL);
+ if (err)
+ found = 1;
+ else {
+ regval = mci_readl(host, TUNING_CTRL);
+ if (regval & SDMMC_TUNING_FIND_EDGE)
+ found = 1;
+ };
+
+ if (i > 0) {
+ if (err && !prev_err)
+ fall_point = i - 1;
+ if (!err && prev_err)
+ raise_point = i;
+ }
+
+ if (raise_point != -1 && fall_point != -1)
+ goto tuning_out;
+
+ prev_err = err;
+ err = 0;
+ }
+
+tuning_out:
+ clk_enable(priv->sap_dll_mode_clk);
+ if (found) {
+ if (raise_point == -1)
+ raise_point = 0;
+ if (fall_point == -1)
+ fall_point = ARRAY_SIZE(degrees) - 1;
+ if (fall_point < raise_point) {
+ if ((raise_point + fall_point) >
+ (ARRAY_SIZE(degrees) - 1))
+ i = fall_point / 2;
+ else
+ i = (raise_point + ARRAY_SIZE(degrees) - 1) / 2;
+ } else {
+ i = (raise_point + fall_point) / 2;
+ }
+
+ clk_set_phase(priv->sample_clk, degrees[i]);
+ dev_dbg(host->dev, "Tuning clk_sample[%d, %d], set[%d]\n",
+ raise_point, fall_point, degrees[i]);
+ } else {
+ dev_err(host->dev, "No valid clk_sample shift! use default\n");
+ err = -EINVAL;
+ }
+
+ mci_writel(host, RINTSTS, ALL_INT_CLR);
+ return err;
+}
+
static int dw_mci_histb_init(struct dw_mci *host)
{
struct dw_mci_histb_priv *priv;
@@ -160,6 +240,14 @@ static int dw_mci_histb_init(struct dw_mci *host)
return PTR_ERR(priv->drive_clk);
}
+ if (priv->ctrl_type == DW_MCI_TYPE_HI3798MV200) {
+ priv->sap_dll_mode_clk = devm_clk_get(host->dev, "sap-dll-mode");
+ if (IS_ERR(priv->sap_dll_mode_clk)) {
+ dev_err(host->dev, "failed to get sap-dll-mode clock\n");
+ return PTR_ERR(priv->sap_dll_mode_clk);
+ }
+ }
+
ret = clk_prepare_enable(priv->sample_clk);
if (ret) {
dev_err(host->dev, "failed to enable ciu-sample clock\n");
@@ -172,9 +260,19 @@ static int dw_mci_histb_init(struct dw_mci *host)
goto disable_sample_clk;
}
+ if (priv->ctrl_type == DW_MCI_TYPE_HI3798MV200) {
+ ret = clk_prepare_enable(priv->sap_dll_mode_clk);
+ if (ret) {
+ dev_err(host->dev, "failed to disable tuning mode");
+ goto disable_drive_clk;
+ }
+ }
+
host->priv = priv;
return 0;
+disable_drive_clk:
+ clk_disable_unprepare(priv->drive_clk);
disable_sample_clk:
clk_disable_unprepare(priv->sample_clk);
return ret;
@@ -187,8 +285,16 @@ static const struct dw_mci_drv_data hi3798cv200_data = {
.execute_tuning = dw_mci_hi3798cv200_execute_tuning,
};
+static const struct dw_mci_drv_data hi3798mv200_data = {
+ .common_caps = MMC_CAP_CMD23,
+ .init = dw_mci_histb_init,
+ .set_ios = dw_mci_histb_set_ios,
+ .execute_tuning = dw_mci_hi3798mv200_execute_tuning_mix_mode,
+};
+
static const struct of_device_id dw_mci_histb_match[] = {
{ .compatible = "hisilicon,hi3798cv200-dw-mshc", .data = &hi3798cv200_data },
+ { .compatible = "hisilicon,hi3798mv200-dw-mshc", .data = &hi3798mv200_data },
{},
};
@@ -208,6 +314,8 @@ static int dw_mci_histb_remove(struct platform_device *pdev)
clk_disable_unprepare(priv->drive_clk);
clk_disable_unprepare(priv->sample_clk);
+ if (priv->ctrl_type == DW_MCI_TYPE_HI3798MV200)
+ clk_disable_unprepare(priv->sap_dll_mode_clk);
dw_mci_pltfm_remove(pdev);
--
2.39.2
^ permalink raw reply related [flat|nested] 11+ messages in thread* [PATCH RFC v4 3/4] dt-binding: mmc: hi3798cv200-dw-mshc: convert to YAML and rename to histb-dw-mshc
2023-04-16 9:19 [PATCH RFC v4 0/4] mmc: add support for the dw-mmc controller on Hi3798MV200 Yang Xiwen via B4 Relay
2023-04-16 9:19 ` [PATCH RFC v4 1/4] mmc: dw_mmc: hi3798cv200: rename to dw_mmc-histb Yang Xiwen via B4 Relay
2023-04-16 9:19 ` [PATCH RFC v4 2/4] mmc: dw_mmc: histb: add support for hi3798mv200 Yang Xiwen via B4 Relay
@ 2023-04-16 9:19 ` Yang Xiwen via B4 Relay
2023-04-16 11:17 ` Krzysztof Kozlowski
2023-04-17 13:10 ` Rob Herring
2023-04-16 9:19 ` [PATCH RFC v4 4/4] dt-binding: mmc: histb-dw-mshc: Add Hi3798MV200 compatible string Yang Xiwen via B4 Relay
2023-04-19 13:28 ` [PATCH RFC v4 0/4] mmc: add support for the dw-mmc controller on Hi3798MV200 Yang Xiwen
4 siblings, 2 replies; 11+ messages in thread
From: Yang Xiwen via B4 Relay @ 2023-04-16 9:19 UTC (permalink / raw)
To: Ulf Hansson, Jaehoon Chung, Rob Herring, Krzysztof Kozlowski,
Yang Xiwen
Cc: tianshuliang, Jiancheng Xue, Shawn Guo, David Yang, linux-mmc,
linux-kernel, devicetree
From: Yang Xiwen <forbidden405@outlook.com>
The renaming is due to the fact that it is now supporting SoCs other
than Hi3798CV200.
Signed-off-by: Yang Xiwen <forbidden405@outlook.com>
---
.../bindings/mmc/hi3798cv200-dw-mshc.txt | 40 -------------
.../bindings/mmc/hisilicon,histb-dw-mshc.yaml | 69 ++++++++++++++++++++++
2 files changed, 69 insertions(+), 40 deletions(-)
diff --git a/Documentation/devicetree/bindings/mmc/hi3798cv200-dw-mshc.txt b/Documentation/devicetree/bindings/mmc/hi3798cv200-dw-mshc.txt
deleted file mode 100644
index a0693b7145f2a..0000000000000
--- a/Documentation/devicetree/bindings/mmc/hi3798cv200-dw-mshc.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-* Hisilicon Hi3798CV200 specific extensions to the Synopsys Designware Mobile
- Storage Host Controller
-
-Read synopsys-dw-mshc.txt for more details
-
-The Synopsys designware mobile storage host controller is used to interface
-a SoC with storage medium such as eMMC or SD/MMC cards. This file documents
-differences between the core Synopsys dw mshc controller properties described
-by synopsys-dw-mshc.txt and the properties used by the Hisilicon Hi3798CV200
-specific extensions to the Synopsys Designware Mobile Storage Host Controller.
-
-Required Properties:
-- compatible: Should contain "hisilicon,hi3798cv200-dw-mshc".
-- clocks: A list of phandle + clock-specifier pairs for the clocks listed
- in clock-names.
-- clock-names: Should contain the following:
- "ciu" - The ciu clock described in synopsys-dw-mshc.txt.
- "biu" - The biu clock described in synopsys-dw-mshc.txt.
- "ciu-sample" - Hi3798CV200 extended phase clock for ciu sampling.
- "ciu-drive" - Hi3798CV200 extended phase clock for ciu driving.
-
-Example:
-
- emmc: mmc@9830000 {
- compatible = "hisilicon,hi3798cv200-dw-mshc";
- reg = <0x9830000 0x10000>;
- interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
- clocks = <&crg HISTB_MMC_CIU_CLK>,
- <&crg HISTB_MMC_BIU_CLK>,
- <&crg HISTB_MMC_SAMPLE_CLK>,
- <&crg HISTB_MMC_DRV_CLK>;
- clock-names = "ciu", "biu", "ciu-sample", "ciu-drive";
- fifo-depth = <256>;
- clock-frequency = <200000000>;
- cap-mmc-highspeed;
- mmc-ddr-1_8v;
- mmc-hs200-1_8v;
- non-removable;
- bus-width = <8>;
- };
diff --git a/Documentation/devicetree/bindings/mmc/hisilicon,histb-dw-mshc.yaml b/Documentation/devicetree/bindings/mmc/hisilicon,histb-dw-mshc.yaml
new file mode 100644
index 0000000000000..301b6ad39c5af
--- /dev/null
+++ b/Documentation/devicetree/bindings/mmc/hisilicon,histb-dw-mshc.yaml
@@ -0,0 +1,69 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mmc/histb-dw-mshc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title:
+ Hisilicon HiSTB SoC specific extensions to the Synopsys Designware Mobile
+ Storage Host Controller
+
+maintainers:
+ - Yang Xiwen <forbidden405@outlook.com>
+
+description:
+ The Synopsys designware mobile storage host controller is used to interface a
+ SoC with storage medium such as eMMC or SD/MMC cards.
+
+properties:
+ compatible:
+ enum:
+ - hisilicon,hi3798cv200-dw-mshc
+
+ reg:
+ maxItems: 1
+
+ interrupts:
+ maxItems: 1
+
+ clocks:
+ maxItems: 4
+
+ clock-names:
+ items:
+ - const: ciu
+ - const: biu
+ - const: ciu-sample
+ - const: ciu-drive
+
+required:
+ - compatible
+ - reg
+ - interrupts
+ - clocks
+ - clock-names
+
+allOf:
+ - $ref: synopsys-dw-mshc-common.yaml#
+
+unevaluatedProperties: false
+
+examples:
+ - |
+ emmc: mmc@9830000 {
+ compatible = "hisilicon,hi3798cv200-dw-mshc";
+ reg = <0x9830000 0x10000>;
+ interrupts = <35>;
+ clocks = <&crg 1>,
+ <&crg 2>,
+ <&crg 3>,
+ <&crg 4>;
+ clock-names = "ciu", "biu", "ciu-sample", "ciu-drive";
+ fifo-depth = <256>;
+ clock-frequency = <200000000>;
+ cap-mmc-highspeed;
+ mmc-ddr-1_8v;
+ mmc-hs200-1_8v;
+ non-removable;
+ bus-width = <8>;
+ };
--
2.39.2
^ permalink raw reply related [flat|nested] 11+ messages in thread* Re: [PATCH RFC v4 3/4] dt-binding: mmc: hi3798cv200-dw-mshc: convert to YAML and rename to histb-dw-mshc
2023-04-16 9:19 ` [PATCH RFC v4 3/4] dt-binding: mmc: hi3798cv200-dw-mshc: convert to YAML and rename to histb-dw-mshc Yang Xiwen via B4 Relay
@ 2023-04-16 11:17 ` Krzysztof Kozlowski
2023-04-17 17:09 ` Krzysztof Kozlowski
2023-04-17 13:10 ` Rob Herring
1 sibling, 1 reply; 11+ messages in thread
From: Krzysztof Kozlowski @ 2023-04-16 11:17 UTC (permalink / raw)
To: forbidden405, Ulf Hansson, Jaehoon Chung, Rob Herring,
Krzysztof Kozlowski
Cc: tianshuliang, Jiancheng Xue, Shawn Guo, David Yang, linux-mmc,
linux-kernel, devicetree
On 16/04/2023 11:19, Yang Xiwen via B4 Relay wrote:
> From: Yang Xiwen <forbidden405@outlook.com>
>
> The renaming is due to the fact that it is now supporting SoCs other
> than Hi3798CV200.
>
> Signed-off-by: Yang Xiwen <forbidden405@outlook.com>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
This is an automated instruction, just in case, because many review tags
are being ignored. If you do not know the process, here is a short
explanation:
Please add Acked-by/Reviewed-by/Tested-by tags when posting new
versions, under or above your Signed-off-by tag. Tools like b4 can help
here. However, there's no need to repost patches *only* to add the tags.
The upstream maintainer will do that for acks received on the version
they apply.
https://elixir.bootlin.com/linux/v5.17/source/Documentation/process/submitting-patches.rst#L540
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH RFC v4 3/4] dt-binding: mmc: hi3798cv200-dw-mshc: convert to YAML and rename to histb-dw-mshc
2023-04-16 11:17 ` Krzysztof Kozlowski
@ 2023-04-17 17:09 ` Krzysztof Kozlowski
0 siblings, 0 replies; 11+ messages in thread
From: Krzysztof Kozlowski @ 2023-04-17 17:09 UTC (permalink / raw)
To: forbidden405, Ulf Hansson, Jaehoon Chung, Rob Herring,
Krzysztof Kozlowski
Cc: tianshuliang, Jiancheng Xue, Shawn Guo, David Yang, linux-mmc,
linux-kernel, devicetree
On 16/04/2023 13:17, Krzysztof Kozlowski wrote:
> On 16/04/2023 11:19, Yang Xiwen via B4 Relay wrote:
>> From: Yang Xiwen <forbidden405@outlook.com>
>>
>> The renaming is due to the fact that it is now supporting SoCs other
>> than Hi3798CV200.
>>
>> Signed-off-by: Yang Xiwen <forbidden405@outlook.com>
>
> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Eh, as Rob pointed out, this was not tested, so un-reviewed.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH RFC v4 3/4] dt-binding: mmc: hi3798cv200-dw-mshc: convert to YAML and rename to histb-dw-mshc
2023-04-16 9:19 ` [PATCH RFC v4 3/4] dt-binding: mmc: hi3798cv200-dw-mshc: convert to YAML and rename to histb-dw-mshc Yang Xiwen via B4 Relay
2023-04-16 11:17 ` Krzysztof Kozlowski
@ 2023-04-17 13:10 ` Rob Herring
1 sibling, 0 replies; 11+ messages in thread
From: Rob Herring @ 2023-04-17 13:10 UTC (permalink / raw)
To: Yang Xiwen
Cc: Jiancheng Xue, tianshuliang, Ulf Hansson, Jaehoon Chung,
linux-mmc, linux-kernel, Shawn Guo, David Yang, Rob Herring,
Krzysztof Kozlowski, devicetree
On Sun, 16 Apr 2023 17:19:34 +0800, Yang Xiwen wrote:
> The renaming is due to the fact that it is now supporting SoCs other
> than Hi3798CV200.
>
> Signed-off-by: Yang Xiwen <forbidden405@outlook.com>
> ---
> .../bindings/mmc/hi3798cv200-dw-mshc.txt | 40 -------------
> .../bindings/mmc/hisilicon,histb-dw-mshc.yaml | 69 ++++++++++++++++++++++
> 2 files changed, 69 insertions(+), 40 deletions(-)
>
My bot found errors running 'make DT_CHECKER_FLAGS=-m dt_binding_check'
on your patch (DT_CHECKER_FLAGS is new in v5.13):
yamllint warnings/errors:
dtschema/dtc warnings/errors:
./Documentation/devicetree/bindings/mmc/hisilicon,histb-dw-mshc.yaml: $id: relative path/filename doesn't match actual path or filename
expected: http://devicetree.org/schemas/mmc/hisilicon,histb-dw-mshc.yaml#
doc reference errors (make refcheckdocs):
See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20230415-mmc-hi3798mv200-v4-3-44096e187f53@outlook.com
The base for the series is generally the latest rc1. A different dependency
should be noted in *this* patch.
If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure 'yamllint' is installed and dt-schema is up to
date:
pip3 install dtschema --upgrade
Please check and re-submit after running the above command yourself. Note
that DT_SCHEMA_FILES can be set to your schema file to speed up checking
your schema. However, it must be unset to test all examples with your schema.
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH RFC v4 4/4] dt-binding: mmc: histb-dw-mshc: Add Hi3798MV200 compatible string
2023-04-16 9:19 [PATCH RFC v4 0/4] mmc: add support for the dw-mmc controller on Hi3798MV200 Yang Xiwen via B4 Relay
` (2 preceding siblings ...)
2023-04-16 9:19 ` [PATCH RFC v4 3/4] dt-binding: mmc: hi3798cv200-dw-mshc: convert to YAML and rename to histb-dw-mshc Yang Xiwen via B4 Relay
@ 2023-04-16 9:19 ` Yang Xiwen via B4 Relay
2023-04-16 11:16 ` Krzysztof Kozlowski
2023-04-19 13:28 ` [PATCH RFC v4 0/4] mmc: add support for the dw-mmc controller on Hi3798MV200 Yang Xiwen
4 siblings, 1 reply; 11+ messages in thread
From: Yang Xiwen via B4 Relay @ 2023-04-16 9:19 UTC (permalink / raw)
To: Ulf Hansson, Jaehoon Chung, Rob Herring, Krzysztof Kozlowski,
Yang Xiwen
Cc: tianshuliang, Jiancheng Xue, Shawn Guo, David Yang, linux-mmc,
linux-kernel, devicetree
From: Yang Xiwen <forbidden405@outlook.com>
Add Hi3798MV200 compatible string and an extra clock for it.
Signed-off-by: Yang Xiwen <forbidden405@outlook.com>
---
.../bindings/mmc/hisilicon,histb-dw-mshc.yaml | 26 +++++++++++++++++++++-
1 file changed, 25 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/mmc/hisilicon,histb-dw-mshc.yaml b/Documentation/devicetree/bindings/mmc/hisilicon,histb-dw-mshc.yaml
index 301b6ad39c5af..2f8335fd2c965 100644
--- a/Documentation/devicetree/bindings/mmc/hisilicon,histb-dw-mshc.yaml
+++ b/Documentation/devicetree/bindings/mmc/hisilicon,histb-dw-mshc.yaml
@@ -19,6 +19,7 @@ properties:
compatible:
enum:
- hisilicon,hi3798cv200-dw-mshc
+ - hisilicon,hi3798mv200-dw-mshc
reg:
maxItems: 1
@@ -27,14 +28,16 @@ properties:
maxItems: 1
clocks:
- maxItems: 4
+ maxItems: 5
clock-names:
+ minItems: 4
items:
- const: ciu
- const: biu
- const: ciu-sample
- const: ciu-drive
+ - const: sap-dll-mode
required:
- compatible
@@ -45,6 +48,27 @@ required:
allOf:
- $ref: synopsys-dw-mshc-common.yaml#
+ - if:
+ properties:
+ compatible:
+ contains:
+ const: hisilicon,hi3798mv200-dw-mshc
+
+ then:
+ properties:
+ clocks:
+ minItems: 5
+
+ clock-names:
+ minItems: 5
+
+ else:
+ properties:
+ clocks:
+ maxItems: 4
+
+ clock-names:
+ maxItems: 4
unevaluatedProperties: false
--
2.39.2
^ permalink raw reply related [flat|nested] 11+ messages in thread* Re: [PATCH RFC v4 4/4] dt-binding: mmc: histb-dw-mshc: Add Hi3798MV200 compatible string
2023-04-16 9:19 ` [PATCH RFC v4 4/4] dt-binding: mmc: histb-dw-mshc: Add Hi3798MV200 compatible string Yang Xiwen via B4 Relay
@ 2023-04-16 11:16 ` Krzysztof Kozlowski
2023-04-16 11:23 ` Yang Xiwen
0 siblings, 1 reply; 11+ messages in thread
From: Krzysztof Kozlowski @ 2023-04-16 11:16 UTC (permalink / raw)
To: forbidden405, Ulf Hansson, Jaehoon Chung, Rob Herring,
Krzysztof Kozlowski
Cc: tianshuliang, Jiancheng Xue, Shawn Guo, David Yang, linux-mmc,
linux-kernel, devicetree
On 16/04/2023 11:19, Yang Xiwen via B4 Relay wrote:
> From: Yang Xiwen <forbidden405@outlook.com>
>
> Add Hi3798MV200 compatible string and an extra clock for it.
>
> Signed-off-by: Yang Xiwen <forbidden405@outlook.com>
> ---
> .../bindings/mmc/hisilicon,histb-dw-mshc.yaml | 26 +++++++++++++++++++++-
> 1 file changed, 25 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/devicetree/bindings/mmc/hisilicon,histb-dw-mshc.yaml b/Documentation/devicetree/bindings/mmc/hisilicon,histb-dw-mshc.yaml
> index 301b6ad39c5af..2f8335fd2c965 100644
> --- a/Documentation/devicetree/bindings/mmc/hisilicon,histb-dw-mshc.yaml
> +++ b/Documentation/devicetree/bindings/mmc/hisilicon,histb-dw-mshc.yaml
> @@ -19,6 +19,7 @@ properties:
> compatible:
> enum:
> - hisilicon,hi3798cv200-dw-mshc
> + - hisilicon,hi3798mv200-dw-mshc
>
> reg:
> maxItems: 1
> @@ -27,14 +28,16 @@ properties:
> maxItems: 1
>
> clocks:
> - maxItems: 4
You miss now minItems. Are you sure you tested your bindings? This
should fail.
Anyway, wait with sending new versions of patches to give other people
chance to review. It's already second patchset today.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH RFC v4 4/4] dt-binding: mmc: histb-dw-mshc: Add Hi3798MV200 compatible string
2023-04-16 11:16 ` Krzysztof Kozlowski
@ 2023-04-16 11:23 ` Yang Xiwen
0 siblings, 0 replies; 11+ messages in thread
From: Yang Xiwen @ 2023-04-16 11:23 UTC (permalink / raw)
To: Krzysztof Kozlowski, Ulf Hansson, Jaehoon Chung, Rob Herring,
Krzysztof Kozlowski
Cc: tianshuliang, Jiancheng Xue, Shawn Guo, David Yang, linux-mmc,
linux-kernel, devicetree
On 4/16/2023 7:16 PM, Krzysztof Kozlowski wrote:
> On 16/04/2023 11:19, Yang Xiwen via B4 Relay wrote:
>> From: Yang Xiwen <forbidden405@outlook.com>
>>
>> Add Hi3798MV200 compatible string and an extra clock for it.
>>
>> Signed-off-by: Yang Xiwen <forbidden405@outlook.com>
>> ---
>> .../bindings/mmc/hisilicon,histb-dw-mshc.yaml | 26 +++++++++++++++++++++-
>> 1 file changed, 25 insertions(+), 1 deletion(-)
>>
>> diff --git a/Documentation/devicetree/bindings/mmc/hisilicon,histb-dw-mshc.yaml b/Documentation/devicetree/bindings/mmc/hisilicon,histb-dw-mshc.yaml
>> index 301b6ad39c5af..2f8335fd2c965 100644
>> --- a/Documentation/devicetree/bindings/mmc/hisilicon,histb-dw-mshc.yaml
>> +++ b/Documentation/devicetree/bindings/mmc/hisilicon,histb-dw-mshc.yaml
>> @@ -19,6 +19,7 @@ properties:
>> compatible:
>> enum:
>> - hisilicon,hi3798cv200-dw-mshc
>> + - hisilicon,hi3798mv200-dw-mshc
>>
>> reg:
>> maxItems: 1
>> @@ -27,14 +28,16 @@ properties:
>> maxItems: 1
>>
>> clocks:
>> - maxItems: 4
>
> You miss now minItems. Are you sure you tested your bindings? This
> should fail.
>
> Anyway, wait with sending new versions of patches to give other people
> chance to review. It's already second patchset today.
>
> Best regards,
> Krzysztof
>
Sorry for that. I'll fix that in v5 and send the new patchset a few days
later, waiting for others to review the driver.
--
Best regards,
Yang Xiwen
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH RFC v4 0/4] mmc: add support for the dw-mmc controller on Hi3798MV200
2023-04-16 9:19 [PATCH RFC v4 0/4] mmc: add support for the dw-mmc controller on Hi3798MV200 Yang Xiwen via B4 Relay
` (3 preceding siblings ...)
2023-04-16 9:19 ` [PATCH RFC v4 4/4] dt-binding: mmc: histb-dw-mshc: Add Hi3798MV200 compatible string Yang Xiwen via B4 Relay
@ 2023-04-19 13:28 ` Yang Xiwen
4 siblings, 0 replies; 11+ messages in thread
From: Yang Xiwen @ 2023-04-19 13:28 UTC (permalink / raw)
To: Ulf Hansson, Jaehoon Chung, Rob Herring, Krzysztof Kozlowski
Cc: tianshuliang, Jiancheng Xue, Shawn Guo, David Yang, linux-mmc,
linux-kernel, devicetree
On 4/16/2023 5:19 PM, Yang Xiwen via B4 Relay wrote:
> The dw-mmc controller found on Hi3798MV200 is like the one found on
> Hi3798CV200, but has some tweaks.
> Also refreshed the dt-binding and converted it to YAML.
>
> Signed-off-by: Yang Xiwen <forbidden405@outlook.com>
> ---
> Changes in v4:
> - fix license of dt-binding document.
> - some other fixes to dt-binding document.
> - Link to v3: https://lore.kernel.org/r/20230415-mmc-hi3798mv200-v3-0-00e2368c0709@outlook.com
>
> Changes in v3:
> - split dt-binding commit into 2 parts, one for renaming, the other for
> new compatible string.
> - some other fixes to dt-binding document.
> - Link to v2: https://lore.kernel.org/r/20230415-mmc-hi3798mv200-v2-0-1d274f9b71da@outlook.com
>
> Changes in v2:
> - add DDR52 support
> - edit dt-binding, substitude all hi3798cv200 with histb
> - send email to more people
> - Link to v1: https://lore.kernel.org/r/20230415-mmc-hi3798mv200-v1-0-db5b91d939d4@outlook.com
>
> ---
> Yang Xiwen (4):
> mmc: dw_mmc: hi3798cv200: rename to dw_mmc-histb
> mmc: dw_mmc: histb: add support for hi3798mv200
> dt-binding: mmc: hi3798cv200-dw-mshc: convert to YAML and rename to histb-dw-mshc
> dt-binding: mmc: histb-dw-mshc: Add Hi3798MV200 compatible string
>
> .../bindings/mmc/hi3798cv200-dw-mshc.txt | 40 ---
> .../bindings/mmc/hisilicon,histb-dw-mshc.yaml | 93 ++++++
> drivers/mmc/host/Kconfig | 8 +-
> drivers/mmc/host/Makefile | 2 +-
> drivers/mmc/host/dw_mmc-hi3798cv200.c | 206 -------------
> drivers/mmc/host/dw_mmc-histb.c | 339 +++++++++++++++++++++
> 6 files changed, 437 insertions(+), 251 deletions(-)
> ---
> base-commit: 76f598ba7d8e2bfb4855b5298caedd5af0c374a8
> change-id: 20230415-mmc-hi3798mv200-ce15e9b96866
>
> Best regards,
Sorry for wasting your time, but please don't review this patchset
anymore. I decided to rewrite it.
--
Best regards,
Yang Xiwen
^ permalink raw reply [flat|nested] 11+ messages in thread