Lines Matching refs:sdhost

441 static void via_pwron_sleep(struct via_crdr_mmc_host *sdhost)
443 if (sdhost->quirks & VIA_CRDR_QUIRK_300MS_PWRDELAY)
873 struct via_crdr_mmc_host *sdhost = dev_id;
879 if (!sdhost)
882 spin_lock(&sdhost->lock);
884 addrbase = sdhost->pcictrl_mmiobase;
891 addrbase = sdhost->sdhc_mmiobase;
904 schedule_work(&sdhost->carddet_work);
911 via_sdc_cmd_isr(sdhost, sd_status & VIA_CRDR_SDSTS_CMD_MASK);
916 via_sdc_data_isr(sdhost, sd_status & VIA_CRDR_SDSTS_DATA_MASK);
922 mmc_hostname(sdhost->mmc), sd_status);
929 spin_unlock(&sdhost->lock);
936 struct via_crdr_mmc_host *sdhost;
939 sdhost = from_timer(sdhost, t, timer);
941 spin_lock_irqsave(&sdhost->lock, flags);
943 if (sdhost->mrq) {
945 "cmd:0x%x\n", mmc_hostname(sdhost->mmc),
946 sdhost->mrq->cmd->opcode);
948 if (sdhost->data) {
950 sdhost->ddma_mmiobase + VIA_CRDR_DMACTRL);
951 sdhost->data->error = -ETIMEDOUT;
952 via_sdc_finish_data(sdhost);
954 if (sdhost->cmd)
955 sdhost->cmd->error = -ETIMEDOUT;
957 sdhost->mrq->cmd->error = -ETIMEDOUT;
958 tasklet_schedule(&sdhost->finish_tasklet);
962 spin_unlock_irqrestore(&sdhost->lock, flags);
1084 struct via_crdr_mmc_host *sdhost;
1111 sdhost = mmc_priv(mmc);
1112 sdhost->mmc = mmc;
1113 dev_set_drvdata(&pcidev->dev, sdhost);
1117 sdhost->mmiobase = ioremap(base, len);
1118 if (!sdhost->mmiobase) {
1123 sdhost->sdhc_mmiobase =
1124 sdhost->mmiobase + VIA_CRDR_SDC_OFF;
1125 sdhost->ddma_mmiobase =
1126 sdhost->mmiobase + VIA_CRDR_DDMA_OFF;
1127 sdhost->pcictrl_mmiobase =
1128 sdhost->mmiobase + VIA_CRDR_PCICTRL_OFF;
1130 sdhost->power = MMC_VDD_165_195;
1133 writeb(gatt, sdhost->pcictrl_mmiobase + VIA_CRDR_PCICLKGATT);
1134 via_pwron_sleep(sdhost);
1136 writeb(gatt, sdhost->pcictrl_mmiobase + VIA_CRDR_PCICLKGATT);
1139 via_init_mmc_host(sdhost);
1143 sdhost);
1148 sdhost->pcictrl_mmiobase + VIA_CRDR_PCIINTCTRL);
1150 sdhost->pcictrl_mmiobase + VIA_CRDR_PCITMOCTRL);
1155 sdhost->quirks = VIA_CRDR_QUIRK_300MS_PWRDELAY;
1164 iounmap(sdhost->mmiobase);
1178 struct via_crdr_mmc_host *sdhost = pci_get_drvdata(pcidev);
1182 spin_lock_irqsave(&sdhost->lock, flags);
1185 sdhost->reject = 1;
1188 writeb(0x0, sdhost->pcictrl_mmiobase + VIA_CRDR_PCIINTCTRL);
1190 if (sdhost->mrq) {
1192 "transfer\n", mmc_hostname(sdhost->mmc));
1196 sdhost->ddma_mmiobase + VIA_CRDR_DMACTRL);
1197 sdhost->mrq->cmd->error = -ENOMEDIUM;
1198 if (sdhost->mrq->stop)
1199 sdhost->mrq->stop->error = -ENOMEDIUM;
1200 tasklet_schedule(&sdhost->finish_tasklet);
1202 spin_unlock_irqrestore(&sdhost->lock, flags);
1204 mmc_remove_host(sdhost->mmc);
1206 free_irq(pcidev->irq, sdhost);
1208 del_timer_sync(&sdhost->timer);
1210 tasklet_kill(&sdhost->finish_tasklet);
1213 gatt = readb(sdhost->pcictrl_mmiobase + VIA_CRDR_PCICLKGATT);
1215 writeb(gatt, sdhost->pcictrl_mmiobase + VIA_CRDR_PCICLKGATT);
1217 iounmap(sdhost->mmiobase);
1219 mmc_free_host(sdhost->mmc);
1281 struct via_crdr_mmc_host *sdhost;
1285 sdhost = dev_get_drvdata(dev);
1288 if (sdhost->power == MMC_VDD_165_195)
1292 writeb(gatt, sdhost->pcictrl_mmiobase + VIA_CRDR_PCICLKGATT);
1293 via_pwron_sleep(sdhost);
1295 writeb(gatt, sdhost->pcictrl_mmiobase + VIA_CRDR_PCICLKGATT);
1300 via_restore_pcictrlreg(sdhost);
1301 via_init_sdc_pm(sdhost);