Lines Matching refs:sdhost
443 static void via_pwron_sleep(struct via_crdr_mmc_host *sdhost) in via_pwron_sleep() argument
445 if (sdhost->quirks & VIA_CRDR_QUIRK_300MS_PWRDELAY) in via_pwron_sleep()
873 struct via_crdr_mmc_host *sdhost = dev_id; in via_sdc_isr() local
879 if (!sdhost) in via_sdc_isr()
882 spin_lock(&sdhost->lock); in via_sdc_isr()
884 addrbase = sdhost->pcictrl_mmiobase; in via_sdc_isr()
891 addrbase = sdhost->sdhc_mmiobase; in via_sdc_isr()
904 schedule_work(&sdhost->carddet_work); in via_sdc_isr()
911 via_sdc_cmd_isr(sdhost, sd_status & VIA_CRDR_SDSTS_CMD_MASK); in via_sdc_isr()
916 via_sdc_data_isr(sdhost, sd_status & VIA_CRDR_SDSTS_DATA_MASK); in via_sdc_isr()
922 mmc_hostname(sdhost->mmc), sd_status); in via_sdc_isr()
930 spin_unlock(&sdhost->lock); in via_sdc_isr()
937 struct via_crdr_mmc_host *sdhost; in via_sdc_timeout() local
940 sdhost = from_timer(sdhost, t, timer); in via_sdc_timeout()
942 spin_lock_irqsave(&sdhost->lock, flags); in via_sdc_timeout()
944 if (sdhost->mrq) { in via_sdc_timeout()
946 "cmd:0x%x\n", mmc_hostname(sdhost->mmc), in via_sdc_timeout()
947 sdhost->mrq->cmd->opcode); in via_sdc_timeout()
949 if (sdhost->data) { in via_sdc_timeout()
951 sdhost->ddma_mmiobase + VIA_CRDR_DMACTRL); in via_sdc_timeout()
952 sdhost->data->error = -ETIMEDOUT; in via_sdc_timeout()
953 via_sdc_finish_data(sdhost); in via_sdc_timeout()
955 if (sdhost->cmd) in via_sdc_timeout()
956 sdhost->cmd->error = -ETIMEDOUT; in via_sdc_timeout()
958 sdhost->mrq->cmd->error = -ETIMEDOUT; in via_sdc_timeout()
959 tasklet_schedule(&sdhost->finish_tasklet); in via_sdc_timeout()
964 spin_unlock_irqrestore(&sdhost->lock, flags); in via_sdc_timeout()
1088 struct via_crdr_mmc_host *sdhost; in via_sd_probe() local
1115 sdhost = mmc_priv(mmc); in via_sd_probe()
1116 sdhost->mmc = mmc; in via_sd_probe()
1117 dev_set_drvdata(&pcidev->dev, sdhost); in via_sd_probe()
1121 sdhost->mmiobase = ioremap_nocache(base, len); in via_sd_probe()
1122 if (!sdhost->mmiobase) { in via_sd_probe()
1127 sdhost->sdhc_mmiobase = in via_sd_probe()
1128 sdhost->mmiobase + VIA_CRDR_SDC_OFF; in via_sd_probe()
1129 sdhost->ddma_mmiobase = in via_sd_probe()
1130 sdhost->mmiobase + VIA_CRDR_DDMA_OFF; in via_sd_probe()
1131 sdhost->pcictrl_mmiobase = in via_sd_probe()
1132 sdhost->mmiobase + VIA_CRDR_PCICTRL_OFF; in via_sd_probe()
1134 sdhost->power = MMC_VDD_165_195; in via_sd_probe()
1137 writeb(gatt, sdhost->pcictrl_mmiobase + VIA_CRDR_PCICLKGATT); in via_sd_probe()
1138 via_pwron_sleep(sdhost); in via_sd_probe()
1140 writeb(gatt, sdhost->pcictrl_mmiobase + VIA_CRDR_PCICLKGATT); in via_sd_probe()
1143 via_init_mmc_host(sdhost); in via_sd_probe()
1147 sdhost); in via_sd_probe()
1152 sdhost->pcictrl_mmiobase + VIA_CRDR_PCIINTCTRL); in via_sd_probe()
1154 sdhost->pcictrl_mmiobase + VIA_CRDR_PCITMOCTRL); in via_sd_probe()
1159 sdhost->quirks = VIA_CRDR_QUIRK_300MS_PWRDELAY; in via_sd_probe()
1166 iounmap(sdhost->mmiobase); in via_sd_probe()
1180 struct via_crdr_mmc_host *sdhost = pci_get_drvdata(pcidev); in via_sd_remove() local
1184 spin_lock_irqsave(&sdhost->lock, flags); in via_sd_remove()
1187 sdhost->reject = 1; in via_sd_remove()
1190 writeb(0x0, sdhost->pcictrl_mmiobase + VIA_CRDR_PCIINTCTRL); in via_sd_remove()
1193 if (sdhost->mrq) { in via_sd_remove()
1195 "transfer\n", mmc_hostname(sdhost->mmc)); in via_sd_remove()
1199 sdhost->ddma_mmiobase + VIA_CRDR_DMACTRL); in via_sd_remove()
1201 sdhost->mrq->cmd->error = -ENOMEDIUM; in via_sd_remove()
1202 if (sdhost->mrq->stop) in via_sd_remove()
1203 sdhost->mrq->stop->error = -ENOMEDIUM; in via_sd_remove()
1204 tasklet_schedule(&sdhost->finish_tasklet); in via_sd_remove()
1206 spin_unlock_irqrestore(&sdhost->lock, flags); in via_sd_remove()
1208 mmc_remove_host(sdhost->mmc); in via_sd_remove()
1210 free_irq(pcidev->irq, sdhost); in via_sd_remove()
1212 del_timer_sync(&sdhost->timer); in via_sd_remove()
1214 tasklet_kill(&sdhost->finish_tasklet); in via_sd_remove()
1217 gatt = readb(sdhost->pcictrl_mmiobase + VIA_CRDR_PCICLKGATT); in via_sd_remove()
1219 writeb(gatt, sdhost->pcictrl_mmiobase + VIA_CRDR_PCICLKGATT); in via_sd_remove()
1221 iounmap(sdhost->mmiobase); in via_sd_remove()
1223 mmc_free_host(sdhost->mmc); in via_sd_remove()
1287 struct via_crdr_mmc_host *sdhost; in via_sd_resume() local
1291 sdhost = pci_get_drvdata(pcidev); in via_sd_resume()
1294 if (sdhost->power == MMC_VDD_165_195) in via_sd_resume()
1298 writeb(gatt, sdhost->pcictrl_mmiobase + VIA_CRDR_PCICLKGATT); in via_sd_resume()
1299 via_pwron_sleep(sdhost); in via_sd_resume()
1301 writeb(gatt, sdhost->pcictrl_mmiobase + VIA_CRDR_PCICLKGATT); in via_sd_resume()
1312 via_restore_pcictrlreg(sdhost); in via_sd_resume()
1313 via_init_sdc_pm(sdhost); in via_sd_resume()