60 lines
2.1 KiB
Diff
60 lines
2.1 KiB
Diff
From ecf2bcae5fb4c7314f3c36842ae88a31c596d529 Mon Sep 17 00:00:00 2001
|
|
From: Neil Armstrong <narmstrong@baylibre.com>
|
|
Date: Thu, 14 Jan 2021 17:43:02 +0100
|
|
Subject: [PATCH 14/77] WIP: mmc: meson-gx-mmc: set core clock phase to 270
|
|
degres for AXG compatible controllers
|
|
|
|
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
|
|
---
|
|
drivers/mmc/host/meson-gx-mmc.c | 6 +++++-
|
|
1 file changed, 5 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/drivers/mmc/host/meson-gx-mmc.c b/drivers/mmc/host/meson-gx-mmc.c
|
|
index 3f28eb4d17fe..c224b0832403 100644
|
|
--- a/drivers/mmc/host/meson-gx-mmc.c
|
|
+++ b/drivers/mmc/host/meson-gx-mmc.c
|
|
@@ -38,6 +38,7 @@
|
|
#define CLK_RX_PHASE_MASK GENMASK(13, 12)
|
|
#define CLK_PHASE_0 0
|
|
#define CLK_PHASE_180 2
|
|
+#define CLK_PHASE_270 3
|
|
#define CLK_V2_TX_DELAY_MASK GENMASK(19, 16)
|
|
#define CLK_V2_RX_DELAY_MASK GENMASK(23, 20)
|
|
#define CLK_V2_ALWAYS_ON BIT(24)
|
|
@@ -136,6 +137,7 @@ struct meson_mmc_data {
|
|
unsigned int rx_delay_mask;
|
|
unsigned int always_on;
|
|
unsigned int adjust;
|
|
+ unsigned int clk_core_phase;
|
|
};
|
|
|
|
struct sd_emmc_desc {
|
|
@@ -426,7 +428,7 @@ static int meson_mmc_clk_init(struct meson_host *host)
|
|
/* init SD_EMMC_CLOCK to sane defaults w/min clock rate */
|
|
clk_reg = CLK_ALWAYS_ON(host);
|
|
clk_reg |= CLK_DIV_MASK;
|
|
- clk_reg |= FIELD_PREP(CLK_CORE_PHASE_MASK, CLK_PHASE_180);
|
|
+ clk_reg |= FIELD_PREP(CLK_CORE_PHASE_MASK, host->data->clk_core_phase);
|
|
clk_reg |= FIELD_PREP(CLK_TX_PHASE_MASK, CLK_PHASE_0);
|
|
clk_reg |= FIELD_PREP(CLK_RX_PHASE_MASK, CLK_PHASE_0);
|
|
writel(clk_reg, host->regs + SD_EMMC_CLOCK);
|
|
@@ -1291,6 +1293,7 @@ static const struct meson_mmc_data meson_gx_data = {
|
|
.rx_delay_mask = CLK_V2_RX_DELAY_MASK,
|
|
.always_on = CLK_V2_ALWAYS_ON,
|
|
.adjust = SD_EMMC_ADJUST,
|
|
+ .clk_core_phase = CLK_PHASE_180,
|
|
};
|
|
|
|
static const struct meson_mmc_data meson_axg_data = {
|
|
@@ -1298,6 +1301,7 @@ static const struct meson_mmc_data meson_axg_data = {
|
|
.rx_delay_mask = CLK_V3_RX_DELAY_MASK,
|
|
.always_on = CLK_V3_ALWAYS_ON,
|
|
.adjust = SD_EMMC_V3_ADJUST,
|
|
+ .clk_core_phase = CLK_PHASE_270,
|
|
};
|
|
|
|
static const struct of_device_id meson_mmc_of_match[] = {
|
|
--
|
|
2.25.1
|
|
|