GENERIC-MMCCAM/SDIO on Allwinner?

Milan Obuch freebsd-arm at dino.sk
Sun Mar 11 19:39:13 UTC 2018


Hi,

I saw there is GENERIC-MMCCAM kernel config file now, which should make
posible to try SDIO on arm boards, so I decided to try it on my
Allwinner H2+ based Orange Pi Zero. It did not work, there was no disk
found for root file system. Examining console output, I found no
mention of aw_mmc device.

I read wiki at https://wiki.freebsd.org/SDIO and looked over another
boards device drivers, and came with following modification to
/usr/sys/arm/allwinner/files.allwinner

--- files.allwinner.orig	2018-03-11 08:23:34.971413000 +0100
+++ files.allwinner	2018-03-11 08:28:56.972933000 +0100
@@ -10,7 +10,7 @@
 arm/allwinner/aw_gpio.c			optional	gpio
 arm/allwinner/aw_if_dwc.c		optional	dwc
 arm/allwinner/aw_machdep.c		standard
-arm/allwinner/aw_mmc.c			optional	mmc
+arm/allwinner/aw_mmc.c			optional	mmc | mmccam
 arm/allwinner/aw_mp.c			optional	smp
 arm/allwinner/aw_nmi.c			optional	intrng
 arm/allwinner/aw_rsb.c			optional	rsb | p2wi

and /usr/sys/arm/allwinner/aw_mmc.c

--- aw_mmc.c.orig	2018-03-11 08:25:05.979124000 +0100
+++ aw_mmc.c	2018-03-11 08:25:56.993269000 +0100
@@ -52,6 +52,8 @@
 #include <dev/extres/hwreset/hwreset.h>
 #include <dev/extres/regulator/regulator.h>
 
+#include "opt_mmccam.h"
+
 #define	AW_MMC_MEMRES		0
 #define	AW_MMC_IRQRES		1
 #define	AW_MMC_RESSZ		2
@@ -1062,4 +1064,6 @@
 
 DRIVER_MODULE(aw_mmc, simplebus, aw_mmc_driver, aw_mmc_devclass, NULL,
     NULL);
+#ifndef MMCCAM
 MMC_DECLARE_BRIDGE(aw_mmc);
+#endif

This makes kernel with aw_mmc device, but it does not work either, in
console output was just

aw_mmc0: <Allwinner Integrated MMC/SD controller> mem 0x1c0f000-0x1c0ffff irq 5 on simplebus0
aw_mmc0: vmmc-supply regulator found
aw_mmc0: attaching MMC child failed!
device_attach: aw_mmc0 attach returned 6
aw_mmc0: <Allwinner Integrated MMC/SD controller> mem 0x1c10000-0x1c10fff irq 6 on simplebus0
aw_mmc0: cannot reset the controller
device_attach: aw_mmc0 attach returned 6

(there are two devices in dtb, first one is for SD card with root
filesystem, second one is for wifi/bluetooth device). This makes
actually sense - there is no device mmc in MMCCAM kernel config files,
however, I am no step nearer now to usable SDIO on Allwinner SoC.

With some more look over sources I realised aw_mmc is not the same as
drivers for devices with working MMCCAM according wiki mentioned above
- in aw_mmc method table, we have just device, bus and MMC bridge
interface, whereas others have SDHCI interface in addition. And naming
suggests it too - aw_mmc vs. ti_sdhci and bcm2835_sdhci...

All this together, it looks like aw_mmc needs some rework in order to
be able to move to MMCCAM framework. Did anybody something more already
which could be shared?

regards,
Milan


More information about the freebsd-arm mailing list