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);
1081 struct via_crdr_mmc_host *sdhost;
1108 sdhost = mmc_priv(mmc);
1109 sdhost->mmc = mmc;
1110 dev_set_drvdata(&pcidev->dev, sdhost);
1114 sdhost->mmiobase = ioremap(base, len);
1115 if (!sdhost->mmiobase) {
1120 sdhost->sdhc_mmiobase =
1121 sdhost->mmiobase + VIA_CRDR_SDC_OFF;
1122 sdhost->ddma_mmiobase =
1123 sdhost->mmiobase + VIA_CRDR_DDMA_OFF;
1124 sdhost->pcictrl_mmiobase =
1125 sdhost->mmiobase + VIA_CRDR_PCICTRL_OFF;
1127 sdhost->power = MMC_VDD_165_195;
1130 writeb(gatt, sdhost->pcictrl_mmiobase + VIA_CRDR_PCICLKGATT);
1131 via_pwron_sleep(sdhost);
1133 writeb(gatt, sdhost->pcictrl_mmiobase + VIA_CRDR_PCICLKGATT);
1136 via_init_mmc_host(sdhost);
1140 sdhost);
1145 sdhost->pcictrl_mmiobase + VIA_CRDR_PCIINTCTRL);
1147 sdhost->pcictrl_mmiobase + VIA_CRDR_PCITMOCTRL);
1152 sdhost->quirks = VIA_CRDR_QUIRK_300MS_PWRDELAY;
1161 iounmap(sdhost->mmiobase);
1174 struct via_crdr_mmc_host *sdhost = pci_get_drvdata(pcidev);
1178 spin_lock_irqsave(&sdhost->lock, flags);
1181 sdhost->reject = 1;
1184 writeb(0x0, sdhost->pcictrl_mmiobase + VIA_CRDR_PCIINTCTRL);
1186 if (sdhost->mrq) {
1188 "transfer\n", mmc_hostname(sdhost->mmc));
1192 sdhost->ddma_mmiobase + VIA_CRDR_DMACTRL);
1193 sdhost->mrq->cmd->error = -ENOMEDIUM;
1194 if (sdhost->mrq->stop)
1195 sdhost->mrq->stop->error = -ENOMEDIUM;
1196 tasklet_schedule(&sdhost->finish_tasklet);
1198 spin_unlock_irqrestore(&sdhost->lock, flags);
1200 mmc_remove_host(sdhost->mmc);
1202 free_irq(pcidev->irq, sdhost);
1204 del_timer_sync(&sdhost->timer);
1206 tasklet_kill(&sdhost->finish_tasklet);
1209 gatt = readb(sdhost->pcictrl_mmiobase + VIA_CRDR_PCICLKGATT);
1211 writeb(gatt, sdhost->pcictrl_mmiobase + VIA_CRDR_PCICLKGATT);
1213 iounmap(sdhost->mmiobase);
1214 mmc_free_host(sdhost->mmc);
1276 struct via_crdr_mmc_host *sdhost;
1279 sdhost = dev_get_drvdata(dev);
1282 if (sdhost->power == MMC_VDD_165_195)
1286 writeb(gatt, sdhost->pcictrl_mmiobase + VIA_CRDR_PCICLKGATT);
1287 via_pwron_sleep(sdhost);
1289 writeb(gatt, sdhost->pcictrl_mmiobase + VIA_CRDR_PCICLKGATT);
1294 via_restore_pcictrlreg(sdhost);
1295 via_init_sdc_pm(sdhost);