
Am 27.01.2017 um 00:24 schrieb Andreas Färber:
Am 25.01.2017 um 20:54 schrieb Heiner Kallweit:
Add MMC support in Odroid C2 board init code and config.
Signed-off-by: Heiner Kallweit hkallweit1@gmail.com
This looks very much like Carlo's and my patches, so this is missing Signed-off-bys.
Would be added in a v3 once more review comments are available.
v2:
- move GXBB_PINMUX definition from patch 3 to this one
arch/arm/include/asm/arch-meson/gxbb.h | 2 ++ board/amlogic/odroid-c2/odroid-c2.c | 27 +++++++++++++++++++++++++++ configs/odroid-c2_defconfig | 6 +++++- 3 files changed, 34 insertions(+), 1 deletion(-)
diff --git a/arch/arm/include/asm/arch-meson/gxbb.h b/arch/arm/include/asm/arch-meson/gxbb.h index ce41349..af21222 100644 --- a/arch/arm/include/asm/arch-meson/gxbb.h +++ b/arch/arm/include/asm/arch-meson/gxbb.h @@ -20,6 +20,8 @@ #define GXBB_GPIO_IN(n) GXBB_PERIPHS_ADDR(_GXBB_GPIO_OFF(n) + 1) #define GXBB_GPIO_OUT(n) GXBB_PERIPHS_ADDR(_GXBB_GPIO_OFF(n) + 2)
+#define GXBB_PINMUX(n) GXBB_PERIPHS_ADDR(0x2c + (n))
#define GXBB_ETH_REG_0 GXBB_PERIPHS_ADDR(0x50) #define GXBB_ETH_REG_1 GXBB_PERIPHS_ADDR(0x51)
diff --git a/board/amlogic/odroid-c2/odroid-c2.c b/board/amlogic/odroid-c2/odroid-c2.c index b61daaa..b559c71 100644 --- a/board/amlogic/odroid-c2/odroid-c2.c +++ b/board/amlogic/odroid-c2/odroid-c2.c @@ -8,6 +8,7 @@ #include <asm/io.h> #include <asm/arch/gxbb.h> #include <asm/arch/sm.h> +#include <asm/arch/sd_emmc.h> #include <dm/platdata.h> #include <phy.h>
@@ -52,3 +53,29 @@ int misc_init_r(void)
return 0; }
+static void meson_mmc_pinmux_setup(unsigned int port) +{
switch (port) {
case SDIO_PORT_A:
setbits_le32(GXBB_PINMUX(8), 0x3f);
break;
case SDIO_PORT_B:
setbits_le32(GXBB_PINMUX(2), 0x3f << 10);
break;
case SDIO_PORT_C:
clrbits_le32(GXBB_PINMUX(2), 0x1f << 22);
setbits_le32(GXBB_PINMUX(4), (0x3 << 18) | (3 << 30));
break;
default:
printf("meson: invalid MMC port %d for pinmux setup\n", port);
break;
}
+}
I think this function is misplaced here, it seems generic GXBB. But see below.
This is one of the parts inherited from Carlo's original driver. I didn't touch it. But yes, maybe we should think about how to improve it.
By the way, the bits which get cleared under SDIO_PORT_C I didn't find in the Hardkernel-provided GXBB datasheet. It would be good if somebody with access to other datasheet sources could review this.
Question would be whether it's better to bring a working driver to mainline and add improvements then or more rework the driver before bringing it to mainline.
+int board_mmc_init(bd_t *bis) +{
meson_mmc_pinmux_setup(CONFIG_MMC_MESON_GX_SD_PORT);
return 0;
+} diff --git a/configs/odroid-c2_defconfig b/configs/odroid-c2_defconfig index 7d0b2b1..b4e3277 100644 --- a/configs/odroid-c2_defconfig +++ b/configs/odroid-c2_defconfig @@ -3,7 +3,10 @@ CONFIG_ARCH_MESON=y CONFIG_MESON_GXBB=y CONFIG_TARGET_ODROID_C2=y CONFIG_IDENT_STRING=" odroid-c2" -# CONFIG_MMC is not set +CONFIG_MMC=y +CONFIG_DM_MMC=y +CONFIG_MMC_MESON_GX=y
+CONFIG_MMC_MESON_GX_SD_PORT=1
I know I refactored this one into a Kconfig option, but I believe it was wrong. The only usage is in odroid-c2.c, so it can be hardcoded there.
Not sure whether this option would be applicable for other boards too. Hardcoding it would be fine with me too.
But actually the pinctrl info should be in the device tree if updated properly, and Beniamino's pinctrl driver seemed to get merged, so why do we need the above code in odroid-c2.c at all?
Thanks for the hint. I wasn't aware that there is a pinctrl driver available in uboot and didn't touch this part of Carlo's original driver.
Again the question would be whether to migrate the mmc driver to use the pinctrl driver now or in a second step.
Rgds, Heiner
CONFIG_DEFAULT_DEVICE_TREE="meson-gxbb-odroidc2" # CONFIG_DISPLAY_CPUINFO is not set # CONFIG_DISPLAY_BOARDINFO is not set @@ -15,6 +18,7 @@ CONFIG_HUSH_PARSER=y # CONFIG_CMD_FPGA is not set # CONFIG_CMD_SOURCE is not set # CONFIG_CMD_SETEXPR is not set +CONFIG_CMD_MMC=y CONFIG_OF_CONTROL=y CONFIG_NET_RANDOM_ETHADDR=y CONFIG_DM_ETH=y
Anyway, thanks for giving this a shot!
Regards, Andreas
P.S. For the second time already only patches 2-4 are threaded together
- please double-check your scripts.