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