Forráskód Böngészése

board:starfive:evb: modify the GPIO configuration for sd module

Modify the GPIO configuration for sd&emmc module, switch the clk of  sd&emmc
to high frequency

Signed-off-by: yanhong.wang <yanhong.wang@starfivetech.com>
yanhong.wang 2 éve
szülő
commit
9ca1a627b4

+ 5 - 0
arch/riscv/include/asm/arch-jh7110/jh7110-regs.h

@@ -82,6 +82,11 @@
 #define CLK_QSPI_REF_SW_SHIFT	24
 #define CLK_QSPI_REF_SW_MASK	0x1000000U
 
+#define CLK_SDIO_SOURCEMUX_OFFSET	0x14
+#define CLK_SDIO_SCLK_SW_SHIFT		24
+#define CLK_SDIO_SCLK_SW_MASK		0x1000000U
+
+
 #define PLL0_DACPD_SHIFT	0x18U
 #define PLL0_DACPD_MASK	0x1000000U
 #define PLL0_DSMPD_SHIFT	0x19U

+ 11 - 0
board/starfive/evb/spl.c

@@ -116,9 +116,20 @@ void board_init_f(ulong dummy)
 		CLK_QSPI_REF_SW_MASK,
 		(0 << CLK_QSPI_REF_SW_SHIFT) & CLK_QSPI_REF_SW_MASK);
 
+	clrsetbits_le32(SYS_CRG_BASE + CLK_SDIO_SOURCEMUX_OFFSET,
+	CLK_SDIO_SCLK_SW_MASK,
+	(0 << CLK_SDIO_SCLK_SW_SHIFT) & CLK_SDIO_SCLK_SW_MASK);
+
 	/*set GPIO to 1.8v*/
 	setbits_be32(SYS_SYSCON_BASE + 0xC, 0xf);
 
+	/* reset emmc */
+	SYS_IOMUX_DOEN(22, LOW);
+	SYS_IOMUX_DOUT(22, 19);
+	/* reset sdio */
+	SYS_IOMUX_DOEN(24, LOW);
+	SYS_IOMUX_DOUT(24, 66);
+
 	ret = spl_early_init();
 	if (ret)
 		panic("spl_early_init() failed: %d\n", ret);

+ 4 - 9
board/starfive/evb/starfive_evb.c

@@ -101,16 +101,11 @@ static void jh7110_usb_init(void)
 static void jh7110_mmc_init(int id)
 {
 	if (id == 0) {
-		SYS_IOMUX_DOEN(62, LOW);
-		SYS_IOMUX_DOUT(62, 19);
+		SYS_IOMUX_DOEN(22, LOW);
+		SYS_IOMUX_DOUT(22, 19);
 	} else {
-		SYS_IOMUX_DOEN(10, LOW);
-		SYS_IOMUX_DOUT(10, 55);
-		SYS_IOMUX_COMPLEX(9, 44, 57, 19);
-		SYS_IOMUX_COMPLEX(11, 45, 58, 20);
-		SYS_IOMUX_COMPLEX(12, 46, 59, 21);
-		SYS_IOMUX_COMPLEX(7, 47, 60, 22);
-		SYS_IOMUX_COMPLEX(8, 48, 61, 23);
+		SYS_IOMUX_DOEN(24, LOW);
+		SYS_IOMUX_DOUT(24, 66);
 	}
 }