summaryrefslogtreecommitdiffstats
path: root/sys/dev/sdmmc
diff options
context:
space:
mode:
authorpatrick <patrick@openbsd.org>2018-02-07 22:08:24 +0000
committerpatrick <patrick@openbsd.org>2018-02-07 22:08:24 +0000
commit709ff52b259512e03924009f6e0470b95d170ed6 (patch)
tree53c1234325a08dd58d05adc33388e67c43541f71 /sys/dev/sdmmc
parentMove parsing the BCDC header on RX into a protocol specific RX (diff)
downloadwireguard-openbsd-709ff52b259512e03924009f6e0470b95d170ed6.tar.xz
wireguard-openbsd-709ff52b259512e03924009f6e0470b95d170ed6.zip
Outsource setting the backplane window into a specific function so it
can be called and reused in different places.
Diffstat (limited to 'sys/dev/sdmmc')
-rw-r--r--sys/dev/sdmmc/if_bwfm_sdio.c38
1 files changed, 19 insertions, 19 deletions
diff --git a/sys/dev/sdmmc/if_bwfm_sdio.c b/sys/dev/sdmmc/if_bwfm_sdio.c
index 733399aa543..65c64f1b144 100644
--- a/sys/dev/sdmmc/if_bwfm_sdio.c
+++ b/sys/dev/sdmmc/if_bwfm_sdio.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_bwfm_sdio.c,v 1.2 2018/02/07 21:44:09 patrick Exp $ */
+/* $OpenBSD: if_bwfm_sdio.c,v 1.3 2018/02/07 22:08:24 patrick Exp $ */
/*
* Copyright (c) 2010-2016 Broadcom Corporation
* Copyright (c) 2016,2017 Patrick Wildt <patrick@blueri.se>
@@ -75,6 +75,7 @@ int bwfm_sdio_match(struct device *, void *, void *);
void bwfm_sdio_attach(struct device *, struct device *, void *);
int bwfm_sdio_detach(struct device *, int);
+void bwfm_sdio_backplane(struct bwfm_sdio_softc *, uint32_t);
uint8_t bwfm_sdio_read_1(struct bwfm_sdio_softc *, uint32_t);
uint32_t bwfm_sdio_read_4(struct bwfm_sdio_softc *, uint32_t);
void bwfm_sdio_write_1(struct bwfm_sdio_softc *, uint32_t,
@@ -226,6 +227,21 @@ bwfm_sdio_detach(struct device *self, int flags)
return 0;
}
+void
+bwfm_sdio_backplane(struct bwfm_sdio_softc *sc, uint32_t bar0)
+{
+ if (sc->sc_bar0 == bar0)
+ return;
+
+ bwfm_sdio_write_1(sc, BWFM_SDIO_FUNC1_SBADDRLOW,
+ (bar0 >> 8) & 0x80);
+ bwfm_sdio_write_1(sc, BWFM_SDIO_FUNC1_SBADDRMID,
+ (bar0 >> 16) & 0xff);
+ bwfm_sdio_write_1(sc, BWFM_SDIO_FUNC1_SBADDRHIGH,
+ (bar0 >> 24) & 0xff);
+ sc->sc_bar0 = bar0;
+}
+
uint8_t
bwfm_sdio_read_1(struct bwfm_sdio_softc *sc, uint32_t addr)
{
@@ -254,15 +270,7 @@ bwfm_sdio_read_4(struct bwfm_sdio_softc *sc, uint32_t addr)
uint32_t bar0 = addr & ~BWFM_SDIO_SB_OFT_ADDR_MASK;
uint32_t rv;
- if (sc->sc_bar0 != bar0) {
- bwfm_sdio_write_1(sc, BWFM_SDIO_FUNC1_SBADDRLOW,
- (bar0 >> 8) & 0x80);
- bwfm_sdio_write_1(sc, BWFM_SDIO_FUNC1_SBADDRMID,
- (bar0 >> 16) & 0xff);
- bwfm_sdio_write_1(sc, BWFM_SDIO_FUNC1_SBADDRHIGH,
- (bar0 >> 24) & 0xff);
- sc->sc_bar0 = bar0;
- }
+ bwfm_sdio_backplane(sc, bar0);
addr &= BWFM_SDIO_SB_OFT_ADDR_MASK;
addr |= BWFM_SDIO_SB_ACCESS_2_4B_FLAG;
@@ -307,15 +315,7 @@ bwfm_sdio_write_4(struct bwfm_sdio_softc *sc, uint32_t addr, uint32_t data)
struct sdmmc_function *sf;
uint32_t bar0 = addr & ~BWFM_SDIO_SB_OFT_ADDR_MASK;
- if (sc->sc_bar0 != bar0) {
- bwfm_sdio_write_1(sc, BWFM_SDIO_FUNC1_SBADDRLOW,
- (bar0 >> 8) & 0x80);
- bwfm_sdio_write_1(sc, BWFM_SDIO_FUNC1_SBADDRMID,
- (bar0 >> 16) & 0xff);
- bwfm_sdio_write_1(sc, BWFM_SDIO_FUNC1_SBADDRHIGH,
- (bar0 >> 24) & 0xff);
- sc->sc_bar0 = bar0;
- }
+ bwfm_sdio_backplane(sc, bar0);
addr &= BWFM_SDIO_SB_OFT_ADDR_MASK;
addr |= BWFM_SDIO_SB_ACCESS_2_4B_FLAG;