cq_host 35 drivers/mmc/host/cqhci.c static inline u8 *get_desc(struct cqhci_host *cq_host, u8 tag) cq_host 37 drivers/mmc/host/cqhci.c return cq_host->desc_base + (tag * cq_host->slot_sz); cq_host 40 drivers/mmc/host/cqhci.c static inline u8 *get_link_desc(struct cqhci_host *cq_host, u8 tag) cq_host 42 drivers/mmc/host/cqhci.c u8 *desc = get_desc(cq_host, tag); cq_host 44 drivers/mmc/host/cqhci.c return desc + cq_host->task_desc_len; cq_host 47 drivers/mmc/host/cqhci.c static inline dma_addr_t get_trans_desc_dma(struct cqhci_host *cq_host, u8 tag) cq_host 49 drivers/mmc/host/cqhci.c return cq_host->trans_desc_dma_base + cq_host 50 drivers/mmc/host/cqhci.c (cq_host->mmc->max_segs * tag * cq_host 51 drivers/mmc/host/cqhci.c cq_host->trans_desc_len); cq_host 54 drivers/mmc/host/cqhci.c static inline u8 *get_trans_desc(struct cqhci_host *cq_host, u8 tag) cq_host 56 drivers/mmc/host/cqhci.c return cq_host->trans_desc_base + cq_host 57 drivers/mmc/host/cqhci.c (cq_host->trans_desc_len * cq_host->mmc->max_segs * tag); cq_host 60 drivers/mmc/host/cqhci.c static void setup_trans_desc(struct cqhci_host *cq_host, u8 tag) cq_host 65 drivers/mmc/host/cqhci.c link_temp = get_link_desc(cq_host, tag); cq_host 66 drivers/mmc/host/cqhci.c trans_temp = get_trans_desc_dma(cq_host, tag); cq_host 68 drivers/mmc/host/cqhci.c memset(link_temp, 0, cq_host->link_desc_len); cq_host 69 drivers/mmc/host/cqhci.c if (cq_host->link_desc_len > 8) cq_host 72 drivers/mmc/host/cqhci.c if (tag == DCMD_SLOT && (cq_host->mmc->caps2 & MMC_CAP2_CQE_DCMD)) { cq_host 79 drivers/mmc/host/cqhci.c if (cq_host->dma64) { cq_host 90 drivers/mmc/host/cqhci.c static void cqhci_set_irqs(struct cqhci_host *cq_host, u32 set) cq_host 92 drivers/mmc/host/cqhci.c cqhci_writel(cq_host, set, CQHCI_ISTE); cq_host 93 drivers/mmc/host/cqhci.c cqhci_writel(cq_host, set, CQHCI_ISGE); cq_host 101 drivers/mmc/host/cqhci.c static void cqhci_dumpregs(struct cqhci_host *cq_host) cq_host 103 drivers/mmc/host/cqhci.c struct mmc_host *mmc = cq_host->mmc; cq_host 108 drivers/mmc/host/cqhci.c cqhci_readl(cq_host, CQHCI_CAP), cq_host 109 drivers/mmc/host/cqhci.c cqhci_readl(cq_host, CQHCI_VER)); cq_host 111 drivers/mmc/host/cqhci.c cqhci_readl(cq_host, CQHCI_CFG), cq_host 112 drivers/mmc/host/cqhci.c cqhci_readl(cq_host, CQHCI_CTL)); cq_host 114 drivers/mmc/host/cqhci.c cqhci_readl(cq_host, CQHCI_IS), cq_host 115 drivers/mmc/host/cqhci.c cqhci_readl(cq_host, CQHCI_ISTE)); cq_host 117 drivers/mmc/host/cqhci.c cqhci_readl(cq_host, CQHCI_ISGE), cq_host 118 drivers/mmc/host/cqhci.c cqhci_readl(cq_host, CQHCI_IC)); cq_host 120 drivers/mmc/host/cqhci.c cqhci_readl(cq_host, CQHCI_TDLBA), cq_host 121 drivers/mmc/host/cqhci.c cqhci_readl(cq_host, CQHCI_TDLBAU)); cq_host 123 drivers/mmc/host/cqhci.c cqhci_readl(cq_host, CQHCI_TDBR), cq_host 124 drivers/mmc/host/cqhci.c cqhci_readl(cq_host, CQHCI_TCN)); cq_host 126 drivers/mmc/host/cqhci.c cqhci_readl(cq_host, CQHCI_DQS), cq_host 127 drivers/mmc/host/cqhci.c cqhci_readl(cq_host, CQHCI_DPT)); cq_host 129 drivers/mmc/host/cqhci.c cqhci_readl(cq_host, CQHCI_TCLR), cq_host 130 drivers/mmc/host/cqhci.c cqhci_readl(cq_host, CQHCI_SSC1)); cq_host 132 drivers/mmc/host/cqhci.c cqhci_readl(cq_host, CQHCI_SSC2), cq_host 133 drivers/mmc/host/cqhci.c cqhci_readl(cq_host, CQHCI_CRDCT)); cq_host 135 drivers/mmc/host/cqhci.c cqhci_readl(cq_host, CQHCI_RMEM), cq_host 136 drivers/mmc/host/cqhci.c cqhci_readl(cq_host, CQHCI_TERRI)); cq_host 138 drivers/mmc/host/cqhci.c cqhci_readl(cq_host, CQHCI_CRI), cq_host 139 drivers/mmc/host/cqhci.c cqhci_readl(cq_host, CQHCI_CRA)); cq_host 141 drivers/mmc/host/cqhci.c if (cq_host->ops->dumpregs) cq_host 142 drivers/mmc/host/cqhci.c cq_host->ops->dumpregs(mmc); cq_host 162 drivers/mmc/host/cqhci.c static int cqhci_host_alloc_tdl(struct cqhci_host *cq_host) cq_host 167 drivers/mmc/host/cqhci.c if (cq_host->caps & CQHCI_TASK_DESC_SZ_128) { cq_host 168 drivers/mmc/host/cqhci.c cqhci_writel(cq_host, cqhci_readl(cq_host, CQHCI_CFG) | cq_host 170 drivers/mmc/host/cqhci.c cq_host->task_desc_len = 16; cq_host 172 drivers/mmc/host/cqhci.c cq_host->task_desc_len = 8; cq_host 180 drivers/mmc/host/cqhci.c if (cq_host->dma64) { cq_host 181 drivers/mmc/host/cqhci.c if (cq_host->quirks & CQHCI_QUIRK_SHORT_TXFR_DESC_SZ) cq_host 182 drivers/mmc/host/cqhci.c cq_host->trans_desc_len = 12; cq_host 184 drivers/mmc/host/cqhci.c cq_host->trans_desc_len = 16; cq_host 185 drivers/mmc/host/cqhci.c cq_host->link_desc_len = 16; cq_host 187 drivers/mmc/host/cqhci.c cq_host->trans_desc_len = 8; cq_host 188 drivers/mmc/host/cqhci.c cq_host->link_desc_len = 8; cq_host 192 drivers/mmc/host/cqhci.c cq_host->slot_sz = cq_host->task_desc_len + cq_host->link_desc_len; cq_host 194 drivers/mmc/host/cqhci.c cq_host->desc_size = cq_host->slot_sz * cq_host->num_slots; cq_host 196 drivers/mmc/host/cqhci.c cq_host->data_size = cq_host->trans_desc_len * cq_host->mmc->max_segs * cq_host 197 drivers/mmc/host/cqhci.c cq_host->mmc->cqe_qdepth; cq_host 200 drivers/mmc/host/cqhci.c mmc_hostname(cq_host->mmc), cq_host->desc_size, cq_host->data_size, cq_host 201 drivers/mmc/host/cqhci.c cq_host->slot_sz); cq_host 209 drivers/mmc/host/cqhci.c cq_host->desc_base = dmam_alloc_coherent(mmc_dev(cq_host->mmc), cq_host 210 drivers/mmc/host/cqhci.c cq_host->desc_size, cq_host 211 drivers/mmc/host/cqhci.c &cq_host->desc_dma_base, cq_host 213 drivers/mmc/host/cqhci.c if (!cq_host->desc_base) cq_host 216 drivers/mmc/host/cqhci.c cq_host->trans_desc_base = dmam_alloc_coherent(mmc_dev(cq_host->mmc), cq_host 217 drivers/mmc/host/cqhci.c cq_host->data_size, cq_host 218 drivers/mmc/host/cqhci.c &cq_host->trans_desc_dma_base, cq_host 220 drivers/mmc/host/cqhci.c if (!cq_host->trans_desc_base) { cq_host 221 drivers/mmc/host/cqhci.c dmam_free_coherent(mmc_dev(cq_host->mmc), cq_host->desc_size, cq_host 222 drivers/mmc/host/cqhci.c cq_host->desc_base, cq_host 223 drivers/mmc/host/cqhci.c cq_host->desc_dma_base); cq_host 224 drivers/mmc/host/cqhci.c cq_host->desc_base = NULL; cq_host 225 drivers/mmc/host/cqhci.c cq_host->desc_dma_base = 0; cq_host 230 drivers/mmc/host/cqhci.c mmc_hostname(cq_host->mmc), cq_host->desc_base, cq_host->trans_desc_base, cq_host 231 drivers/mmc/host/cqhci.c (unsigned long long)cq_host->desc_dma_base, cq_host 232 drivers/mmc/host/cqhci.c (unsigned long long)cq_host->trans_desc_dma_base); cq_host 234 drivers/mmc/host/cqhci.c for (; i < (cq_host->num_slots); i++) cq_host 235 drivers/mmc/host/cqhci.c setup_trans_desc(cq_host, i); cq_host 240 drivers/mmc/host/cqhci.c static void __cqhci_enable(struct cqhci_host *cq_host) cq_host 242 drivers/mmc/host/cqhci.c struct mmc_host *mmc = cq_host->mmc; cq_host 245 drivers/mmc/host/cqhci.c cqcfg = cqhci_readl(cq_host, CQHCI_CFG); cq_host 250 drivers/mmc/host/cqhci.c cqhci_writel(cq_host, cqcfg, CQHCI_CFG); cq_host 258 drivers/mmc/host/cqhci.c if (cq_host->caps & CQHCI_TASK_DESC_SZ_128) cq_host 261 drivers/mmc/host/cqhci.c cqhci_writel(cq_host, cqcfg, CQHCI_CFG); cq_host 263 drivers/mmc/host/cqhci.c cqhci_writel(cq_host, lower_32_bits(cq_host->desc_dma_base), cq_host 265 drivers/mmc/host/cqhci.c cqhci_writel(cq_host, upper_32_bits(cq_host->desc_dma_base), cq_host 268 drivers/mmc/host/cqhci.c cqhci_writel(cq_host, cq_host->rca, CQHCI_SSC2); cq_host 270 drivers/mmc/host/cqhci.c cqhci_set_irqs(cq_host, 0); cq_host 274 drivers/mmc/host/cqhci.c cqhci_writel(cq_host, cqcfg, CQHCI_CFG); cq_host 278 drivers/mmc/host/cqhci.c if (cq_host->ops->enable) cq_host 279 drivers/mmc/host/cqhci.c cq_host->ops->enable(mmc); cq_host 284 drivers/mmc/host/cqhci.c cqhci_set_irqs(cq_host, CQHCI_IS_MASK); cq_host 286 drivers/mmc/host/cqhci.c cq_host->activated = true; cq_host 289 drivers/mmc/host/cqhci.c static void __cqhci_disable(struct cqhci_host *cq_host) cq_host 293 drivers/mmc/host/cqhci.c cqcfg = cqhci_readl(cq_host, CQHCI_CFG); cq_host 295 drivers/mmc/host/cqhci.c cqhci_writel(cq_host, cqcfg, CQHCI_CFG); cq_host 297 drivers/mmc/host/cqhci.c cq_host->mmc->cqe_on = false; cq_host 299 drivers/mmc/host/cqhci.c cq_host->activated = false; cq_host 304 drivers/mmc/host/cqhci.c struct cqhci_host *cq_host = mmc->cqe_private; cq_host 306 drivers/mmc/host/cqhci.c if (cq_host->enabled) cq_host 307 drivers/mmc/host/cqhci.c __cqhci_disable(cq_host); cq_host 322 drivers/mmc/host/cqhci.c struct cqhci_host *cq_host = mmc->cqe_private; cq_host 325 drivers/mmc/host/cqhci.c if (cq_host->enabled) cq_host 328 drivers/mmc/host/cqhci.c cq_host->rca = card->rca; cq_host 330 drivers/mmc/host/cqhci.c err = cqhci_host_alloc_tdl(cq_host); cq_host 334 drivers/mmc/host/cqhci.c __cqhci_enable(cq_host); cq_host 336 drivers/mmc/host/cqhci.c cq_host->enabled = true; cq_host 339 drivers/mmc/host/cqhci.c cqhci_dumpregs(cq_host); cq_host 347 drivers/mmc/host/cqhci.c static u32 cqhci_read_ctl(struct cqhci_host *cq_host) cq_host 349 drivers/mmc/host/cqhci.c return cqhci_readl(cq_host, CQHCI_CTL); cq_host 354 drivers/mmc/host/cqhci.c struct cqhci_host *cq_host = mmc->cqe_private; cq_host 358 drivers/mmc/host/cqhci.c if (!cq_host->enabled || !mmc->cqe_on || cq_host->recovery_halt) cq_host 361 drivers/mmc/host/cqhci.c if (cq_host->ops->disable) cq_host 362 drivers/mmc/host/cqhci.c cq_host->ops->disable(mmc, false); cq_host 364 drivers/mmc/host/cqhci.c cqhci_writel(cq_host, CQHCI_HALT, CQHCI_CTL); cq_host 366 drivers/mmc/host/cqhci.c err = readx_poll_timeout(cqhci_read_ctl, cq_host, reg, cq_host 378 drivers/mmc/host/cqhci.c struct cqhci_host *cq_host = mmc->cqe_private; cq_host 380 drivers/mmc/host/cqhci.c if (!cq_host->enabled) cq_host 385 drivers/mmc/host/cqhci.c __cqhci_disable(cq_host); cq_host 387 drivers/mmc/host/cqhci.c dmam_free_coherent(mmc_dev(mmc), cq_host->data_size, cq_host 388 drivers/mmc/host/cqhci.c cq_host->trans_desc_base, cq_host 389 drivers/mmc/host/cqhci.c cq_host->trans_desc_dma_base); cq_host 391 drivers/mmc/host/cqhci.c dmam_free_coherent(mmc_dev(mmc), cq_host->desc_size, cq_host 392 drivers/mmc/host/cqhci.c cq_host->desc_base, cq_host 393 drivers/mmc/host/cqhci.c cq_host->desc_dma_base); cq_host 395 drivers/mmc/host/cqhci.c cq_host->trans_desc_base = NULL; cq_host 396 drivers/mmc/host/cqhci.c cq_host->desc_base = NULL; cq_host 398 drivers/mmc/host/cqhci.c cq_host->enabled = false; cq_host 466 drivers/mmc/host/cqhci.c struct cqhci_host *cq_host, int tag) cq_host 471 drivers/mmc/host/cqhci.c bool dma64 = cq_host->dma64; cq_host 483 drivers/mmc/host/cqhci.c desc = get_trans_desc(cq_host, tag); cq_host 492 drivers/mmc/host/cqhci.c desc += cq_host->trans_desc_len; cq_host 506 drivers/mmc/host/cqhci.c struct cqhci_host *cq_host = mmc->cqe_private; cq_host 522 drivers/mmc/host/cqhci.c task_desc = (__le64 __force *)get_desc(cq_host, cq_host->dcmd_slot); cq_host 523 drivers/mmc/host/cqhci.c memset(task_desc, 0, cq_host->task_desc_len); cq_host 531 drivers/mmc/host/cqhci.c if (cq_host->ops->update_dcmd_desc) cq_host 532 drivers/mmc/host/cqhci.c cq_host->ops->update_dcmd_desc(mmc, mrq, &data); cq_host 564 drivers/mmc/host/cqhci.c struct cqhci_host *cq_host = mmc->cqe_private; cq_host 567 drivers/mmc/host/cqhci.c if (!cq_host->enabled) { cq_host 573 drivers/mmc/host/cqhci.c if (!cq_host->activated) cq_host 574 drivers/mmc/host/cqhci.c __cqhci_enable(cq_host); cq_host 577 drivers/mmc/host/cqhci.c cqhci_writel(cq_host, 0, CQHCI_CTL); cq_host 580 drivers/mmc/host/cqhci.c if (cqhci_readl(cq_host, CQHCI_CTL) && CQHCI_HALT) { cq_host 584 drivers/mmc/host/cqhci.c if (cq_host->ops->enable) cq_host 585 drivers/mmc/host/cqhci.c cq_host->ops->enable(mmc); cq_host 589 drivers/mmc/host/cqhci.c task_desc = (__le64 __force *)get_desc(cq_host, tag); cq_host 592 drivers/mmc/host/cqhci.c err = cqhci_prep_tran_desc(mrq, cq_host, tag); cq_host 602 drivers/mmc/host/cqhci.c spin_lock_irqsave(&cq_host->lock, flags); cq_host 604 drivers/mmc/host/cqhci.c if (cq_host->recovery_halt) { cq_host 609 drivers/mmc/host/cqhci.c cq_host->slot[tag].mrq = mrq; cq_host 610 drivers/mmc/host/cqhci.c cq_host->slot[tag].flags = 0; cq_host 612 drivers/mmc/host/cqhci.c cq_host->qcnt += 1; cq_host 615 drivers/mmc/host/cqhci.c cqhci_writel(cq_host, 1 << tag, CQHCI_TDBR); cq_host 616 drivers/mmc/host/cqhci.c if (!(cqhci_readl(cq_host, CQHCI_TDBR) & (1 << tag))) cq_host 620 drivers/mmc/host/cqhci.c spin_unlock_irqrestore(&cq_host->lock, flags); cq_host 631 drivers/mmc/host/cqhci.c struct cqhci_host *cq_host = mmc->cqe_private; cq_host 633 drivers/mmc/host/cqhci.c if (!cq_host->recovery_halt) { cq_host 634 drivers/mmc/host/cqhci.c cq_host->recovery_halt = true; cq_host 636 drivers/mmc/host/cqhci.c wake_up(&cq_host->wait_queue); cq_host 659 drivers/mmc/host/cqhci.c struct cqhci_host *cq_host = mmc->cqe_private; cq_host 664 drivers/mmc/host/cqhci.c spin_lock(&cq_host->lock); cq_host 666 drivers/mmc/host/cqhci.c terri = cqhci_readl(cq_host, CQHCI_TERRI); cq_host 672 drivers/mmc/host/cqhci.c if (cq_host->recovery_halt) cq_host 675 drivers/mmc/host/cqhci.c if (!cq_host->qcnt) { cq_host 684 drivers/mmc/host/cqhci.c slot = &cq_host->slot[tag]; cq_host 693 drivers/mmc/host/cqhci.c slot = &cq_host->slot[tag]; cq_host 700 drivers/mmc/host/cqhci.c if (!cq_host->recovery_halt) { cq_host 706 drivers/mmc/host/cqhci.c slot = &cq_host->slot[tag]; cq_host 716 drivers/mmc/host/cqhci.c spin_unlock(&cq_host->lock); cq_host 721 drivers/mmc/host/cqhci.c struct cqhci_host *cq_host = mmc->cqe_private; cq_host 722 drivers/mmc/host/cqhci.c struct cqhci_slot *slot = &cq_host->slot[tag]; cq_host 733 drivers/mmc/host/cqhci.c if (cq_host->recovery_halt) { cq_host 740 drivers/mmc/host/cqhci.c cq_host->qcnt -= 1; cq_host 758 drivers/mmc/host/cqhci.c struct cqhci_host *cq_host = mmc->cqe_private; cq_host 760 drivers/mmc/host/cqhci.c status = cqhci_readl(cq_host, CQHCI_IS); cq_host 761 drivers/mmc/host/cqhci.c cqhci_writel(cq_host, status, CQHCI_IS); cq_host 770 drivers/mmc/host/cqhci.c comp_status = cqhci_readl(cq_host, CQHCI_TCN); cq_host 771 drivers/mmc/host/cqhci.c cqhci_writel(cq_host, comp_status, CQHCI_TCN); cq_host 775 drivers/mmc/host/cqhci.c spin_lock(&cq_host->lock); cq_host 777 drivers/mmc/host/cqhci.c for_each_set_bit(tag, &comp_status, cq_host->num_slots) { cq_host 784 drivers/mmc/host/cqhci.c if (cq_host->waiting_for_idle && !cq_host->qcnt) { cq_host 785 drivers/mmc/host/cqhci.c cq_host->waiting_for_idle = false; cq_host 786 drivers/mmc/host/cqhci.c wake_up(&cq_host->wait_queue); cq_host 789 drivers/mmc/host/cqhci.c spin_unlock(&cq_host->lock); cq_host 793 drivers/mmc/host/cqhci.c wake_up(&cq_host->wait_queue); cq_host 796 drivers/mmc/host/cqhci.c wake_up(&cq_host->wait_queue); cq_host 802 drivers/mmc/host/cqhci.c static bool cqhci_is_idle(struct cqhci_host *cq_host, int *ret) cq_host 807 drivers/mmc/host/cqhci.c spin_lock_irqsave(&cq_host->lock, flags); cq_host 808 drivers/mmc/host/cqhci.c is_idle = !cq_host->qcnt || cq_host->recovery_halt; cq_host 809 drivers/mmc/host/cqhci.c *ret = cq_host->recovery_halt ? -EBUSY : 0; cq_host 810 drivers/mmc/host/cqhci.c cq_host->waiting_for_idle = !is_idle; cq_host 811 drivers/mmc/host/cqhci.c spin_unlock_irqrestore(&cq_host->lock, flags); cq_host 818 drivers/mmc/host/cqhci.c struct cqhci_host *cq_host = mmc->cqe_private; cq_host 821 drivers/mmc/host/cqhci.c wait_event(cq_host->wait_queue, cqhci_is_idle(cq_host, &ret)); cq_host 829 drivers/mmc/host/cqhci.c struct cqhci_host *cq_host = mmc->cqe_private; cq_host 831 drivers/mmc/host/cqhci.c struct cqhci_slot *slot = &cq_host->slot[tag]; cq_host 835 drivers/mmc/host/cqhci.c spin_lock_irqsave(&cq_host->lock, flags); cq_host 840 drivers/mmc/host/cqhci.c *recovery_needed = cq_host->recovery_halt; cq_host 842 drivers/mmc/host/cqhci.c spin_unlock_irqrestore(&cq_host->lock, flags); cq_host 847 drivers/mmc/host/cqhci.c cqhci_dumpregs(cq_host); cq_host 853 drivers/mmc/host/cqhci.c static bool cqhci_tasks_cleared(struct cqhci_host *cq_host) cq_host 855 drivers/mmc/host/cqhci.c return !(cqhci_readl(cq_host, CQHCI_CTL) & CQHCI_CLEAR_ALL_TASKS); cq_host 860 drivers/mmc/host/cqhci.c struct cqhci_host *cq_host = mmc->cqe_private; cq_host 864 drivers/mmc/host/cqhci.c cqhci_set_irqs(cq_host, CQHCI_IS_TCL); cq_host 866 drivers/mmc/host/cqhci.c ctl = cqhci_readl(cq_host, CQHCI_CTL); cq_host 868 drivers/mmc/host/cqhci.c cqhci_writel(cq_host, ctl, CQHCI_CTL); cq_host 870 drivers/mmc/host/cqhci.c wait_event_timeout(cq_host->wait_queue, cqhci_tasks_cleared(cq_host), cq_host 873 drivers/mmc/host/cqhci.c cqhci_set_irqs(cq_host, 0); cq_host 875 drivers/mmc/host/cqhci.c ret = cqhci_tasks_cleared(cq_host); cq_host 884 drivers/mmc/host/cqhci.c static bool cqhci_halted(struct cqhci_host *cq_host) cq_host 886 drivers/mmc/host/cqhci.c return cqhci_readl(cq_host, CQHCI_CTL) & CQHCI_HALT; cq_host 891 drivers/mmc/host/cqhci.c struct cqhci_host *cq_host = mmc->cqe_private; cq_host 895 drivers/mmc/host/cqhci.c if (cqhci_halted(cq_host)) cq_host 898 drivers/mmc/host/cqhci.c cqhci_set_irqs(cq_host, CQHCI_IS_HAC); cq_host 900 drivers/mmc/host/cqhci.c ctl = cqhci_readl(cq_host, CQHCI_CTL); cq_host 902 drivers/mmc/host/cqhci.c cqhci_writel(cq_host, ctl, CQHCI_CTL); cq_host 904 drivers/mmc/host/cqhci.c wait_event_timeout(cq_host->wait_queue, cqhci_halted(cq_host), cq_host 907 drivers/mmc/host/cqhci.c cqhci_set_irqs(cq_host, 0); cq_host 909 drivers/mmc/host/cqhci.c ret = cqhci_halted(cq_host); cq_host 927 drivers/mmc/host/cqhci.c struct cqhci_host *cq_host = mmc->cqe_private; cq_host 931 drivers/mmc/host/cqhci.c WARN_ON(!cq_host->recovery_halt); cq_host 935 drivers/mmc/host/cqhci.c if (cq_host->ops->disable) cq_host 936 drivers/mmc/host/cqhci.c cq_host->ops->disable(mmc, true); cq_host 956 drivers/mmc/host/cqhci.c static void cqhci_recover_mrq(struct cqhci_host *cq_host, unsigned int tag) cq_host 958 drivers/mmc/host/cqhci.c struct cqhci_slot *slot = &cq_host->slot[tag]; cq_host 967 drivers/mmc/host/cqhci.c cq_host->qcnt -= 1; cq_host 977 drivers/mmc/host/cqhci.c mmc_cqe_request_done(cq_host->mmc, mrq); cq_host 980 drivers/mmc/host/cqhci.c static void cqhci_recover_mrqs(struct cqhci_host *cq_host) cq_host 984 drivers/mmc/host/cqhci.c for (i = 0; i < cq_host->num_slots; i++) cq_host 985 drivers/mmc/host/cqhci.c cqhci_recover_mrq(cq_host, i); cq_host 1000 drivers/mmc/host/cqhci.c struct cqhci_host *cq_host = mmc->cqe_private; cq_host 1007 drivers/mmc/host/cqhci.c WARN_ON(!cq_host->recovery_halt); cq_host 1022 drivers/mmc/host/cqhci.c cqcfg = cqhci_readl(cq_host, CQHCI_CFG); cq_host 1024 drivers/mmc/host/cqhci.c cqhci_writel(cq_host, cqcfg, CQHCI_CFG); cq_host 1026 drivers/mmc/host/cqhci.c cqhci_writel(cq_host, cqcfg, CQHCI_CFG); cq_host 1034 drivers/mmc/host/cqhci.c cqhci_recover_mrqs(cq_host); cq_host 1036 drivers/mmc/host/cqhci.c WARN_ON(cq_host->qcnt); cq_host 1038 drivers/mmc/host/cqhci.c spin_lock_irqsave(&cq_host->lock, flags); cq_host 1039 drivers/mmc/host/cqhci.c cq_host->qcnt = 0; cq_host 1040 drivers/mmc/host/cqhci.c cq_host->recovery_halt = false; cq_host 1042 drivers/mmc/host/cqhci.c spin_unlock_irqrestore(&cq_host->lock, flags); cq_host 1047 drivers/mmc/host/cqhci.c cqhci_writel(cq_host, CQHCI_IS_HAC | CQHCI_IS_TCL, CQHCI_IS); cq_host 1049 drivers/mmc/host/cqhci.c cqhci_set_irqs(cq_host, CQHCI_IS_MASK); cq_host 1068 drivers/mmc/host/cqhci.c struct cqhci_host *cq_host; cq_host 1079 drivers/mmc/host/cqhci.c cq_host = devm_kzalloc(&pdev->dev, sizeof(*cq_host), GFP_KERNEL); cq_host 1080 drivers/mmc/host/cqhci.c if (!cq_host) cq_host 1082 drivers/mmc/host/cqhci.c cq_host->mmio = devm_ioremap(&pdev->dev, cq_host 1085 drivers/mmc/host/cqhci.c if (!cq_host->mmio) { cq_host 1091 drivers/mmc/host/cqhci.c return cq_host; cq_host 1095 drivers/mmc/host/cqhci.c static unsigned int cqhci_ver_major(struct cqhci_host *cq_host) cq_host 1097 drivers/mmc/host/cqhci.c return CQHCI_VER_MAJOR(cqhci_readl(cq_host, CQHCI_VER)); cq_host 1100 drivers/mmc/host/cqhci.c static unsigned int cqhci_ver_minor(struct cqhci_host *cq_host) cq_host 1102 drivers/mmc/host/cqhci.c u32 ver = cqhci_readl(cq_host, CQHCI_VER); cq_host 1107 drivers/mmc/host/cqhci.c int cqhci_init(struct cqhci_host *cq_host, struct mmc_host *mmc, cq_host 1112 drivers/mmc/host/cqhci.c cq_host->dma64 = dma64; cq_host 1113 drivers/mmc/host/cqhci.c cq_host->mmc = mmc; cq_host 1114 drivers/mmc/host/cqhci.c cq_host->mmc->cqe_private = cq_host; cq_host 1116 drivers/mmc/host/cqhci.c cq_host->num_slots = NUM_SLOTS; cq_host 1117 drivers/mmc/host/cqhci.c cq_host->dcmd_slot = DCMD_SLOT; cq_host 1125 drivers/mmc/host/cqhci.c cq_host->slot = devm_kcalloc(mmc_dev(mmc), cq_host->num_slots, cq_host 1126 drivers/mmc/host/cqhci.c sizeof(*cq_host->slot), GFP_KERNEL); cq_host 1127 drivers/mmc/host/cqhci.c if (!cq_host->slot) { cq_host 1132 drivers/mmc/host/cqhci.c spin_lock_init(&cq_host->lock); cq_host 1134 drivers/mmc/host/cqhci.c init_completion(&cq_host->halt_comp); cq_host 1135 drivers/mmc/host/cqhci.c init_waitqueue_head(&cq_host->wait_queue); cq_host 1138 drivers/mmc/host/cqhci.c mmc_hostname(mmc), cqhci_ver_major(cq_host), cq_host 1139 drivers/mmc/host/cqhci.c cqhci_ver_minor(cq_host)); cq_host 1145 drivers/mmc/host/cqhci.c mmc_hostname(mmc), cqhci_ver_major(cq_host), cq_host 1146 drivers/mmc/host/cqhci.c cqhci_ver_minor(cq_host), err); cq_host 231 drivers/mmc/host/cqhci.h int cqhci_init(struct cqhci_host *cq_host, struct mmc_host *mmc, bool dma64); cq_host 1249 drivers/mmc/host/sdhci-esdhc-imx.c struct cqhci_host *cq_host = mmc->cqe_private; cq_host 1288 drivers/mmc/host/sdhci-esdhc-imx.c cqhci_writel(cq_host, 0, CQHCI_CTL); cq_host 1289 drivers/mmc/host/sdhci-esdhc-imx.c if (cqhci_readl(cq_host, CQHCI_CTL) && CQHCI_HALT) cq_host 1440 drivers/mmc/host/sdhci-esdhc-imx.c struct cqhci_host *cq_host; cq_host 1537 drivers/mmc/host/sdhci-esdhc-imx.c cq_host = devm_kzalloc(&pdev->dev, sizeof(*cq_host), GFP_KERNEL); cq_host 1538 drivers/mmc/host/sdhci-esdhc-imx.c if (!cq_host) { cq_host 1543 drivers/mmc/host/sdhci-esdhc-imx.c cq_host->mmio = host->ioaddr + ESDHC_CQHCI_ADDR_OFFSET; cq_host 1544 drivers/mmc/host/sdhci-esdhc-imx.c cq_host->ops = &esdhc_cqhci_ops; cq_host 1546 drivers/mmc/host/sdhci-esdhc-imx.c err = cqhci_init(cq_host, host->mmc, false); cq_host 692 drivers/mmc/host/sdhci-of-arasan.c struct cqhci_host *cq_host; cq_host 703 drivers/mmc/host/sdhci-of-arasan.c cq_host = devm_kzalloc(host->mmc->parent, cq_host 704 drivers/mmc/host/sdhci-of-arasan.c sizeof(*cq_host), GFP_KERNEL); cq_host 705 drivers/mmc/host/sdhci-of-arasan.c if (!cq_host) { cq_host 710 drivers/mmc/host/sdhci-of-arasan.c cq_host->mmio = host->ioaddr + SDHCI_ARASAN_CQE_BASE_ADDR; cq_host 711 drivers/mmc/host/sdhci-of-arasan.c cq_host->ops = &sdhci_arasan_cqhci_ops; cq_host 715 drivers/mmc/host/sdhci-of-arasan.c cq_host->caps |= CQHCI_TASK_DESC_SZ_128; cq_host 717 drivers/mmc/host/sdhci-of-arasan.c ret = cqhci_init(cq_host, host->mmc, dma64); cq_host 823 drivers/mmc/host/sdhci-pci-core.c struct cqhci_host *cq_host; cq_host 831 drivers/mmc/host/sdhci-pci-core.c cq_host = devm_kzalloc(dev, sizeof(*cq_host), GFP_KERNEL); cq_host 832 drivers/mmc/host/sdhci-pci-core.c if (!cq_host) { cq_host 837 drivers/mmc/host/sdhci-pci-core.c cq_host->mmio = host->ioaddr + 0x200; cq_host 838 drivers/mmc/host/sdhci-pci-core.c cq_host->quirks |= CQHCI_QUIRK_SHORT_TXFR_DESC_SZ; cq_host 839 drivers/mmc/host/sdhci-pci-core.c cq_host->ops = &glk_cqhci_ops; cq_host 843 drivers/mmc/host/sdhci-pci-core.c cq_host->caps |= CQHCI_TASK_DESC_SZ_128; cq_host 845 drivers/mmc/host/sdhci-pci-core.c ret = cqhci_init(cq_host, host->mmc, dma64); cq_host 1130 drivers/mmc/host/sdhci-tegra.c static void tegra_cqhci_writel(struct cqhci_host *cq_host, u32 val, int reg) cq_host 1132 drivers/mmc/host/sdhci-tegra.c struct mmc_host *mmc = cq_host->mmc; cq_host 1146 drivers/mmc/host/sdhci-tegra.c cqhci_readl(cq_host, CQHCI_CTL) & CQHCI_HALT) { cq_host 1148 drivers/mmc/host/sdhci-tegra.c writel(val, cq_host->mmio + reg); cq_host 1152 drivers/mmc/host/sdhci-tegra.c ctrl = cqhci_readl(cq_host, CQHCI_CTL); cq_host 1161 drivers/mmc/host/sdhci-tegra.c writel(val, cq_host->mmio + reg); cq_host 1163 drivers/mmc/host/sdhci-tegra.c writel(val, cq_host->mmio + reg); cq_host 1181 drivers/mmc/host/sdhci-tegra.c struct cqhci_host *cq_host = mmc->cqe_private; cq_host 1190 drivers/mmc/host/sdhci-tegra.c if (!cq_host->activated) { cq_host 1191 drivers/mmc/host/sdhci-tegra.c val = cqhci_readl(cq_host, CQHCI_CFG); cq_host 1193 drivers/mmc/host/sdhci-tegra.c cqhci_writel(cq_host, (val & ~CQHCI_ENABLE), cq_host 1197 drivers/mmc/host/sdhci-tegra.c cqhci_writel(cq_host, val, CQHCI_CFG); cq_host 1207 drivers/mmc/host/sdhci-tegra.c val = cqhci_readl(cq_host, CQHCI_SSC1); cq_host 1209 drivers/mmc/host/sdhci-tegra.c cqhci_writel(cq_host, val, CQHCI_SSC1); cq_host 1460 drivers/mmc/host/sdhci-tegra.c struct cqhci_host *cq_host; cq_host 1475 drivers/mmc/host/sdhci-tegra.c cq_host = devm_kzalloc(host->mmc->parent, cq_host 1476 drivers/mmc/host/sdhci-tegra.c sizeof(*cq_host), GFP_KERNEL); cq_host 1477 drivers/mmc/host/sdhci-tegra.c if (!cq_host) { cq_host 1482 drivers/mmc/host/sdhci-tegra.c cq_host->mmio = host->ioaddr + SDHCI_TEGRA_CQE_BASE_ADDR; cq_host 1483 drivers/mmc/host/sdhci-tegra.c cq_host->ops = &sdhci_tegra_cqhci_ops; cq_host 1487 drivers/mmc/host/sdhci-tegra.c cq_host->caps |= CQHCI_TASK_DESC_SZ_128; cq_host 1489 drivers/mmc/host/sdhci-tegra.c ret = cqhci_init(cq_host, host->mmc, dma64);