Mention branches and keyring.
[releases.git] / core / sd.c
1 /*
2  *  linux/drivers/mmc/core/sd.c
3  *
4  *  Copyright (C) 2003-2004 Russell King, All Rights Reserved.
5  *  SD support Copyright (C) 2004 Ian Molton, All Rights Reserved.
6  *  Copyright (C) 2005-2007 Pierre Ossman, All Rights Reserved.
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License version 2 as
10  * published by the Free Software Foundation.
11  */
12
13 #include <linux/err.h>
14 #include <linux/sizes.h>
15 #include <linux/slab.h>
16 #include <linux/stat.h>
17 #include <linux/pm_runtime.h>
18
19 #include <linux/mmc/host.h>
20 #include <linux/mmc/card.h>
21 #include <linux/mmc/mmc.h>
22 #include <linux/mmc/sd.h>
23
24 #include "core.h"
25 #include "card.h"
26 #include "host.h"
27 #include "bus.h"
28 #include "mmc_ops.h"
29 #include "sd.h"
30 #include "sd_ops.h"
31
32 static const unsigned int tran_exp[] = {
33         10000,          100000,         1000000,        10000000,
34         0,              0,              0,              0
35 };
36
37 static const unsigned char tran_mant[] = {
38         0,      10,     12,     13,     15,     20,     25,     30,
39         35,     40,     45,     50,     55,     60,     70,     80,
40 };
41
42 static const unsigned int taac_exp[] = {
43         1,      10,     100,    1000,   10000,  100000, 1000000, 10000000,
44 };
45
46 static const unsigned int taac_mant[] = {
47         0,      10,     12,     13,     15,     20,     25,     30,
48         35,     40,     45,     50,     55,     60,     70,     80,
49 };
50
51 static const unsigned int sd_au_size[] = {
52         0,              SZ_16K / 512,           SZ_32K / 512,   SZ_64K / 512,
53         SZ_128K / 512,  SZ_256K / 512,          SZ_512K / 512,  SZ_1M / 512,
54         SZ_2M / 512,    SZ_4M / 512,            SZ_8M / 512,    (SZ_8M + SZ_4M) / 512,
55         SZ_16M / 512,   (SZ_16M + SZ_8M) / 512, SZ_32M / 512,   SZ_64M / 512,
56 };
57
58 #define UNSTUFF_BITS(resp,start,size)                                   \
59         ({                                                              \
60                 const int __size = size;                                \
61                 const u32 __mask = (__size < 32 ? 1 << __size : 0) - 1; \
62                 const int __off = 3 - ((start) / 32);                   \
63                 const int __shft = (start) & 31;                        \
64                 u32 __res;                                              \
65                                                                         \
66                 __res = resp[__off] >> __shft;                          \
67                 if (__size + __shft > 32)                               \
68                         __res |= resp[__off-1] << ((32 - __shft) % 32); \
69                 __res & __mask;                                         \
70         })
71
72 /*
73  * Given the decoded CSD structure, decode the raw CID to our CID structure.
74  */
75 void mmc_decode_cid(struct mmc_card *card)
76 {
77         u32 *resp = card->raw_cid;
78
79         /*
80          * SD doesn't currently have a version field so we will
81          * have to assume we can parse this.
82          */
83         card->cid.manfid                = UNSTUFF_BITS(resp, 120, 8);
84         card->cid.oemid                 = UNSTUFF_BITS(resp, 104, 16);
85         card->cid.prod_name[0]          = UNSTUFF_BITS(resp, 96, 8);
86         card->cid.prod_name[1]          = UNSTUFF_BITS(resp, 88, 8);
87         card->cid.prod_name[2]          = UNSTUFF_BITS(resp, 80, 8);
88         card->cid.prod_name[3]          = UNSTUFF_BITS(resp, 72, 8);
89         card->cid.prod_name[4]          = UNSTUFF_BITS(resp, 64, 8);
90         card->cid.hwrev                 = UNSTUFF_BITS(resp, 60, 4);
91         card->cid.fwrev                 = UNSTUFF_BITS(resp, 56, 4);
92         card->cid.serial                = UNSTUFF_BITS(resp, 24, 32);
93         card->cid.year                  = UNSTUFF_BITS(resp, 12, 8);
94         card->cid.month                 = UNSTUFF_BITS(resp, 8, 4);
95
96         card->cid.year += 2000; /* SD cards year offset */
97 }
98
99 /*
100  * Given a 128-bit response, decode to our card CSD structure.
101  */
102 static int mmc_decode_csd(struct mmc_card *card)
103 {
104         struct mmc_csd *csd = &card->csd;
105         unsigned int e, m, csd_struct;
106         u32 *resp = card->raw_csd;
107
108         csd_struct = UNSTUFF_BITS(resp, 126, 2);
109
110         switch (csd_struct) {
111         case 0:
112                 m = UNSTUFF_BITS(resp, 115, 4);
113                 e = UNSTUFF_BITS(resp, 112, 3);
114                 csd->taac_ns     = (taac_exp[e] * taac_mant[m] + 9) / 10;
115                 csd->taac_clks   = UNSTUFF_BITS(resp, 104, 8) * 100;
116
117                 m = UNSTUFF_BITS(resp, 99, 4);
118                 e = UNSTUFF_BITS(resp, 96, 3);
119                 csd->max_dtr      = tran_exp[e] * tran_mant[m];
120                 csd->cmdclass     = UNSTUFF_BITS(resp, 84, 12);
121
122                 e = UNSTUFF_BITS(resp, 47, 3);
123                 m = UNSTUFF_BITS(resp, 62, 12);
124                 csd->capacity     = (1 + m) << (e + 2);
125
126                 csd->read_blkbits = UNSTUFF_BITS(resp, 80, 4);
127                 csd->read_partial = UNSTUFF_BITS(resp, 79, 1);
128                 csd->write_misalign = UNSTUFF_BITS(resp, 78, 1);
129                 csd->read_misalign = UNSTUFF_BITS(resp, 77, 1);
130                 csd->dsr_imp = UNSTUFF_BITS(resp, 76, 1);
131                 csd->r2w_factor = UNSTUFF_BITS(resp, 26, 3);
132                 csd->write_blkbits = UNSTUFF_BITS(resp, 22, 4);
133                 csd->write_partial = UNSTUFF_BITS(resp, 21, 1);
134
135                 if (UNSTUFF_BITS(resp, 46, 1)) {
136                         csd->erase_size = 1;
137                 } else if (csd->write_blkbits >= 9) {
138                         csd->erase_size = UNSTUFF_BITS(resp, 39, 7) + 1;
139                         csd->erase_size <<= csd->write_blkbits - 9;
140                 }
141
142                 if (UNSTUFF_BITS(resp, 13, 1))
143                         mmc_card_set_readonly(card);
144                 break;
145         case 1:
146                 /*
147                  * This is a block-addressed SDHC or SDXC card. Most
148                  * interesting fields are unused and have fixed
149                  * values. To avoid getting tripped by buggy cards,
150                  * we assume those fixed values ourselves.
151                  */
152                 mmc_card_set_blockaddr(card);
153
154                 csd->taac_ns     = 0; /* Unused */
155                 csd->taac_clks   = 0; /* Unused */
156
157                 m = UNSTUFF_BITS(resp, 99, 4);
158                 e = UNSTUFF_BITS(resp, 96, 3);
159                 csd->max_dtr      = tran_exp[e] * tran_mant[m];
160                 csd->cmdclass     = UNSTUFF_BITS(resp, 84, 12);
161                 csd->c_size       = UNSTUFF_BITS(resp, 48, 22);
162
163                 /* SDXC cards have a minimum C_SIZE of 0x00FFFF */
164                 if (csd->c_size >= 0xFFFF)
165                         mmc_card_set_ext_capacity(card);
166
167                 m = UNSTUFF_BITS(resp, 48, 22);
168                 csd->capacity     = (1 + m) << 10;
169
170                 csd->read_blkbits = 9;
171                 csd->read_partial = 0;
172                 csd->write_misalign = 0;
173                 csd->read_misalign = 0;
174                 csd->r2w_factor = 4; /* Unused */
175                 csd->write_blkbits = 9;
176                 csd->write_partial = 0;
177                 csd->erase_size = 1;
178
179                 if (UNSTUFF_BITS(resp, 13, 1))
180                         mmc_card_set_readonly(card);
181                 break;
182         default:
183                 pr_err("%s: unrecognised CSD structure version %d\n",
184                         mmc_hostname(card->host), csd_struct);
185                 return -EINVAL;
186         }
187
188         card->erase_size = csd->erase_size;
189
190         return 0;
191 }
192
193 /*
194  * Given a 64-bit response, decode to our card SCR structure.
195  */
196 static int mmc_decode_scr(struct mmc_card *card)
197 {
198         struct sd_scr *scr = &card->scr;
199         unsigned int scr_struct;
200         u32 resp[4];
201
202         resp[3] = card->raw_scr[1];
203         resp[2] = card->raw_scr[0];
204
205         scr_struct = UNSTUFF_BITS(resp, 60, 4);
206         if (scr_struct != 0) {
207                 pr_err("%s: unrecognised SCR structure version %d\n",
208                         mmc_hostname(card->host), scr_struct);
209                 return -EINVAL;
210         }
211
212         scr->sda_vsn = UNSTUFF_BITS(resp, 56, 4);
213         scr->bus_widths = UNSTUFF_BITS(resp, 48, 4);
214         if (scr->sda_vsn == SCR_SPEC_VER_2)
215                 /* Check if Physical Layer Spec v3.0 is supported */
216                 scr->sda_spec3 = UNSTUFF_BITS(resp, 47, 1);
217
218         if (UNSTUFF_BITS(resp, 55, 1))
219                 card->erased_byte = 0xFF;
220         else
221                 card->erased_byte = 0x0;
222
223         if (scr->sda_spec3)
224                 scr->cmds = UNSTUFF_BITS(resp, 32, 2);
225
226         /* SD Spec says: any SD Card shall set at least bits 0 and 2 */
227         if (!(scr->bus_widths & SD_SCR_BUS_WIDTH_1) ||
228             !(scr->bus_widths & SD_SCR_BUS_WIDTH_4)) {
229                 pr_err("%s: invalid bus width\n", mmc_hostname(card->host));
230                 return -EINVAL;
231         }
232
233         return 0;
234 }
235
236 /*
237  * Fetch and process SD Status register.
238  */
239 static int mmc_read_ssr(struct mmc_card *card)
240 {
241         unsigned int au, es, et, eo;
242         __be32 *raw_ssr;
243         int i;
244
245         if (!(card->csd.cmdclass & CCC_APP_SPEC)) {
246                 pr_warn("%s: card lacks mandatory SD Status function\n",
247                         mmc_hostname(card->host));
248                 return 0;
249         }
250
251         raw_ssr = kmalloc(sizeof(card->raw_ssr), GFP_KERNEL);
252         if (!raw_ssr)
253                 return -ENOMEM;
254
255         if (mmc_app_sd_status(card, raw_ssr)) {
256                 pr_warn("%s: problem reading SD Status register\n",
257                         mmc_hostname(card->host));
258                 kfree(raw_ssr);
259                 return 0;
260         }
261
262         for (i = 0; i < 16; i++)
263                 card->raw_ssr[i] = be32_to_cpu(raw_ssr[i]);
264
265         kfree(raw_ssr);
266
267         /*
268          * UNSTUFF_BITS only works with four u32s so we have to offset the
269          * bitfield positions accordingly.
270          */
271         au = UNSTUFF_BITS(card->raw_ssr, 428 - 384, 4);
272         if (au) {
273                 if (au <= 9 || card->scr.sda_spec3) {
274                         card->ssr.au = sd_au_size[au];
275                         es = UNSTUFF_BITS(card->raw_ssr, 408 - 384, 16);
276                         et = UNSTUFF_BITS(card->raw_ssr, 402 - 384, 6);
277                         if (es && et) {
278                                 eo = UNSTUFF_BITS(card->raw_ssr, 400 - 384, 2);
279                                 card->ssr.erase_timeout = (et * 1000) / es;
280                                 card->ssr.erase_offset = eo * 1000;
281                         }
282                 } else {
283                         pr_warn("%s: SD Status: Invalid Allocation Unit size\n",
284                                 mmc_hostname(card->host));
285                 }
286         }
287
288         return 0;
289 }
290
291 /*
292  * Fetches and decodes switch information
293  */
294 static int mmc_read_switch(struct mmc_card *card)
295 {
296         int err;
297         u8 *status;
298
299         if (card->scr.sda_vsn < SCR_SPEC_VER_1)
300                 return 0;
301
302         if (!(card->csd.cmdclass & CCC_SWITCH)) {
303                 pr_warn("%s: card lacks mandatory switch function, performance might suffer\n",
304                         mmc_hostname(card->host));
305                 return 0;
306         }
307
308         status = kmalloc(64, GFP_KERNEL);
309         if (!status)
310                 return -ENOMEM;
311
312         /*
313          * Find out the card's support bits with a mode 0 operation.
314          * The argument does not matter, as the support bits do not
315          * change with the arguments.
316          */
317         err = mmc_sd_switch(card, 0, 0, 0, status);
318         if (err) {
319                 /*
320                  * If the host or the card can't do the switch,
321                  * fail more gracefully.
322                  */
323                 if (err != -EINVAL && err != -ENOSYS && err != -EFAULT)
324                         goto out;
325
326                 pr_warn("%s: problem reading Bus Speed modes\n",
327                         mmc_hostname(card->host));
328                 err = 0;
329
330                 goto out;
331         }
332
333         if (status[13] & SD_MODE_HIGH_SPEED)
334                 card->sw_caps.hs_max_dtr = HIGH_SPEED_MAX_DTR;
335
336         if (card->scr.sda_spec3) {
337                 card->sw_caps.sd3_bus_mode = status[13];
338                 /* Driver Strengths supported by the card */
339                 card->sw_caps.sd3_drv_type = status[9];
340                 card->sw_caps.sd3_curr_limit = status[7] | status[6] << 8;
341         }
342
343 out:
344         kfree(status);
345
346         return err;
347 }
348
349 /*
350  * Test if the card supports high-speed mode and, if so, switch to it.
351  */
352 int mmc_sd_switch_hs(struct mmc_card *card)
353 {
354         int err;
355         u8 *status;
356
357         if (card->scr.sda_vsn < SCR_SPEC_VER_1)
358                 return 0;
359
360         if (!(card->csd.cmdclass & CCC_SWITCH))
361                 return 0;
362
363         if (!(card->host->caps & MMC_CAP_SD_HIGHSPEED))
364                 return 0;
365
366         if (card->sw_caps.hs_max_dtr == 0)
367                 return 0;
368
369         status = kmalloc(64, GFP_KERNEL);
370         if (!status)
371                 return -ENOMEM;
372
373         err = mmc_sd_switch(card, 1, 0, 1, status);
374         if (err)
375                 goto out;
376
377         if ((status[16] & 0xF) != 1) {
378                 pr_warn("%s: Problem switching card into high-speed mode!\n",
379                         mmc_hostname(card->host));
380                 err = 0;
381         } else {
382                 err = 1;
383         }
384
385 out:
386         kfree(status);
387
388         return err;
389 }
390
391 static int sd_select_driver_type(struct mmc_card *card, u8 *status)
392 {
393         int card_drv_type, drive_strength, drv_type;
394         int err;
395
396         card->drive_strength = 0;
397
398         card_drv_type = card->sw_caps.sd3_drv_type | SD_DRIVER_TYPE_B;
399
400         drive_strength = mmc_select_drive_strength(card,
401                                                    card->sw_caps.uhs_max_dtr,
402                                                    card_drv_type, &drv_type);
403
404         if (drive_strength) {
405                 err = mmc_sd_switch(card, 1, 2, drive_strength, status);
406                 if (err)
407                         return err;
408                 if ((status[15] & 0xF) != drive_strength) {
409                         pr_warn("%s: Problem setting drive strength!\n",
410                                 mmc_hostname(card->host));
411                         return 0;
412                 }
413                 card->drive_strength = drive_strength;
414         }
415
416         if (drv_type)
417                 mmc_set_driver_type(card->host, drv_type);
418
419         return 0;
420 }
421
422 static void sd_update_bus_speed_mode(struct mmc_card *card)
423 {
424         /*
425          * If the host doesn't support any of the UHS-I modes, fallback on
426          * default speed.
427          */
428         if (!mmc_host_uhs(card->host)) {
429                 card->sd_bus_speed = 0;
430                 return;
431         }
432
433         if ((card->host->caps & MMC_CAP_UHS_SDR104) &&
434             (card->sw_caps.sd3_bus_mode & SD_MODE_UHS_SDR104)) {
435                         card->sd_bus_speed = UHS_SDR104_BUS_SPEED;
436         } else if ((card->host->caps & MMC_CAP_UHS_DDR50) &&
437                    (card->sw_caps.sd3_bus_mode & SD_MODE_UHS_DDR50)) {
438                         card->sd_bus_speed = UHS_DDR50_BUS_SPEED;
439         } else if ((card->host->caps & (MMC_CAP_UHS_SDR104 |
440                     MMC_CAP_UHS_SDR50)) && (card->sw_caps.sd3_bus_mode &
441                     SD_MODE_UHS_SDR50)) {
442                         card->sd_bus_speed = UHS_SDR50_BUS_SPEED;
443         } else if ((card->host->caps & (MMC_CAP_UHS_SDR104 |
444                     MMC_CAP_UHS_SDR50 | MMC_CAP_UHS_SDR25)) &&
445                    (card->sw_caps.sd3_bus_mode & SD_MODE_UHS_SDR25)) {
446                         card->sd_bus_speed = UHS_SDR25_BUS_SPEED;
447         } else if ((card->host->caps & (MMC_CAP_UHS_SDR104 |
448                     MMC_CAP_UHS_SDR50 | MMC_CAP_UHS_SDR25 |
449                     MMC_CAP_UHS_SDR12)) && (card->sw_caps.sd3_bus_mode &
450                     SD_MODE_UHS_SDR12)) {
451                         card->sd_bus_speed = UHS_SDR12_BUS_SPEED;
452         }
453 }
454
455 static int sd_set_bus_speed_mode(struct mmc_card *card, u8 *status)
456 {
457         int err;
458         unsigned int timing = 0;
459
460         switch (card->sd_bus_speed) {
461         case UHS_SDR104_BUS_SPEED:
462                 timing = MMC_TIMING_UHS_SDR104;
463                 card->sw_caps.uhs_max_dtr = UHS_SDR104_MAX_DTR;
464                 break;
465         case UHS_DDR50_BUS_SPEED:
466                 timing = MMC_TIMING_UHS_DDR50;
467                 card->sw_caps.uhs_max_dtr = UHS_DDR50_MAX_DTR;
468                 break;
469         case UHS_SDR50_BUS_SPEED:
470                 timing = MMC_TIMING_UHS_SDR50;
471                 card->sw_caps.uhs_max_dtr = UHS_SDR50_MAX_DTR;
472                 break;
473         case UHS_SDR25_BUS_SPEED:
474                 timing = MMC_TIMING_UHS_SDR25;
475                 card->sw_caps.uhs_max_dtr = UHS_SDR25_MAX_DTR;
476                 break;
477         case UHS_SDR12_BUS_SPEED:
478                 timing = MMC_TIMING_UHS_SDR12;
479                 card->sw_caps.uhs_max_dtr = UHS_SDR12_MAX_DTR;
480                 break;
481         default:
482                 return 0;
483         }
484
485         err = mmc_sd_switch(card, 1, 0, card->sd_bus_speed, status);
486         if (err)
487                 return err;
488
489         if ((status[16] & 0xF) != card->sd_bus_speed)
490                 pr_warn("%s: Problem setting bus speed mode!\n",
491                         mmc_hostname(card->host));
492         else {
493                 mmc_set_timing(card->host, timing);
494                 mmc_set_clock(card->host, card->sw_caps.uhs_max_dtr);
495         }
496
497         return 0;
498 }
499
500 /* Get host's max current setting at its current voltage */
501 static u32 sd_get_host_max_current(struct mmc_host *host)
502 {
503         u32 voltage, max_current;
504
505         voltage = 1 << host->ios.vdd;
506         switch (voltage) {
507         case MMC_VDD_165_195:
508                 max_current = host->max_current_180;
509                 break;
510         case MMC_VDD_29_30:
511         case MMC_VDD_30_31:
512                 max_current = host->max_current_300;
513                 break;
514         case MMC_VDD_32_33:
515         case MMC_VDD_33_34:
516                 max_current = host->max_current_330;
517                 break;
518         default:
519                 max_current = 0;
520         }
521
522         return max_current;
523 }
524
525 static int sd_set_current_limit(struct mmc_card *card, u8 *status)
526 {
527         int current_limit = SD_SET_CURRENT_NO_CHANGE;
528         int err;
529         u32 max_current;
530
531         /*
532          * Current limit switch is only defined for SDR50, SDR104, and DDR50
533          * bus speed modes. For other bus speed modes, we do not change the
534          * current limit.
535          */
536         if ((card->sd_bus_speed != UHS_SDR50_BUS_SPEED) &&
537             (card->sd_bus_speed != UHS_SDR104_BUS_SPEED) &&
538             (card->sd_bus_speed != UHS_DDR50_BUS_SPEED))
539                 return 0;
540
541         /*
542          * Host has different current capabilities when operating at
543          * different voltages, so find out its max current first.
544          */
545         max_current = sd_get_host_max_current(card->host);
546
547         /*
548          * We only check host's capability here, if we set a limit that is
549          * higher than the card's maximum current, the card will be using its
550          * maximum current, e.g. if the card's maximum current is 300ma, and
551          * when we set current limit to 200ma, the card will draw 200ma, and
552          * when we set current limit to 400/600/800ma, the card will draw its
553          * maximum 300ma from the host.
554          *
555          * The above is incorrect: if we try to set a current limit that is
556          * not supported by the card, the card can rightfully error out the
557          * attempt, and remain at the default current limit.  This results
558          * in a 300mA card being limited to 200mA even though the host
559          * supports 800mA. Failures seen with SanDisk 8GB UHS cards with
560          * an iMX6 host. --rmk
561          */
562         if (max_current >= 800 &&
563             card->sw_caps.sd3_curr_limit & SD_MAX_CURRENT_800)
564                 current_limit = SD_SET_CURRENT_LIMIT_800;
565         else if (max_current >= 600 &&
566                  card->sw_caps.sd3_curr_limit & SD_MAX_CURRENT_600)
567                 current_limit = SD_SET_CURRENT_LIMIT_600;
568         else if (max_current >= 400 &&
569                  card->sw_caps.sd3_curr_limit & SD_MAX_CURRENT_400)
570                 current_limit = SD_SET_CURRENT_LIMIT_400;
571         else if (max_current >= 200 &&
572                  card->sw_caps.sd3_curr_limit & SD_MAX_CURRENT_200)
573                 current_limit = SD_SET_CURRENT_LIMIT_200;
574
575         if (current_limit != SD_SET_CURRENT_NO_CHANGE) {
576                 err = mmc_sd_switch(card, 1, 3, current_limit, status);
577                 if (err)
578                         return err;
579
580                 if (((status[15] >> 4) & 0x0F) != current_limit)
581                         pr_warn("%s: Problem setting current limit!\n",
582                                 mmc_hostname(card->host));
583
584         }
585
586         return 0;
587 }
588
589 /*
590  * UHS-I specific initialization procedure
591  */
592 static int mmc_sd_init_uhs_card(struct mmc_card *card)
593 {
594         int err;
595         u8 *status;
596
597         if (!(card->csd.cmdclass & CCC_SWITCH))
598                 return 0;
599
600         status = kmalloc(64, GFP_KERNEL);
601         if (!status)
602                 return -ENOMEM;
603
604         /* Set 4-bit bus width */
605         err = mmc_app_set_bus_width(card, MMC_BUS_WIDTH_4);
606         if (err)
607                 goto out;
608
609         mmc_set_bus_width(card->host, MMC_BUS_WIDTH_4);
610
611         /*
612          * Select the bus speed mode depending on host
613          * and card capability.
614          */
615         sd_update_bus_speed_mode(card);
616
617         /* Set the driver strength for the card */
618         err = sd_select_driver_type(card, status);
619         if (err)
620                 goto out;
621
622         /* Set current limit for the card */
623         err = sd_set_current_limit(card, status);
624         if (err)
625                 goto out;
626
627         /* Set bus speed mode of the card */
628         err = sd_set_bus_speed_mode(card, status);
629         if (err)
630                 goto out;
631
632         /*
633          * SPI mode doesn't define CMD19 and tuning is only valid for SDR50 and
634          * SDR104 mode SD-cards. Note that tuning is mandatory for SDR104.
635          */
636         if (!mmc_host_is_spi(card->host) &&
637                 (card->host->ios.timing == MMC_TIMING_UHS_SDR50 ||
638                  card->host->ios.timing == MMC_TIMING_UHS_DDR50 ||
639                  card->host->ios.timing == MMC_TIMING_UHS_SDR104)) {
640                 err = mmc_execute_tuning(card);
641
642                 /*
643                  * As SD Specifications Part1 Physical Layer Specification
644                  * Version 3.01 says, CMD19 tuning is available for unlocked
645                  * cards in transfer state of 1.8V signaling mode. The small
646                  * difference between v3.00 and 3.01 spec means that CMD19
647                  * tuning is also available for DDR50 mode.
648                  */
649                 if (err && card->host->ios.timing == MMC_TIMING_UHS_DDR50) {
650                         pr_warn("%s: ddr50 tuning failed\n",
651                                 mmc_hostname(card->host));
652                         err = 0;
653                 }
654         }
655
656 out:
657         kfree(status);
658
659         return err;
660 }
661
662 MMC_DEV_ATTR(cid, "%08x%08x%08x%08x\n", card->raw_cid[0], card->raw_cid[1],
663         card->raw_cid[2], card->raw_cid[3]);
664 MMC_DEV_ATTR(csd, "%08x%08x%08x%08x\n", card->raw_csd[0], card->raw_csd[1],
665         card->raw_csd[2], card->raw_csd[3]);
666 MMC_DEV_ATTR(scr, "%08x%08x\n", card->raw_scr[0], card->raw_scr[1]);
667 MMC_DEV_ATTR(ssr,
668         "%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x%08x\n",
669                 card->raw_ssr[0], card->raw_ssr[1], card->raw_ssr[2],
670                 card->raw_ssr[3], card->raw_ssr[4], card->raw_ssr[5],
671                 card->raw_ssr[6], card->raw_ssr[7], card->raw_ssr[8],
672                 card->raw_ssr[9], card->raw_ssr[10], card->raw_ssr[11],
673                 card->raw_ssr[12], card->raw_ssr[13], card->raw_ssr[14],
674                 card->raw_ssr[15]);
675 MMC_DEV_ATTR(date, "%02d/%04d\n", card->cid.month, card->cid.year);
676 MMC_DEV_ATTR(erase_size, "%u\n", card->erase_size << 9);
677 MMC_DEV_ATTR(preferred_erase_size, "%u\n", card->pref_erase << 9);
678 MMC_DEV_ATTR(fwrev, "0x%x\n", card->cid.fwrev);
679 MMC_DEV_ATTR(hwrev, "0x%x\n", card->cid.hwrev);
680 MMC_DEV_ATTR(manfid, "0x%06x\n", card->cid.manfid);
681 MMC_DEV_ATTR(name, "%s\n", card->cid.prod_name);
682 MMC_DEV_ATTR(oemid, "0x%04x\n", card->cid.oemid);
683 MMC_DEV_ATTR(serial, "0x%08x\n", card->cid.serial);
684 MMC_DEV_ATTR(ocr, "0x%08x\n", card->ocr);
685 MMC_DEV_ATTR(rca, "0x%04x\n", card->rca);
686
687
688 static ssize_t mmc_dsr_show(struct device *dev,
689                            struct device_attribute *attr,
690                            char *buf)
691 {
692        struct mmc_card *card = mmc_dev_to_card(dev);
693        struct mmc_host *host = card->host;
694
695        if (card->csd.dsr_imp && host->dsr_req)
696                return sprintf(buf, "0x%x\n", host->dsr);
697        else
698                /* return default DSR value */
699                return sprintf(buf, "0x%x\n", 0x404);
700 }
701
702 static DEVICE_ATTR(dsr, S_IRUGO, mmc_dsr_show, NULL);
703
704 static struct attribute *sd_std_attrs[] = {
705         &dev_attr_cid.attr,
706         &dev_attr_csd.attr,
707         &dev_attr_scr.attr,
708         &dev_attr_ssr.attr,
709         &dev_attr_date.attr,
710         &dev_attr_erase_size.attr,
711         &dev_attr_preferred_erase_size.attr,
712         &dev_attr_fwrev.attr,
713         &dev_attr_hwrev.attr,
714         &dev_attr_manfid.attr,
715         &dev_attr_name.attr,
716         &dev_attr_oemid.attr,
717         &dev_attr_serial.attr,
718         &dev_attr_ocr.attr,
719         &dev_attr_rca.attr,
720         &dev_attr_dsr.attr,
721         NULL,
722 };
723 ATTRIBUTE_GROUPS(sd_std);
724
725 struct device_type sd_type = {
726         .groups = sd_std_groups,
727 };
728
729 /*
730  * Fetch CID from card.
731  */
732 int mmc_sd_get_cid(struct mmc_host *host, u32 ocr, u32 *cid, u32 *rocr)
733 {
734         int err;
735         u32 max_current;
736         int retries = 10;
737         u32 pocr = ocr;
738
739 try_again:
740         if (!retries) {
741                 ocr &= ~SD_OCR_S18R;
742                 pr_warn("%s: Skipping voltage switch\n", mmc_hostname(host));
743         }
744
745         /*
746          * Since we're changing the OCR value, we seem to
747          * need to tell some cards to go back to the idle
748          * state.  We wait 1ms to give cards time to
749          * respond.
750          */
751         mmc_go_idle(host);
752
753         /*
754          * If SD_SEND_IF_COND indicates an SD 2.0
755          * compliant card and we should set bit 30
756          * of the ocr to indicate that we can handle
757          * block-addressed SDHC cards.
758          */
759         err = mmc_send_if_cond(host, ocr);
760         if (!err)
761                 ocr |= SD_OCR_CCS;
762
763         /*
764          * If the host supports one of UHS-I modes, request the card
765          * to switch to 1.8V signaling level. If the card has failed
766          * repeatedly to switch however, skip this.
767          */
768         if (retries && mmc_host_uhs(host))
769                 ocr |= SD_OCR_S18R;
770
771         /*
772          * If the host can supply more than 150mA at current voltage,
773          * XPC should be set to 1.
774          */
775         max_current = sd_get_host_max_current(host);
776         if (max_current > 150)
777                 ocr |= SD_OCR_XPC;
778
779         err = mmc_send_app_op_cond(host, ocr, rocr);
780         if (err)
781                 return err;
782
783         /*
784          * In case the S18A bit is set in the response, let's start the signal
785          * voltage switch procedure. SPI mode doesn't support CMD11.
786          * Note that, according to the spec, the S18A bit is not valid unless
787          * the CCS bit is set as well. We deliberately deviate from the spec in
788          * regards to this, which allows UHS-I to be supported for SDSC cards.
789          */
790         if (!mmc_host_is_spi(host) && rocr && (*rocr & 0x01000000)) {
791                 err = mmc_set_uhs_voltage(host, pocr);
792                 if (err == -EAGAIN) {
793                         retries--;
794                         goto try_again;
795                 } else if (err) {
796                         retries = 0;
797                         goto try_again;
798                 }
799         }
800
801         err = mmc_send_cid(host, cid);
802         return err;
803 }
804
805 int mmc_sd_get_csd(struct mmc_host *host, struct mmc_card *card)
806 {
807         int err;
808
809         /*
810          * Fetch CSD from card.
811          */
812         err = mmc_send_csd(card, card->raw_csd);
813         if (err)
814                 return err;
815
816         err = mmc_decode_csd(card);
817         if (err)
818                 return err;
819
820         return 0;
821 }
822
823 static int mmc_sd_get_ro(struct mmc_host *host)
824 {
825         int ro;
826
827         /*
828          * Some systems don't feature a write-protect pin and don't need one.
829          * E.g. because they only have micro-SD card slot. For those systems
830          * assume that the SD card is always read-write.
831          */
832         if (host->caps2 & MMC_CAP2_NO_WRITE_PROTECT)
833                 return 0;
834
835         if (!host->ops->get_ro)
836                 return -1;
837
838         ro = host->ops->get_ro(host);
839
840         return ro;
841 }
842
843 int mmc_sd_setup_card(struct mmc_host *host, struct mmc_card *card,
844         bool reinit)
845 {
846         int err;
847
848         if (!reinit) {
849                 /*
850                  * Fetch SCR from card.
851                  */
852                 err = mmc_app_send_scr(card);
853                 if (err)
854                         return err;
855
856                 err = mmc_decode_scr(card);
857                 if (err)
858                         return err;
859
860                 /*
861                  * Fetch and process SD Status register.
862                  */
863                 err = mmc_read_ssr(card);
864                 if (err)
865                         return err;
866
867                 /* Erase init depends on CSD and SSR */
868                 mmc_init_erase(card);
869
870                 /*
871                  * Fetch switch information from card.
872                  */
873                 err = mmc_read_switch(card);
874                 if (err)
875                         return err;
876         }
877
878         /*
879          * For SPI, enable CRC as appropriate.
880          * This CRC enable is located AFTER the reading of the
881          * card registers because some SDHC cards are not able
882          * to provide valid CRCs for non-512-byte blocks.
883          */
884         if (mmc_host_is_spi(host)) {
885                 err = mmc_spi_set_crc(host, use_spi_crc);
886                 if (err)
887                         return err;
888         }
889
890         /*
891          * Check if read-only switch is active.
892          */
893         if (!reinit) {
894                 int ro = mmc_sd_get_ro(host);
895
896                 if (ro < 0) {
897                         pr_warn("%s: host does not support reading read-only switch, assuming write-enable\n",
898                                 mmc_hostname(host));
899                 } else if (ro > 0) {
900                         mmc_card_set_readonly(card);
901                 }
902         }
903
904         return 0;
905 }
906
907 unsigned mmc_sd_get_max_clock(struct mmc_card *card)
908 {
909         unsigned max_dtr = (unsigned int)-1;
910
911         if (mmc_card_hs(card)) {
912                 if (max_dtr > card->sw_caps.hs_max_dtr)
913                         max_dtr = card->sw_caps.hs_max_dtr;
914         } else if (max_dtr > card->csd.max_dtr) {
915                 max_dtr = card->csd.max_dtr;
916         }
917
918         return max_dtr;
919 }
920
921 static bool mmc_sd_card_using_v18(struct mmc_card *card)
922 {
923         /*
924          * According to the SD spec., the Bus Speed Mode (function group 1) bits
925          * 2 to 4 are zero if the card is initialized at 3.3V signal level. Thus
926          * they can be used to determine if the card has already switched to
927          * 1.8V signaling.
928          */
929         return card->sw_caps.sd3_bus_mode &
930                (SD_MODE_UHS_SDR50 | SD_MODE_UHS_SDR104 | SD_MODE_UHS_DDR50);
931 }
932
933 /*
934  * Handle the detection and initialisation of a card.
935  *
936  * In the case of a resume, "oldcard" will contain the card
937  * we're trying to reinitialise.
938  */
939 static int mmc_sd_init_card(struct mmc_host *host, u32 ocr,
940         struct mmc_card *oldcard)
941 {
942         struct mmc_card *card;
943         int err;
944         u32 cid[4];
945         u32 rocr = 0;
946         bool v18_fixup_failed = false;
947
948         WARN_ON(!host->claimed);
949 retry:
950         err = mmc_sd_get_cid(host, ocr, cid, &rocr);
951         if (err)
952                 return err;
953
954         if (oldcard) {
955                 if (memcmp(cid, oldcard->raw_cid, sizeof(cid)) != 0)
956                         return -ENOENT;
957
958                 card = oldcard;
959         } else {
960                 /*
961                  * Allocate card structure.
962                  */
963                 card = mmc_alloc_card(host, &sd_type);
964                 if (IS_ERR(card))
965                         return PTR_ERR(card);
966
967                 card->ocr = ocr;
968                 card->type = MMC_TYPE_SD;
969                 memcpy(card->raw_cid, cid, sizeof(card->raw_cid));
970         }
971
972         /*
973          * Call the optional HC's init_card function to handle quirks.
974          */
975         if (host->ops->init_card)
976                 host->ops->init_card(host, card);
977
978         /*
979          * For native busses:  get card RCA and quit open drain mode.
980          */
981         if (!mmc_host_is_spi(host)) {
982                 err = mmc_send_relative_addr(host, &card->rca);
983                 if (err)
984                         goto free_card;
985         }
986
987         if (!oldcard) {
988                 err = mmc_sd_get_csd(host, card);
989                 if (err)
990                         goto free_card;
991
992                 mmc_decode_cid(card);
993         }
994
995         /*
996          * handling only for cards supporting DSR and hosts requesting
997          * DSR configuration
998          */
999         if (card->csd.dsr_imp && host->dsr_req)
1000                 mmc_set_dsr(host);
1001
1002         /*
1003          * Select card, as all following commands rely on that.
1004          */
1005         if (!mmc_host_is_spi(host)) {
1006                 err = mmc_select_card(card);
1007                 if (err)
1008                         goto free_card;
1009         }
1010
1011         err = mmc_sd_setup_card(host, card, oldcard != NULL);
1012         if (err)
1013                 goto free_card;
1014
1015         /*
1016          * If the card has not been power cycled, it may still be using 1.8V
1017          * signaling. Detect that situation and try to initialize a UHS-I (1.8V)
1018          * transfer mode.
1019          */
1020         if (!v18_fixup_failed && !mmc_host_is_spi(host) && mmc_host_uhs(host) &&
1021             mmc_sd_card_using_v18(card) &&
1022             host->ios.signal_voltage != MMC_SIGNAL_VOLTAGE_180) {
1023                 /*
1024                  * Re-read switch information in case it has changed since
1025                  * oldcard was initialized.
1026                  */
1027                 if (oldcard) {
1028                         err = mmc_read_switch(card);
1029                         if (err)
1030                                 goto free_card;
1031                 }
1032                 if (mmc_sd_card_using_v18(card)) {
1033                         if (mmc_host_set_uhs_voltage(host) ||
1034                             mmc_sd_init_uhs_card(card)) {
1035                                 v18_fixup_failed = true;
1036                                 mmc_power_cycle(host, ocr);
1037                                 if (!oldcard)
1038                                         mmc_remove_card(card);
1039                                 goto retry;
1040                         }
1041                         goto done;
1042                 }
1043         }
1044
1045         /* Initialization sequence for UHS-I cards */
1046         if (rocr & SD_ROCR_S18A && mmc_host_uhs(host)) {
1047                 err = mmc_sd_init_uhs_card(card);
1048                 if (err)
1049                         goto free_card;
1050         } else {
1051                 /*
1052                  * Attempt to change to high-speed (if supported)
1053                  */
1054                 err = mmc_sd_switch_hs(card);
1055                 if (err > 0)
1056                         mmc_set_timing(card->host, MMC_TIMING_SD_HS);
1057                 else if (err)
1058                         goto free_card;
1059
1060                 /*
1061                  * Set bus speed.
1062                  */
1063                 mmc_set_clock(host, mmc_sd_get_max_clock(card));
1064
1065                 /*
1066                  * Switch to wider bus (if supported).
1067                  */
1068                 if ((host->caps & MMC_CAP_4_BIT_DATA) &&
1069                         (card->scr.bus_widths & SD_SCR_BUS_WIDTH_4)) {
1070                         err = mmc_app_set_bus_width(card, MMC_BUS_WIDTH_4);
1071                         if (err)
1072                                 goto free_card;
1073
1074                         mmc_set_bus_width(host, MMC_BUS_WIDTH_4);
1075                 }
1076         }
1077
1078         if (host->caps2 & MMC_CAP2_AVOID_3_3V &&
1079             host->ios.signal_voltage == MMC_SIGNAL_VOLTAGE_330) {
1080                 pr_err("%s: Host failed to negotiate down from 3.3V\n",
1081                         mmc_hostname(host));
1082                 err = -EINVAL;
1083                 goto free_card;
1084         }
1085 done:
1086         host->card = card;
1087         return 0;
1088
1089 free_card:
1090         if (!oldcard)
1091                 mmc_remove_card(card);
1092
1093         return err;
1094 }
1095
1096 /*
1097  * Host is being removed. Free up the current card.
1098  */
1099 static void mmc_sd_remove(struct mmc_host *host)
1100 {
1101         mmc_remove_card(host->card);
1102         host->card = NULL;
1103 }
1104
1105 /*
1106  * Card detection - card is alive.
1107  */
1108 static int mmc_sd_alive(struct mmc_host *host)
1109 {
1110         return mmc_send_status(host->card, NULL);
1111 }
1112
1113 /*
1114  * Card detection callback from host.
1115  */
1116 static void mmc_sd_detect(struct mmc_host *host)
1117 {
1118         int err;
1119
1120         mmc_get_card(host->card, NULL);
1121
1122         /*
1123          * Just check if our card has been removed.
1124          */
1125         err = _mmc_detect_card_removed(host);
1126
1127         mmc_put_card(host->card, NULL);
1128
1129         if (err) {
1130                 mmc_sd_remove(host);
1131
1132                 mmc_claim_host(host);
1133                 mmc_detach_bus(host);
1134                 mmc_power_off(host);
1135                 mmc_release_host(host);
1136         }
1137 }
1138
1139 static int _mmc_sd_suspend(struct mmc_host *host)
1140 {
1141         int err = 0;
1142
1143         mmc_claim_host(host);
1144
1145         if (mmc_card_suspended(host->card))
1146                 goto out;
1147
1148         if (!mmc_host_is_spi(host))
1149                 err = mmc_deselect_cards(host);
1150
1151         if (!err) {
1152                 mmc_power_off(host);
1153                 mmc_card_set_suspended(host->card);
1154         }
1155
1156 out:
1157         mmc_release_host(host);
1158         return err;
1159 }
1160
1161 /*
1162  * Callback for suspend
1163  */
1164 static int mmc_sd_suspend(struct mmc_host *host)
1165 {
1166         int err;
1167
1168         err = _mmc_sd_suspend(host);
1169         if (!err) {
1170                 pm_runtime_disable(&host->card->dev);
1171                 pm_runtime_set_suspended(&host->card->dev);
1172         }
1173
1174         return err;
1175 }
1176
1177 /*
1178  * This function tries to determine if the same card is still present
1179  * and, if so, restore all state to it.
1180  */
1181 static int _mmc_sd_resume(struct mmc_host *host)
1182 {
1183         int err = 0;
1184
1185         mmc_claim_host(host);
1186
1187         if (!mmc_card_suspended(host->card))
1188                 goto out;
1189
1190         mmc_power_up(host, host->card->ocr);
1191         err = mmc_sd_init_card(host, host->card->ocr, host->card);
1192         mmc_card_clr_suspended(host->card);
1193
1194 out:
1195         mmc_release_host(host);
1196         return err;
1197 }
1198
1199 /*
1200  * Callback for resume
1201  */
1202 static int mmc_sd_resume(struct mmc_host *host)
1203 {
1204         pm_runtime_enable(&host->card->dev);
1205         return 0;
1206 }
1207
1208 /*
1209  * Callback for runtime_suspend.
1210  */
1211 static int mmc_sd_runtime_suspend(struct mmc_host *host)
1212 {
1213         int err;
1214
1215         if (!(host->caps & MMC_CAP_AGGRESSIVE_PM))
1216                 return 0;
1217
1218         err = _mmc_sd_suspend(host);
1219         if (err)
1220                 pr_err("%s: error %d doing aggressive suspend\n",
1221                         mmc_hostname(host), err);
1222
1223         return err;
1224 }
1225
1226 /*
1227  * Callback for runtime_resume.
1228  */
1229 static int mmc_sd_runtime_resume(struct mmc_host *host)
1230 {
1231         int err;
1232
1233         err = _mmc_sd_resume(host);
1234         if (err && err != -ENOMEDIUM)
1235                 pr_err("%s: error %d doing runtime resume\n",
1236                         mmc_hostname(host), err);
1237
1238         return 0;
1239 }
1240
1241 static int mmc_sd_hw_reset(struct mmc_host *host)
1242 {
1243         mmc_power_cycle(host, host->card->ocr);
1244         return mmc_sd_init_card(host, host->card->ocr, host->card);
1245 }
1246
1247 static const struct mmc_bus_ops mmc_sd_ops = {
1248         .remove = mmc_sd_remove,
1249         .detect = mmc_sd_detect,
1250         .runtime_suspend = mmc_sd_runtime_suspend,
1251         .runtime_resume = mmc_sd_runtime_resume,
1252         .suspend = mmc_sd_suspend,
1253         .resume = mmc_sd_resume,
1254         .alive = mmc_sd_alive,
1255         .shutdown = mmc_sd_suspend,
1256         .hw_reset = mmc_sd_hw_reset,
1257 };
1258
1259 /*
1260  * Starting point for SD card init.
1261  */
1262 int mmc_attach_sd(struct mmc_host *host)
1263 {
1264         int err;
1265         u32 ocr, rocr;
1266
1267         WARN_ON(!host->claimed);
1268
1269         err = mmc_send_app_op_cond(host, 0, &ocr);
1270         if (err)
1271                 return err;
1272
1273         mmc_attach_bus(host, &mmc_sd_ops);
1274         if (host->ocr_avail_sd)
1275                 host->ocr_avail = host->ocr_avail_sd;
1276
1277         /*
1278          * We need to get OCR a different way for SPI.
1279          */
1280         if (mmc_host_is_spi(host)) {
1281                 mmc_go_idle(host);
1282
1283                 err = mmc_spi_read_ocr(host, 0, &ocr);
1284                 if (err)
1285                         goto err;
1286         }
1287
1288         /*
1289          * Some SD cards claims an out of spec VDD voltage range. Let's treat
1290          * these bits as being in-valid and especially also bit7.
1291          */
1292         ocr &= ~0x7FFF;
1293
1294         rocr = mmc_select_voltage(host, ocr);
1295
1296         /*
1297          * Can we support the voltage(s) of the card(s)?
1298          */
1299         if (!rocr) {
1300                 err = -EINVAL;
1301                 goto err;
1302         }
1303
1304         /*
1305          * Detect and init the card.
1306          */
1307         err = mmc_sd_init_card(host, rocr, NULL);
1308         if (err)
1309                 goto err;
1310
1311         mmc_release_host(host);
1312         err = mmc_add_card(host->card);
1313         if (err)
1314                 goto remove_card;
1315
1316         mmc_claim_host(host);
1317         return 0;
1318
1319 remove_card:
1320         mmc_remove_card(host->card);
1321         host->card = NULL;
1322         mmc_claim_host(host);
1323 err:
1324         mmc_detach_bus(host);
1325
1326         pr_err("%s: error %d whilst initialising SD card\n",
1327                 mmc_hostname(host), err);
1328
1329         return err;
1330 }