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