Deleted Added
full compact
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 ---