Lines Matching full:variant

370 /* Busy detection for the ST Micro variant */
378 if (readl(host->base + MMCISTATUS) & host->variant->busy_detect_flag) in mmci_card_busy()
428 datactrl |= host->datactrl_reg & (host->variant->busy_dpsm_flag | in mmci_write_datactrlreg()
429 host->variant->datactrl_mask_sdio); in mmci_write_datactrlreg()
442 struct variant_data *variant = host->variant; in mmci_set_clkreg() local
443 u32 clk = variant->clkreg; in mmci_set_clkreg()
449 if (variant->explicit_mclk_control) { in mmci_set_clkreg()
453 if (variant->st_clkdiv) in mmci_set_clkreg()
456 } else if (variant->st_clkdiv) { in mmci_set_clkreg()
478 clk |= variant->clkreg_enable; in mmci_set_clkreg()
490 clk |= variant->clkreg_8bit_bus_enable; in mmci_set_clkreg()
494 clk |= variant->clkreg_neg_edge_enable; in mmci_set_clkreg()
527 struct variant_data *variant = host->variant; in mmci_validate_data() local
531 if (!is_power_of_2(data->blksz) && !variant->datactrl_any_blocksz) { in mmci_validate_data()
647 struct variant_data *variant = host->variant; in mmci_set_mask1() local
652 mask0 &= ~variant->irq_pio_mask; in mmci_set_mask1()
658 if (variant->mmcimask1) in mmci_set_mask1()
697 writel(host->variant->busy_detect_mask, base + MMCICLEAR); in ux500_busy_clear_mask_done()
699 ~host->variant->busy_detect_mask, base + MMCIMASK0); in ux500_busy_clear_mask_done()
761 if (status & host->variant->busy_detect_flag) { in ux500_busy_complete()
763 host->variant->busy_detect_mask, in ux500_busy_complete()
789 if (status & host->variant->busy_detect_flag) { in ux500_busy_complete()
791 writel(host->variant->busy_detect_mask, base + MMCICLEAR); in ux500_busy_complete()
803 if (!(status & host->variant->busy_detect_flag)) { in ux500_busy_complete()
805 writel(host->variant->busy_detect_mask, base + MMCICLEAR); in ux500_busy_complete()
1015 struct variant_data *variant = host->variant; in _mmci_dmae_prep_data() local
1021 .src_maxburst = variant->fifohalfsize >> 2, /* # of words */ in _mmci_dmae_prep_data()
1022 .dst_maxburst = variant->fifohalfsize >> 2, /* # of words */ in _mmci_dmae_prep_data()
1023 .device_fc = variant->dma_flow_controller, in _mmci_dmae_prep_data()
1044 if (data->blksz * data->blocks <= variant->fifosize) in _mmci_dmae_prep_data()
1056 if (host->variant->dma_power_of_2 && !is_power_of_2(data->blksz)) in _mmci_dmae_prep_data()
1065 if (host->variant->qcom_dml) in _mmci_dmae_prep_data()
1238 struct variant_data *variant = host->variant; in mmci_start_data() local
1265 datactrl |= variant->datactrl_mask_sdio; in mmci_start_data()
1268 * The ST Micro variant for SDIO small write transfers in mmci_start_data()
1273 if (variant->st_sdio && data->flags & MMC_DATA_WRITE && in mmci_start_data()
1276 clk = host->clk_reg & ~variant->clkreg_enable; in mmci_start_data()
1278 clk = host->clk_reg | variant->clkreg_enable; in mmci_start_data()
1285 datactrl |= variant->datactrl_mask_ddrmode; in mmci_start_data()
1305 if (host->size < variant->fifohalfsize) in mmci_start_data()
1330 if (readl(base + MMCICOMMAND) & host->variant->cmdreg_cpsm_enable) { in mmci_start_command()
1335 if (host->variant->cmdreg_stop && in mmci_start_command()
1337 c |= host->variant->cmdreg_stop; in mmci_start_command()
1339 c |= cmd->opcode | host->variant->cmdreg_cpsm_enable; in mmci_start_command()
1342 c |= host->variant->cmdreg_lrsp_crc; in mmci_start_command()
1344 c |= host->variant->cmdreg_srsp_crc; in mmci_start_command()
1346 c |= host->variant->cmdreg_srsp; in mmci_start_command()
1356 if (busy_resp && host->variant->busy_timeout) { in mmci_start_command()
1373 c |= host->variant->data_cmd_enable; in mmci_start_command()
1398 status_err = status & (host->variant->start_err | in mmci_data_irq()
1415 if (!host->variant->datacnt_useless) { in mmci_data_irq()
1435 if (success > host->variant->fifosize) in mmci_data_irq()
1436 success -= host->variant->fifosize; in mmci_data_irq()
1457 if (host->variant->cmdreg_stop && data->error) in mmci_data_irq()
1488 if (host->variant->busy_timeout && busy_resp) in mmci_cmd_irq()
1495 /* Handle busy detection on DAT0 if the variant supports it. */ in mmci_cmd_irq()
1496 if (busy_resp && host->variant->busy_detect) in mmci_cmd_irq()
1506 } else if (host->variant->busy_timeout && busy_resp && in mmci_cmd_irq()
1527 if (host->variant->cmdreg_stop && cmd->error) { in mmci_cmd_irq()
1538 } else if (!host->variant->datactrl_first && in mmci_cmd_irq()
1575 if (status & host->variant->busy_detect_flag) { in ux500_busy_timeout_work()
1604 return host->variant->fifohalfsize; in mmci_qcom_get_rx_fifocnt()
1661 struct variant_data *variant = host->variant; in mmci_pio_write() local
1669 variant->fifosize : variant->fifohalfsize; in mmci_pio_write()
1701 struct variant_data *variant = host->variant; in mmci_pio_irq() local
1752 if (status & MCI_RXACTIVE && host->size < variant->fifohalfsize) in mmci_pio_irq()
1808 status &= ~host->variant->irq_pio_mask; in mmci_irq()
1816 if (host->variant->busy_detect) in mmci_irq()
1817 writel(status & ~host->variant->busy_detect_mask, in mmci_irq()
1824 if (host->variant->reversed_irq_handling) { in mmci_irq()
1832 if (host->variant->supports_sdio_irq) in mmci_irq()
1839 if (host->variant->busy_detect_flag) in mmci_irq()
1840 status &= ~host->variant->busy_detect_flag; in mmci_irq()
1869 writel(MCI_IRQENABLE | host->variant->start_err, in mmci_irq_thread()
1900 (host->variant->datactrl_first || mrq->data->flags & MMC_DATA_READ)) in mmci_request()
1916 if (!host->variant->busy_detect) in mmci_set_max_busy_timeout()
1919 if (host->variant->busy_timeout && mmc->actual_clock) in mmci_set_max_busy_timeout()
1929 struct variant_data *variant = host->variant; in mmci_set_ios() local
1950 * The ST Micro variant doesn't have the PL180s MCI_PWR_UP in mmci_set_ios()
1952 * configured in the variant data. in mmci_set_ios()
1954 pwr |= variant->pwrreg_powerup; in mmci_set_ios()
1971 if (variant->signal_direction && ios->power_mode != MMC_POWER_OFF) { in mmci_set_ios()
1973 * The ST Micro variant has some additional bits in mmci_set_ios()
1987 if (variant->opendrain) { in mmci_set_ios()
1989 pwr |= variant->opendrain; in mmci_set_ios()
1992 * If the variant cannot configure the pads by its own, then we in mmci_set_ios()
2002 * If clock = 0 and the variant requires the MMCIPOWER to be used for in mmci_set_ios()
2005 if (!ios->clock && variant->pwrreg_clkgate) in mmci_set_ios()
2008 if (host->variant->explicit_mclk_control && in mmci_set_ios()
2209 struct variant_data *variant = id->data; in mmci_probe() local
2240 * Some variant (STM32) doesn't have opendrain bit, nevertheless in mmci_probe()
2243 if (!variant->opendrain) { in mmci_probe()
2275 if (variant->qcom_fifo) in mmci_probe()
2281 host->variant = variant; in mmci_probe()
2288 if (host->mclk > variant->f_max) { in mmci_probe()
2289 ret = clk_set_rate(host->clk, variant->f_max); in mmci_probe()
2304 if (variant->init) in mmci_probe()
2305 variant->init(host); in mmci_probe()
2313 if (variant->st_clkdiv) in mmci_probe()
2315 else if (variant->stm32_clkdiv) in mmci_probe()
2317 else if (variant->explicit_mclk_control) in mmci_probe()
2328 mmc->f_max = variant->explicit_mclk_control ? in mmci_probe()
2329 min(variant->f_max, mmc->f_max) : in mmci_probe()
2332 mmc->f_max = variant->explicit_mclk_control ? in mmci_probe()
2363 if (variant->busy_detect) { in mmci_probe()
2369 if (variant->busy_dpsm_flag) in mmci_probe()
2371 host->variant->busy_dpsm_flag); in mmci_probe()
2375 if (variant->supports_sdio_irq && host->mmc->caps & MMC_CAP_SDIO_IRQ) { in mmci_probe()
2382 host->variant->datactrl_mask_sdio); in mmci_probe()
2386 if (variant->busy_timeout) in mmci_probe()
2407 mmc->max_req_size = (1 << variant->datalength_bits) - 1; in mmci_probe()
2418 mmc->max_blk_size = 1 << variant->datactrl_blocksz; in mmci_probe()
2424 mmc->max_blk_count = mmc->max_req_size >> variant->datactrl_blocksz; in mmci_probe()
2430 if (variant->mmcimask1) in mmci_probe()
2467 if (host->variant->busy_detect) in mmci_probe()
2471 writel(MCI_IRQENABLE | variant->start_err, host->base + MMCIMASK0); in mmci_probe()
2505 struct variant_data *variant = host->variant; in mmci_remove() local
2517 if (variant->mmcimask1) in mmci_remove()
2537 if (host->variant->pwrreg_nopower) { in mmci_save()
2553 if (host->variant->pwrreg_nopower) { in mmci_restore()
2558 writel(MCI_IRQENABLE | host->variant->start_err, in mmci_restore()