mail archive of the barebox mailing list
 help / color / mirror / Atom feed
* [PATCH 00/10] ARM: Rockchip rk3588: eMMC/SD support
@ 2023-05-30 11:18 Sascha Hauer
  2023-05-30 11:18 ` [PATCH 01/10] mci: rockchip-dwcmshc-sdhci: Add rk3588 Sascha Hauer
                   ` (10 more replies)
  0 siblings, 11 replies; 12+ messages in thread
From: Sascha Hauer @ 2023-05-30 11:18 UTC (permalink / raw)
  To: Barebox List

This series brings up eMMC/SD on Rockchip rk3588 SoCs. There were
multiple bugs that prevented them from working.

Additionally the CPU clock is now configured to 816MHz. This is not
particularly fast, but considerably faster than the original 24MHz.

Sascha Hauer (10):
  mci: rockchip-dwcmshc-sdhci: Add rk3588
  firmware: arm_scmi: fix async check
  clk: rockchip: add missing pll_rk3588_core handling
  clk: clk-divider: fix CLK_DIVIDER_HIWORD_MASK flag
  pinctrl: rockchip: fix bias settings
  ARM: dts: rk3588s: Set CPU clock to 816MHz
  mci: rockchip-dwcmshc-sdhci: enable DLL only for clock >= 52MHz
  ARM: rockchip_v8_defconfig: Enable SCMI support
  ARM: multi_v8_defconfig: Enable SCMI support
  ARM: rockchip rock 5b: drop no longer valid comments

 arch/arm/configs/multi_v8_defconfig    |  3 ++
 arch/arm/configs/rockchip_v8_defconfig |  3 ++
 arch/arm/dts/rk3588-rock-5b.dts        |  2 -
 arch/arm/dts/rk3588s.dtsi              |  5 ++-
 drivers/clk/clk-divider.c              |  2 +-
 drivers/clk/rockchip/clk-pll.c         |  3 +-
 drivers/firmware/arm_scmi/clock.c      |  2 +-
 drivers/mci/rockchip-dwcmshc-sdhci.c   | 54 ++++++++++++++++++++------
 drivers/pinctrl/pinctrl-rockchip.c     | 31 +++++++++++++--
 9 files changed, 83 insertions(+), 22 deletions(-)

-- 
2.39.2




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

* [PATCH 01/10] mci: rockchip-dwcmshc-sdhci: Add rk3588
  2023-05-30 11:18 [PATCH 00/10] ARM: Rockchip rk3588: eMMC/SD support Sascha Hauer
@ 2023-05-30 11:18 ` Sascha Hauer
  2023-05-30 11:18 ` [PATCH 02/10] firmware: arm_scmi: fix async check Sascha Hauer
                   ` (9 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: Sascha Hauer @ 2023-05-30 11:18 UTC (permalink / raw)
  To: Barebox List

rockchip,rk3588-dwcmshc can be supported out of the box, add the
compatible string for it.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
 drivers/mci/rockchip-dwcmshc-sdhci.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/mci/rockchip-dwcmshc-sdhci.c b/drivers/mci/rockchip-dwcmshc-sdhci.c
index e1eb4fc788..a935e921b1 100644
--- a/drivers/mci/rockchip-dwcmshc-sdhci.c
+++ b/drivers/mci/rockchip-dwcmshc-sdhci.c
@@ -325,6 +325,8 @@ static int rk_sdhci_probe(struct device *dev)
 static __maybe_unused struct of_device_id rk_sdhci_compatible[] = {
 	{
 		.compatible = "rockchip,rk3568-dwcmshc"
+	}, {
+		.compatible = "rockchip,rk3588-dwcmshc"
 	}, {
 		/* sentinel */
 	}
-- 
2.39.2




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

* [PATCH 02/10] firmware: arm_scmi: fix async check
  2023-05-30 11:18 [PATCH 00/10] ARM: Rockchip rk3588: eMMC/SD support Sascha Hauer
  2023-05-30 11:18 ` [PATCH 01/10] mci: rockchip-dwcmshc-sdhci: Add rk3588 Sascha Hauer
@ 2023-05-30 11:18 ` Sascha Hauer
  2023-05-30 11:18 ` [PATCH 03/10] clk: rockchip: add missing pll_rk3588_core handling Sascha Hauer
                   ` (8 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: Sascha Hauer @ 2023-05-30 11:18 UTC (permalink / raw)
  To: Barebox List

Originally the Linux code had atomic_inc_return(&ci->cur_async_req).
atomic_inc_return() returns the new variable value after increasing it,
so the equivalent is ++ci->cur_async_req, not ci->cur_async_req++.

This fixes a case where the code erroneously chose to do an asynchronous
clock rate change on RK3588.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
 drivers/firmware/arm_scmi/clock.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/firmware/arm_scmi/clock.c b/drivers/firmware/arm_scmi/clock.c
index 8f9017206c..4fd642dad3 100644
--- a/drivers/firmware/arm_scmi/clock.c
+++ b/drivers/firmware/arm_scmi/clock.c
@@ -250,7 +250,7 @@ static int scmi_clock_rate_set(const struct scmi_protocol_handle *ph,
 		return ret;
 
 	if (ci->max_async_req &&
-	    ci->cur_async_req++ < ci->max_async_req)
+	    ++ci->cur_async_req < ci->max_async_req)
 		flags |= CLOCK_SET_ASYNC;
 
 	cfg = t->tx.buf;
-- 
2.39.2




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

* [PATCH 03/10] clk: rockchip: add missing pll_rk3588_core handling
  2023-05-30 11:18 [PATCH 00/10] ARM: Rockchip rk3588: eMMC/SD support Sascha Hauer
  2023-05-30 11:18 ` [PATCH 01/10] mci: rockchip-dwcmshc-sdhci: Add rk3588 Sascha Hauer
  2023-05-30 11:18 ` [PATCH 02/10] firmware: arm_scmi: fix async check Sascha Hauer
@ 2023-05-30 11:18 ` Sascha Hauer
  2023-05-30 11:18 ` [PATCH 04/10] clk: clk-divider: fix CLK_DIVIDER_HIWORD_MASK flag Sascha Hauer
                   ` (7 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: Sascha Hauer @ 2023-05-30 11:18 UTC (permalink / raw)
  To: Barebox List

According to the reference manual the PLLs of type pll_rk3588_core also
need the CLK_MUX_HIWORD_MASK. Add it.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
 drivers/clk/rockchip/clk-pll.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/clk/rockchip/clk-pll.c b/drivers/clk/rockchip/clk-pll.c
index 68e680d6ea..736b87e32b 100644
--- a/drivers/clk/rockchip/clk-pll.c
+++ b/drivers/clk/rockchip/clk-pll.c
@@ -1097,7 +1097,8 @@ struct clk *rockchip_clk_register_pll(struct rockchip_clk_provider *ctx,
 	    pll_type == pll_rk3066 ||
 	    pll_type == pll_rk3328 ||
 	    pll_type == pll_rk3399 ||
-	    pll_type == pll_rk3588)
+	    pll_type == pll_rk3588 ||
+	    pll_type == pll_rk3588_core)
 		pll_mux->flags |= CLK_MUX_HIWORD_MASK;
 
 	/* the actual muxing is xin24m, pll-output, xin32k */
-- 
2.39.2




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

* [PATCH 04/10] clk: clk-divider: fix CLK_DIVIDER_HIWORD_MASK flag
  2023-05-30 11:18 [PATCH 00/10] ARM: Rockchip rk3588: eMMC/SD support Sascha Hauer
                   ` (2 preceding siblings ...)
  2023-05-30 11:18 ` [PATCH 03/10] clk: rockchip: add missing pll_rk3588_core handling Sascha Hauer
@ 2023-05-30 11:18 ` Sascha Hauer
  2023-05-30 11:18 ` [PATCH 05/10] pinctrl: rockchip: fix bias settings Sascha Hauer
                   ` (6 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: Sascha Hauer @ 2023-05-30 11:18 UTC (permalink / raw)
  To: Barebox List

The CLK_DIVIDER_HIWORD_MASK flag is in divider->flags, not in the
generic clock flags.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
 drivers/clk/clk-divider.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/clk/clk-divider.c b/drivers/clk/clk-divider.c
index e095b40bfa..1eaff1675b 100644
--- a/drivers/clk/clk-divider.c
+++ b/drivers/clk/clk-divider.c
@@ -288,7 +288,7 @@ static int clk_divider_set_rate(struct clk_hw *hw, unsigned long rate,
 	val &= ~(clk_div_mask(divider->width) << divider->shift);
 	val |= value << divider->shift;
 
-	if (clk->flags & CLK_DIVIDER_HIWORD_MASK)
+	if (divider->flags & CLK_DIVIDER_HIWORD_MASK)
 		val |= clk_div_mask(divider->width) << (divider->shift + 16);
 
 	writel(val, divider->reg);
-- 
2.39.2




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

* [PATCH 05/10] pinctrl: rockchip: fix bias settings
  2023-05-30 11:18 [PATCH 00/10] ARM: Rockchip rk3588: eMMC/SD support Sascha Hauer
                   ` (3 preceding siblings ...)
  2023-05-30 11:18 ` [PATCH 04/10] clk: clk-divider: fix CLK_DIVIDER_HIWORD_MASK flag Sascha Hauer
@ 2023-05-30 11:18 ` Sascha Hauer
  2023-05-30 11:18 ` [PATCH 06/10] ARM: dts: rk3588s: Set CPU clock to 816MHz Sascha Hauer
                   ` (5 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: Sascha Hauer @ 2023-05-30 11:18 UTC (permalink / raw)
  To: Barebox List

The RK_BIAS_PULL_* defines do not always directly map to register
values. In some cases they have to be translated according to the
bank->pull_type array. Add the missing translation.

The original Linux driver passes pinctrl generic defines into
rockchip_set_pull() whereas the barebox driver directly passes
RK_BIAS_* values into rockchip_set_pull(), therefore I thought this
translation is not necessary and skipped it. While bringing up
SD on a RK3588 I ended up with wrong bias settings though, this
is fixed with this commit.

Fixes: 018fcba104 ("pinctrl: Update pinctrl-rockchip from kernel")
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
 drivers/pinctrl/pinctrl-rockchip.c | 31 ++++++++++++++++++++++++++----
 1 file changed, 27 insertions(+), 4 deletions(-)

diff --git a/drivers/pinctrl/pinctrl-rockchip.c b/drivers/pinctrl/pinctrl-rockchip.c
index 57d676fc98..d7ae77d52a 100644
--- a/drivers/pinctrl/pinctrl-rockchip.c
+++ b/drivers/pinctrl/pinctrl-rockchip.c
@@ -2101,6 +2101,21 @@ static int rockchip_set_drive_perpin(struct rockchip_pin_bank *bank,
 	return ret;
 }
 
+static int rockchip_pull_list[PULL_TYPE_MAX][4] = {
+	{
+		RK_BIAS_DISABLE,
+		RK_BIAS_PULL_UP,
+		RK_BIAS_PULL_DOWN,
+		RK_BIAS_BUS_HOLD
+	},
+	{
+		RK_BIAS_DISABLE,
+		RK_BIAS_PULL_DOWN,
+		RK_BIAS_DISABLE,
+		RK_BIAS_PULL_UP
+	},
+};
+
 static int rockchip_set_pull(struct rockchip_pin_bank *bank,
 					int pin_num, int pull)
 {
@@ -2108,7 +2123,7 @@ static int rockchip_set_pull(struct rockchip_pin_bank *bank,
 	struct rockchip_pin_ctrl *ctrl = info->ctrl;
 	struct device *dev = info->dev;
 	struct regmap *regmap;
-	int reg, ret;
+	int reg, ret, i, pull_type;
 	u8 bit;
 	u32 data, rmask;
 
@@ -2140,19 +2155,27 @@ static int rockchip_set_pull(struct rockchip_pin_bank *bank,
 	case RK3399:
 	case RK3568:
 	case RK3588:
+		pull_type = bank->pull_type[pin_num / 8];
+		ret = -EINVAL;
+		for (i = 0; i < ARRAY_SIZE(rockchip_pull_list[pull_type]); i++) {
+			if (rockchip_pull_list[pull_type][i] == pull) {
+				ret = i;
+				break;
+			}
+		}
 		/*
 		 * In the TRM, pull-up being 1 for everything except the GPIO0_D3-D6,
 		 * where that pull up value becomes 3.
 		 */
 		if (ctrl->type == RK3568 && bank->bank_num == 0 && pin_num >= 27 && pin_num <= 30) {
-			if (pull == RK_BIAS_PULL_UP)
-				pull = 3;
+			if (ret == RK_BIAS_PULL_UP)
+				ret = 3;
 		}
 
 		/* enable the write to the equivalent lower bits */
 		data = ((1 << RK3188_PULL_BITS_PER_PIN) - 1) << (bit + 16);
 		rmask = data | (data >> 16);
-		data |= (pull << bit);
+		data |= (ret << bit);
 
 		ret = regmap_update_bits(regmap, reg, rmask, data);
 		break;
-- 
2.39.2




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

* [PATCH 06/10] ARM: dts: rk3588s: Set CPU clock to 816MHz
  2023-05-30 11:18 [PATCH 00/10] ARM: Rockchip rk3588: eMMC/SD support Sascha Hauer
                   ` (4 preceding siblings ...)
  2023-05-30 11:18 ` [PATCH 05/10] pinctrl: rockchip: fix bias settings Sascha Hauer
@ 2023-05-30 11:18 ` Sascha Hauer
  2023-05-30 11:18 ` [PATCH 07/10] mci: rockchip-dwcmshc-sdhci: enable DLL only for clock >= 52MHz Sascha Hauer
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: Sascha Hauer @ 2023-05-30 11:18 UTC (permalink / raw)
  To: Barebox List

Originally the Kernel rk3588s.dtsi assigned the CPU clock rates in the
scmi_clk node. We had to remove the assigned-clock-rates properties
because our SCMI clock driver didn't work properly. Now it does, so we
can bring these properties back. In the meantime the assigned-clock-rates
properties were moved to the cpu nodes in the upstream dtsi file in
87810bda8a847 ("arm64: dts: rockchip: Fix SCMI assigned clocks on rk3588s")
We do not have a driver on the CPU nodes (and neither does the kernel),
so the properties do not help us there. Instead, add the
assigned-clock-rates properties to our local rk3588s.dtsi file.

With this the CPU clocks are configured to 816MHz where the SoC
previously came up with only 24MHz.

Note that the CPU could run with 2.4GHz, but I am not sure yet if all
voltages are configured correctly for that frequency, so for now run
with the frequency that has been the default in the dtsi files.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
 arch/arm/dts/rk3588s.dtsi | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/arch/arm/dts/rk3588s.dtsi b/arch/arm/dts/rk3588s.dtsi
index ba6561f97e..6f055d826e 100644
--- a/arch/arm/dts/rk3588s.dtsi
+++ b/arch/arm/dts/rk3588s.dtsi
@@ -130,6 +130,7 @@ combphy2_psu: phy@fee20000 {
 };
 
 &scmi_clk {
-	/delete-property/ assigned-clocks;
-	/delete-property/ assigned-clock-rates;
+	assigned-clocks = <&scmi_clk SCMI_CLK_CPUB01>,
+			  <&scmi_clk SCMI_CLK_CPUB23>;
+	assigned-clock-rates = <816000000>, <816000000>;
 };
-- 
2.39.2




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

* [PATCH 07/10] mci: rockchip-dwcmshc-sdhci: enable DLL only for clock >= 52MHz
  2023-05-30 11:18 [PATCH 00/10] ARM: Rockchip rk3588: eMMC/SD support Sascha Hauer
                   ` (5 preceding siblings ...)
  2023-05-30 11:18 ` [PATCH 06/10] ARM: dts: rk3588s: Set CPU clock to 816MHz Sascha Hauer
@ 2023-05-30 11:18 ` Sascha Hauer
  2023-05-30 11:18 ` [PATCH 08/10] ARM: rockchip_v8_defconfig: Enable SCMI support Sascha Hauer
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: Sascha Hauer @ 2023-05-30 11:18 UTC (permalink / raw)
  To: Barebox List

According to the Kernel the DLL should only be enabled for clock
frequencies higher than 52MHz. Do likewise in barebox. Without this
we get

ERROR: rk3568-dwcmshc-sdhci fe2e0000.mmc@fe2e0000.of: DLL lock timeout!

On a RK3588.

The patch is bigger than it actually needs to be. We are updating
register defines with it and move the "Disable cmd conflict check"
block further up to bring the code closer to the corresponding kernel
code.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
 drivers/mci/rockchip-dwcmshc-sdhci.c | 52 ++++++++++++++++++++++------
 1 file changed, 41 insertions(+), 11 deletions(-)

diff --git a/drivers/mci/rockchip-dwcmshc-sdhci.c b/drivers/mci/rockchip-dwcmshc-sdhci.c
index a935e921b1..c44f5731ca 100644
--- a/drivers/mci/rockchip-dwcmshc-sdhci.c
+++ b/drivers/mci/rockchip-dwcmshc-sdhci.c
@@ -25,21 +25,32 @@
 #define DWCMSHC_EMMC_DLL_RXCLK		0x804
 #define DWCMSHC_EMMC_DLL_TXCLK		0x808
 #define DWCMSHC_EMMC_DLL_STRBIN		0x80c
+#define DECMSHC_EMMC_DLL_CMDOUT		0x810
 #define DWCMSHC_EMMC_DLL_STATUS0	0x840
 #define DWCMSHC_EMMC_DLL_START		BIT(0)
+#define DWCMSHC_EMMC_DLL_LOCKED		BIT(8)
+#define DWCMSHC_EMMC_DLL_TIMEOUT	BIT(9)
 #define DWCMSHC_EMMC_DLL_RXCLK_SRCSEL	29
 #define DWCMSHC_EMMC_DLL_START_POINT	16
 #define DWCMSHC_EMMC_DLL_INC		8
+#define DWCMSHC_EMMC_DLL_BYPASS		BIT(24)
 #define DWCMSHC_EMMC_DLL_DLYENA		BIT(27)
-#define DLL_TXCLK_TAPNUM_DEFAULT	0x8
-#define DLL_STRBIN_TAPNUM_DEFAULT	0x8
+#define DLL_TXCLK_TAPNUM_DEFAULT	0x10
+#define DLL_TXCLK_TAPNUM_90_DEGREES	0xA
 #define DLL_TXCLK_TAPNUM_FROM_SW	BIT(24)
+#define DLL_STRBIN_TAPNUM_DEFAULT	0x8
 #define DLL_STRBIN_TAPNUM_FROM_SW	BIT(24)
-#define DWCMSHC_EMMC_DLL_LOCKED		BIT(8)
-#define DWCMSHC_EMMC_DLL_TIMEOUT	BIT(9)
+#define DLL_STRBIN_DELAY_NUM_SEL	BIT(26)
+#define DLL_STRBIN_DELAY_NUM_OFFSET	16
+#define DLL_STRBIN_DELAY_NUM_DEFAULT	0x16
 #define DLL_RXCLK_NO_INVERTER		1
 #define DLL_RXCLK_INVERTER		0
-#define DWCMSHC_ENHANCED_STROBE		BIT(8)
+#define DLL_CMDOUT_TAPNUM_90_DEGREES	0x8
+#define DLL_RXCLK_ORI_GATE		BIT(31)
+#define DLL_CMDOUT_TAPNUM_FROM_SW	BIT(24)
+#define DLL_CMDOUT_SRC_CLK_NEG		BIT(28)
+#define DLL_CMDOUT_EN_SRC_CLK_NEG	BIT(29)
+
 #define DLL_LOCK_WO_TMOUT(x) \
 	((((x) & DWCMSHC_EMMC_DLL_LOCKED) == DWCMSHC_EMMC_DLL_LOCKED) && \
 	(((x) & DWCMSHC_EMMC_DLL_TIMEOUT) == 0))
@@ -137,8 +148,32 @@ static void rk_sdhci_set_clock(struct rk_sdhci_host *host, unsigned int clock)
 
 	sdhci_set_clock(&host->sdhci, clock, clk_get_rate(host->clks[CLK_CORE].clk));
 
-	if (clock <= 400000)
+	/* Disable cmd conflict check */
+	extra = sdhci_read32(&host->sdhci, DWCMSHC_HOST_CTRL3);
+	extra &= ~BIT(0);
+	sdhci_write32(&host->sdhci, DWCMSHC_HOST_CTRL3, extra);
+
+	if (clock <= 52000000) {
+		/*
+		 * Disable DLL and reset both of sample and drive clock.
+		 * The bypass bit and start bit need to be set if DLL is not locked.
+		 */
+		sdhci_write32(&host->sdhci, DWCMSHC_EMMC_DLL_CTRL,
+			      DWCMSHC_EMMC_DLL_BYPASS | DWCMSHC_EMMC_DLL_START);
+		sdhci_write32(&host->sdhci, DWCMSHC_EMMC_DLL_RXCLK, DLL_RXCLK_ORI_GATE);
+		sdhci_write32(&host->sdhci, DWCMSHC_EMMC_DLL_TXCLK, 0);
+		sdhci_write32(&host->sdhci, DECMSHC_EMMC_DLL_CMDOUT, 0);
+		/*
+		 * Before switching to hs400es mode, the driver will enable
+		 * enhanced strobe first. PHY needs to configure the parameters
+		 * of enhanced strobe first.
+		 */
+		extra = DWCMSHC_EMMC_DLL_DLYENA |
+			DLL_STRBIN_DELAY_NUM_SEL |
+			DLL_STRBIN_DELAY_NUM_DEFAULT << DLL_STRBIN_DELAY_NUM_OFFSET;
+		sdhci_write32(&host->sdhci, DWCMSHC_EMMC_DLL_STRBIN, extra);
 		return;
+        }
 
 	/* Reset DLL */
 	sdhci_write32(&host->sdhci, DWCMSHC_EMMC_DLL_CTRL, BIT(1));
@@ -158,11 +193,6 @@ static void rk_sdhci_set_clock(struct rk_sdhci_host *host, unsigned int clock)
 		return;
 	}
 
-	/* Disable cmd conflict check */
-	extra = sdhci_read32(&host->sdhci, DWCMSHC_HOST_CTRL3);
-	extra &= ~BIT(0);
-	sdhci_write32(&host->sdhci, DWCMSHC_HOST_CTRL3, extra);
-
 	extra = 0x1 << 16 | /* tune clock stop en */
 		0x2 << 17 | /* pre-change delay */
 		0x3 << 19;  /* post-change delay */
-- 
2.39.2




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

* [PATCH 08/10] ARM: rockchip_v8_defconfig: Enable SCMI support
  2023-05-30 11:18 [PATCH 00/10] ARM: Rockchip rk3588: eMMC/SD support Sascha Hauer
                   ` (6 preceding siblings ...)
  2023-05-30 11:18 ` [PATCH 07/10] mci: rockchip-dwcmshc-sdhci: enable DLL only for clock >= 52MHz Sascha Hauer
@ 2023-05-30 11:18 ` Sascha Hauer
  2023-05-30 11:18 ` [PATCH 09/10] ARM: multi_v8_defconfig: " Sascha Hauer
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: Sascha Hauer @ 2023-05-30 11:18 UTC (permalink / raw)
  To: Barebox List

SCMI clocks are needed to support the RK3588.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
 arch/arm/configs/rockchip_v8_defconfig | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/arch/arm/configs/rockchip_v8_defconfig b/arch/arm/configs/rockchip_v8_defconfig
index efe6adc9dc..cc3c3c6d48 100644
--- a/arch/arm/configs/rockchip_v8_defconfig
+++ b/arch/arm/configs/rockchip_v8_defconfig
@@ -119,6 +119,7 @@ CONFIG_MCI_MMC_BOOT_PARTITIONS=y
 CONFIG_MCI_DW=y
 CONFIG_MCI_ROCKCHIP_DWCMSHC=y
 CONFIG_MCI_ARASAN=y
+CONFIG_COMMON_CLK_SCMI=y
 CONFIG_MFD_ACT8846=y
 CONFIG_MFD_RK808=y
 CONFIG_LED=y
@@ -129,7 +130,9 @@ CONFIG_WATCHDOG_POLLER=y
 CONFIG_WATCHDOG_DW=y
 CONFIG_REGULATOR=y
 CONFIG_REGULATOR_FIXED=y
+CONFIG_REGULATOR_ARM_SCMI=y
 CONFIG_REGULATOR_RK808=y
+CONFIG_ARM_SCMI_PROTOCOL=y
 CONFIG_GENERIC_PHY=y
 CONFIG_USB_NOP_XCEIV=y
 CONFIG_PHY_ROCKCHIP_INNO_USB2=y
-- 
2.39.2




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

* [PATCH 09/10] ARM: multi_v8_defconfig: Enable SCMI support
  2023-05-30 11:18 [PATCH 00/10] ARM: Rockchip rk3588: eMMC/SD support Sascha Hauer
                   ` (7 preceding siblings ...)
  2023-05-30 11:18 ` [PATCH 08/10] ARM: rockchip_v8_defconfig: Enable SCMI support Sascha Hauer
@ 2023-05-30 11:18 ` Sascha Hauer
  2023-05-30 11:18 ` [PATCH 10/10] ARM: rockchip rock 5b: drop no longer valid comments Sascha Hauer
  2023-05-30 14:16 ` [PATCH 00/10] ARM: Rockchip rk3588: eMMC/SD support Ahmad Fatoum
  10 siblings, 0 replies; 12+ messages in thread
From: Sascha Hauer @ 2023-05-30 11:18 UTC (permalink / raw)
  To: Barebox List

SCMI clocks are needed to support the Rockchip RK3588.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
 arch/arm/configs/multi_v8_defconfig | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/arch/arm/configs/multi_v8_defconfig b/arch/arm/configs/multi_v8_defconfig
index d30158d7f8..e0ff21641a 100644
--- a/arch/arm/configs/multi_v8_defconfig
+++ b/arch/arm/configs/multi_v8_defconfig
@@ -188,6 +188,7 @@ CONFIG_MCI_DW=y
 CONFIG_MCI_ROCKCHIP_DWCMSHC=y
 CONFIG_MCI_IMX_ESDHC=y
 CONFIG_MCI_ARASAN=y
+CONFIG_COMMON_CLK_SCMI=y
 CONFIG_MFD_ACT8846=y
 CONFIG_RAVE_SP_CORE=y
 CONFIG_MFD_RK808=y
@@ -211,12 +212,14 @@ CONFIG_IMX_OCOTP=y
 CONFIG_RAVE_SP_EEPROM=y
 CONFIG_REGULATOR=y
 CONFIG_REGULATOR_FIXED=y
+CONFIG_REGULATOR_ARM_SCMI=y
 CONFIG_REGULATOR_RK808=y
 CONFIG_RESET_IMX7=y
 CONFIG_PCI_ECAM_GENERIC=y
 CONFIG_RTC_CLASS=y
 CONFIG_RTC_DRV_DS1307=y
 CONFIG_FIRMWARE_ZYNQMP_FPGA=y
+CONFIG_ARM_SCMI_PROTOCOL=y
 CONFIG_GENERIC_PHY=y
 CONFIG_USB_NOP_XCEIV=y
 CONFIG_PHY_ROCKCHIP_INNO_USB2=y
-- 
2.39.2




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

* [PATCH 10/10] ARM: rockchip rock 5b: drop no longer valid comments
  2023-05-30 11:18 [PATCH 00/10] ARM: Rockchip rk3588: eMMC/SD support Sascha Hauer
                   ` (8 preceding siblings ...)
  2023-05-30 11:18 ` [PATCH 09/10] ARM: multi_v8_defconfig: " Sascha Hauer
@ 2023-05-30 11:18 ` Sascha Hauer
  2023-05-30 14:16 ` [PATCH 00/10] ARM: Rockchip rk3588: eMMC/SD support Ahmad Fatoum
  10 siblings, 0 replies; 12+ messages in thread
From: Sascha Hauer @ 2023-05-30 11:18 UTC (permalink / raw)
  To: Barebox List

With previous patches both eMMC and SD are now working, so remove
the commments stating that they are not.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
 arch/arm/dts/rk3588-rock-5b.dts | 2 --
 1 file changed, 2 deletions(-)

diff --git a/arch/arm/dts/rk3588-rock-5b.dts b/arch/arm/dts/rk3588-rock-5b.dts
index 737498df3d..b0275b0415 100644
--- a/arch/arm/dts/rk3588-rock-5b.dts
+++ b/arch/arm/dts/rk3588-rock-5b.dts
@@ -69,7 +69,6 @@ &pcie2x1l2 {
 	status = "okay";
 };
 
-/* Not yet working in barebox */
 &sdhci {
 	partitions {
 		compatible = "fixed-partitions";
@@ -83,7 +82,6 @@ environment_emmc: partition@408000 {
 	};
 };
 
-/* Not yet working in barebox */
 &sdmmc {
 	max-frequency = <200000000>;
 	no-sdio;
-- 
2.39.2




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

* Re: [PATCH 00/10] ARM: Rockchip rk3588: eMMC/SD support
  2023-05-30 11:18 [PATCH 00/10] ARM: Rockchip rk3588: eMMC/SD support Sascha Hauer
                   ` (9 preceding siblings ...)
  2023-05-30 11:18 ` [PATCH 10/10] ARM: rockchip rock 5b: drop no longer valid comments Sascha Hauer
@ 2023-05-30 14:16 ` Ahmad Fatoum
  10 siblings, 0 replies; 12+ messages in thread
From: Ahmad Fatoum @ 2023-05-30 14:16 UTC (permalink / raw)
  To: Sascha Hauer, Barebox List

On 30.05.23 13:18, Sascha Hauer wrote:
> This series brings up eMMC/SD on Rockchip rk3588 SoCs. There were
> multiple bugs that prevented them from working.
> 
> Additionally the CPU clock is now configured to 816MHz. This is not
> particularly fast, but considerably faster than the original 24MHz.

Which DRAM setup blob have you been using? Which BL31? What version
of these? Can this be added to the documentation?

> 
> Sascha Hauer (10):
>   mci: rockchip-dwcmshc-sdhci: Add rk3588
>   firmware: arm_scmi: fix async check
>   clk: rockchip: add missing pll_rk3588_core handling
>   clk: clk-divider: fix CLK_DIVIDER_HIWORD_MASK flag
>   pinctrl: rockchip: fix bias settings
>   ARM: dts: rk3588s: Set CPU clock to 816MHz
>   mci: rockchip-dwcmshc-sdhci: enable DLL only for clock >= 52MHz
>   ARM: rockchip_v8_defconfig: Enable SCMI support
>   ARM: multi_v8_defconfig: Enable SCMI support
>   ARM: rockchip rock 5b: drop no longer valid comments
> 
>  arch/arm/configs/multi_v8_defconfig    |  3 ++
>  arch/arm/configs/rockchip_v8_defconfig |  3 ++
>  arch/arm/dts/rk3588-rock-5b.dts        |  2 -
>  arch/arm/dts/rk3588s.dtsi              |  5 ++-
>  drivers/clk/clk-divider.c              |  2 +-
>  drivers/clk/rockchip/clk-pll.c         |  3 +-
>  drivers/firmware/arm_scmi/clock.c      |  2 +-
>  drivers/mci/rockchip-dwcmshc-sdhci.c   | 54 ++++++++++++++++++++------
>  drivers/pinctrl/pinctrl-rockchip.c     | 31 +++++++++++++--
>  9 files changed, 83 insertions(+), 22 deletions(-)
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |




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

end of thread, other threads:[~2023-05-30 14:17 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-05-30 11:18 [PATCH 00/10] ARM: Rockchip rk3588: eMMC/SD support Sascha Hauer
2023-05-30 11:18 ` [PATCH 01/10] mci: rockchip-dwcmshc-sdhci: Add rk3588 Sascha Hauer
2023-05-30 11:18 ` [PATCH 02/10] firmware: arm_scmi: fix async check Sascha Hauer
2023-05-30 11:18 ` [PATCH 03/10] clk: rockchip: add missing pll_rk3588_core handling Sascha Hauer
2023-05-30 11:18 ` [PATCH 04/10] clk: clk-divider: fix CLK_DIVIDER_HIWORD_MASK flag Sascha Hauer
2023-05-30 11:18 ` [PATCH 05/10] pinctrl: rockchip: fix bias settings Sascha Hauer
2023-05-30 11:18 ` [PATCH 06/10] ARM: dts: rk3588s: Set CPU clock to 816MHz Sascha Hauer
2023-05-30 11:18 ` [PATCH 07/10] mci: rockchip-dwcmshc-sdhci: enable DLL only for clock >= 52MHz Sascha Hauer
2023-05-30 11:18 ` [PATCH 08/10] ARM: rockchip_v8_defconfig: Enable SCMI support Sascha Hauer
2023-05-30 11:18 ` [PATCH 09/10] ARM: multi_v8_defconfig: " Sascha Hauer
2023-05-30 11:18 ` [PATCH 10/10] ARM: rockchip rock 5b: drop no longer valid comments Sascha Hauer
2023-05-30 14:16 ` [PATCH 00/10] ARM: Rockchip rk3588: eMMC/SD support Ahmad Fatoum

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox