* [PATCH 0/6] Update MMCI driver for STM32MP25
@ 2023-06-15 9:19 Yann Gautier
2023-06-15 9:19 ` [PATCH 1/6] dt-bindings: mmc: mmci: Add st,stm32mp25-sdmmc2 compatible Yann Gautier
` (5 more replies)
0 siblings, 6 replies; 14+ messages in thread
From: Yann Gautier @ 2023-06-15 9:19 UTC (permalink / raw)
To: Ulf Hansson, Rob Herring, Krzysztof Kozlowski, linux-mmc,
devicetree
Cc: Conor Dooley, Russell King, Philipp Zabel, Christophe Kerello,
linux-kernel, Marek Vasut, Alexandre Torgue, Maxime Coquelin,
Linus Walleij, Yang Yingliang, Xiang wangx, linux-stm32,
linux-arm-kernel, Yann Gautier
STM32MP25 is a new SoC from STMicroelectronics. The machine was
pushed by Alexandre [1] in his tree.
On this new SoC, the SDMMC peripheral, using PL18x/MMCI driver
has been updated to v3.
The driver has been updated to manage this new version, and the new
features it supports:
* FIFO size increased from 64B to 1kB
* IDMA size alignment/mask updated
* New block gap hardware flow control
* Delay block updated and dependent on SoC
This series was pushed on top of next branch in Ulf's mmc tree, as it
requires feedback clock update patch [2].
[1] https://lore.kernel.org/lkml/59f4a900-34ee-d991-c350-265d38e7c862@foss.st.com/T/
[2] https://lore.kernel.org/r/20230613150148.429828-1-yann.gautier@foss.st.com
Yann Gautier (6):
dt-bindings: mmc: mmci: Add st,stm32mp25-sdmmc2 compatible
mmc: mmci: add stm32_idmabsize_align parameter
mmc: mmci: Add support for sdmmc variant revision v3.0
mmc: mmci: stm32: manage block gap hardware flow control
mmc: mmci: stm32: prepare other delay block support
mmc: mmci: stm32: add delay block support for STM32MP25
.../devicetree/bindings/mmc/arm,pl18x.yaml | 6 +
drivers/mmc/host/mmci.c | 35 ++++
drivers/mmc/host/mmci.h | 8 +-
drivers/mmc/host/mmci_stm32_sdmmc.c | 149 ++++++++++++++++--
4 files changed, 181 insertions(+), 17 deletions(-)
--
2.25.1
^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH 1/6] dt-bindings: mmc: mmci: Add st,stm32mp25-sdmmc2 compatible
2023-06-15 9:19 [PATCH 0/6] Update MMCI driver for STM32MP25 Yann Gautier
@ 2023-06-15 9:19 ` Yann Gautier
2023-06-15 13:20 ` Ulf Hansson
2023-06-17 8:04 ` Krzysztof Kozlowski
2023-06-15 9:19 ` [PATCH 2/6] mmc: mmci: add stm32_idmabsize_align parameter Yann Gautier
` (4 subsequent siblings)
5 siblings, 2 replies; 14+ messages in thread
From: Yann Gautier @ 2023-06-15 9:19 UTC (permalink / raw)
To: Ulf Hansson, Rob Herring, Krzysztof Kozlowski, linux-mmc,
devicetree
Cc: Conor Dooley, Russell King, Philipp Zabel, Christophe Kerello,
linux-kernel, Marek Vasut, Alexandre Torgue, Maxime Coquelin,
Linus Walleij, Yang Yingliang, Xiang wangx, linux-stm32,
linux-arm-kernel, Yann Gautier
For STM32MP25, we'll need to distinguish how is managed the delay block.
This is done through a new comptible dedicated for this SoC, as the
delay block registers are located in SYSCFG peripheral.
Signed-off-by: Yann Gautier <yann.gautier@foss.st.com>
---
Documentation/devicetree/bindings/mmc/arm,pl18x.yaml | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/Documentation/devicetree/bindings/mmc/arm,pl18x.yaml b/Documentation/devicetree/bindings/mmc/arm,pl18x.yaml
index 1c96da04f0e53..e47b3418b6c77 100644
--- a/Documentation/devicetree/bindings/mmc/arm,pl18x.yaml
+++ b/Documentation/devicetree/bindings/mmc/arm,pl18x.yaml
@@ -59,6 +59,12 @@ properties:
- const: st,stm32-sdmmc2
- const: arm,pl18x
- const: arm,primecell
+ - description: Entry for STMicroelectronics variant of PL18x for
+ STM32MP25. This dedicated compatible is used by bootloaders.
+ items:
+ - const: st,stm32mp25-sdmmc2
+ - const: arm,pl18x
+ - const: arm,primecell
clocks:
description: One or two clocks, the "apb_pclk" and the "MCLK"
--
2.25.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 2/6] mmc: mmci: add stm32_idmabsize_align parameter
2023-06-15 9:19 [PATCH 0/6] Update MMCI driver for STM32MP25 Yann Gautier
2023-06-15 9:19 ` [PATCH 1/6] dt-bindings: mmc: mmci: Add st,stm32mp25-sdmmc2 compatible Yann Gautier
@ 2023-06-15 9:19 ` Yann Gautier
2023-06-15 9:19 ` [PATCH 3/6] mmc: mmci: Add support for sdmmc variant revision v3.0 Yann Gautier
` (3 subsequent siblings)
5 siblings, 0 replies; 14+ messages in thread
From: Yann Gautier @ 2023-06-15 9:19 UTC (permalink / raw)
To: Ulf Hansson, Rob Herring, Krzysztof Kozlowski, linux-mmc,
devicetree
Cc: Conor Dooley, Russell King, Philipp Zabel, Christophe Kerello,
linux-kernel, Marek Vasut, Alexandre Torgue, Maxime Coquelin,
Linus Walleij, Yang Yingliang, Xiang wangx, linux-stm32,
linux-arm-kernel, Yann Gautier
The alignment for the IDMA size depends on the peripheral version, it
should then be configurable. Add stm32_idmabsize_align in the variant
structure.
And remove now unused (and wrong) MMCI_STM32_IDMABNDT_* macros.
Signed-off-by: Yann Gautier <yann.gautier@foss.st.com>
---
drivers/mmc/host/mmci.c | 2 ++
drivers/mmc/host/mmci.h | 3 +--
drivers/mmc/host/mmci_stm32_sdmmc.c | 4 ++--
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c
index 726bf772b2e2d..eae3d1c8934cb 100644
--- a/drivers/mmc/host/mmci.c
+++ b/drivers/mmc/host/mmci.c
@@ -270,6 +270,7 @@ static struct variant_data variant_stm32_sdmmc = {
.datactrl_any_blocksz = true,
.datactrl_mask_sdio = MCI_DPSM_ST_SDIOEN,
.stm32_idmabsize_mask = GENMASK(12, 5),
+ .stm32_idmabsize_align = BIT(5),
.busy_timeout = true,
.busy_detect = true,
.busy_detect_flag = MCI_STM32_BUSYD0,
@@ -296,6 +297,7 @@ static struct variant_data variant_stm32_sdmmcv2 = {
.datactrl_any_blocksz = true,
.datactrl_mask_sdio = MCI_DPSM_ST_SDIOEN,
.stm32_idmabsize_mask = GENMASK(16, 5),
+ .stm32_idmabsize_align = BIT(5),
.dma_lli = true,
.busy_timeout = true,
.busy_detect = true,
diff --git a/drivers/mmc/host/mmci.h b/drivers/mmc/host/mmci.h
index 12a7bbd3ce263..b1968cafc58bb 100644
--- a/drivers/mmc/host/mmci.h
+++ b/drivers/mmc/host/mmci.h
@@ -227,8 +227,6 @@
#define MMCI_STM32_IDMALLIEN BIT(1)
#define MMCI_STM32_IDMABSIZER 0x054
-#define MMCI_STM32_IDMABNDT_SHIFT 5
-#define MMCI_STM32_IDMABNDT_MASK GENMASK(12, 5)
#define MMCI_STM32_IDMABASE0R 0x058
@@ -374,6 +372,7 @@ struct variant_data {
u32 opendrain;
u8 dma_lli:1;
u32 stm32_idmabsize_mask;
+ u32 stm32_idmabsize_align;
void (*init)(struct mmci_host *host);
};
diff --git a/drivers/mmc/host/mmci_stm32_sdmmc.c b/drivers/mmc/host/mmci_stm32_sdmmc.c
index 50292f9c69046..7f43506b9bb08 100644
--- a/drivers/mmc/host/mmci_stm32_sdmmc.c
+++ b/drivers/mmc/host/mmci_stm32_sdmmc.c
@@ -15,7 +15,6 @@
#include "mmci.h"
#define SDMMC_LLI_BUF_LEN PAGE_SIZE
-#define SDMMC_IDMA_BURST BIT(MMCI_STM32_IDMABNDT_SHIFT)
#define DLYB_CR 0x0
#define DLYB_CR_DEN BIT(0)
@@ -69,7 +68,8 @@ static int sdmmc_idma_validate_data(struct mmci_host *host,
idma->use_bounce_buffer = false;
for_each_sg(data->sg, sg, data->sg_len - 1, i) {
if (!IS_ALIGNED(sg->offset, sizeof(u32)) ||
- !IS_ALIGNED(sg->length, SDMMC_IDMA_BURST)) {
+ !IS_ALIGNED(sg->length,
+ host->variant->stm32_idmabsize_align)) {
dev_dbg(mmc_dev(host->mmc),
"unaligned scatterlist: ofst:%x length:%d\n",
data->sg->offset, data->sg->length);
--
2.25.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 3/6] mmc: mmci: Add support for sdmmc variant revision v3.0
2023-06-15 9:19 [PATCH 0/6] Update MMCI driver for STM32MP25 Yann Gautier
2023-06-15 9:19 ` [PATCH 1/6] dt-bindings: mmc: mmci: Add st,stm32mp25-sdmmc2 compatible Yann Gautier
2023-06-15 9:19 ` [PATCH 2/6] mmc: mmci: add stm32_idmabsize_align parameter Yann Gautier
@ 2023-06-15 9:19 ` Yann Gautier
2023-06-15 9:19 ` [PATCH 4/6] mmc: mmci: stm32: manage block gap hardware flow control Yann Gautier
` (2 subsequent siblings)
5 siblings, 0 replies; 14+ messages in thread
From: Yann Gautier @ 2023-06-15 9:19 UTC (permalink / raw)
To: Ulf Hansson, Rob Herring, Krzysztof Kozlowski, linux-mmc,
devicetree
Cc: Conor Dooley, Russell King, Philipp Zabel, Christophe Kerello,
linux-kernel, Marek Vasut, Alexandre Torgue, Maxime Coquelin,
Linus Walleij, Yang Yingliang, Xiang wangx, linux-stm32,
linux-arm-kernel, Yann Gautier
This is an update of the SDMMC revision v2.2, with just an increased
FIFO size, from 64B to 1kB.
Signed-off-by: Yann Gautier <yann.gautier@foss.st.com>
---
drivers/mmc/host/mmci.c | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git a/drivers/mmc/host/mmci.c b/drivers/mmc/host/mmci.c
index eae3d1c8934cb..3c54ab2c59176 100644
--- a/drivers/mmc/host/mmci.c
+++ b/drivers/mmc/host/mmci.c
@@ -306,6 +306,34 @@ static struct variant_data variant_stm32_sdmmcv2 = {
.init = sdmmc_variant_init,
};
+static struct variant_data variant_stm32_sdmmcv3 = {
+ .fifosize = 256 * 4,
+ .fifohalfsize = 128 * 4,
+ .f_max = 267000000,
+ .stm32_clkdiv = true,
+ .cmdreg_cpsm_enable = MCI_CPSM_STM32_ENABLE,
+ .cmdreg_lrsp_crc = MCI_CPSM_STM32_LRSP_CRC,
+ .cmdreg_srsp_crc = MCI_CPSM_STM32_SRSP_CRC,
+ .cmdreg_srsp = MCI_CPSM_STM32_SRSP,
+ .cmdreg_stop = MCI_CPSM_STM32_CMDSTOP,
+ .data_cmd_enable = MCI_CPSM_STM32_CMDTRANS,
+ .irq_pio_mask = MCI_IRQ_PIO_STM32_MASK,
+ .datactrl_first = true,
+ .datacnt_useless = true,
+ .datalength_bits = 25,
+ .datactrl_blocksz = 14,
+ .datactrl_any_blocksz = true,
+ .datactrl_mask_sdio = MCI_DPSM_ST_SDIOEN,
+ .stm32_idmabsize_mask = GENMASK(16, 6),
+ .stm32_idmabsize_align = BIT(6),
+ .dma_lli = true,
+ .busy_timeout = true,
+ .busy_detect = true,
+ .busy_detect_flag = MCI_STM32_BUSYD0,
+ .busy_detect_mask = MCI_STM32_BUSYD0ENDMASK,
+ .init = sdmmc_variant_init,
+};
+
static struct variant_data variant_qcom = {
.fifosize = 16 * 4,
.fifohalfsize = 8 * 4,
@@ -2500,6 +2528,11 @@ static const struct amba_id mmci_ids[] = {
.mask = 0xf0ffffff,
.data = &variant_stm32_sdmmcv2,
},
+ {
+ .id = 0x00353180,
+ .mask = 0xf0ffffff,
+ .data = &variant_stm32_sdmmcv3,
+ },
/* Qualcomm variants */
{
.id = 0x00051180,
--
2.25.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 4/6] mmc: mmci: stm32: manage block gap hardware flow control
2023-06-15 9:19 [PATCH 0/6] Update MMCI driver for STM32MP25 Yann Gautier
` (2 preceding siblings ...)
2023-06-15 9:19 ` [PATCH 3/6] mmc: mmci: Add support for sdmmc variant revision v3.0 Yann Gautier
@ 2023-06-15 9:19 ` Yann Gautier
2023-06-15 9:20 ` [PATCH 5/6] mmc: mmci: stm32: prepare other delay block support Yann Gautier
2023-06-15 9:20 ` [PATCH 6/6] mmc: mmci: stm32: add delay block support for STM32MP25 Yann Gautier
5 siblings, 0 replies; 14+ messages in thread
From: Yann Gautier @ 2023-06-15 9:19 UTC (permalink / raw)
To: Ulf Hansson, Rob Herring, Krzysztof Kozlowski, linux-mmc,
devicetree
Cc: Conor Dooley, Russell King, Philipp Zabel, Christophe Kerello,
linux-kernel, Marek Vasut, Alexandre Torgue, Maxime Coquelin,
Linus Walleij, Yang Yingliang, Xiang wangx, linux-stm32,
linux-arm-kernel, Yann Gautier
In stm32 sdmmc variant revision v3.0, a block gap hardware flow control
should be used with bus speed modes SDR104 and HS200.
It is enabled by writing a non-null value to the new added register
MMCI_STM32_FIFOTHRR.
The threshold will be 2^(N-1) bytes, so we can use the ffs() function to
compute the value N to be written to the register. The threshold used
should be the data block size, but must not be bigger than the FIFO size.
Signed-off-by: Yann Gautier <yann.gautier@foss.st.com>
---
drivers/mmc/host/mmci.h | 5 +++++
drivers/mmc/host/mmci_stm32_sdmmc.c | 13 +++++++++++++
2 files changed, 18 insertions(+)
diff --git a/drivers/mmc/host/mmci.h b/drivers/mmc/host/mmci.h
index b1968cafc58bb..361954249d04d 100644
--- a/drivers/mmc/host/mmci.h
+++ b/drivers/mmc/host/mmci.h
@@ -218,6 +218,11 @@
#define MCI_STM32_BUSYD0ENDMASK BIT(21)
#define MMCIMASK1 0x040
+
+/* STM32 sdmmc data FIFO threshold register */
+#define MMCI_STM32_FIFOTHRR 0x044
+#define MMCI_STM32_THR_MASK GENMASK(3, 0)
+
#define MMCIFIFOCNT 0x048
#define MMCIFIFO 0x080 /* to 0x0bc */
diff --git a/drivers/mmc/host/mmci_stm32_sdmmc.c b/drivers/mmc/host/mmci_stm32_sdmmc.c
index 7f43506b9bb08..0dc1ae674f44c 100644
--- a/drivers/mmc/host/mmci_stm32_sdmmc.c
+++ b/drivers/mmc/host/mmci_stm32_sdmmc.c
@@ -361,6 +361,19 @@ static u32 sdmmc_get_dctrl_cfg(struct mmci_host *host)
datactrl = mmci_dctrl_blksz(host);
+ if (host->hw_revision >= 3) {
+ u32 thr = 0;
+
+ if (host->mmc->ios.timing == MMC_TIMING_UHS_SDR104 ||
+ host->mmc->ios.timing == MMC_TIMING_MMC_HS200) {
+ thr = ffs(min_t(unsigned int, host->data->blksz,
+ host->variant->fifosize));
+ thr = min_t(u32, thr, MMCI_STM32_THR_MASK);
+ }
+
+ writel_relaxed(thr, host->base + MMCI_STM32_FIFOTHRR);
+ }
+
if (host->mmc->card && mmc_card_sdio(host->mmc->card) &&
host->data->blocks == 1)
datactrl |= MCI_DPSM_STM32_MODE_SDIO;
--
2.25.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 5/6] mmc: mmci: stm32: prepare other delay block support
2023-06-15 9:19 [PATCH 0/6] Update MMCI driver for STM32MP25 Yann Gautier
` (3 preceding siblings ...)
2023-06-15 9:19 ` [PATCH 4/6] mmc: mmci: stm32: manage block gap hardware flow control Yann Gautier
@ 2023-06-15 9:20 ` Yann Gautier
2023-06-15 9:20 ` [PATCH 6/6] mmc: mmci: stm32: add delay block support for STM32MP25 Yann Gautier
5 siblings, 0 replies; 14+ messages in thread
From: Yann Gautier @ 2023-06-15 9:20 UTC (permalink / raw)
To: Ulf Hansson, Rob Herring, Krzysztof Kozlowski, linux-mmc,
devicetree
Cc: Conor Dooley, Russell King, Philipp Zabel, Christophe Kerello,
linux-kernel, Marek Vasut, Alexandre Torgue, Maxime Coquelin,
Linus Walleij, Yang Yingliang, Xiang wangx, linux-stm32,
linux-arm-kernel, Yann Gautier
Create an sdmmc_tuning_ops struct to ease support for another
delay block peripheral.
Signed-off-by: Yann Gautier <yann.gautier@foss.st.com>
---
drivers/mmc/host/mmci_stm32_sdmmc.c | 68 +++++++++++++++++++++++------
1 file changed, 55 insertions(+), 13 deletions(-)
diff --git a/drivers/mmc/host/mmci_stm32_sdmmc.c b/drivers/mmc/host/mmci_stm32_sdmmc.c
index 0dc1ae674f44c..c51c85ca24917 100644
--- a/drivers/mmc/host/mmci_stm32_sdmmc.c
+++ b/drivers/mmc/host/mmci_stm32_sdmmc.c
@@ -47,10 +47,21 @@ struct sdmmc_idma {
bool use_bounce_buffer;
};
+struct sdmmc_dlyb;
+
+struct sdmmc_tuning_ops {
+ int (*dlyb_enable)(struct sdmmc_dlyb *dlyb);
+ void (*set_input_ck)(struct sdmmc_dlyb *dlyb);
+ int (*tuning_prepare)(struct mmci_host *host);
+ int (*set_cfg)(struct sdmmc_dlyb *dlyb, int unit __maybe_unused,
+ int phase, bool sampler __maybe_unused);
+};
+
struct sdmmc_dlyb {
void __iomem *base;
u32 unit;
u32 max;
+ struct sdmmc_tuning_ops *ops;
};
static int sdmmc_idma_validate_data(struct mmci_host *host,
@@ -299,7 +310,7 @@ static void mmci_sdmmc_set_clkreg(struct mmci_host *host, unsigned int desired)
mmci_write_clkreg(host, clk);
}
-static void sdmmc_dlyb_input_ck(struct sdmmc_dlyb *dlyb)
+static void sdmmc_dlyb_mp15_input_ck(struct sdmmc_dlyb *dlyb)
{
if (!dlyb || !dlyb->base)
return;
@@ -316,7 +327,8 @@ static void mmci_sdmmc_set_pwrreg(struct mmci_host *host, unsigned int pwr)
/* adds OF options */
pwr = host->pwr_reg_add;
- sdmmc_dlyb_input_ck(dlyb);
+ if (dlyb && dlyb->ops->set_input_ck)
+ dlyb->ops->set_input_ck(dlyb);
if (ios.power_mode == MMC_POWER_OFF) {
/* Only a reset could power-off sdmmc */
@@ -430,8 +442,15 @@ static bool sdmmc_busy_complete(struct mmci_host *host, u32 status, u32 err_msk)
return true;
}
-static void sdmmc_dlyb_set_cfgr(struct sdmmc_dlyb *dlyb,
- int unit, int phase, bool sampler)
+static int sdmmc_dlyb_mp15_enable(struct sdmmc_dlyb *dlyb)
+{
+ writel_relaxed(DLYB_CR_DEN, dlyb->base + DLYB_CR);
+
+ return 0;
+}
+
+static int sdmmc_dlyb_mp15_set_cfg(struct sdmmc_dlyb *dlyb,
+ int unit, int phase, bool sampler)
{
u32 cfgr;
@@ -443,16 +462,18 @@ static void sdmmc_dlyb_set_cfgr(struct sdmmc_dlyb *dlyb,
if (!sampler)
writel_relaxed(DLYB_CR_DEN, dlyb->base + DLYB_CR);
+
+ return 0;
}
-static int sdmmc_dlyb_lng_tuning(struct mmci_host *host)
+static int sdmmc_dlyb_mp15_prepare(struct mmci_host *host)
{
struct sdmmc_dlyb *dlyb = host->variant_priv;
u32 cfgr;
int i, lng, ret;
for (i = 0; i <= DLYB_CFGR_UNIT_MAX; i++) {
- sdmmc_dlyb_set_cfgr(dlyb, i, DLYB_CFGR_SEL_MAX, true);
+ dlyb->ops->set_cfg(dlyb, i, DLYB_CFGR_SEL_MAX, true);
ret = readl_relaxed_poll_timeout(dlyb->base + DLYB_CFGR, cfgr,
(cfgr & DLYB_CFGR_LNGF),
@@ -482,10 +503,14 @@ static int sdmmc_dlyb_phase_tuning(struct mmci_host *host, u32 opcode)
{
struct sdmmc_dlyb *dlyb = host->variant_priv;
int cur_len = 0, max_len = 0, end_of_len = 0;
- int phase;
+ int phase, ret;
for (phase = 0; phase <= dlyb->max; phase++) {
- sdmmc_dlyb_set_cfgr(dlyb, dlyb->unit, phase, false);
+ ret = dlyb->ops->set_cfg(dlyb, dlyb->unit, phase, false);
+ if (ret) {
+ dev_err(mmc_dev(host->mmc), "tuning config failed\n");
+ return ret;
+ }
if (mmc_send_tuning(host->mmc, opcode, NULL)) {
cur_len = 0;
@@ -503,10 +528,15 @@ static int sdmmc_dlyb_phase_tuning(struct mmci_host *host, u32 opcode)
return -EINVAL;
}
- writel_relaxed(0, dlyb->base + DLYB_CR);
+ if (dlyb->ops->set_input_ck)
+ dlyb->ops->set_input_ck(dlyb);
phase = end_of_len - max_len / 2;
- sdmmc_dlyb_set_cfgr(dlyb, dlyb->unit, phase, false);
+ ret = dlyb->ops->set_cfg(dlyb, dlyb->unit, phase, false);
+ if (ret) {
+ dev_err(mmc_dev(host->mmc), "tuning reconfig failed\n");
+ return ret;
+ }
dev_dbg(mmc_dev(host->mmc), "unit:%d max_dly:%d phase:%d\n",
dlyb->unit, dlyb->max, phase);
@@ -519,6 +549,7 @@ static int sdmmc_execute_tuning(struct mmc_host *mmc, u32 opcode)
struct mmci_host *host = mmc_priv(mmc);
struct sdmmc_dlyb *dlyb = host->variant_priv;
u32 clk;
+ int ret;
if ((host->mmc->ios.timing != MMC_TIMING_UHS_SDR104 &&
host->mmc->ios.timing != MMC_TIMING_MMC_HS200) ||
@@ -528,7 +559,9 @@ static int sdmmc_execute_tuning(struct mmc_host *mmc, u32 opcode)
if (!dlyb || !dlyb->base)
return -EINVAL;
- writel_relaxed(DLYB_CR_DEN, dlyb->base + DLYB_CR);
+ ret = dlyb->ops->dlyb_enable(dlyb);
+ if (ret)
+ return ret;
/*
* SDMMC_FBCK is selected when an external Delay Block is needed
@@ -539,8 +572,9 @@ static int sdmmc_execute_tuning(struct mmc_host *mmc, u32 opcode)
clk |= MCI_STM32_CLK_SELFBCK;
mmci_write_clkreg(host, clk);
- if (sdmmc_dlyb_lng_tuning(host))
- return -EINVAL;
+ ret = dlyb->ops->tuning_prepare(host);
+ if (ret)
+ return ret;
return sdmmc_dlyb_phase_tuning(host, opcode);
}
@@ -598,6 +632,13 @@ static struct mmci_host_ops sdmmc_variant_ops = {
.post_sig_volt_switch = sdmmc_post_sig_volt_switch,
};
+static struct sdmmc_tuning_ops dlyb_tuning_mp15_ops = {
+ .dlyb_enable = sdmmc_dlyb_mp15_enable,
+ .set_input_ck = sdmmc_dlyb_mp15_input_ck,
+ .tuning_prepare = sdmmc_dlyb_mp15_prepare,
+ .set_cfg = sdmmc_dlyb_mp15_set_cfg,
+};
+
void sdmmc_variant_init(struct mmci_host *host)
{
struct device_node *np = host->mmc->parent->of_node;
@@ -616,6 +657,7 @@ void sdmmc_variant_init(struct mmci_host *host)
return;
dlyb->base = base_dlyb;
+ dlyb->ops = &dlyb_tuning_mp15_ops;
host->variant_priv = dlyb;
host->mmc_ops->execute_tuning = sdmmc_execute_tuning;
}
--
2.25.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH 6/6] mmc: mmci: stm32: add delay block support for STM32MP25
2023-06-15 9:19 [PATCH 0/6] Update MMCI driver for STM32MP25 Yann Gautier
` (4 preceding siblings ...)
2023-06-15 9:20 ` [PATCH 5/6] mmc: mmci: stm32: prepare other delay block support Yann Gautier
@ 2023-06-15 9:20 ` Yann Gautier
5 siblings, 0 replies; 14+ messages in thread
From: Yann Gautier @ 2023-06-15 9:20 UTC (permalink / raw)
To: Ulf Hansson, Rob Herring, Krzysztof Kozlowski, linux-mmc,
devicetree
Cc: Conor Dooley, Russell King, Philipp Zabel, Christophe Kerello,
linux-kernel, Marek Vasut, Alexandre Torgue, Maxime Coquelin,
Linus Walleij, Yang Yingliang, Xiang wangx, linux-stm32,
linux-arm-kernel, Yann Gautier
On STM32MP25, the delay block is inside the SoC, and configured through
the SYSCFG registers. The algorithm is also different from what was in
STM32MP1 chip.
Signed-off-by: Yann Gautier <yann.gautier@foss.st.com>
---
drivers/mmc/host/mmci_stm32_sdmmc.c | 66 ++++++++++++++++++++++++++++-
1 file changed, 65 insertions(+), 1 deletion(-)
diff --git a/drivers/mmc/host/mmci_stm32_sdmmc.c b/drivers/mmc/host/mmci_stm32_sdmmc.c
index c51c85ca24917..d6112a8dacf8b 100644
--- a/drivers/mmc/host/mmci_stm32_sdmmc.c
+++ b/drivers/mmc/host/mmci_stm32_sdmmc.c
@@ -33,6 +33,20 @@
#define DLYB_LNG_TIMEOUT_US 1000
#define SDMMC_VSWEND_TIMEOUT_US 10000
+#define SYSCFG_DLYBSD_CR 0x0
+#define DLYBSD_CR_EN BIT(0)
+#define DLYBSD_CR_RXTAPSEL_MASK GENMASK(6, 1)
+#define DLYBSD_TAPSEL_NB 32
+#define DLYBSD_BYP_EN BIT(16)
+#define DLYBSD_BYP_CMD GENMASK(21, 17)
+#define DLYBSD_ANTIGLITCH_EN BIT(22)
+
+#define SYSCFG_DLYBSD_SR 0x4
+#define DLYBSD_SR_LOCK BIT(0)
+#define DLYBSD_SR_RXTAPSEL_ACK BIT(1)
+
+#define DLYBSD_TIMEOUT_1S_IN_US 1000000
+
struct sdmmc_lli_desc {
u32 idmalar;
u32 idmabase;
@@ -499,6 +513,46 @@ static int sdmmc_dlyb_mp15_prepare(struct mmci_host *host)
return 0;
}
+static int sdmmc_dlyb_mp25_enable(struct sdmmc_dlyb *dlyb)
+{
+ u32 cr, sr;
+
+ cr = readl_relaxed(dlyb->base + SYSCFG_DLYBSD_CR);
+ cr |= DLYBSD_CR_EN;
+
+ writel_relaxed(cr, dlyb->base + SYSCFG_DLYBSD_CR);
+
+ return readl_relaxed_poll_timeout(dlyb->base + SYSCFG_DLYBSD_SR,
+ sr, sr & DLYBSD_SR_LOCK, 1,
+ DLYBSD_TIMEOUT_1S_IN_US);
+}
+
+static int sdmmc_dlyb_mp25_set_cfg(struct sdmmc_dlyb *dlyb,
+ int unit __maybe_unused, int phase,
+ bool sampler __maybe_unused)
+{
+ u32 cr, sr;
+
+ cr = readl_relaxed(dlyb->base + SYSCFG_DLYBSD_CR);
+ cr &= ~DLYBSD_CR_RXTAPSEL_MASK;
+ cr |= FIELD_PREP(DLYBSD_CR_RXTAPSEL_MASK, phase);
+
+ writel_relaxed(cr, dlyb->base + SYSCFG_DLYBSD_CR);
+
+ return readl_relaxed_poll_timeout(dlyb->base + SYSCFG_DLYBSD_SR,
+ sr, sr & DLYBSD_SR_RXTAPSEL_ACK, 1,
+ DLYBSD_TIMEOUT_1S_IN_US);
+}
+
+static int sdmmc_dlyb_mp25_prepare(struct mmci_host *host)
+{
+ struct sdmmc_dlyb *dlyb = host->variant_priv;
+
+ dlyb->max = DLYBSD_TAPSEL_NB;
+
+ return 0;
+}
+
static int sdmmc_dlyb_phase_tuning(struct mmci_host *host, u32 opcode)
{
struct sdmmc_dlyb *dlyb = host->variant_priv;
@@ -639,6 +693,12 @@ static struct sdmmc_tuning_ops dlyb_tuning_mp15_ops = {
.set_cfg = sdmmc_dlyb_mp15_set_cfg,
};
+static struct sdmmc_tuning_ops dlyb_tuning_mp25_ops = {
+ .dlyb_enable = sdmmc_dlyb_mp25_enable,
+ .tuning_prepare = sdmmc_dlyb_mp25_prepare,
+ .set_cfg = sdmmc_dlyb_mp25_set_cfg,
+};
+
void sdmmc_variant_init(struct mmci_host *host)
{
struct device_node *np = host->mmc->parent->of_node;
@@ -657,7 +717,11 @@ void sdmmc_variant_init(struct mmci_host *host)
return;
dlyb->base = base_dlyb;
- dlyb->ops = &dlyb_tuning_mp15_ops;
+ if (of_device_is_compatible(np, "st,stm32mp25-sdmmc2"))
+ dlyb->ops = &dlyb_tuning_mp25_ops;
+ else
+ dlyb->ops = &dlyb_tuning_mp15_ops;
+
host->variant_priv = dlyb;
host->mmc_ops->execute_tuning = sdmmc_execute_tuning;
}
--
2.25.1
^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH 1/6] dt-bindings: mmc: mmci: Add st,stm32mp25-sdmmc2 compatible
2023-06-15 9:19 ` [PATCH 1/6] dt-bindings: mmc: mmci: Add st,stm32mp25-sdmmc2 compatible Yann Gautier
@ 2023-06-15 13:20 ` Ulf Hansson
2023-06-15 15:16 ` Yann Gautier
2023-06-17 8:04 ` Krzysztof Kozlowski
1 sibling, 1 reply; 14+ messages in thread
From: Ulf Hansson @ 2023-06-15 13:20 UTC (permalink / raw)
To: Yann Gautier
Cc: Rob Herring, Krzysztof Kozlowski, linux-mmc, devicetree,
Conor Dooley, Russell King, Philipp Zabel, Christophe Kerello,
linux-kernel, Marek Vasut, Alexandre Torgue, Maxime Coquelin,
Linus Walleij, Yang Yingliang, Xiang wangx, linux-stm32,
linux-arm-kernel
On Thu, 15 Jun 2023 at 11:20, Yann Gautier <yann.gautier@foss.st.com> wrote:
>
> For STM32MP25, we'll need to distinguish how is managed the delay block.
> This is done through a new comptible dedicated for this SoC, as the
> delay block registers are located in SYSCFG peripheral.
>
> Signed-off-by: Yann Gautier <yann.gautier@foss.st.com>
> ---
> Documentation/devicetree/bindings/mmc/arm,pl18x.yaml | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/mmc/arm,pl18x.yaml b/Documentation/devicetree/bindings/mmc/arm,pl18x.yaml
> index 1c96da04f0e53..e47b3418b6c77 100644
> --- a/Documentation/devicetree/bindings/mmc/arm,pl18x.yaml
> +++ b/Documentation/devicetree/bindings/mmc/arm,pl18x.yaml
> @@ -59,6 +59,12 @@ properties:
> - const: st,stm32-sdmmc2
> - const: arm,pl18x
> - const: arm,primecell
> + - description: Entry for STMicroelectronics variant of PL18x for
> + STM32MP25. This dedicated compatible is used by bootloaders.
What does this last sentence mean? Can we drop it?
> + items:
> + - const: st,stm32mp25-sdmmc2
> + - const: arm,pl18x
> + - const: arm,primecell
>
> clocks:
> description: One or two clocks, the "apb_pclk" and the "MCLK"
> --
> 2.25.1
>
Kind regards
Uffe
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 1/6] dt-bindings: mmc: mmci: Add st,stm32mp25-sdmmc2 compatible
2023-06-15 13:20 ` Ulf Hansson
@ 2023-06-15 15:16 ` Yann Gautier
2023-06-15 15:19 ` Yann Gautier
0 siblings, 1 reply; 14+ messages in thread
From: Yann Gautier @ 2023-06-15 15:16 UTC (permalink / raw)
To: Ulf Hansson
Cc: Rob Herring, Krzysztof Kozlowski, linux-mmc, devicetree,
Conor Dooley, Russell King, Philipp Zabel, Christophe Kerello,
linux-kernel, Marek Vasut, Alexandre Torgue, Maxime Coquelin,
Linus Walleij, Yang Yingliang, Xiang wangx, linux-stm32,
linux-arm-kernel
On 6/15/23 15:20, Ulf Hansson wrote:
> On Thu, 15 Jun 2023 at 11:20, Yann Gautier <yann.gautier@foss.st.com> wrote:
>>
>> For STM32MP25, we'll need to distinguish how is managed the delay block.
>> This is done through a new comptible dedicated for this SoC, as the
>> delay block registers are located in SYSCFG peripheral.
>>
>> Signed-off-by: Yann Gautier <yann.gautier@foss.st.com>
>> ---
>> Documentation/devicetree/bindings/mmc/arm,pl18x.yaml | 6 ++++++
>> 1 file changed, 6 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/mmc/arm,pl18x.yaml b/Documentation/devicetree/bindings/mmc/arm,pl18x.yaml
>> index 1c96da04f0e53..e47b3418b6c77 100644
>> --- a/Documentation/devicetree/bindings/mmc/arm,pl18x.yaml
>> +++ b/Documentation/devicetree/bindings/mmc/arm,pl18x.yaml
>> @@ -59,6 +59,12 @@ properties:
>> - const: st,stm32-sdmmc2
>> - const: arm,pl18x
>> - const: arm,primecell
>> + - description: Entry for STMicroelectronics variant of PL18x for
>> + STM32MP25. This dedicated compatible is used by bootloaders.
>
> What does this last sentence mean? Can we drop it?
Hi Ulf,
I just copied (and added "for STM32MP25") what was done for STM32MP1x:
- description: Entry for STMicroelectronics variant of PL18x.
This dedicated compatible is used by bootloaders.
items:
- const: st,stm32-sdmmc2
- const: arm,pl18x
- const: arm,primecell
- description: Entry for STMicroelectronics variant of PL18x for
STM32MP25. This dedicated compatible is used by bootloaders.
items:
- const: st,stm32mp25-sdmmc2
- const: arm,pl18x
- const: arm,primecell
Should I remove (or adapt) both descriptions?
Best regards,
Yann
>
>> + items:
>> + - const: st,stm32mp25-sdmmc2
>> + - const: arm,pl18x
>> + - const: arm,primecell
>>
>> clocks:
>> description: One or two clocks, the "apb_pclk" and the "MCLK"
>> --
>> 2.25.1
>>
>
> Kind regards
> Uffe
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 1/6] dt-bindings: mmc: mmci: Add st,stm32mp25-sdmmc2 compatible
2023-06-15 15:16 ` Yann Gautier
@ 2023-06-15 15:19 ` Yann Gautier
2023-06-15 18:51 ` Linus Walleij
0 siblings, 1 reply; 14+ messages in thread
From: Yann Gautier @ 2023-06-15 15:19 UTC (permalink / raw)
To: Ulf Hansson
Cc: Rob Herring, Krzysztof Kozlowski, linux-mmc, devicetree,
Conor Dooley, Russell King, Philipp Zabel, Christophe Kerello,
linux-kernel, Marek Vasut, Alexandre Torgue, Maxime Coquelin,
Linus Walleij, Yang Yingliang, Xiang wangx, linux-stm32,
linux-arm-kernel
On 6/15/23 17:16, Yann Gautier wrote:
> On 6/15/23 15:20, Ulf Hansson wrote:
>> On Thu, 15 Jun 2023 at 11:20, Yann Gautier <yann.gautier@foss.st.com>
>> wrote:
>>>
>>> For STM32MP25, we'll need to distinguish how is managed the delay block.
>>> This is done through a new comptible dedicated for this SoC, as the
>>> delay block registers are located in SYSCFG peripheral.
>>>
>>> Signed-off-by: Yann Gautier <yann.gautier@foss.st.com>
>>> ---
>>> Documentation/devicetree/bindings/mmc/arm,pl18x.yaml | 6 ++++++
>>> 1 file changed, 6 insertions(+)
>>>
>>> diff --git a/Documentation/devicetree/bindings/mmc/arm,pl18x.yaml
>>> b/Documentation/devicetree/bindings/mmc/arm,pl18x.yaml
>>> index 1c96da04f0e53..e47b3418b6c77 100644
>>> --- a/Documentation/devicetree/bindings/mmc/arm,pl18x.yaml
>>> +++ b/Documentation/devicetree/bindings/mmc/arm,pl18x.yaml
>>> @@ -59,6 +59,12 @@ properties:
>>> - const: st,stm32-sdmmc2
>>> - const: arm,pl18x
>>> - const: arm,primecell
>>> + - description: Entry for STMicroelectronics variant of PL18x for
>>> + STM32MP25. This dedicated compatible is used by bootloaders.
>>
>> What does this last sentence mean? Can we drop it?
>
> Hi Ulf,
>
> I just copied (and added "for STM32MP25") what was done for STM32MP1x:
> - description: Entry for STMicroelectronics variant of PL18x.
> This dedicated compatible is used by bootloaders.
> items:
> - const: st,stm32-sdmmc2
> - const: arm,pl18x
> - const: arm,primecell
> - description: Entry for STMicroelectronics variant of PL18x for
> STM32MP25. This dedicated compatible is used by bootloaders.
> items:
> - const: st,stm32mp25-sdmmc2
> - const: arm,pl18x
> - const: arm,primecell
>
>
> Should I remove (or adapt) both descriptions?
>
>
> Best regards,
> Yann
>
At the time the patch was done it was really just used by bootloaders.
But as it is now used in the driver for delay block, I should remove the
second sentence.
Yann
>>
>>> + items:
>>> + - const: st,stm32mp25-sdmmc2
>>> + - const: arm,pl18x
>>> + - const: arm,primecell
>>>
>>> clocks:
>>> description: One or two clocks, the "apb_pclk" and the "MCLK"
>>> --
>>> 2.25.1
>>>
>>
>> Kind regards
>> Uffe
>
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 1/6] dt-bindings: mmc: mmci: Add st,stm32mp25-sdmmc2 compatible
2023-06-15 15:19 ` Yann Gautier
@ 2023-06-15 18:51 ` Linus Walleij
2023-06-19 7:29 ` Yann Gautier
0 siblings, 1 reply; 14+ messages in thread
From: Linus Walleij @ 2023-06-15 18:51 UTC (permalink / raw)
To: Yann Gautier
Cc: Ulf Hansson, Rob Herring, Krzysztof Kozlowski, linux-mmc,
devicetree, Conor Dooley, Russell King, Philipp Zabel,
Christophe Kerello, linux-kernel, Marek Vasut, Alexandre Torgue,
Maxime Coquelin, Yang Yingliang, Xiang wangx, linux-stm32,
linux-arm-kernel
On Thu, Jun 15, 2023 at 5:19 PM Yann Gautier <yann.gautier@foss.st.com> wrote:
> > - description: Entry for STMicroelectronics variant of PL18x.
> > This dedicated compatible is used by bootloaders.
(...)
> > - description: Entry for STMicroelectronics variant of PL18x for
> > STM32MP25. This dedicated compatible is used by bootloaders.
(...)
> > Should I remove (or adapt) both descriptions?
> >
> >
>
> At the time the patch was done it was really just used by bootloaders.
> But as it is now used in the driver for delay block, I should remove the
> second sentence.
Remove both.
After "This dedicated compatible is used by bootloaders" there is
an implicit "in the SDK provided by ST Microelectronics", and that
is of no concern for DT bindings, which are (well, in theory) used by
e.g. BSD or other operating systems and who knows what they will
use and not, we don't put Linux specifics in there, neither Boot
loader specifics nor ST SDK specifics.
At least that is the little bureaucratic ambition we have.
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 1/6] dt-bindings: mmc: mmci: Add st,stm32mp25-sdmmc2 compatible
2023-06-15 9:19 ` [PATCH 1/6] dt-bindings: mmc: mmci: Add st,stm32mp25-sdmmc2 compatible Yann Gautier
2023-06-15 13:20 ` Ulf Hansson
@ 2023-06-17 8:04 ` Krzysztof Kozlowski
1 sibling, 0 replies; 14+ messages in thread
From: Krzysztof Kozlowski @ 2023-06-17 8:04 UTC (permalink / raw)
To: Yann Gautier, Ulf Hansson, Rob Herring, Krzysztof Kozlowski,
linux-mmc, devicetree
Cc: Conor Dooley, Russell King, Philipp Zabel, Christophe Kerello,
linux-kernel, Marek Vasut, Alexandre Torgue, Maxime Coquelin,
Linus Walleij, Yang Yingliang, Xiang wangx, linux-stm32,
linux-arm-kernel
On 15/06/2023 11:19, Yann Gautier wrote:
> For STM32MP25, we'll need to distinguish how is managed the delay block.
> This is done through a new comptible dedicated for this SoC, as the
> delay block registers are located in SYSCFG peripheral.
>
> Signed-off-by: Yann Gautier <yann.gautier@foss.st.com>
> ---
> Documentation/devicetree/bindings/mmc/arm,pl18x.yaml | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/mmc/arm,pl18x.yaml b/Documentation/devicetree/bindings/mmc/arm,pl18x.yaml
> index 1c96da04f0e53..e47b3418b6c77 100644
> --- a/Documentation/devicetree/bindings/mmc/arm,pl18x.yaml
> +++ b/Documentation/devicetree/bindings/mmc/arm,pl18x.yaml
> @@ -59,6 +59,12 @@ properties:
> - const: st,stm32-sdmmc2
> - const: arm,pl18x
> - const: arm,primecell
> + - description: Entry for STMicroelectronics variant of PL18x for
> + STM32MP25. This dedicated compatible is used by bootloaders.
> + items:
> + - const: st,stm32mp25-sdmmc2
Except what's said, this looks like can be part of previous entry via enum.
Best regards,
Krzysztof
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 1/6] dt-bindings: mmc: mmci: Add st,stm32mp25-sdmmc2 compatible
2023-06-15 18:51 ` Linus Walleij
@ 2023-06-19 7:29 ` Yann Gautier
2023-06-19 11:01 ` Ulf Hansson
0 siblings, 1 reply; 14+ messages in thread
From: Yann Gautier @ 2023-06-19 7:29 UTC (permalink / raw)
To: Linus Walleij, Ulf Hansson
Cc: Rob Herring, Krzysztof Kozlowski, linux-mmc, devicetree,
Conor Dooley, Russell King, Philipp Zabel, Christophe Kerello,
linux-kernel, Marek Vasut, Alexandre Torgue, Maxime Coquelin,
Yang Yingliang, Xiang wangx, linux-stm32, linux-arm-kernel
On 6/15/23 20:51, Linus Walleij wrote:
> On Thu, Jun 15, 2023 at 5:19 PM Yann Gautier <yann.gautier@foss.st.com> wrote:
>
>>> - description: Entry for STMicroelectronics variant of PL18x.
>>> This dedicated compatible is used by bootloaders.
> (...)
>>> - description: Entry for STMicroelectronics variant of PL18x for
>>> STM32MP25. This dedicated compatible is used by bootloaders.
> (...)
>>> Should I remove (or adapt) both descriptions?
>>>
>>>
>>
>> At the time the patch was done it was really just used by bootloaders.
>> But as it is now used in the driver for delay block, I should remove the
>> second sentence.
>
> Remove both.
>
> After "This dedicated compatible is used by bootloaders" there is
> an implicit "in the SDK provided by ST Microelectronics", and that
> is of no concern for DT bindings, which are (well, in theory) used by
> e.g. BSD or other operating systems and who knows what they will
> use and not, we don't put Linux specifics in there, neither Boot
> loader specifics nor ST SDK specifics.
>
> At least that is the little bureaucratic ambition we have.
>
> Yours,
> Linus Walleij
Hi,
Thanks for all the reviews.
I'll update this patch in the v2, removing bootloader line and using enum.
Ulf, should I send the new series now, or do you prefer to review the
whole series before?
Yann
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH 1/6] dt-bindings: mmc: mmci: Add st,stm32mp25-sdmmc2 compatible
2023-06-19 7:29 ` Yann Gautier
@ 2023-06-19 11:01 ` Ulf Hansson
0 siblings, 0 replies; 14+ messages in thread
From: Ulf Hansson @ 2023-06-19 11:01 UTC (permalink / raw)
To: Yann Gautier
Cc: Linus Walleij, Rob Herring, Krzysztof Kozlowski, linux-mmc,
devicetree, Conor Dooley, Russell King, Philipp Zabel,
Christophe Kerello, linux-kernel, Marek Vasut, Alexandre Torgue,
Maxime Coquelin, Yang Yingliang, Xiang wangx, linux-stm32,
linux-arm-kernel
On Mon, 19 Jun 2023 at 09:29, Yann Gautier <yann.gautier@foss.st.com> wrote:
>
> On 6/15/23 20:51, Linus Walleij wrote:
> > On Thu, Jun 15, 2023 at 5:19 PM Yann Gautier <yann.gautier@foss.st.com> wrote:
> >
> >>> - description: Entry for STMicroelectronics variant of PL18x.
> >>> This dedicated compatible is used by bootloaders.
> > (...)
> >>> - description: Entry for STMicroelectronics variant of PL18x for
> >>> STM32MP25. This dedicated compatible is used by bootloaders.
> > (...)
> >>> Should I remove (or adapt) both descriptions?
> >>>
> >>>
> >>
> >> At the time the patch was done it was really just used by bootloaders.
> >> But as it is now used in the driver for delay block, I should remove the
> >> second sentence.
> >
> > Remove both.
> >
> > After "This dedicated compatible is used by bootloaders" there is
> > an implicit "in the SDK provided by ST Microelectronics", and that
> > is of no concern for DT bindings, which are (well, in theory) used by
> > e.g. BSD or other operating systems and who knows what they will
> > use and not, we don't put Linux specifics in there, neither Boot
> > loader specifics nor ST SDK specifics.
> >
> > At least that is the little bureaucratic ambition we have.
> >
> > Yours,
> > Linus Walleij
>
> Hi,
>
> Thanks for all the reviews.
> I'll update this patch in the v2, removing bootloader line and using enum.
>
> Ulf, should I send the new series now, or do you prefer to review the
> whole series before?
Actually I have already looked through the series and it looks good to
me! Please submit a new version so we can get this queued up for v6.5.
Kind regards
Uffe
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2023-06-19 11:03 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-06-15 9:19 [PATCH 0/6] Update MMCI driver for STM32MP25 Yann Gautier
2023-06-15 9:19 ` [PATCH 1/6] dt-bindings: mmc: mmci: Add st,stm32mp25-sdmmc2 compatible Yann Gautier
2023-06-15 13:20 ` Ulf Hansson
2023-06-15 15:16 ` Yann Gautier
2023-06-15 15:19 ` Yann Gautier
2023-06-15 18:51 ` Linus Walleij
2023-06-19 7:29 ` Yann Gautier
2023-06-19 11:01 ` Ulf Hansson
2023-06-17 8:04 ` Krzysztof Kozlowski
2023-06-15 9:19 ` [PATCH 2/6] mmc: mmci: add stm32_idmabsize_align parameter Yann Gautier
2023-06-15 9:19 ` [PATCH 3/6] mmc: mmci: Add support for sdmmc variant revision v3.0 Yann Gautier
2023-06-15 9:19 ` [PATCH 4/6] mmc: mmci: stm32: manage block gap hardware flow control Yann Gautier
2023-06-15 9:20 ` [PATCH 5/6] mmc: mmci: stm32: prepare other delay block support Yann Gautier
2023-06-15 9:20 ` [PATCH 6/6] mmc: mmci: stm32: add delay block support for STM32MP25 Yann Gautier
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).