summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/dev/sdmmc/sdmmc.c6
-rw-r--r--sys/dev/sdmmc/sdmmcchip.h3
-rw-r--r--sys/dev/sdmmc/sdmmcvar.h3
3 files changed, 8 insertions, 4 deletions
diff --git a/sys/dev/sdmmc/sdmmc.c b/sys/dev/sdmmc/sdmmc.c
index 87328f0bc47..32285bce1cb 100644
--- a/sys/dev/sdmmc/sdmmc.c
+++ b/sys/dev/sdmmc/sdmmc.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sdmmc.c,v 1.51 2018/08/09 13:52:36 patrick Exp $ */
+/* $OpenBSD: sdmmc.c,v 1.52 2018/12/29 11:37:30 patrick Exp $ */
/*
* Copyright (c) 2006 Uwe Stuehler <uwe@openbsd.org>
@@ -118,12 +118,14 @@ sdmmc_attach(struct device *parent, struct device *self, void *aux)
sc->sc_dmap = saa->dmap;
sc->sc_flags = saa->flags;
sc->sc_caps = saa->caps;
+ sc->sc_max_seg = saa->max_seg ? saa->max_seg : MAXPHYS;
sc->sc_max_xfer = saa->max_xfer;
memcpy(&sc->sc_cookies, &saa->cookies, sizeof(sc->sc_cookies));
if (ISSET(sc->sc_caps, SMC_CAPS_DMA) && sc->sc_dmap == NULL) {
error = bus_dmamap_create(sc->sc_dmat, MAXPHYS, SDMMC_MAXNSEGS,
- MAXPHYS, 0, BUS_DMA_NOWAIT|BUS_DMA_ALLOCNOW, &sc->sc_dmap);
+ sc->sc_max_seg, 0, BUS_DMA_NOWAIT|BUS_DMA_ALLOCNOW,
+ &sc->sc_dmap);
if (error) {
printf("%s: can't create DMA map\n", DEVNAME(sc));
return;
diff --git a/sys/dev/sdmmc/sdmmcchip.h b/sys/dev/sdmmc/sdmmcchip.h
index 98b6d292399..14e2568c021 100644
--- a/sys/dev/sdmmc/sdmmcchip.h
+++ b/sys/dev/sdmmc/sdmmcchip.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: sdmmcchip.h,v 1.12 2018/08/09 13:52:36 patrick Exp $ */
+/* $OpenBSD: sdmmcchip.h,v 1.13 2018/12/29 11:37:30 patrick Exp $ */
/*
* Copyright (c) 2006 Uwe Stuehler <uwe@openbsd.org>
@@ -104,6 +104,7 @@ struct sdmmcbus_attach_args {
bus_dmamap_t dmap;
int flags;
int caps;
+ long max_seg;
long max_xfer;
void *cookies[SDMMC_MAX_FUNCTIONS];
};
diff --git a/sys/dev/sdmmc/sdmmcvar.h b/sys/dev/sdmmc/sdmmcvar.h
index cd6a3637141..1cc635e3182 100644
--- a/sys/dev/sdmmc/sdmmcvar.h
+++ b/sys/dev/sdmmc/sdmmcvar.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: sdmmcvar.h,v 1.30 2018/08/09 13:52:36 patrick Exp $ */
+/* $OpenBSD: sdmmcvar.h,v 1.31 2018/12/29 11:37:30 patrick Exp $ */
/*
* Copyright (c) 2006 Uwe Stuehler <uwe@openbsd.org>
@@ -213,6 +213,7 @@ struct sdmmc_softc {
struct rwlock sc_lock; /* lock around host controller */
void *sc_scsibus; /* SCSI bus emulation softc */
TAILQ_HEAD(, sdmmc_intr_handler) sc_intrq; /* interrupt handlers */
+ long sc_max_seg; /* maximum segment size */
long sc_max_xfer; /* maximum transfer size */
void *sc_cookies[SDMMC_MAX_FUNCTIONS]; /* pass extra info from bus to dev */
};