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