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