[U-Boot] Rockchip RV1108 eMMC support not working
Otavio Salvador
otavio.salvador at ossystems.com.br
Mon Oct 8 19:28:50 UTC 2018
Hi,
We have a custom board based on rv1108 evb where we are trying to add
eMMC support.
Here are the changes we made so far:
arch/arm/dts/rv1108-evb.dts | 45 +++++++++++++++++++++++++++++++++++++++++
configs/evb-rv1108_defconfig | 4 ++++
include/configs/evb_rv1108.h | 14 +------------
include/configs/rv1108_common.h | 3 +++
4 files changed, 53 insertions(+), 13 deletions(-)
diff --git a/arch/arm/dts/rv1108-evb.dts b/arch/arm/dts/rv1108-evb.dts
index ccb9969..f07f402 100644
--- a/arch/arm/dts/rv1108-evb.dts
+++ b/arch/arm/dts/rv1108-evb.dts
@@ -77,3 +77,48 @@
&usb_host_ohci {
status = "okay";
};
+
+&emmc {
+ pinctrl-names = "default";
+ pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_bus8>;
+ bus-width = <8>;
+ cap-mmc-highspeed;
+ supports-emmc;
+ disable-wp;
+ non-removable;
+ num-slots = <1>;
+ status = "okay";
+};
+
+&pinctrl {
+ pcfg_pull_none_drv_8ma: pcfg-pull-none-drv-8ma {
+ bias-disable;
+ drive-strength = <8>;
+ };
+
+ pcfg_pull_up_drv_8ma: pcfg-pull-up-drv-8ma {
+ bias-pull-up;
+ drive-strength = <8>;
+ };
+
+ emmc {
+ emmc_clk: emmc-clk {
+ rockchip,pins = <2 RK_PB6 RK_FUNC_1 &pcfg_pull_none_drv_8ma>;
+ };
+
+ emmc_cmd: emmc-cmd {
+ rockchip,pins = <2 RK_PB4 RK_FUNC_2 &pcfg_pull_up_drv_8ma>;
+ };
+
+ emmc_bus8: emmc-bus8 {
+ rockchip,pins = <2 RK_PA0 RK_FUNC_2 &pcfg_pull_up_drv_8ma>,
+ <2 RK_PA1 RK_FUNC_2 &pcfg_pull_up_drv_8ma>,
+ <2 RK_PA2 RK_FUNC_2 &pcfg_pull_up_drv_8ma>,
+ <2 RK_PA3 RK_FUNC_2 &pcfg_pull_up_drv_8ma>,
+ <2 RK_PA4 RK_FUNC_2 &pcfg_pull_up_drv_8ma>,
+ <2 RK_PA5 RK_FUNC_2 &pcfg_pull_up_drv_8ma>,
+ <2 RK_PA6 RK_FUNC_2 &pcfg_pull_up_drv_8ma>,
+ <2 RK_PA7 RK_FUNC_2 &pcfg_pull_up_drv_8ma>;
+ };
+ };
+};
diff --git a/configs/evb-rv1108_defconfig b/configs/evb-rv1108_defconfig
index 2ef041f..6c992c6 100644
--- a/configs/evb-rv1108_defconfig
+++ b/configs/evb-rv1108_defconfig
@@ -14,10 +14,12 @@ CONFIG_DISPLAY_BOARDINFO_LATE=y
CONFIG_RANDOM_UUID=y
CONFIG_CMD_SF=y
CONFIG_CMD_USB=y
+CONFIG_CMD_MMC=y
# CONFIG_CMD_SETEXPR is not set
CONFIG_CMD_CACHE=y
CONFIG_CMD_TIME=y
CONFIG_DEFAULT_DEVICE_TREE="rv1108-evb"
+CONFIG_ENV_IS_IN_MMC=y
CONFIG_NET_RANDOM_ETHADDR=y
CONFIG_REGMAP=y
CONFIG_SYSCON=y
@@ -27,6 +29,8 @@ CONFIG_FASTBOOT_BUF_SIZE=0x08000000
CONFIG_FASTBOOT_FLASH=y
CONFIG_FASTBOOT_FLASH_MMC_DEV=1
CONFIG_ROCKCHIP_GPIO=y
+CONFIG_MMC_DW=y
+CONFIG_MMC_DW_ROCKCHIP=y
CONFIG_SYS_I2C_ROCKCHIP=y
CONFIG_SPI_FLASH=y
CONFIG_SPI_FLASH_BAR=y
diff --git a/include/configs/evb_rv1108.h b/include/configs/evb_rv1108.h
index 34739c7..aa6c4b0 100644
--- a/include/configs/evb_rv1108.h
+++ b/include/configs/evb_rv1108.h
@@ -8,18 +8,6 @@
#include <configs/rv1108_common.h>
-/*
- * Default environment settings
- */
-#define CONFIG_EXTRA_ENV_SETTINGS \
- "netdev=eth0\0" \
- "ipaddr=172.16.12.50\0" \
- "serverip=172.16.12.69\0" \
- ""
-#define CONFIG_BOOTCOMMAND \
- "sf probe;" \
- "sf read 0x62000000 0x140800 0x500000;" \
- "dcache off;" \
- "go 0x62000000"
+#define CONFIG_SYS_MMC_ENV_DEV 0
#endif
diff --git a/include/configs/rv1108_common.h b/include/configs/rv1108_common.h
index 2ab3b85..cc0384e 100644
--- a/include/configs/rv1108_common.h
+++ b/include/configs/rv1108_common.h
@@ -17,6 +17,9 @@
#define CONFIG_SYS_TIMER_BASE 0x10350020
#define CONFIG_SYS_TIMER_COUNTER (CONFIG_SYS_TIMER_BASE + 8)
+/* MMC/SD IP block */
+#define CONFIG_BOUNCE_BUFFER
+
#define CONFIG_SYS_SDRAM_BASE 0x60000000
#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_TEXT_BASE + 0x100000)
#define CONFIG_SYS_LOAD_ADDR (CONFIG_SYS_SDRAM_BASE + 0x2000000)
--
2.7.4
With this change the eMMC driver is loaded:
U-Boot 2018.11-rc1-00097-ge89d583-dirty (Oct 08 2018 - 16:11:40 -0300)
Model: Rockchip RV1108 Evaluation board
DRAM: 128 MiB
APLL: 600000000 DPLL:1200000000 GPLL:384000000
MMC: dwmmc at 30110000: 0
Loading Environment from MMC... *** Warning - bad CRC, using default environment
In: serial at 10210000
Out: serial at 10210000
Err: serial at 10210000
Model: Rockchip RV1108 Evaluation board
Net:
Warning: ethernet at 30200000 (eth0) using random MAC address - 5a:d2:06:ad:9e:ee
eth0: ethernet at 30200000
=>
and we can also check the 'mmc info' command:
=> mmc info
Device: dwmmc at 30110000
Manufacturer ID: 70
OEM: 100
Name: M6270
Bus Speed: 52000000
Mode : MMC High Speed (52MHz)
Rd Block Len: 512
MMC version 5.1
High Capacity: Yes
Capacity: 3.5 GiB
Bus Width: 8-bit
Erase Group Size: 512 KiB
HC WP Group Size: 8 MiB
User Capacity: 3.5 GiB WRREL
Boot Capacity: 2 MiB ENH
RPMB Capacity: 512 KiB ENH
but we are not able to save the environment to the eMMC card:
=> saveenv
Saving Environment to MMC... Writing to MMC(0)... failed
Failed (1)
=>
Any ideas?
--
Otavio Salvador O.S. Systems
http://www.ossystems.com.br http://code.ossystems.com.br
Mobile: +55 (53) 9 9981-7854 Mobile: +1 (347) 903-9750
More information about the U-Boot
mailing list