On 03/28/2014 11:16 AM, Hans de Goede wrote:
Signed-off-by: Hans de Goede <hdego...@redhat.com>
---
  arch/arm/cpu/armv7/sunxi/clock.c              |  3 +++
  arch/arm/include/asm/arch-sunxi/clock-sun6i.h | 21 +++++++++++++++++++++
  drivers/mmc/sunxi_mmc.c                       |  9 ++++++++-
  include/configs/sunxi-common.h                |  2 --
  4 files changed, 32 insertions(+), 3 deletions(-)

diff --git a/arch/arm/cpu/armv7/sunxi/clock.c b/arch/arm/cpu/armv7/sunxi/clock.c
index e3c8fef..273aa3f 100644
--- a/arch/arm/cpu/armv7/sunxi/clock.c
+++ b/arch/arm/cpu/armv7/sunxi/clock.c
@@ -58,6 +58,9 @@ int clock_init(void)

        /* open the clock for uart */
        sr32(&ccm->apb2_gate, 16 + CONFIG_CONS_INDEX - 1, 1, CLK_GATE_OPEN);
+
+       /* Dup with clock_init_safe(), drop once sun6i SPL support lands */
+       writel(PLL6_CFG_DEFAULT, &ccm->pll6_cfg);
Shouldn't this only be done on sun6i then? as sun457i do have the SPL?

olliver
  #else
        /* uart clock source is apb1 */
        sr32(&ccm->apb1_clk_div_cfg, 24, 2, APB1_CLK_SRC_OSC24M);
diff --git a/arch/arm/include/asm/arch-sunxi/clock-sun6i.h 
b/arch/arm/include/asm/arch-sunxi/clock-sun6i.h
index 147e6c9..2f20d5d 100644
--- a/arch/arm/include/asm/arch-sunxi/clock-sun6i.h
+++ b/arch/arm/include/asm/arch-sunxi/clock-sun6i.h
@@ -141,4 +141,25 @@ struct sunxi_ccm_reg {
  #define APB2_FACTOR_M                 0
  #define APB2_FACTOR_N                 0

+#define PLL6_CFG_DEFAULT               0x90041911
+
+#define AHB_GATE_OFFSET_MMC3           11
+#define AHB_GATE_OFFSET_MMC2           10
+#define AHB_GATE_OFFSET_MMC1           9
+#define AHB_GATE_OFFSET_MMC0           8
+#define AHB_GATE_OFFSET_MMC(n)         (AHB_GATE_OFFSET_MMC0 + (n))
+
+#define CCM_MMC_CTRL_OSCM24 (0x0 << 24)
+#define CCM_MMC_CTRL_PLL6   (0x1 << 24)
+
+#define CCM_MMC_CTRL_ENABLE (0x1 << 31)
+
+#define SUN6I_ABP1_RESET_BASE          0x01c202c0
+
+#define ABP1_RESET_OFFSET_MMC3         11
+#define ABP1_RESET_OFFSET_MMC2         10
+#define ABP1_RESET_OFFSET_MMC1         9
+#define ABP1_RESET_OFFSET_MMC0         8
+#define ABP1_RESET_OFFSET_MMC(n)       (ABP1_RESET_OFFSET_MMC0 + (n))
+
  #endif /* _SUNXI_CLOCK_SUN6I_H */
diff --git a/drivers/mmc/sunxi_mmc.c b/drivers/mmc/sunxi_mmc.c
index 4573621..4cb5dc7 100644
--- a/drivers/mmc/sunxi_mmc.c
+++ b/drivers/mmc/sunxi_mmc.c
@@ -77,7 +77,7 @@ struct sunxi_mmc_des {
        u32 data_buf1_sz:13;
        u32 data_buf2_sz:13;
        u32 reserverd2_1:6;
-#elif defined(CONFIG_SUN5I) || defined(CONFIG_SUN7I)
+#elif defined(CONFIG_SUN5I) || defined(CONFIG_SUN6I) || defined(CONFIG_SUN7I)
  #define SDXC_DES_NUM_SHIFT 16
  #define SDXC_DES_BUFFER_MAX_LEN       (1 << SDXC_DES_NUM_SHIFT)
        u32 data_buf1_sz:16;
@@ -203,6 +203,13 @@ static int mmc_clk_io_on(int sdc_no)
        rval |= 1 << AHB_GATE_OFFSET_MMC(sdc_no);
        writel(rval, &ccm->ahb_gate0);

+#if defined(CONFIG_SUN6I)
+       /* unassert reset */
+       rval = readl(SUN6I_ABP1_RESET_BASE);
+       rval |= 1 << ABP1_RESET_OFFSET_MMC(sdc_no);
+       writel(rval, SUN6I_ABP1_RESET_BASE);
+#endif
+
        /* config mod clock */
        pll_clk = clock_get_pll6();
        /* should be close to 100 MHz but no more, so round up */
diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h
index dd7c668..212b621 100644
--- a/include/configs/sunxi-common.h
+++ b/include/configs/sunxi-common.h
@@ -81,7 +81,6 @@

  /* mmc config */
  /* Can't use MMC slot 0 if the UART is directed there */
-#ifndef CONFIG_SUN6I
  #if !defined CONFIG_UART0_PORT_F || CONFIG_MMC_SUNXI_SLOT != 0
  #define CONFIG_MMC
  #define CONFIG_GENERIC_MMC
@@ -94,7 +93,6 @@
  #define CONFIG_ENV_IS_IN_MMC
  #define CONFIG_SYS_MMC_ENV_DEV                0       /* first detected MMC 
controller */
  #endif
-#endif

  /* 4MB of malloc() pool */
  #define CONFIG_SYS_MALLOC_LEN         (CONFIG_ENV_SIZE + (4 << 20))


--
You received this message because you are subscribed to the Google Groups 
"linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to linux-sunxi+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to