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