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