Lines Matching full:slot

82 #define	BCM_SDHCI_SLOT_LEFT(slot)	\  argument
83 ((slot)->curcmd->data->len - (slot)->offset)
85 #define BCM_SDHCI_SEGSZ_LEFT(slot) \ argument
87 rounddown(BCM_SDHCI_SLOT_LEFT(slot), BCM_SDHCI_BUFFER_SIZE))
184 static void bcm_sdhci_start_dma(struct sdhci_slot *slot);
453 bcm_sdhci_read_1(device_t dev, struct sdhci_slot *slot, bus_size_t off) in bcm_sdhci_read_1() argument
462 bcm_sdhci_read_2(device_t dev, struct sdhci_slot *slot, bus_size_t off) in bcm_sdhci_read_2() argument
483 bcm_sdhci_read_4(device_t dev, struct sdhci_slot *slot, bus_size_t off) in bcm_sdhci_read_4() argument
491 bcm_sdhci_read_multi_4(device_t dev, struct sdhci_slot *slot, bus_size_t off, in bcm_sdhci_read_multi_4() argument
500 bcm_sdhci_write_1(device_t dev, struct sdhci_slot *slot, bus_size_t off, in bcm_sdhci_write_1() argument
511 bcm_sdhci_write_2(device_t dev, struct sdhci_slot *slot, bus_size_t off, in bcm_sdhci_write_2() argument
557 bcm_sdhci_write_4(device_t dev, struct sdhci_slot *slot, bus_size_t off, in bcm_sdhci_write_4() argument
565 bcm_sdhci_write_multi_4(device_t dev, struct sdhci_slot *slot, bus_size_t off, in bcm_sdhci_write_multi_4() argument
576 struct sdhci_slot *slot; in bcm_sdhci_start_dma_seg() local
580 slot = &sc->sc_slot; in bcm_sdhci_start_dma_seg()
581 mtx_assert(&slot->mtx, MA_OWNED); in bcm_sdhci_start_dma_seg()
584 slot->offset += len; in bcm_sdhci_start_dma_seg()
587 if (slot->curcmd->data->flags & MMC_DATA_READ) { in bcm_sdhci_start_dma_seg()
621 slot->intmask &= ~DATA_XFER_MASK; in bcm_sdhci_start_dma_seg()
622 bcm_sdhci_write_4(sc->sc_dev, slot, SDHCI_SIGNAL_ENABLE, in bcm_sdhci_start_dma_seg()
623 slot->intmask); in bcm_sdhci_start_dma_seg()
637 struct sdhci_slot *slot = &sc->sc_slot; in bcm_sdhci_dma_exit() local
639 mtx_assert(&slot->mtx, MA_OWNED); in bcm_sdhci_dma_exit()
642 slot->intmask |= DATA_XFER_MASK; in bcm_sdhci_dma_exit()
643 bcm_sdhci_write_4(slot->bus, slot, SDHCI_SIGNAL_ENABLE, in bcm_sdhci_dma_exit()
644 slot->intmask); in bcm_sdhci_dma_exit()
650 struct sdhci_slot *slot = &sc->sc_slot; in bcm_sdhci_dma_unload() local
654 if ((slot->curcmd->data->flags & MMC_DATA_READ) != 0) in bcm_sdhci_dma_unload()
670 struct sdhci_slot *slot = &sc->sc_slot; in bcm_sdhci_dma_intr() local
673 mtx_lock(&slot->mtx); in bcm_sdhci_dma_intr()
674 if (slot->curcmd == NULL) in bcm_sdhci_dma_intr()
694 reg = bcm_sdhci_read_4(slot->bus, slot, SDHCI_INT_STATUS) & in bcm_sdhci_dma_intr()
697 BCM_SDHCI_SEGSZ_LEFT(slot) >= BCM_SDHCI_BUFFER_SIZE) { in bcm_sdhci_dma_intr()
699 bcm_sdhci_write_4(slot->bus, slot, SDHCI_INT_STATUS, in bcm_sdhci_dma_intr()
702 bcm_sdhci_start_dma(slot); in bcm_sdhci_dma_intr()
703 if (slot->curcmd->error != 0) { in bcm_sdhci_dma_intr()
707 sdhci_finish_data(slot); in bcm_sdhci_dma_intr()
711 bcm_sdhci_write_4(slot->bus, slot, SDHCI_INT_STATUS, in bcm_sdhci_dma_intr()
713 slot->flags &= ~PLATFORM_DATA_STARTED; in bcm_sdhci_dma_intr()
714 sdhci_finish_data(slot); in bcm_sdhci_dma_intr()
719 mtx_unlock(&slot->mtx); in bcm_sdhci_dma_intr()
723 bcm_sdhci_start_dma(struct sdhci_slot *slot) in bcm_sdhci_start_dma() argument
725 struct bcm_sdhci_softc *sc = device_get_softc(slot->bus); in bcm_sdhci_start_dma()
729 mtx_assert(&slot->mtx, MA_OWNED); in bcm_sdhci_start_dma()
731 left = BCM_SDHCI_SEGSZ_LEFT(slot); in bcm_sdhci_start_dma()
732 buf = (uint8_t *)slot->curcmd->data->data + slot->offset; in bcm_sdhci_start_dma()
743 slot->curcmd->error = MMC_ERR_NO_MEMORY; in bcm_sdhci_start_dma()
752 bcm_sdhci_will_handle_transfer(device_t dev, struct sdhci_slot *slot) in bcm_sdhci_will_handle_transfer() argument
755 struct bcm_sdhci_softc *sc = device_get_softc(slot->bus); in bcm_sdhci_will_handle_transfer()
779 if (BCM_SDHCI_SEGSZ_LEFT(slot) < BCM_DMA_BLOCK_SIZE) in bcm_sdhci_will_handle_transfer()
786 bcm_sdhci_start_transfer(device_t dev, struct sdhci_slot *slot, in bcm_sdhci_start_transfer() argument
791 bcm_sdhci_start_dma(slot); in bcm_sdhci_start_transfer()
795 bcm_sdhci_finish_transfer(device_t dev, struct sdhci_slot *slot) in bcm_sdhci_finish_transfer() argument
797 struct bcm_sdhci_softc *sc = device_get_softc(slot->bus); in bcm_sdhci_finish_transfer()
815 sdhci_finish_data(slot); in bcm_sdhci_finish_transfer()