svn commit: r318337 - in head/sys: arm/conf arm/mv/armada38x dev/sdhci
Luiz Otavio O Souza
loos at FreeBSD.org
Tue May 16 05:10:17 UTC 2017
Author: loos
Date: Tue May 16 05:10:15 2017
New Revision: 318337
URL: https://svnweb.freebsd.org/changeset/base/318337
Log:
Add the Marvell SDHCI controller to the list of supported devices in
sdhci_fdt.
Enable the SDHCI controller, bus and devices on ARMADA38X kernel.
Tested on: ClearFog Pro
Reviewed by: Marcin Wojtas <mw at semihalf.com>
Sponsored by: Rubicon Communications, LLC (Netgate)
Differential Revision: https://reviews.freebsd.org/D10606
Modified:
head/sys/arm/conf/ARMADA38X
head/sys/arm/mv/armada38x/files.armada38x
head/sys/dev/sdhci/sdhci_fdt.c
Modified: head/sys/arm/conf/ARMADA38X
==============================================================================
--- head/sys/arm/conf/ARMADA38X Tue May 16 04:47:50 2017 (r318336)
+++ head/sys/arm/conf/ARMADA38X Tue May 16 05:10:15 2017 (r318337)
@@ -63,6 +63,11 @@ device scbus
device pass
device da
+# MMC/SD/SDIO Card slot support
+device mmc # mmc/sd bus
+device mmcsd # mmc/sd flash cards
+device sdhci # mmc/sd host controller
+
# SATA
device ahci
Modified: head/sys/arm/mv/armada38x/files.armada38x
==============================================================================
--- head/sys/arm/mv/armada38x/files.armada38x Tue May 16 04:47:50 2017 (r318336)
+++ head/sys/arm/mv/armada38x/files.armada38x Tue May 16 05:10:15 2017 (r318337)
@@ -8,3 +8,4 @@ arm/mv/armada38x/armada38x_mp.c optional
arm/mv/armada38x/pmsu.c standard
arm/mv/armada38x/rtc.c standard
arm/mv/armada38x/armada38x_pl310.c optional pl310
+dev/sdhci/sdhci_fdt.c optional sdhci
Modified: head/sys/dev/sdhci/sdhci_fdt.c
==============================================================================
--- head/sys/dev/sdhci/sdhci_fdt.c Tue May 16 04:47:50 2017 (r318336)
+++ head/sys/dev/sdhci/sdhci_fdt.c Tue May 16 05:10:15 2017 (r318337)
@@ -57,7 +57,17 @@ __FBSDID("$FreeBSD$");
#include "mmcbr_if.h"
#include "sdhci_if.h"
-#define MAX_SLOTS 6
+#define MAX_SLOTS 6
+#define SDHCI_FDT_ARMADA38X 1
+#define SDHCI_FDT_GENERIC 2
+#define SDHCI_FDT_XLNX_ZY7 3
+
+static struct ofw_compat_data compat_data[] = {
+ { "marvell,armada-380-sdhci", SDHCI_FDT_ARMADA38X },
+ { "sdhci_generic", SDHCI_FDT_GENERIC },
+ { "xlnx,zy7_sdhci", SDHCI_FDT_XLNX_ZY7 },
+ { NULL, 0 }
+};
struct sdhci_fdt_softc {
device_t dev; /* Controller device */
@@ -181,13 +191,21 @@ sdhci_fdt_probe(device_t dev)
if (!ofw_bus_status_okay(dev))
return (ENXIO);
- if (ofw_bus_is_compatible(dev, "sdhci_generic")) {
+ switch (ofw_bus_search_compatible(dev, compat_data)->ocd_data) {
+ case SDHCI_FDT_ARMADA38X:
+ sc->quirks = SDHCI_QUIRK_BROKEN_AUTO_STOP;
+ device_set_desc(dev, "ARMADA38X SDHCI controller");
+ break;
+ case SDHCI_FDT_GENERIC:
device_set_desc(dev, "generic fdt SDHCI controller");
- } else if (ofw_bus_is_compatible(dev, "xlnx,zy7_sdhci")) {
+ break;
+ case SDHCI_FDT_XLNX_ZY7:
sc->quirks = SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK;
device_set_desc(dev, "Zynq-7000 generic fdt SDHCI controller");
- } else
+ break;
+ default:
return (ENXIO);
+ }
node = ofw_bus_get_node(dev);
More information about the svn-src-head
mailing list