91a35b8dffc2af673d7e09eb96037133d3267721
[platform/kernel/linux-rpi.git] / drivers / mmc / host / mmci.c
1 /*
2  *  linux/drivers/mmc/host/mmci.c - ARM PrimeCell MMCI PL180/1 driver
3  *
4  *  Copyright (C) 2003 Deep Blue Solutions, Ltd, All Rights Reserved.
5  *  Copyright (C) 2010 ST-Ericsson SA
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License version 2 as
9  * published by the Free Software Foundation.
10  */
11 #include <linux/module.h>
12 #include <linux/moduleparam.h>
13 #include <linux/init.h>
14 #include <linux/ioport.h>
15 #include <linux/device.h>
16 #include <linux/io.h>
17 #include <linux/interrupt.h>
18 #include <linux/kernel.h>
19 #include <linux/slab.h>
20 #include <linux/delay.h>
21 #include <linux/err.h>
22 #include <linux/highmem.h>
23 #include <linux/log2.h>
24 #include <linux/mmc/pm.h>
25 #include <linux/mmc/host.h>
26 #include <linux/mmc/card.h>
27 #include <linux/mmc/slot-gpio.h>
28 #include <linux/amba/bus.h>
29 #include <linux/clk.h>
30 #include <linux/scatterlist.h>
31 #include <linux/gpio.h>
32 #include <linux/of_gpio.h>
33 #include <linux/regulator/consumer.h>
34 #include <linux/dmaengine.h>
35 #include <linux/dma-mapping.h>
36 #include <linux/amba/mmci.h>
37 #include <linux/pm_runtime.h>
38 #include <linux/types.h>
39 #include <linux/pinctrl/consumer.h>
40
41 #include <asm/div64.h>
42 #include <asm/io.h>
43
44 #include "mmci.h"
45 #include "mmci_qcom_dml.h"
46
47 #define DRIVER_NAME "mmci-pl18x"
48
49 static unsigned int fmax = 515633;
50
51 /**
52  * struct variant_data - MMCI variant-specific quirks
53  * @clkreg: default value for MCICLOCK register
54  * @clkreg_enable: enable value for MMCICLOCK register
55  * @clkreg_8bit_bus_enable: enable value for 8 bit bus
56  * @clkreg_neg_edge_enable: enable value for inverted data/cmd output
57  * @datalength_bits: number of bits in the MMCIDATALENGTH register
58  * @fifosize: number of bytes that can be written when MMCI_TXFIFOEMPTY
59  *            is asserted (likewise for RX)
60  * @fifohalfsize: number of bytes that can be written when MCI_TXFIFOHALFEMPTY
61  *                is asserted (likewise for RX)
62  * @data_cmd_enable: enable value for data commands.
63  * @st_sdio: enable ST specific SDIO logic
64  * @st_clkdiv: true if using a ST-specific clock divider algorithm
65  * @datactrl_mask_ddrmode: ddr mode mask in datactrl register.
66  * @blksz_datactrl16: true if Block size is at b16..b30 position in datactrl register
67  * @blksz_datactrl4: true if Block size is at b4..b16 position in datactrl
68  *                   register
69  * @datactrl_mask_sdio: SDIO enable mask in datactrl register
70  * @pwrreg_powerup: power up value for MMCIPOWER register
71  * @f_max: maximum clk frequency supported by the controller.
72  * @signal_direction: input/out direction of bus signals can be indicated
73  * @pwrreg_clkgate: MMCIPOWER register must be used to gate the clock
74  * @busy_detect: true if the variant supports busy detection on DAT0.
75  * @busy_dpsm_flag: bitmask enabling busy detection in the DPSM
76  * @busy_detect_flag: bitmask identifying the bit in the MMCISTATUS register
77  *                    indicating that the card is busy
78  * @busy_detect_mask: bitmask identifying the bit in the MMCIMASK0 to mask for
79  *                    getting busy end detection interrupts
80  * @pwrreg_nopower: bits in MMCIPOWER don't controls ext. power supply
81  * @explicit_mclk_control: enable explicit mclk control in driver.
82  * @qcom_fifo: enables qcom specific fifo pio read logic.
83  * @qcom_dml: enables qcom specific dma glue for dma transfers.
84  * @reversed_irq_handling: handle data irq before cmd irq.
85  * @mmcimask1: true if variant have a MMCIMASK1 register.
86  * @start_err: bitmask identifying the STARTBITERR bit inside MMCISTATUS
87  *             register.
88  */
89 struct variant_data {
90         unsigned int            clkreg;
91         unsigned int            clkreg_enable;
92         unsigned int            clkreg_8bit_bus_enable;
93         unsigned int            clkreg_neg_edge_enable;
94         unsigned int            datalength_bits;
95         unsigned int            fifosize;
96         unsigned int            fifohalfsize;
97         unsigned int            data_cmd_enable;
98         unsigned int            datactrl_mask_ddrmode;
99         unsigned int            datactrl_mask_sdio;
100         bool                    st_sdio;
101         bool                    st_clkdiv;
102         bool                    blksz_datactrl16;
103         bool                    blksz_datactrl4;
104         u32                     pwrreg_powerup;
105         u32                     f_max;
106         bool                    signal_direction;
107         bool                    pwrreg_clkgate;
108         bool                    busy_detect;
109         u32                     busy_dpsm_flag;
110         u32                     busy_detect_flag;
111         u32                     busy_detect_mask;
112         bool                    pwrreg_nopower;
113         bool                    explicit_mclk_control;
114         bool                    qcom_fifo;
115         bool                    qcom_dml;
116         bool                    reversed_irq_handling;
117         bool                    mmcimask1;
118         u32                     start_err;
119 };
120
121 static struct variant_data variant_arm = {
122         .fifosize               = 16 * 4,
123         .fifohalfsize           = 8 * 4,
124         .datalength_bits        = 16,
125         .pwrreg_powerup         = MCI_PWR_UP,
126         .f_max                  = 100000000,
127         .reversed_irq_handling  = true,
128         .mmcimask1              = true,
129         .start_err              = MCI_STARTBITERR,
130 };
131
132 static struct variant_data variant_arm_extended_fifo = {
133         .fifosize               = 128 * 4,
134         .fifohalfsize           = 64 * 4,
135         .datalength_bits        = 16,
136         .pwrreg_powerup         = MCI_PWR_UP,
137         .f_max                  = 100000000,
138         .mmcimask1              = true,
139         .start_err              = MCI_STARTBITERR,
140 };
141
142 static struct variant_data variant_arm_extended_fifo_hwfc = {
143         .fifosize               = 128 * 4,
144         .fifohalfsize           = 64 * 4,
145         .clkreg_enable          = MCI_ARM_HWFCEN,
146         .datalength_bits        = 16,
147         .pwrreg_powerup         = MCI_PWR_UP,
148         .f_max                  = 100000000,
149         .mmcimask1              = true,
150         .start_err              = MCI_STARTBITERR,
151 };
152
153 static struct variant_data variant_u300 = {
154         .fifosize               = 16 * 4,
155         .fifohalfsize           = 8 * 4,
156         .clkreg_enable          = MCI_ST_U300_HWFCEN,
157         .clkreg_8bit_bus_enable = MCI_ST_8BIT_BUS,
158         .datalength_bits        = 16,
159         .datactrl_mask_sdio     = MCI_DPSM_ST_SDIOEN,
160         .st_sdio                        = true,
161         .pwrreg_powerup         = MCI_PWR_ON,
162         .f_max                  = 100000000,
163         .signal_direction       = true,
164         .pwrreg_clkgate         = true,
165         .pwrreg_nopower         = true,
166         .mmcimask1              = true,
167         .start_err              = MCI_STARTBITERR,
168 };
169
170 static struct variant_data variant_nomadik = {
171         .fifosize               = 16 * 4,
172         .fifohalfsize           = 8 * 4,
173         .clkreg                 = MCI_CLK_ENABLE,
174         .clkreg_8bit_bus_enable = MCI_ST_8BIT_BUS,
175         .datalength_bits        = 24,
176         .datactrl_mask_sdio     = MCI_DPSM_ST_SDIOEN,
177         .st_sdio                = true,
178         .st_clkdiv              = true,
179         .pwrreg_powerup         = MCI_PWR_ON,
180         .f_max                  = 100000000,
181         .signal_direction       = true,
182         .pwrreg_clkgate         = true,
183         .pwrreg_nopower         = true,
184         .mmcimask1              = true,
185         .start_err              = MCI_STARTBITERR,
186 };
187
188 static struct variant_data variant_ux500 = {
189         .fifosize               = 30 * 4,
190         .fifohalfsize           = 8 * 4,
191         .clkreg                 = MCI_CLK_ENABLE,
192         .clkreg_enable          = MCI_ST_UX500_HWFCEN,
193         .clkreg_8bit_bus_enable = MCI_ST_8BIT_BUS,
194         .clkreg_neg_edge_enable = MCI_ST_UX500_NEG_EDGE,
195         .datalength_bits        = 24,
196         .datactrl_mask_sdio     = MCI_DPSM_ST_SDIOEN,
197         .st_sdio                = true,
198         .st_clkdiv              = true,
199         .pwrreg_powerup         = MCI_PWR_ON,
200         .f_max                  = 100000000,
201         .signal_direction       = true,
202         .pwrreg_clkgate         = true,
203         .busy_detect            = true,
204         .busy_dpsm_flag         = MCI_DPSM_ST_BUSYMODE,
205         .busy_detect_flag       = MCI_ST_CARDBUSY,
206         .busy_detect_mask       = MCI_ST_BUSYENDMASK,
207         .pwrreg_nopower         = true,
208         .mmcimask1              = true,
209         .start_err              = MCI_STARTBITERR,
210 };
211
212 static struct variant_data variant_ux500v2 = {
213         .fifosize               = 30 * 4,
214         .fifohalfsize           = 8 * 4,
215         .clkreg                 = MCI_CLK_ENABLE,
216         .clkreg_enable          = MCI_ST_UX500_HWFCEN,
217         .clkreg_8bit_bus_enable = MCI_ST_8BIT_BUS,
218         .clkreg_neg_edge_enable = MCI_ST_UX500_NEG_EDGE,
219         .datactrl_mask_ddrmode  = MCI_DPSM_ST_DDRMODE,
220         .datalength_bits        = 24,
221         .datactrl_mask_sdio     = MCI_DPSM_ST_SDIOEN,
222         .st_sdio                = true,
223         .st_clkdiv              = true,
224         .blksz_datactrl16       = true,
225         .pwrreg_powerup         = MCI_PWR_ON,
226         .f_max                  = 100000000,
227         .signal_direction       = true,
228         .pwrreg_clkgate         = true,
229         .busy_detect            = true,
230         .busy_dpsm_flag         = MCI_DPSM_ST_BUSYMODE,
231         .busy_detect_flag       = MCI_ST_CARDBUSY,
232         .busy_detect_mask       = MCI_ST_BUSYENDMASK,
233         .pwrreg_nopower         = true,
234         .mmcimask1              = true,
235         .start_err              = MCI_STARTBITERR,
236 };
237
238 static struct variant_data variant_qcom = {
239         .fifosize               = 16 * 4,
240         .fifohalfsize           = 8 * 4,
241         .clkreg                 = MCI_CLK_ENABLE,
242         .clkreg_enable          = MCI_QCOM_CLK_FLOWENA |
243                                   MCI_QCOM_CLK_SELECT_IN_FBCLK,
244         .clkreg_8bit_bus_enable = MCI_QCOM_CLK_WIDEBUS_8,
245         .datactrl_mask_ddrmode  = MCI_QCOM_CLK_SELECT_IN_DDR_MODE,
246         .data_cmd_enable        = MCI_CPSM_QCOM_DATCMD,
247         .blksz_datactrl4        = true,
248         .datalength_bits        = 24,
249         .pwrreg_powerup         = MCI_PWR_UP,
250         .f_max                  = 208000000,
251         .explicit_mclk_control  = true,
252         .qcom_fifo              = true,
253         .qcom_dml               = true,
254         .mmcimask1              = true,
255         .start_err              = MCI_STARTBITERR,
256 };
257
258 /* Busy detection for the ST Micro variant */
259 static int mmci_card_busy(struct mmc_host *mmc)
260 {
261         struct mmci_host *host = mmc_priv(mmc);
262         unsigned long flags;
263         int busy = 0;
264
265         spin_lock_irqsave(&host->lock, flags);
266         if (readl(host->base + MMCISTATUS) & host->variant->busy_detect_flag)
267                 busy = 1;
268         spin_unlock_irqrestore(&host->lock, flags);
269
270         return busy;
271 }
272
273 /*
274  * Validate mmc prerequisites
275  */
276 static int mmci_validate_data(struct mmci_host *host,
277                               struct mmc_data *data)
278 {
279         if (!data)
280                 return 0;
281
282         if (!is_power_of_2(data->blksz)) {
283                 dev_err(mmc_dev(host->mmc),
284                         "unsupported block size (%d bytes)\n", data->blksz);
285                 return -EINVAL;
286         }
287
288         return 0;
289 }
290
291 static void mmci_reg_delay(struct mmci_host *host)
292 {
293         /*
294          * According to the spec, at least three feedback clock cycles
295          * of max 52 MHz must pass between two writes to the MMCICLOCK reg.
296          * Three MCLK clock cycles must pass between two MMCIPOWER reg writes.
297          * Worst delay time during card init is at 100 kHz => 30 us.
298          * Worst delay time when up and running is at 25 MHz => 120 ns.
299          */
300         if (host->cclk < 25000000)
301                 udelay(30);
302         else
303                 ndelay(120);
304 }
305
306 /*
307  * This must be called with host->lock held
308  */
309 static void mmci_write_clkreg(struct mmci_host *host, u32 clk)
310 {
311         if (host->clk_reg != clk) {
312                 host->clk_reg = clk;
313                 writel(clk, host->base + MMCICLOCK);
314         }
315 }
316
317 /*
318  * This must be called with host->lock held
319  */
320 static void mmci_write_pwrreg(struct mmci_host *host, u32 pwr)
321 {
322         if (host->pwr_reg != pwr) {
323                 host->pwr_reg = pwr;
324                 writel(pwr, host->base + MMCIPOWER);
325         }
326 }
327
328 /*
329  * This must be called with host->lock held
330  */
331 static void mmci_write_datactrlreg(struct mmci_host *host, u32 datactrl)
332 {
333         /* Keep busy mode in DPSM if enabled */
334         datactrl |= host->datactrl_reg & host->variant->busy_dpsm_flag;
335
336         if (host->datactrl_reg != datactrl) {
337                 host->datactrl_reg = datactrl;
338                 writel(datactrl, host->base + MMCIDATACTRL);
339         }
340 }
341
342 /*
343  * This must be called with host->lock held
344  */
345 static void mmci_set_clkreg(struct mmci_host *host, unsigned int desired)
346 {
347         struct variant_data *variant = host->variant;
348         u32 clk = variant->clkreg;
349
350         /* Make sure cclk reflects the current calculated clock */
351         host->cclk = 0;
352
353         if (desired) {
354                 if (variant->explicit_mclk_control) {
355                         host->cclk = host->mclk;
356                 } else if (desired >= host->mclk) {
357                         clk = MCI_CLK_BYPASS;
358                         if (variant->st_clkdiv)
359                                 clk |= MCI_ST_UX500_NEG_EDGE;
360                         host->cclk = host->mclk;
361                 } else if (variant->st_clkdiv) {
362                         /*
363                          * DB8500 TRM says f = mclk / (clkdiv + 2)
364                          * => clkdiv = (mclk / f) - 2
365                          * Round the divider up so we don't exceed the max
366                          * frequency
367                          */
368                         clk = DIV_ROUND_UP(host->mclk, desired) - 2;
369                         if (clk >= 256)
370                                 clk = 255;
371                         host->cclk = host->mclk / (clk + 2);
372                 } else {
373                         /*
374                          * PL180 TRM says f = mclk / (2 * (clkdiv + 1))
375                          * => clkdiv = mclk / (2 * f) - 1
376                          */
377                         clk = host->mclk / (2 * desired) - 1;
378                         if (clk >= 256)
379                                 clk = 255;
380                         host->cclk = host->mclk / (2 * (clk + 1));
381                 }
382
383                 clk |= variant->clkreg_enable;
384                 clk |= MCI_CLK_ENABLE;
385                 /* This hasn't proven to be worthwhile */
386                 /* clk |= MCI_CLK_PWRSAVE; */
387         }
388
389         /* Set actual clock for debug */
390         host->mmc->actual_clock = host->cclk;
391
392         if (host->mmc->ios.bus_width == MMC_BUS_WIDTH_4)
393                 clk |= MCI_4BIT_BUS;
394         if (host->mmc->ios.bus_width == MMC_BUS_WIDTH_8)
395                 clk |= variant->clkreg_8bit_bus_enable;
396
397         if (host->mmc->ios.timing == MMC_TIMING_UHS_DDR50 ||
398             host->mmc->ios.timing == MMC_TIMING_MMC_DDR52)
399                 clk |= variant->clkreg_neg_edge_enable;
400
401         mmci_write_clkreg(host, clk);
402 }
403
404 static void
405 mmci_request_end(struct mmci_host *host, struct mmc_request *mrq)
406 {
407         writel(0, host->base + MMCICOMMAND);
408
409         BUG_ON(host->data);
410
411         host->mrq = NULL;
412         host->cmd = NULL;
413
414         mmc_request_done(host->mmc, mrq);
415 }
416
417 static void mmci_set_mask1(struct mmci_host *host, unsigned int mask)
418 {
419         void __iomem *base = host->base;
420         struct variant_data *variant = host->variant;
421
422         if (host->singleirq) {
423                 unsigned int mask0 = readl(base + MMCIMASK0);
424
425                 mask0 &= ~MCI_IRQ1MASK;
426                 mask0 |= mask;
427
428                 writel(mask0, base + MMCIMASK0);
429         }
430
431         if (variant->mmcimask1)
432                 writel(mask, base + MMCIMASK1);
433
434         host->mask1_reg = mask;
435 }
436
437 static void mmci_stop_data(struct mmci_host *host)
438 {
439         mmci_write_datactrlreg(host, 0);
440         mmci_set_mask1(host, 0);
441         host->data = NULL;
442 }
443
444 static void mmci_init_sg(struct mmci_host *host, struct mmc_data *data)
445 {
446         unsigned int flags = SG_MITER_ATOMIC;
447
448         if (data->flags & MMC_DATA_READ)
449                 flags |= SG_MITER_TO_SG;
450         else
451                 flags |= SG_MITER_FROM_SG;
452
453         sg_miter_start(&host->sg_miter, data->sg, data->sg_len, flags);
454 }
455
456 /*
457  * All the DMA operation mode stuff goes inside this ifdef.
458  * This assumes that you have a generic DMA device interface,
459  * no custom DMA interfaces are supported.
460  */
461 #ifdef CONFIG_DMA_ENGINE
462 static void mmci_dma_setup(struct mmci_host *host)
463 {
464         const char *rxname, *txname;
465         struct variant_data *variant = host->variant;
466
467         host->dma_rx_channel = dma_request_slave_channel(mmc_dev(host->mmc), "rx");
468         host->dma_tx_channel = dma_request_slave_channel(mmc_dev(host->mmc), "tx");
469
470         /* initialize pre request cookie */
471         host->next_data.cookie = 1;
472
473         /*
474          * If only an RX channel is specified, the driver will
475          * attempt to use it bidirectionally, however if it is
476          * is specified but cannot be located, DMA will be disabled.
477          */
478         if (host->dma_rx_channel && !host->dma_tx_channel)
479                 host->dma_tx_channel = host->dma_rx_channel;
480
481         if (host->dma_rx_channel)
482                 rxname = dma_chan_name(host->dma_rx_channel);
483         else
484                 rxname = "none";
485
486         if (host->dma_tx_channel)
487                 txname = dma_chan_name(host->dma_tx_channel);
488         else
489                 txname = "none";
490
491         dev_info(mmc_dev(host->mmc), "DMA channels RX %s, TX %s\n",
492                  rxname, txname);
493
494         /*
495          * Limit the maximum segment size in any SG entry according to
496          * the parameters of the DMA engine device.
497          */
498         if (host->dma_tx_channel) {
499                 struct device *dev = host->dma_tx_channel->device->dev;
500                 unsigned int max_seg_size = dma_get_max_seg_size(dev);
501
502                 if (max_seg_size < host->mmc->max_seg_size)
503                         host->mmc->max_seg_size = max_seg_size;
504         }
505         if (host->dma_rx_channel) {
506                 struct device *dev = host->dma_rx_channel->device->dev;
507                 unsigned int max_seg_size = dma_get_max_seg_size(dev);
508
509                 if (max_seg_size < host->mmc->max_seg_size)
510                         host->mmc->max_seg_size = max_seg_size;
511         }
512
513         if (variant->qcom_dml && host->dma_rx_channel && host->dma_tx_channel)
514                 if (dml_hw_init(host, host->mmc->parent->of_node))
515                         variant->qcom_dml = false;
516 }
517
518 /*
519  * This is used in or so inline it
520  * so it can be discarded.
521  */
522 static inline void mmci_dma_release(struct mmci_host *host)
523 {
524         if (host->dma_rx_channel)
525                 dma_release_channel(host->dma_rx_channel);
526         if (host->dma_tx_channel)
527                 dma_release_channel(host->dma_tx_channel);
528         host->dma_rx_channel = host->dma_tx_channel = NULL;
529 }
530
531 static void mmci_dma_data_error(struct mmci_host *host)
532 {
533         dev_err(mmc_dev(host->mmc), "error during DMA transfer!\n");
534         dmaengine_terminate_all(host->dma_current);
535         host->dma_in_progress = false;
536         host->dma_current = NULL;
537         host->dma_desc_current = NULL;
538         host->data->host_cookie = 0;
539 }
540
541 static void mmci_dma_unmap(struct mmci_host *host, struct mmc_data *data)
542 {
543         struct dma_chan *chan;
544
545         if (data->flags & MMC_DATA_READ)
546                 chan = host->dma_rx_channel;
547         else
548                 chan = host->dma_tx_channel;
549
550         dma_unmap_sg(chan->device->dev, data->sg, data->sg_len,
551                      mmc_get_dma_dir(data));
552 }
553
554 static void mmci_dma_finalize(struct mmci_host *host, struct mmc_data *data)
555 {
556         u32 status;
557         int i;
558
559         /* Wait up to 1ms for the DMA to complete */
560         for (i = 0; ; i++) {
561                 status = readl(host->base + MMCISTATUS);
562                 if (!(status & MCI_RXDATAAVLBLMASK) || i >= 100)
563                         break;
564                 udelay(10);
565         }
566
567         /*
568          * Check to see whether we still have some data left in the FIFO -
569          * this catches DMA controllers which are unable to monitor the
570          * DMALBREQ and DMALSREQ signals while allowing us to DMA to non-
571          * contiguous buffers.  On TX, we'll get a FIFO underrun error.
572          */
573         if (status & MCI_RXDATAAVLBLMASK) {
574                 mmci_dma_data_error(host);
575                 if (!data->error)
576                         data->error = -EIO;
577         }
578
579         if (!data->host_cookie)
580                 mmci_dma_unmap(host, data);
581
582         /*
583          * Use of DMA with scatter-gather is impossible.
584          * Give up with DMA and switch back to PIO mode.
585          */
586         if (status & MCI_RXDATAAVLBLMASK) {
587                 dev_err(mmc_dev(host->mmc), "buggy DMA detected. Taking evasive action.\n");
588                 mmci_dma_release(host);
589         }
590
591         host->dma_in_progress = false;
592         host->dma_current = NULL;
593         host->dma_desc_current = NULL;
594 }
595
596 /* prepares DMA channel and DMA descriptor, returns non-zero on failure */
597 static int __mmci_dma_prep_data(struct mmci_host *host, struct mmc_data *data,
598                                 struct dma_chan **dma_chan,
599                                 struct dma_async_tx_descriptor **dma_desc)
600 {
601         struct variant_data *variant = host->variant;
602         struct dma_slave_config conf = {
603                 .src_addr = host->phybase + MMCIFIFO,
604                 .dst_addr = host->phybase + MMCIFIFO,
605                 .src_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES,
606                 .dst_addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES,
607                 .src_maxburst = variant->fifohalfsize >> 2, /* # of words */
608                 .dst_maxburst = variant->fifohalfsize >> 2, /* # of words */
609                 .device_fc = false,
610         };
611         struct dma_chan *chan;
612         struct dma_device *device;
613         struct dma_async_tx_descriptor *desc;
614         int nr_sg;
615         unsigned long flags = DMA_CTRL_ACK;
616
617         if (data->flags & MMC_DATA_READ) {
618                 conf.direction = DMA_DEV_TO_MEM;
619                 chan = host->dma_rx_channel;
620         } else {
621                 conf.direction = DMA_MEM_TO_DEV;
622                 chan = host->dma_tx_channel;
623         }
624
625         /* If there's no DMA channel, fall back to PIO */
626         if (!chan)
627                 return -EINVAL;
628
629         /* If less than or equal to the fifo size, don't bother with DMA */
630         if (data->blksz * data->blocks <= variant->fifosize)
631                 return -EINVAL;
632
633         device = chan->device;
634         nr_sg = dma_map_sg(device->dev, data->sg, data->sg_len,
635                            mmc_get_dma_dir(data));
636         if (nr_sg == 0)
637                 return -EINVAL;
638
639         if (host->variant->qcom_dml)
640                 flags |= DMA_PREP_INTERRUPT;
641
642         dmaengine_slave_config(chan, &conf);
643         desc = dmaengine_prep_slave_sg(chan, data->sg, nr_sg,
644                                             conf.direction, flags);
645         if (!desc)
646                 goto unmap_exit;
647
648         *dma_chan = chan;
649         *dma_desc = desc;
650
651         return 0;
652
653  unmap_exit:
654         dma_unmap_sg(device->dev, data->sg, data->sg_len,
655                      mmc_get_dma_dir(data));
656         return -ENOMEM;
657 }
658
659 static inline int mmci_dma_prep_data(struct mmci_host *host,
660                                      struct mmc_data *data)
661 {
662         /* Check if next job is already prepared. */
663         if (host->dma_current && host->dma_desc_current)
664                 return 0;
665
666         /* No job were prepared thus do it now. */
667         return __mmci_dma_prep_data(host, data, &host->dma_current,
668                                     &host->dma_desc_current);
669 }
670
671 static inline int mmci_dma_prep_next(struct mmci_host *host,
672                                      struct mmc_data *data)
673 {
674         struct mmci_host_next *nd = &host->next_data;
675         return __mmci_dma_prep_data(host, data, &nd->dma_chan, &nd->dma_desc);
676 }
677
678 static int mmci_dma_start_data(struct mmci_host *host, unsigned int datactrl)
679 {
680         int ret;
681         struct mmc_data *data = host->data;
682
683         ret = mmci_dma_prep_data(host, host->data);
684         if (ret)
685                 return ret;
686
687         /* Okay, go for it. */
688         dev_vdbg(mmc_dev(host->mmc),
689                  "Submit MMCI DMA job, sglen %d blksz %04x blks %04x flags %08x\n",
690                  data->sg_len, data->blksz, data->blocks, data->flags);
691         host->dma_in_progress = true;
692         dmaengine_submit(host->dma_desc_current);
693         dma_async_issue_pending(host->dma_current);
694
695         if (host->variant->qcom_dml)
696                 dml_start_xfer(host, data);
697
698         datactrl |= MCI_DPSM_DMAENABLE;
699
700         /* Trigger the DMA transfer */
701         mmci_write_datactrlreg(host, datactrl);
702
703         /*
704          * Let the MMCI say when the data is ended and it's time
705          * to fire next DMA request. When that happens, MMCI will
706          * call mmci_data_end()
707          */
708         writel(readl(host->base + MMCIMASK0) | MCI_DATAENDMASK,
709                host->base + MMCIMASK0);
710         return 0;
711 }
712
713 static void mmci_get_next_data(struct mmci_host *host, struct mmc_data *data)
714 {
715         struct mmci_host_next *next = &host->next_data;
716
717         WARN_ON(data->host_cookie && data->host_cookie != next->cookie);
718         WARN_ON(!data->host_cookie && (next->dma_desc || next->dma_chan));
719
720         host->dma_desc_current = next->dma_desc;
721         host->dma_current = next->dma_chan;
722         next->dma_desc = NULL;
723         next->dma_chan = NULL;
724 }
725
726 static void mmci_pre_request(struct mmc_host *mmc, struct mmc_request *mrq)
727 {
728         struct mmci_host *host = mmc_priv(mmc);
729         struct mmc_data *data = mrq->data;
730         struct mmci_host_next *nd = &host->next_data;
731
732         if (!data)
733                 return;
734
735         BUG_ON(data->host_cookie);
736
737         if (mmci_validate_data(host, data))
738                 return;
739
740         if (!mmci_dma_prep_next(host, data))
741                 data->host_cookie = ++nd->cookie < 0 ? 1 : nd->cookie;
742 }
743
744 static void mmci_post_request(struct mmc_host *mmc, struct mmc_request *mrq,
745                               int err)
746 {
747         struct mmci_host *host = mmc_priv(mmc);
748         struct mmc_data *data = mrq->data;
749
750         if (!data || !data->host_cookie)
751                 return;
752
753         mmci_dma_unmap(host, data);
754
755         if (err) {
756                 struct mmci_host_next *next = &host->next_data;
757                 struct dma_chan *chan;
758                 if (data->flags & MMC_DATA_READ)
759                         chan = host->dma_rx_channel;
760                 else
761                         chan = host->dma_tx_channel;
762                 dmaengine_terminate_all(chan);
763
764                 if (host->dma_desc_current == next->dma_desc)
765                         host->dma_desc_current = NULL;
766
767                 if (host->dma_current == next->dma_chan) {
768                         host->dma_in_progress = false;
769                         host->dma_current = NULL;
770                 }
771
772                 next->dma_desc = NULL;
773                 next->dma_chan = NULL;
774                 data->host_cookie = 0;
775         }
776 }
777
778 #else
779 /* Blank functions if the DMA engine is not available */
780 static void mmci_get_next_data(struct mmci_host *host, struct mmc_data *data)
781 {
782 }
783 static inline void mmci_dma_setup(struct mmci_host *host)
784 {
785 }
786
787 static inline void mmci_dma_release(struct mmci_host *host)
788 {
789 }
790
791 static inline void mmci_dma_unmap(struct mmci_host *host, struct mmc_data *data)
792 {
793 }
794
795 static inline void mmci_dma_finalize(struct mmci_host *host,
796                                      struct mmc_data *data)
797 {
798 }
799
800 static inline void mmci_dma_data_error(struct mmci_host *host)
801 {
802 }
803
804 static inline int mmci_dma_start_data(struct mmci_host *host, unsigned int datactrl)
805 {
806         return -ENOSYS;
807 }
808
809 #define mmci_pre_request NULL
810 #define mmci_post_request NULL
811
812 #endif
813
814 static void mmci_start_data(struct mmci_host *host, struct mmc_data *data)
815 {
816         struct variant_data *variant = host->variant;
817         unsigned int datactrl, timeout, irqmask;
818         unsigned long long clks;
819         void __iomem *base;
820         int blksz_bits;
821
822         dev_dbg(mmc_dev(host->mmc), "blksz %04x blks %04x flags %08x\n",
823                 data->blksz, data->blocks, data->flags);
824
825         host->data = data;
826         host->size = data->blksz * data->blocks;
827         data->bytes_xfered = 0;
828
829         clks = (unsigned long long)data->timeout_ns * host->cclk;
830         do_div(clks, NSEC_PER_SEC);
831
832         timeout = data->timeout_clks + (unsigned int)clks;
833
834         base = host->base;
835         writel(timeout, base + MMCIDATATIMER);
836         writel(host->size, base + MMCIDATALENGTH);
837
838         blksz_bits = ffs(data->blksz) - 1;
839         BUG_ON(1 << blksz_bits != data->blksz);
840
841         if (variant->blksz_datactrl16)
842                 datactrl = MCI_DPSM_ENABLE | (data->blksz << 16);
843         else if (variant->blksz_datactrl4)
844                 datactrl = MCI_DPSM_ENABLE | (data->blksz << 4);
845         else
846                 datactrl = MCI_DPSM_ENABLE | blksz_bits << 4;
847
848         if (data->flags & MMC_DATA_READ)
849                 datactrl |= MCI_DPSM_DIRECTION;
850
851         if (host->mmc->card && mmc_card_sdio(host->mmc->card)) {
852                 u32 clk;
853
854                 datactrl |= variant->datactrl_mask_sdio;
855
856                 /*
857                  * The ST Micro variant for SDIO small write transfers
858                  * needs to have clock H/W flow control disabled,
859                  * otherwise the transfer will not start. The threshold
860                  * depends on the rate of MCLK.
861                  */
862                 if (variant->st_sdio && data->flags & MMC_DATA_WRITE &&
863                     (host->size < 8 ||
864                      (host->size <= 8 && host->mclk > 50000000)))
865                         clk = host->clk_reg & ~variant->clkreg_enable;
866                 else
867                         clk = host->clk_reg | variant->clkreg_enable;
868
869                 mmci_write_clkreg(host, clk);
870         }
871
872         if (host->mmc->ios.timing == MMC_TIMING_UHS_DDR50 ||
873             host->mmc->ios.timing == MMC_TIMING_MMC_DDR52)
874                 datactrl |= variant->datactrl_mask_ddrmode;
875
876         /*
877          * Attempt to use DMA operation mode, if this
878          * should fail, fall back to PIO mode
879          */
880         if (!mmci_dma_start_data(host, datactrl))
881                 return;
882
883         /* IRQ mode, map the SG list for CPU reading/writing */
884         mmci_init_sg(host, data);
885
886         if (data->flags & MMC_DATA_READ) {
887                 irqmask = MCI_RXFIFOHALFFULLMASK;
888
889                 /*
890                  * If we have less than the fifo 'half-full' threshold to
891                  * transfer, trigger a PIO interrupt as soon as any data
892                  * is available.
893                  */
894                 if (host->size < variant->fifohalfsize)
895                         irqmask |= MCI_RXDATAAVLBLMASK;
896         } else {
897                 /*
898                  * We don't actually need to include "FIFO empty" here
899                  * since its implicit in "FIFO half empty".
900                  */
901                 irqmask = MCI_TXFIFOHALFEMPTYMASK;
902         }
903
904         mmci_write_datactrlreg(host, datactrl);
905         writel(readl(base + MMCIMASK0) & ~MCI_DATAENDMASK, base + MMCIMASK0);
906         mmci_set_mask1(host, irqmask);
907 }
908
909 static void
910 mmci_start_command(struct mmci_host *host, struct mmc_command *cmd, u32 c)
911 {
912         void __iomem *base = host->base;
913
914         dev_dbg(mmc_dev(host->mmc), "op %02x arg %08x flags %08x\n",
915             cmd->opcode, cmd->arg, cmd->flags);
916
917         if (readl(base + MMCICOMMAND) & MCI_CPSM_ENABLE) {
918                 writel(0, base + MMCICOMMAND);
919                 mmci_reg_delay(host);
920         }
921
922         c |= cmd->opcode | MCI_CPSM_ENABLE;
923         if (cmd->flags & MMC_RSP_PRESENT) {
924                 if (cmd->flags & MMC_RSP_136)
925                         c |= MCI_CPSM_LONGRSP;
926                 c |= MCI_CPSM_RESPONSE;
927         }
928         if (/*interrupt*/0)
929                 c |= MCI_CPSM_INTERRUPT;
930
931         if (mmc_cmd_type(cmd) == MMC_CMD_ADTC)
932                 c |= host->variant->data_cmd_enable;
933
934         host->cmd = cmd;
935
936         writel(cmd->arg, base + MMCIARGUMENT);
937         writel(c, base + MMCICOMMAND);
938 }
939
940 static void
941 mmci_data_irq(struct mmci_host *host, struct mmc_data *data,
942               unsigned int status)
943 {
944         /* Make sure we have data to handle */
945         if (!data)
946                 return;
947
948         /* First check for errors */
949         if (status & (MCI_DATACRCFAIL | MCI_DATATIMEOUT |
950                       host->variant->start_err |
951                       MCI_TXUNDERRUN | MCI_RXOVERRUN)) {
952                 u32 remain, success;
953
954                 /* Terminate the DMA transfer */
955                 if (dma_inprogress(host)) {
956                         mmci_dma_data_error(host);
957                         mmci_dma_unmap(host, data);
958                 }
959
960                 /*
961                  * Calculate how far we are into the transfer.  Note that
962                  * the data counter gives the number of bytes transferred
963                  * on the MMC bus, not on the host side.  On reads, this
964                  * can be as much as a FIFO-worth of data ahead.  This
965                  * matters for FIFO overruns only.
966                  */
967                 remain = readl(host->base + MMCIDATACNT);
968                 success = data->blksz * data->blocks - remain;
969
970                 dev_dbg(mmc_dev(host->mmc), "MCI ERROR IRQ, status 0x%08x at 0x%08x\n",
971                         status, success);
972                 if (status & MCI_DATACRCFAIL) {
973                         /* Last block was not successful */
974                         success -= 1;
975                         data->error = -EILSEQ;
976                 } else if (status & MCI_DATATIMEOUT) {
977                         data->error = -ETIMEDOUT;
978                 } else if (status & MCI_STARTBITERR) {
979                         data->error = -ECOMM;
980                 } else if (status & MCI_TXUNDERRUN) {
981                         data->error = -EIO;
982                 } else if (status & MCI_RXOVERRUN) {
983                         if (success > host->variant->fifosize)
984                                 success -= host->variant->fifosize;
985                         else
986                                 success = 0;
987                         data->error = -EIO;
988                 }
989                 data->bytes_xfered = round_down(success, data->blksz);
990         }
991
992         if (status & MCI_DATABLOCKEND)
993                 dev_err(mmc_dev(host->mmc), "stray MCI_DATABLOCKEND interrupt\n");
994
995         if (status & MCI_DATAEND || data->error) {
996                 if (dma_inprogress(host))
997                         mmci_dma_finalize(host, data);
998                 mmci_stop_data(host);
999
1000                 if (!data->error)
1001                         /* The error clause is handled above, success! */
1002                         data->bytes_xfered = data->blksz * data->blocks;
1003
1004                 if (!data->stop || host->mrq->sbc) {
1005                         mmci_request_end(host, data->mrq);
1006                 } else {
1007                         mmci_start_command(host, data->stop, 0);
1008                 }
1009         }
1010 }
1011
1012 static void
1013 mmci_cmd_irq(struct mmci_host *host, struct mmc_command *cmd,
1014              unsigned int status)
1015 {
1016         void __iomem *base = host->base;
1017         bool sbc;
1018
1019         if (!cmd)
1020                 return;
1021
1022         sbc = (cmd == host->mrq->sbc);
1023
1024         /*
1025          * We need to be one of these interrupts to be considered worth
1026          * handling. Note that we tag on any latent IRQs postponed
1027          * due to waiting for busy status.
1028          */
1029         if (!((status|host->busy_status) &
1030               (MCI_CMDCRCFAIL|MCI_CMDTIMEOUT|MCI_CMDSENT|MCI_CMDRESPEND)))
1031                 return;
1032
1033         /*
1034          * ST Micro variant: handle busy detection.
1035          */
1036         if (host->variant->busy_detect) {
1037                 bool busy_resp = !!(cmd->flags & MMC_RSP_BUSY);
1038
1039                 /* We are busy with a command, return */
1040                 if (host->busy_status &&
1041                     (status & host->variant->busy_detect_flag))
1042                         return;
1043
1044                 /*
1045                  * We were not busy, but we now got a busy response on
1046                  * something that was not an error, and we double-check
1047                  * that the special busy status bit is still set before
1048                  * proceeding.
1049                  */
1050                 if (!host->busy_status && busy_resp &&
1051                     !(status & (MCI_CMDCRCFAIL|MCI_CMDTIMEOUT)) &&
1052                     (readl(base + MMCISTATUS) & host->variant->busy_detect_flag)) {
1053
1054                         /* Clear the busy start IRQ */
1055                         writel(host->variant->busy_detect_mask,
1056                                host->base + MMCICLEAR);
1057
1058                         /* Unmask the busy end IRQ */
1059                         writel(readl(base + MMCIMASK0) |
1060                                host->variant->busy_detect_mask,
1061                                base + MMCIMASK0);
1062                         /*
1063                          * Now cache the last response status code (until
1064                          * the busy bit goes low), and return.
1065                          */
1066                         host->busy_status =
1067                                 status & (MCI_CMDSENT|MCI_CMDRESPEND);
1068                         return;
1069                 }
1070
1071                 /*
1072                  * At this point we are not busy with a command, we have
1073                  * not received a new busy request, clear and mask the busy
1074                  * end IRQ and fall through to process the IRQ.
1075                  */
1076                 if (host->busy_status) {
1077
1078                         writel(host->variant->busy_detect_mask,
1079                                host->base + MMCICLEAR);
1080
1081                         writel(readl(base + MMCIMASK0) &
1082                                ~host->variant->busy_detect_mask,
1083                                base + MMCIMASK0);
1084                         host->busy_status = 0;
1085                 }
1086         }
1087
1088         host->cmd = NULL;
1089
1090         if (status & MCI_CMDTIMEOUT) {
1091                 cmd->error = -ETIMEDOUT;
1092         } else if (status & MCI_CMDCRCFAIL && cmd->flags & MMC_RSP_CRC) {
1093                 cmd->error = -EILSEQ;
1094         } else {
1095                 cmd->resp[0] = readl(base + MMCIRESPONSE0);
1096                 cmd->resp[1] = readl(base + MMCIRESPONSE1);
1097                 cmd->resp[2] = readl(base + MMCIRESPONSE2);
1098                 cmd->resp[3] = readl(base + MMCIRESPONSE3);
1099         }
1100
1101         if ((!sbc && !cmd->data) || cmd->error) {
1102                 if (host->data) {
1103                         /* Terminate the DMA transfer */
1104                         if (dma_inprogress(host)) {
1105                                 mmci_dma_data_error(host);
1106                                 mmci_dma_unmap(host, host->data);
1107                         }
1108                         mmci_stop_data(host);
1109                 }
1110                 mmci_request_end(host, host->mrq);
1111         } else if (sbc) {
1112                 mmci_start_command(host, host->mrq->cmd, 0);
1113         } else if (!(cmd->data->flags & MMC_DATA_READ)) {
1114                 mmci_start_data(host, cmd->data);
1115         }
1116 }
1117
1118 static int mmci_get_rx_fifocnt(struct mmci_host *host, u32 status, int remain)
1119 {
1120         return remain - (readl(host->base + MMCIFIFOCNT) << 2);
1121 }
1122
1123 static int mmci_qcom_get_rx_fifocnt(struct mmci_host *host, u32 status, int r)
1124 {
1125         /*
1126          * on qcom SDCC4 only 8 words are used in each burst so only 8 addresses
1127          * from the fifo range should be used
1128          */
1129         if (status & MCI_RXFIFOHALFFULL)
1130                 return host->variant->fifohalfsize;
1131         else if (status & MCI_RXDATAAVLBL)
1132                 return 4;
1133
1134         return 0;
1135 }
1136
1137 static int mmci_pio_read(struct mmci_host *host, char *buffer, unsigned int remain)
1138 {
1139         void __iomem *base = host->base;
1140         char *ptr = buffer;
1141         u32 status = readl(host->base + MMCISTATUS);
1142         int host_remain = host->size;
1143
1144         do {
1145                 int count = host->get_rx_fifocnt(host, status, host_remain);
1146
1147                 if (count > remain)
1148                         count = remain;
1149
1150                 if (count <= 0)
1151                         break;
1152
1153                 /*
1154                  * SDIO especially may want to send something that is
1155                  * not divisible by 4 (as opposed to card sectors
1156                  * etc). Therefore make sure to always read the last bytes
1157                  * while only doing full 32-bit reads towards the FIFO.
1158                  */
1159                 if (unlikely(count & 0x3)) {
1160                         if (count < 4) {
1161                                 unsigned char buf[4];
1162                                 ioread32_rep(base + MMCIFIFO, buf, 1);
1163                                 memcpy(ptr, buf, count);
1164                         } else {
1165                                 ioread32_rep(base + MMCIFIFO, ptr, count >> 2);
1166                                 count &= ~0x3;
1167                         }
1168                 } else {
1169                         ioread32_rep(base + MMCIFIFO, ptr, count >> 2);
1170                 }
1171
1172                 ptr += count;
1173                 remain -= count;
1174                 host_remain -= count;
1175
1176                 if (remain == 0)
1177                         break;
1178
1179                 status = readl(base + MMCISTATUS);
1180         } while (status & MCI_RXDATAAVLBL);
1181
1182         return ptr - buffer;
1183 }
1184
1185 static int mmci_pio_write(struct mmci_host *host, char *buffer, unsigned int remain, u32 status)
1186 {
1187         struct variant_data *variant = host->variant;
1188         void __iomem *base = host->base;
1189         char *ptr = buffer;
1190
1191         do {
1192                 unsigned int count, maxcnt;
1193
1194                 maxcnt = status & MCI_TXFIFOEMPTY ?
1195                          variant->fifosize : variant->fifohalfsize;
1196                 count = min(remain, maxcnt);
1197
1198                 /*
1199                  * SDIO especially may want to send something that is
1200                  * not divisible by 4 (as opposed to card sectors
1201                  * etc), and the FIFO only accept full 32-bit writes.
1202                  * So compensate by adding +3 on the count, a single
1203                  * byte become a 32bit write, 7 bytes will be two
1204                  * 32bit writes etc.
1205                  */
1206                 iowrite32_rep(base + MMCIFIFO, ptr, (count + 3) >> 2);
1207
1208                 ptr += count;
1209                 remain -= count;
1210
1211                 if (remain == 0)
1212                         break;
1213
1214                 status = readl(base + MMCISTATUS);
1215         } while (status & MCI_TXFIFOHALFEMPTY);
1216
1217         return ptr - buffer;
1218 }
1219
1220 /*
1221  * PIO data transfer IRQ handler.
1222  */
1223 static irqreturn_t mmci_pio_irq(int irq, void *dev_id)
1224 {
1225         struct mmci_host *host = dev_id;
1226         struct sg_mapping_iter *sg_miter = &host->sg_miter;
1227         struct variant_data *variant = host->variant;
1228         void __iomem *base = host->base;
1229         unsigned long flags;
1230         u32 status;
1231
1232         status = readl(base + MMCISTATUS);
1233
1234         dev_dbg(mmc_dev(host->mmc), "irq1 (pio) %08x\n", status);
1235
1236         local_irq_save(flags);
1237
1238         do {
1239                 unsigned int remain, len;
1240                 char *buffer;
1241
1242                 /*
1243                  * For write, we only need to test the half-empty flag
1244                  * here - if the FIFO is completely empty, then by
1245                  * definition it is more than half empty.
1246                  *
1247                  * For read, check for data available.
1248                  */
1249                 if (!(status & (MCI_TXFIFOHALFEMPTY|MCI_RXDATAAVLBL)))
1250                         break;
1251
1252                 if (!sg_miter_next(sg_miter))
1253                         break;
1254
1255                 buffer = sg_miter->addr;
1256                 remain = sg_miter->length;
1257
1258                 len = 0;
1259                 if (status & MCI_RXACTIVE)
1260                         len = mmci_pio_read(host, buffer, remain);
1261                 if (status & MCI_TXACTIVE)
1262                         len = mmci_pio_write(host, buffer, remain, status);
1263
1264                 sg_miter->consumed = len;
1265
1266                 host->size -= len;
1267                 remain -= len;
1268
1269                 if (remain)
1270                         break;
1271
1272                 status = readl(base + MMCISTATUS);
1273         } while (1);
1274
1275         sg_miter_stop(sg_miter);
1276
1277         local_irq_restore(flags);
1278
1279         /*
1280          * If we have less than the fifo 'half-full' threshold to transfer,
1281          * trigger a PIO interrupt as soon as any data is available.
1282          */
1283         if (status & MCI_RXACTIVE && host->size < variant->fifohalfsize)
1284                 mmci_set_mask1(host, MCI_RXDATAAVLBLMASK);
1285
1286         /*
1287          * If we run out of data, disable the data IRQs; this
1288          * prevents a race where the FIFO becomes empty before
1289          * the chip itself has disabled the data path, and
1290          * stops us racing with our data end IRQ.
1291          */
1292         if (host->size == 0) {
1293                 mmci_set_mask1(host, 0);
1294                 writel(readl(base + MMCIMASK0) | MCI_DATAENDMASK, base + MMCIMASK0);
1295         }
1296
1297         return IRQ_HANDLED;
1298 }
1299
1300 /*
1301  * Handle completion of command and data transfers.
1302  */
1303 static irqreturn_t mmci_irq(int irq, void *dev_id)
1304 {
1305         struct mmci_host *host = dev_id;
1306         u32 status;
1307         int ret = 0;
1308
1309         spin_lock(&host->lock);
1310
1311         do {
1312                 status = readl(host->base + MMCISTATUS);
1313
1314                 if (host->singleirq) {
1315                         if (status & host->mask1_reg)
1316                                 mmci_pio_irq(irq, dev_id);
1317
1318                         status &= ~MCI_IRQ1MASK;
1319                 }
1320
1321                 /*
1322                  * We intentionally clear the MCI_ST_CARDBUSY IRQ (if it's
1323                  * enabled) in mmci_cmd_irq() function where ST Micro busy
1324                  * detection variant is handled. Considering the HW seems to be
1325                  * triggering the IRQ on both edges while monitoring DAT0 for
1326                  * busy completion and that same status bit is used to monitor
1327                  * start and end of busy detection, special care must be taken
1328                  * to make sure that both start and end interrupts are always
1329                  * cleared one after the other.
1330                  */
1331                 status &= readl(host->base + MMCIMASK0);
1332                 if (host->variant->busy_detect)
1333                         writel(status & ~host->variant->busy_detect_mask,
1334                                host->base + MMCICLEAR);
1335                 else
1336                         writel(status, host->base + MMCICLEAR);
1337
1338                 dev_dbg(mmc_dev(host->mmc), "irq0 (data+cmd) %08x\n", status);
1339
1340                 if (host->variant->reversed_irq_handling) {
1341                         mmci_data_irq(host, host->data, status);
1342                         mmci_cmd_irq(host, host->cmd, status);
1343                 } else {
1344                         mmci_cmd_irq(host, host->cmd, status);
1345                         mmci_data_irq(host, host->data, status);
1346                 }
1347
1348                 /*
1349                  * Don't poll for busy completion in irq context.
1350                  */
1351                 if (host->variant->busy_detect && host->busy_status)
1352                         status &= ~host->variant->busy_detect_flag;
1353
1354                 ret = 1;
1355         } while (status);
1356
1357         spin_unlock(&host->lock);
1358
1359         return IRQ_RETVAL(ret);
1360 }
1361
1362 static void mmci_request(struct mmc_host *mmc, struct mmc_request *mrq)
1363 {
1364         struct mmci_host *host = mmc_priv(mmc);
1365         unsigned long flags;
1366
1367         WARN_ON(host->mrq != NULL);
1368
1369         mrq->cmd->error = mmci_validate_data(host, mrq->data);
1370         if (mrq->cmd->error) {
1371                 mmc_request_done(mmc, mrq);
1372                 return;
1373         }
1374
1375         spin_lock_irqsave(&host->lock, flags);
1376
1377         host->mrq = mrq;
1378
1379         if (mrq->data)
1380                 mmci_get_next_data(host, mrq->data);
1381
1382         if (mrq->data && mrq->data->flags & MMC_DATA_READ)
1383                 mmci_start_data(host, mrq->data);
1384
1385         if (mrq->sbc)
1386                 mmci_start_command(host, mrq->sbc, 0);
1387         else
1388                 mmci_start_command(host, mrq->cmd, 0);
1389
1390         spin_unlock_irqrestore(&host->lock, flags);
1391 }
1392
1393 static void mmci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
1394 {
1395         struct mmci_host *host = mmc_priv(mmc);
1396         struct variant_data *variant = host->variant;
1397         u32 pwr = 0;
1398         unsigned long flags;
1399         int ret;
1400
1401         if (host->plat->ios_handler &&
1402                 host->plat->ios_handler(mmc_dev(mmc), ios))
1403                         dev_err(mmc_dev(mmc), "platform ios_handler failed\n");
1404
1405         switch (ios->power_mode) {
1406         case MMC_POWER_OFF:
1407                 if (!IS_ERR(mmc->supply.vmmc))
1408                         mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, 0);
1409
1410                 if (!IS_ERR(mmc->supply.vqmmc) && host->vqmmc_enabled) {
1411                         regulator_disable(mmc->supply.vqmmc);
1412                         host->vqmmc_enabled = false;
1413                 }
1414
1415                 break;
1416         case MMC_POWER_UP:
1417                 if (!IS_ERR(mmc->supply.vmmc))
1418                         mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, ios->vdd);
1419
1420                 /*
1421                  * The ST Micro variant doesn't have the PL180s MCI_PWR_UP
1422                  * and instead uses MCI_PWR_ON so apply whatever value is
1423                  * configured in the variant data.
1424                  */
1425                 pwr |= variant->pwrreg_powerup;
1426
1427                 break;
1428         case MMC_POWER_ON:
1429                 if (!IS_ERR(mmc->supply.vqmmc) && !host->vqmmc_enabled) {
1430                         ret = regulator_enable(mmc->supply.vqmmc);
1431                         if (ret < 0)
1432                                 dev_err(mmc_dev(mmc),
1433                                         "failed to enable vqmmc regulator\n");
1434                         else
1435                                 host->vqmmc_enabled = true;
1436                 }
1437
1438                 pwr |= MCI_PWR_ON;
1439                 break;
1440         }
1441
1442         if (variant->signal_direction && ios->power_mode != MMC_POWER_OFF) {
1443                 /*
1444                  * The ST Micro variant has some additional bits
1445                  * indicating signal direction for the signals in
1446                  * the SD/MMC bus and feedback-clock usage.
1447                  */
1448                 pwr |= host->pwr_reg_add;
1449
1450                 if (ios->bus_width == MMC_BUS_WIDTH_4)
1451                         pwr &= ~MCI_ST_DATA74DIREN;
1452                 else if (ios->bus_width == MMC_BUS_WIDTH_1)
1453                         pwr &= (~MCI_ST_DATA74DIREN &
1454                                 ~MCI_ST_DATA31DIREN &
1455                                 ~MCI_ST_DATA2DIREN);
1456         }
1457
1458         if (ios->bus_mode == MMC_BUSMODE_OPENDRAIN) {
1459                 if (host->hw_designer != AMBA_VENDOR_ST)
1460                         pwr |= MCI_ROD;
1461                 else {
1462                         /*
1463                          * The ST Micro variant use the ROD bit for something
1464                          * else and only has OD (Open Drain).
1465                          */
1466                         pwr |= MCI_OD;
1467                 }
1468         }
1469
1470         /*
1471          * If clock = 0 and the variant requires the MMCIPOWER to be used for
1472          * gating the clock, the MCI_PWR_ON bit is cleared.
1473          */
1474         if (!ios->clock && variant->pwrreg_clkgate)
1475                 pwr &= ~MCI_PWR_ON;
1476
1477         if (host->variant->explicit_mclk_control &&
1478             ios->clock != host->clock_cache) {
1479                 ret = clk_set_rate(host->clk, ios->clock);
1480                 if (ret < 0)
1481                         dev_err(mmc_dev(host->mmc),
1482                                 "Error setting clock rate (%d)\n", ret);
1483                 else
1484                         host->mclk = clk_get_rate(host->clk);
1485         }
1486         host->clock_cache = ios->clock;
1487
1488         spin_lock_irqsave(&host->lock, flags);
1489
1490         mmci_set_clkreg(host, ios->clock);
1491         mmci_write_pwrreg(host, pwr);
1492         mmci_reg_delay(host);
1493
1494         spin_unlock_irqrestore(&host->lock, flags);
1495 }
1496
1497 static int mmci_get_cd(struct mmc_host *mmc)
1498 {
1499         struct mmci_host *host = mmc_priv(mmc);
1500         struct mmci_platform_data *plat = host->plat;
1501         unsigned int status = mmc_gpio_get_cd(mmc);
1502
1503         if (status == -ENOSYS) {
1504                 if (!plat->status)
1505                         return 1; /* Assume always present */
1506
1507                 status = plat->status(mmc_dev(host->mmc));
1508         }
1509         return status;
1510 }
1511
1512 static int mmci_sig_volt_switch(struct mmc_host *mmc, struct mmc_ios *ios)
1513 {
1514         int ret = 0;
1515
1516         if (!IS_ERR(mmc->supply.vqmmc)) {
1517
1518                 switch (ios->signal_voltage) {
1519                 case MMC_SIGNAL_VOLTAGE_330:
1520                         ret = regulator_set_voltage(mmc->supply.vqmmc,
1521                                                 2700000, 3600000);
1522                         break;
1523                 case MMC_SIGNAL_VOLTAGE_180:
1524                         ret = regulator_set_voltage(mmc->supply.vqmmc,
1525                                                 1700000, 1950000);
1526                         break;
1527                 case MMC_SIGNAL_VOLTAGE_120:
1528                         ret = regulator_set_voltage(mmc->supply.vqmmc,
1529                                                 1100000, 1300000);
1530                         break;
1531                 }
1532
1533                 if (ret)
1534                         dev_warn(mmc_dev(mmc), "Voltage switch failed\n");
1535         }
1536
1537         return ret;
1538 }
1539
1540 static struct mmc_host_ops mmci_ops = {
1541         .request        = mmci_request,
1542         .pre_req        = mmci_pre_request,
1543         .post_req       = mmci_post_request,
1544         .set_ios        = mmci_set_ios,
1545         .get_ro         = mmc_gpio_get_ro,
1546         .get_cd         = mmci_get_cd,
1547         .start_signal_voltage_switch = mmci_sig_volt_switch,
1548 };
1549
1550 static int mmci_of_parse(struct device_node *np, struct mmc_host *mmc)
1551 {
1552         struct mmci_host *host = mmc_priv(mmc);
1553         int ret = mmc_of_parse(mmc);
1554
1555         if (ret)
1556                 return ret;
1557
1558         if (of_get_property(np, "st,sig-dir-dat0", NULL))
1559                 host->pwr_reg_add |= MCI_ST_DATA0DIREN;
1560         if (of_get_property(np, "st,sig-dir-dat2", NULL))
1561                 host->pwr_reg_add |= MCI_ST_DATA2DIREN;
1562         if (of_get_property(np, "st,sig-dir-dat31", NULL))
1563                 host->pwr_reg_add |= MCI_ST_DATA31DIREN;
1564         if (of_get_property(np, "st,sig-dir-dat74", NULL))
1565                 host->pwr_reg_add |= MCI_ST_DATA74DIREN;
1566         if (of_get_property(np, "st,sig-dir-cmd", NULL))
1567                 host->pwr_reg_add |= MCI_ST_CMDDIREN;
1568         if (of_get_property(np, "st,sig-pin-fbclk", NULL))
1569                 host->pwr_reg_add |= MCI_ST_FBCLKEN;
1570
1571         if (of_get_property(np, "mmc-cap-mmc-highspeed", NULL))
1572                 mmc->caps |= MMC_CAP_MMC_HIGHSPEED;
1573         if (of_get_property(np, "mmc-cap-sd-highspeed", NULL))
1574                 mmc->caps |= MMC_CAP_SD_HIGHSPEED;
1575
1576         return 0;
1577 }
1578
1579 static int mmci_probe(struct amba_device *dev,
1580         const struct amba_id *id)
1581 {
1582         struct mmci_platform_data *plat = dev->dev.platform_data;
1583         struct device_node *np = dev->dev.of_node;
1584         struct variant_data *variant = id->data;
1585         struct mmci_host *host;
1586         struct mmc_host *mmc;
1587         int ret;
1588
1589         /* Must have platform data or Device Tree. */
1590         if (!plat && !np) {
1591                 dev_err(&dev->dev, "No plat data or DT found\n");
1592                 return -EINVAL;
1593         }
1594
1595         if (!plat) {
1596                 plat = devm_kzalloc(&dev->dev, sizeof(*plat), GFP_KERNEL);
1597                 if (!plat)
1598                         return -ENOMEM;
1599         }
1600
1601         mmc = mmc_alloc_host(sizeof(struct mmci_host), &dev->dev);
1602         if (!mmc)
1603                 return -ENOMEM;
1604
1605         ret = mmci_of_parse(np, mmc);
1606         if (ret)
1607                 goto host_free;
1608
1609         host = mmc_priv(mmc);
1610         host->mmc = mmc;
1611
1612         host->hw_designer = amba_manf(dev);
1613         host->hw_revision = amba_rev(dev);
1614         dev_dbg(mmc_dev(mmc), "designer ID = 0x%02x\n", host->hw_designer);
1615         dev_dbg(mmc_dev(mmc), "revision = 0x%01x\n", host->hw_revision);
1616
1617         host->clk = devm_clk_get(&dev->dev, NULL);
1618         if (IS_ERR(host->clk)) {
1619                 ret = PTR_ERR(host->clk);
1620                 goto host_free;
1621         }
1622
1623         ret = clk_prepare_enable(host->clk);
1624         if (ret)
1625                 goto host_free;
1626
1627         if (variant->qcom_fifo)
1628                 host->get_rx_fifocnt = mmci_qcom_get_rx_fifocnt;
1629         else
1630                 host->get_rx_fifocnt = mmci_get_rx_fifocnt;
1631
1632         host->plat = plat;
1633         host->variant = variant;
1634         host->mclk = clk_get_rate(host->clk);
1635         /*
1636          * According to the spec, mclk is max 100 MHz,
1637          * so we try to adjust the clock down to this,
1638          * (if possible).
1639          */
1640         if (host->mclk > variant->f_max) {
1641                 ret = clk_set_rate(host->clk, variant->f_max);
1642                 if (ret < 0)
1643                         goto clk_disable;
1644                 host->mclk = clk_get_rate(host->clk);
1645                 dev_dbg(mmc_dev(mmc), "eventual mclk rate: %u Hz\n",
1646                         host->mclk);
1647         }
1648
1649         host->phybase = dev->res.start;
1650         host->base = devm_ioremap_resource(&dev->dev, &dev->res);
1651         if (IS_ERR(host->base)) {
1652                 ret = PTR_ERR(host->base);
1653                 goto clk_disable;
1654         }
1655
1656         /*
1657          * The ARM and ST versions of the block have slightly different
1658          * clock divider equations which means that the minimum divider
1659          * differs too.
1660          * on Qualcomm like controllers get the nearest minimum clock to 100Khz
1661          */
1662         if (variant->st_clkdiv)
1663                 mmc->f_min = DIV_ROUND_UP(host->mclk, 257);
1664         else if (variant->explicit_mclk_control)
1665                 mmc->f_min = clk_round_rate(host->clk, 100000);
1666         else
1667                 mmc->f_min = DIV_ROUND_UP(host->mclk, 512);
1668         /*
1669          * If no maximum operating frequency is supplied, fall back to use
1670          * the module parameter, which has a (low) default value in case it
1671          * is not specified. Either value must not exceed the clock rate into
1672          * the block, of course.
1673          */
1674         if (mmc->f_max)
1675                 mmc->f_max = variant->explicit_mclk_control ?
1676                                 min(variant->f_max, mmc->f_max) :
1677                                 min(host->mclk, mmc->f_max);
1678         else
1679                 mmc->f_max = variant->explicit_mclk_control ?
1680                                 fmax : min(host->mclk, fmax);
1681
1682
1683         dev_dbg(mmc_dev(mmc), "clocking block at %u Hz\n", mmc->f_max);
1684
1685         /* Get regulators and the supported OCR mask */
1686         ret = mmc_regulator_get_supply(mmc);
1687         if (ret)
1688                 goto clk_disable;
1689
1690         if (!mmc->ocr_avail)
1691                 mmc->ocr_avail = plat->ocr_mask;
1692         else if (plat->ocr_mask)
1693                 dev_warn(mmc_dev(mmc), "Platform OCR mask is ignored\n");
1694
1695         /* DT takes precedence over platform data. */
1696         if (!np) {
1697                 if (!plat->cd_invert)
1698                         mmc->caps2 |= MMC_CAP2_CD_ACTIVE_HIGH;
1699                 mmc->caps2 |= MMC_CAP2_RO_ACTIVE_HIGH;
1700         }
1701
1702         /* We support these capabilities. */
1703         mmc->caps |= MMC_CAP_CMD23;
1704
1705         /*
1706          * Enable busy detection.
1707          */
1708         if (variant->busy_detect) {
1709                 mmci_ops.card_busy = mmci_card_busy;
1710                 /*
1711                  * Not all variants have a flag to enable busy detection
1712                  * in the DPSM, but if they do, set it here.
1713                  */
1714                 if (variant->busy_dpsm_flag)
1715                         mmci_write_datactrlreg(host,
1716                                                host->variant->busy_dpsm_flag);
1717                 mmc->caps |= MMC_CAP_WAIT_WHILE_BUSY;
1718                 mmc->max_busy_timeout = 0;
1719         }
1720
1721         mmc->ops = &mmci_ops;
1722
1723         /* We support these PM capabilities. */
1724         mmc->pm_caps |= MMC_PM_KEEP_POWER;
1725
1726         /*
1727          * We can do SGIO
1728          */
1729         mmc->max_segs = NR_SG;
1730
1731         /*
1732          * Since only a certain number of bits are valid in the data length
1733          * register, we must ensure that we don't exceed 2^num-1 bytes in a
1734          * single request.
1735          */
1736         mmc->max_req_size = (1 << variant->datalength_bits) - 1;
1737
1738         /*
1739          * Set the maximum segment size.  Since we aren't doing DMA
1740          * (yet) we are only limited by the data length register.
1741          */
1742         mmc->max_seg_size = mmc->max_req_size;
1743
1744         /*
1745          * Block size can be up to 2048 bytes, but must be a power of two.
1746          */
1747         mmc->max_blk_size = 1 << 11;
1748
1749         /*
1750          * Limit the number of blocks transferred so that we don't overflow
1751          * the maximum request size.
1752          */
1753         mmc->max_blk_count = mmc->max_req_size >> 11;
1754
1755         spin_lock_init(&host->lock);
1756
1757         writel(0, host->base + MMCIMASK0);
1758
1759         if (variant->mmcimask1)
1760                 writel(0, host->base + MMCIMASK1);
1761
1762         writel(0xfff, host->base + MMCICLEAR);
1763
1764         /*
1765          * If:
1766          * - not using DT but using a descriptor table, or
1767          * - using a table of descriptors ALONGSIDE DT, or
1768          * look up these descriptors named "cd" and "wp" right here, fail
1769          * silently of these do not exist and proceed to try platform data
1770          */
1771         if (!np) {
1772                 ret = mmc_gpiod_request_cd(mmc, "cd", 0, false, 0, NULL);
1773                 if (ret < 0) {
1774                         if (ret == -EPROBE_DEFER)
1775                                 goto clk_disable;
1776                         else if (gpio_is_valid(plat->gpio_cd)) {
1777                                 ret = mmc_gpio_request_cd(mmc, plat->gpio_cd, 0);
1778                                 if (ret)
1779                                         goto clk_disable;
1780                         }
1781                 }
1782
1783                 ret = mmc_gpiod_request_ro(mmc, "wp", 0, false, 0, NULL);
1784                 if (ret < 0) {
1785                         if (ret == -EPROBE_DEFER)
1786                                 goto clk_disable;
1787                         else if (gpio_is_valid(plat->gpio_wp)) {
1788                                 ret = mmc_gpio_request_ro(mmc, plat->gpio_wp);
1789                                 if (ret)
1790                                         goto clk_disable;
1791                         }
1792                 }
1793         }
1794
1795         ret = devm_request_irq(&dev->dev, dev->irq[0], mmci_irq, IRQF_SHARED,
1796                         DRIVER_NAME " (cmd)", host);
1797         if (ret)
1798                 goto clk_disable;
1799
1800         if (!dev->irq[1])
1801                 host->singleirq = true;
1802         else {
1803                 ret = devm_request_irq(&dev->dev, dev->irq[1], mmci_pio_irq,
1804                                 IRQF_SHARED, DRIVER_NAME " (pio)", host);
1805                 if (ret)
1806                         goto clk_disable;
1807         }
1808
1809         writel(MCI_IRQENABLE, host->base + MMCIMASK0);
1810
1811         amba_set_drvdata(dev, mmc);
1812
1813         dev_info(&dev->dev, "%s: PL%03x manf %x rev%u at 0x%08llx irq %d,%d (pio)\n",
1814                  mmc_hostname(mmc), amba_part(dev), amba_manf(dev),
1815                  amba_rev(dev), (unsigned long long)dev->res.start,
1816                  dev->irq[0], dev->irq[1]);
1817
1818         mmci_dma_setup(host);
1819
1820         pm_runtime_set_autosuspend_delay(&dev->dev, 50);
1821         pm_runtime_use_autosuspend(&dev->dev);
1822
1823         mmc_add_host(mmc);
1824
1825         pm_runtime_put(&dev->dev);
1826         return 0;
1827
1828  clk_disable:
1829         clk_disable_unprepare(host->clk);
1830  host_free:
1831         mmc_free_host(mmc);
1832         return ret;
1833 }
1834
1835 static int mmci_remove(struct amba_device *dev)
1836 {
1837         struct mmc_host *mmc = amba_get_drvdata(dev);
1838
1839         if (mmc) {
1840                 struct mmci_host *host = mmc_priv(mmc);
1841                 struct variant_data *variant = host->variant;
1842
1843                 /*
1844                  * Undo pm_runtime_put() in probe.  We use the _sync
1845                  * version here so that we can access the primecell.
1846                  */
1847                 pm_runtime_get_sync(&dev->dev);
1848
1849                 mmc_remove_host(mmc);
1850
1851                 writel(0, host->base + MMCIMASK0);
1852
1853                 if (variant->mmcimask1)
1854                         writel(0, host->base + MMCIMASK1);
1855
1856                 writel(0, host->base + MMCICOMMAND);
1857                 writel(0, host->base + MMCIDATACTRL);
1858
1859                 mmci_dma_release(host);
1860                 clk_disable_unprepare(host->clk);
1861                 mmc_free_host(mmc);
1862         }
1863
1864         return 0;
1865 }
1866
1867 #ifdef CONFIG_PM
1868 static void mmci_save(struct mmci_host *host)
1869 {
1870         unsigned long flags;
1871
1872         spin_lock_irqsave(&host->lock, flags);
1873
1874         writel(0, host->base + MMCIMASK0);
1875         if (host->variant->pwrreg_nopower) {
1876                 writel(0, host->base + MMCIDATACTRL);
1877                 writel(0, host->base + MMCIPOWER);
1878                 writel(0, host->base + MMCICLOCK);
1879         }
1880         mmci_reg_delay(host);
1881
1882         spin_unlock_irqrestore(&host->lock, flags);
1883 }
1884
1885 static void mmci_restore(struct mmci_host *host)
1886 {
1887         unsigned long flags;
1888
1889         spin_lock_irqsave(&host->lock, flags);
1890
1891         if (host->variant->pwrreg_nopower) {
1892                 writel(host->clk_reg, host->base + MMCICLOCK);
1893                 writel(host->datactrl_reg, host->base + MMCIDATACTRL);
1894                 writel(host->pwr_reg, host->base + MMCIPOWER);
1895         }
1896         writel(MCI_IRQENABLE, host->base + MMCIMASK0);
1897         mmci_reg_delay(host);
1898
1899         spin_unlock_irqrestore(&host->lock, flags);
1900 }
1901
1902 static int mmci_runtime_suspend(struct device *dev)
1903 {
1904         struct amba_device *adev = to_amba_device(dev);
1905         struct mmc_host *mmc = amba_get_drvdata(adev);
1906
1907         if (mmc) {
1908                 struct mmci_host *host = mmc_priv(mmc);
1909                 pinctrl_pm_select_sleep_state(dev);
1910                 mmci_save(host);
1911                 clk_disable_unprepare(host->clk);
1912         }
1913
1914         return 0;
1915 }
1916
1917 static int mmci_runtime_resume(struct device *dev)
1918 {
1919         struct amba_device *adev = to_amba_device(dev);
1920         struct mmc_host *mmc = amba_get_drvdata(adev);
1921
1922         if (mmc) {
1923                 struct mmci_host *host = mmc_priv(mmc);
1924                 clk_prepare_enable(host->clk);
1925                 mmci_restore(host);
1926                 pinctrl_pm_select_default_state(dev);
1927         }
1928
1929         return 0;
1930 }
1931 #endif
1932
1933 static const struct dev_pm_ops mmci_dev_pm_ops = {
1934         SET_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend,
1935                                 pm_runtime_force_resume)
1936         SET_RUNTIME_PM_OPS(mmci_runtime_suspend, mmci_runtime_resume, NULL)
1937 };
1938
1939 static const struct amba_id mmci_ids[] = {
1940         {
1941                 .id     = 0x00041180,
1942                 .mask   = 0xff0fffff,
1943                 .data   = &variant_arm,
1944         },
1945         {
1946                 .id     = 0x01041180,
1947                 .mask   = 0xff0fffff,
1948                 .data   = &variant_arm_extended_fifo,
1949         },
1950         {
1951                 .id     = 0x02041180,
1952                 .mask   = 0xff0fffff,
1953                 .data   = &variant_arm_extended_fifo_hwfc,
1954         },
1955         {
1956                 .id     = 0x00041181,
1957                 .mask   = 0x000fffff,
1958                 .data   = &variant_arm,
1959         },
1960         /* ST Micro variants */
1961         {
1962                 .id     = 0x00180180,
1963                 .mask   = 0x00ffffff,
1964                 .data   = &variant_u300,
1965         },
1966         {
1967                 .id     = 0x10180180,
1968                 .mask   = 0xf0ffffff,
1969                 .data   = &variant_nomadik,
1970         },
1971         {
1972                 .id     = 0x00280180,
1973                 .mask   = 0x00ffffff,
1974                 .data   = &variant_nomadik,
1975         },
1976         {
1977                 .id     = 0x00480180,
1978                 .mask   = 0xf0ffffff,
1979                 .data   = &variant_ux500,
1980         },
1981         {
1982                 .id     = 0x10480180,
1983                 .mask   = 0xf0ffffff,
1984                 .data   = &variant_ux500v2,
1985         },
1986         /* Qualcomm variants */
1987         {
1988                 .id     = 0x00051180,
1989                 .mask   = 0x000fffff,
1990                 .data   = &variant_qcom,
1991         },
1992         { 0, 0 },
1993 };
1994
1995 MODULE_DEVICE_TABLE(amba, mmci_ids);
1996
1997 static struct amba_driver mmci_driver = {
1998         .drv            = {
1999                 .name   = DRIVER_NAME,
2000                 .pm     = &mmci_dev_pm_ops,
2001         },
2002         .probe          = mmci_probe,
2003         .remove         = mmci_remove,
2004         .id_table       = mmci_ids,
2005 };
2006
2007 module_amba_driver(mmci_driver);
2008
2009 module_param(fmax, uint, 0444);
2010
2011 MODULE_DESCRIPTION("ARM PrimeCell PL180/181 Multimedia Card Interface driver");
2012 MODULE_LICENSE("GPL");