Lines Matching refs:host
333 static void via_print_sdchc(struct via_crdr_mmc_host *host) in via_print_sdchc() argument
335 void __iomem *addrbase = host->sdhc_mmiobase; in via_print_sdchc()
352 static void via_print_pcictrl(struct via_crdr_mmc_host *host) in via_print_pcictrl() argument
354 void __iomem *addrbase = host->pcictrl_mmiobase; in via_print_pcictrl()
366 static void via_save_pcictrlreg(struct via_crdr_mmc_host *host) in via_save_pcictrlreg() argument
371 pm_pcictrl_reg = &(host->pm_pcictrl_reg); in via_save_pcictrlreg()
372 addrbase = host->pcictrl_mmiobase; in via_save_pcictrlreg()
385 static void via_restore_pcictrlreg(struct via_crdr_mmc_host *host) in via_restore_pcictrlreg() argument
390 pm_pcictrl_reg = &(host->pm_pcictrl_reg); in via_restore_pcictrlreg()
391 addrbase = host->pcictrl_mmiobase; in via_restore_pcictrlreg()
402 static void via_save_sdcreg(struct via_crdr_mmc_host *host) in via_save_sdcreg() argument
407 pm_sdhc_reg = &(host->pm_sdhc_reg); in via_save_sdcreg()
408 addrbase = host->sdhc_mmiobase; in via_save_sdcreg()
422 static void via_restore_sdcreg(struct via_crdr_mmc_host *host) in via_restore_sdcreg() argument
427 pm_sdhc_reg = &(host->pm_sdhc_reg); in via_restore_sdcreg()
428 addrbase = host->sdhc_mmiobase; in via_restore_sdcreg()
450 static void via_set_ddma(struct via_crdr_mmc_host *host, in via_set_ddma() argument
462 addrbase = host->ddma_mmiobase; in via_set_ddma()
471 addrbase = host->pcictrl_mmiobase; in via_set_ddma()
473 dev_info(host->mmc->parent, "forcing card speed to 8MHz\n"); in via_set_ddma()
478 static void via_sdc_preparedata(struct via_crdr_mmc_host *host, in via_sdc_preparedata() argument
485 WARN_ON(host->data); in via_sdc_preparedata()
488 BUG_ON(data->blksz > host->mmc->max_blk_size); in via_sdc_preparedata()
489 BUG_ON(data->blocks > host->mmc->max_blk_count); in via_sdc_preparedata()
491 host->data = data; in via_sdc_preparedata()
493 count = dma_map_sg(mmc_dev(host->mmc), data->sg, data->sg_len, in via_sdc_preparedata()
498 via_set_ddma(host, sg_dma_address(data->sg), sg_dma_len(data->sg), in via_sdc_preparedata()
501 addrbase = host->sdhc_mmiobase; in via_sdc_preparedata()
510 static void via_sdc_get_response(struct via_crdr_mmc_host *host, in via_sdc_get_response() argument
513 void __iomem *addrbase = host->sdhc_mmiobase; in via_sdc_get_response()
552 static void via_sdc_send_command(struct via_crdr_mmc_host *host, in via_sdc_send_command() argument
559 WARN_ON(host->cmd); in via_sdc_send_command()
562 mod_timer(&host->timer, jiffies + HZ); in via_sdc_send_command()
563 host->cmd = cmd; in via_sdc_send_command()
586 pr_err("%s: cmd->flag is not valid\n", mmc_hostname(host->mmc)); in via_sdc_send_command()
593 via_sdc_preparedata(host, data); in via_sdc_send_command()
613 if (cmd == host->mrq->stop) in via_sdc_send_command()
618 addrbase = host->sdhc_mmiobase; in via_sdc_send_command()
623 static void via_sdc_finish_data(struct via_crdr_mmc_host *host) in via_sdc_finish_data() argument
627 BUG_ON(!host->data); in via_sdc_finish_data()
629 data = host->data; in via_sdc_finish_data()
630 host->data = NULL; in via_sdc_finish_data()
637 dma_unmap_sg(mmc_dev(host->mmc), data->sg, data->sg_len, in via_sdc_finish_data()
642 via_sdc_send_command(host, data->stop); in via_sdc_finish_data()
644 tasklet_schedule(&host->finish_tasklet); in via_sdc_finish_data()
647 static void via_sdc_finish_command(struct via_crdr_mmc_host *host) in via_sdc_finish_command() argument
649 via_sdc_get_response(host, host->cmd); in via_sdc_finish_command()
651 host->cmd->error = 0; in via_sdc_finish_command()
653 if (!host->cmd->data) in via_sdc_finish_command()
654 tasklet_schedule(&host->finish_tasklet); in via_sdc_finish_command()
656 host->cmd = NULL; in via_sdc_finish_command()
662 struct via_crdr_mmc_host *host; in via_sdc_request() local
666 host = mmc_priv(mmc); in via_sdc_request()
668 spin_lock_irqsave(&host->lock, flags); in via_sdc_request()
670 addrbase = host->pcictrl_mmiobase; in via_sdc_request()
673 status = readw(host->sdhc_mmiobase + VIA_CRDR_SDSTATUS); in via_sdc_request()
675 writew(status, host->sdhc_mmiobase + VIA_CRDR_SDSTATUS); in via_sdc_request()
677 WARN_ON(host->mrq != NULL); in via_sdc_request()
678 host->mrq = mrq; in via_sdc_request()
680 status = readw(host->sdhc_mmiobase + VIA_CRDR_SDSTATUS); in via_sdc_request()
681 if (!(status & VIA_CRDR_SDSTS_SLOTG) || host->reject) { in via_sdc_request()
682 host->mrq->cmd->error = -ENOMEDIUM; in via_sdc_request()
683 tasklet_schedule(&host->finish_tasklet); in via_sdc_request()
685 via_sdc_send_command(host, mrq->cmd); in via_sdc_request()
689 spin_unlock_irqrestore(&host->lock, flags); in via_sdc_request()
692 static void via_sdc_set_power(struct via_crdr_mmc_host *host, in via_sdc_set_power() argument
698 spin_lock_irqsave(&host->lock, flags); in via_sdc_set_power()
700 host->power = (1 << power); in via_sdc_set_power()
702 gatt = readb(host->pcictrl_mmiobase + VIA_CRDR_PCICLKGATT); in via_sdc_set_power()
703 if (host->power == MMC_VDD_165_195) in via_sdc_set_power()
711 writeb(gatt, host->pcictrl_mmiobase + VIA_CRDR_PCICLKGATT); in via_sdc_set_power()
714 spin_unlock_irqrestore(&host->lock, flags); in via_sdc_set_power()
716 via_pwron_sleep(host); in via_sdc_set_power()
721 struct via_crdr_mmc_host *host; in via_sdc_set_ios() local
727 host = mmc_priv(mmc); in via_sdc_set_ios()
729 spin_lock_irqsave(&host->lock, flags); in via_sdc_set_ios()
731 addrbase = host->sdhc_mmiobase; in via_sdc_set_ios()
768 addrbase = host->pcictrl_mmiobase; in via_sdc_set_ios()
773 spin_unlock_irqrestore(&host->lock, flags); in via_sdc_set_ios()
776 via_sdc_set_power(host, ios->vdd, 1); in via_sdc_set_ios()
778 via_sdc_set_power(host, ios->vdd, 0); in via_sdc_set_ios()
783 struct via_crdr_mmc_host *host; in via_sdc_get_ro() local
787 host = mmc_priv(mmc); in via_sdc_get_ro()
789 spin_lock_irqsave(&host->lock, flags); in via_sdc_get_ro()
791 status = readw(host->sdhc_mmiobase + VIA_CRDR_SDSTATUS); in via_sdc_get_ro()
793 spin_unlock_irqrestore(&host->lock, flags); in via_sdc_get_ro()
804 static void via_reset_pcictrl(struct via_crdr_mmc_host *host) in via_reset_pcictrl() argument
809 spin_lock_irqsave(&host->lock, flags); in via_reset_pcictrl()
811 via_save_pcictrlreg(host); in via_reset_pcictrl()
812 via_save_sdcreg(host); in via_reset_pcictrl()
814 spin_unlock_irqrestore(&host->lock, flags); in via_reset_pcictrl()
817 if (host->power == MMC_VDD_165_195) in via_reset_pcictrl()
821 writeb(gatt, host->pcictrl_mmiobase + VIA_CRDR_PCICLKGATT); in via_reset_pcictrl()
822 via_pwron_sleep(host); in via_reset_pcictrl()
824 writeb(gatt, host->pcictrl_mmiobase + VIA_CRDR_PCICLKGATT); in via_reset_pcictrl()
827 spin_lock_irqsave(&host->lock, flags); in via_reset_pcictrl()
829 via_restore_pcictrlreg(host); in via_reset_pcictrl()
830 via_restore_sdcreg(host); in via_reset_pcictrl()
833 spin_unlock_irqrestore(&host->lock, flags); in via_reset_pcictrl()
836 static void via_sdc_cmd_isr(struct via_crdr_mmc_host *host, u16 intmask) in via_sdc_cmd_isr() argument
840 if (!host->cmd) { in via_sdc_cmd_isr()
843 mmc_hostname(host->mmc), intmask); in via_sdc_cmd_isr()
848 host->cmd->error = -ETIMEDOUT; in via_sdc_cmd_isr()
850 host->cmd->error = -EILSEQ; in via_sdc_cmd_isr()
852 if (host->cmd->error) in via_sdc_cmd_isr()
853 tasklet_schedule(&host->finish_tasklet); in via_sdc_cmd_isr()
855 via_sdc_finish_command(host); in via_sdc_cmd_isr()
858 static void via_sdc_data_isr(struct via_crdr_mmc_host *host, u16 intmask) in via_sdc_data_isr() argument
863 host->data->error = -ETIMEDOUT; in via_sdc_data_isr()
865 host->data->error = -EILSEQ; in via_sdc_data_isr()
867 via_sdc_finish_data(host); in via_sdc_data_isr()
968 struct via_crdr_mmc_host *host; in via_sdc_tasklet_finish() local
972 host = (struct via_crdr_mmc_host *)param; in via_sdc_tasklet_finish()
974 spin_lock_irqsave(&host->lock, flags); in via_sdc_tasklet_finish()
976 del_timer(&host->timer); in via_sdc_tasklet_finish()
977 mrq = host->mrq; in via_sdc_tasklet_finish()
978 host->mrq = NULL; in via_sdc_tasklet_finish()
979 host->cmd = NULL; in via_sdc_tasklet_finish()
980 host->data = NULL; in via_sdc_tasklet_finish()
982 spin_unlock_irqrestore(&host->lock, flags); in via_sdc_tasklet_finish()
984 mmc_request_done(host->mmc, mrq); in via_sdc_tasklet_finish()
989 struct via_crdr_mmc_host *host; in via_sdc_card_detect() local
994 host = container_of(work, struct via_crdr_mmc_host, carddet_work); in via_sdc_card_detect()
996 addrbase = host->ddma_mmiobase; in via_sdc_card_detect()
999 spin_lock_irqsave(&host->lock, flags); in via_sdc_card_detect()
1001 addrbase = host->pcictrl_mmiobase; in via_sdc_card_detect()
1004 addrbase = host->sdhc_mmiobase; in via_sdc_card_detect()
1007 if (host->mrq) { in via_sdc_card_detect()
1009 mmc_hostname(host->mmc)); in via_sdc_card_detect()
1010 host->mrq->cmd->error = -ENOMEDIUM; in via_sdc_card_detect()
1011 tasklet_schedule(&host->finish_tasklet); in via_sdc_card_detect()
1015 spin_unlock_irqrestore(&host->lock, flags); in via_sdc_card_detect()
1017 via_reset_pcictrl(host); in via_sdc_card_detect()
1019 spin_lock_irqsave(&host->lock, flags); in via_sdc_card_detect()
1023 spin_unlock_irqrestore(&host->lock, flags); in via_sdc_card_detect()
1025 via_print_pcictrl(host); in via_sdc_card_detect()
1026 via_print_sdchc(host); in via_sdc_card_detect()
1028 mmc_detect_change(host->mmc, msecs_to_jiffies(500)); in via_sdc_card_detect()
1031 static void via_init_mmc_host(struct via_crdr_mmc_host *host) in via_init_mmc_host() argument
1033 struct mmc_host *mmc = host->mmc; in via_init_mmc_host()
1038 init_timer(&host->timer); in via_init_mmc_host()
1039 host->timer.data = (unsigned long)host; in via_init_mmc_host()
1040 host->timer.function = via_sdc_timeout; in via_init_mmc_host()
1042 spin_lock_init(&host->lock); in via_init_mmc_host()
1059 INIT_WORK(&host->carddet_work, via_sdc_card_detect); in via_init_mmc_host()
1061 tasklet_init(&host->finish_tasklet, via_sdc_tasklet_finish, in via_init_mmc_host()
1062 (unsigned long)host); in via_init_mmc_host()
1064 addrbase = host->sdhc_mmiobase; in via_init_mmc_host()
1235 static void via_init_sdc_pm(struct via_crdr_mmc_host *host) in via_init_sdc_pm() argument
1242 pm_sdhcreg = &(host->pm_sdhc_reg); in via_init_sdc_pm()
1243 addrbase = host->sdhc_mmiobase; in via_init_sdc_pm()
1265 via_print_pcictrl(host); in via_init_sdc_pm()
1266 via_print_sdchc(host); in via_init_sdc_pm()
1271 struct via_crdr_mmc_host *host; in via_sd_suspend() local
1273 host = pci_get_drvdata(pcidev); in via_sd_suspend()
1275 via_save_pcictrlreg(host); in via_sd_suspend()
1276 via_save_sdcreg(host); in via_sd_suspend()