Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 21 May 2021 16:04:15 GMT
From:      Emmanuel Vadot <manu@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: b0387990a784 - main - mmc_fdt_helpers: Parse the optional pwrseq element.
Message-ID:  <202105211604.14LG4F4q005088@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by manu:

URL: https://cgit.FreeBSD.org/src/commit/?id=b0387990a784050ef3a14ea49cb513b5eb737844

commit b0387990a784050ef3a14ea49cb513b5eb737844
Author:     Emmanuel Vadot <manu@FreeBSD.org>
AuthorDate: 2021-05-16 12:50:10 +0000
Commit:     Emmanuel Vadot <manu@FreeBSD.org>
CommitDate: 2021-05-21 15:36:58 +0000

    mmc_fdt_helpers: Parse the optional pwrseq element.
    
    If a sd/emmc node have a pwrseq property parse it and get the corresponding
    driver.
    This can later be used to powerup/powerdown the SDIO card or eMMC.
    
    Sponsored by:   Diablotin Systems
    Differential Revision:  https://reviews.freebsd.org/D30289
---
 sys/dev/mmc/mmc_fdt_helpers.c | 8 ++++++++
 sys/dev/mmc/mmc_fdt_helpers.h | 2 ++
 2 files changed, 10 insertions(+)

diff --git a/sys/dev/mmc/mmc_fdt_helpers.c b/sys/dev/mmc/mmc_fdt_helpers.c
index 7dff3851883b..e544f3c4ac08 100644
--- a/sys/dev/mmc/mmc_fdt_helpers.c
+++ b/sys/dev/mmc/mmc_fdt_helpers.c
@@ -100,6 +100,7 @@ mmc_fdt_parse(device_t dev, phandle_t node, struct mmc_fdt_helper *helper,
     struct mmc_host *host)
 {
 	uint32_t bus_width;
+	phandle_t pwrseq_xref;
 
 	if (node <= 0)
 		node = ofw_bus_get_node(dev);
@@ -181,6 +182,13 @@ mmc_fdt_parse(device_t dev, phandle_t node, struct mmc_fdt_helper *helper,
 		host->caps |= MMC_CAP_SIGNALING_330;
 #endif
 
+	if (OF_hasprop(node, "mmc-pwrseq")) {
+		if (OF_getencprop(node, "mmc-pwrseq", &pwrseq_xref, sizeof(pwrseq_xref)) == -1) {
+			device_printf(dev, "Cannot get the pwrseq_xref property\n");
+			return (ENXIO);
+		}
+		helper->mmc_pwrseq = OF_device_from_xref(pwrseq_xref);
+	}
 	return (0);
 }
 
diff --git a/sys/dev/mmc/mmc_fdt_helpers.h b/sys/dev/mmc/mmc_fdt_helpers.h
index 73ec324d6b9f..c6e2175690ee 100644
--- a/sys/dev/mmc/mmc_fdt_helpers.h
+++ b/sys/dev/mmc/mmc_fdt_helpers.h
@@ -63,6 +63,8 @@ struct mmc_fdt_helper {
 	regulator_t	vmmc_supply;
 	regulator_t	vqmmc_supply;
 #endif
+
+	device_t	mmc_pwrseq;
 };
 
 typedef void (*mmc_fdt_cd_handler)(device_t dev, bool present);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202105211604.14LG4F4q005088>