bcm2835_sdhci.c (278689) | bcm2835_sdhci.c (278703) |
---|---|
1/*- 2 * Copyright (c) 2012 Oleksandr Tymoshenko <gonzo@freebsd.org> 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 11 unchanged lines hidden (view full) --- 20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 * SUCH DAMAGE. 25 * 26 */ 27#include <sys/cdefs.h> | 1/*- 2 * Copyright (c) 2012 Oleksandr Tymoshenko <gonzo@freebsd.org> 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 11 unchanged lines hidden (view full) --- 20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 * SUCH DAMAGE. 25 * 26 */ 27#include <sys/cdefs.h> |
28__FBSDID("$FreeBSD: stable/10/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c 278689 2015-02-13 18:16:08Z ian $"); | 28__FBSDID("$FreeBSD: stable/10/sys/arm/broadcom/bcm2835/bcm2835_sdhci.c 278703 2015-02-13 20:38:39Z ian $"); |
29 30#include <sys/param.h> 31#include <sys/systm.h> 32#include <sys/bio.h> 33#include <sys/bus.h> 34#include <sys/conf.h> 35#include <sys/endian.h> 36#include <sys/kernel.h> --- 190 unchanged lines hidden (view full) --- 227 sc->sc_slot.opt = SDHCI_PLATFORM_TRANSFER; 228 229 sc->sc_slot.caps = SDHCI_CAN_VDD_330 | SDHCI_CAN_VDD_180; 230 if (bcm2835_sdhci_hs) 231 sc->sc_slot.caps |= SDHCI_CAN_DO_HISPD; 232 sc->sc_slot.caps |= (default_freq << SDHCI_CLOCK_BASE_SHIFT); 233 sc->sc_slot.quirks = SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK 234 | SDHCI_QUIRK_BROKEN_TIMEOUT_VAL | 29 30#include <sys/param.h> 31#include <sys/systm.h> 32#include <sys/bio.h> 33#include <sys/bus.h> 34#include <sys/conf.h> 35#include <sys/endian.h> 36#include <sys/kernel.h> --- 190 unchanged lines hidden (view full) --- 227 sc->sc_slot.opt = SDHCI_PLATFORM_TRANSFER; 228 229 sc->sc_slot.caps = SDHCI_CAN_VDD_330 | SDHCI_CAN_VDD_180; 230 if (bcm2835_sdhci_hs) 231 sc->sc_slot.caps |= SDHCI_CAN_DO_HISPD; 232 sc->sc_slot.caps |= (default_freq << SDHCI_CLOCK_BASE_SHIFT); 233 sc->sc_slot.quirks = SDHCI_QUIRK_DATA_TIMEOUT_USES_SDCLK 234 | SDHCI_QUIRK_BROKEN_TIMEOUT_VAL |
235 | SDHCI_QUIRK_DONT_SET_HISPD_BIT |
|
235 | SDHCI_QUIRK_MISSING_CAPS; 236 237 sdhci_init_slot(dev, &sc->sc_slot, 0); 238 239 sc->sc_dma_ch = bcm_dma_allocate(BCM_DMA_CH_FAST1); 240 if (sc->sc_dma_ch == BCM_DMA_CH_INVALID) 241 sc->sc_dma_ch = bcm_dma_allocate(BCM_DMA_CH_FAST2); 242 if (sc->sc_dma_ch == BCM_DMA_CH_INVALID) --- 153 unchanged lines hidden (view full) --- 396 if (off == SDHCI_COMMAND_FLAGS) 397 val32 = sc->cmd_and_mode; 398 else 399 val32 = RD4(sc, off & ~3); 400 val32 &= ~(0xffff << (off & 3)*8); 401 val32 |= (val << (off & 3)*8); 402 if (off == SDHCI_TRANSFER_MODE) 403 sc->cmd_and_mode = val32; | 236 | SDHCI_QUIRK_MISSING_CAPS; 237 238 sdhci_init_slot(dev, &sc->sc_slot, 0); 239 240 sc->sc_dma_ch = bcm_dma_allocate(BCM_DMA_CH_FAST1); 241 if (sc->sc_dma_ch == BCM_DMA_CH_INVALID) 242 sc->sc_dma_ch = bcm_dma_allocate(BCM_DMA_CH_FAST2); 243 if (sc->sc_dma_ch == BCM_DMA_CH_INVALID) --- 153 unchanged lines hidden (view full) --- 397 if (off == SDHCI_COMMAND_FLAGS) 398 val32 = sc->cmd_and_mode; 399 else 400 val32 = RD4(sc, off & ~3); 401 val32 &= ~(0xffff << (off & 3)*8); 402 val32 |= (val << (off & 3)*8); 403 if (off == SDHCI_TRANSFER_MODE) 404 sc->cmd_and_mode = val32; |
404 else | 405 else { |
405 WR4(sc, off & ~3, val32); | 406 WR4(sc, off & ~3, val32); |
407 if (off == SDHCI_COMMAND_FLAGS) 408 sc->cmd_and_mode = val32; 409 } |
|
406} 407 408static void 409bcm_sdhci_write_4(device_t dev, struct sdhci_slot *slot, bus_size_t off, uint32_t val) 410{ 411 struct bcm_sdhci_softc *sc = device_get_softc(dev); 412 WR4(sc, off, val); 413} --- 297 unchanged lines hidden --- | 410} 411 412static void 413bcm_sdhci_write_4(device_t dev, struct sdhci_slot *slot, bus_size_t off, uint32_t val) 414{ 415 struct bcm_sdhci_softc *sc = device_get_softc(dev); 416 WR4(sc, off, val); 417} --- 297 unchanged lines hidden --- |