block: rename the flag of emmc_disk to is_rk_disk
[firefly-linux-kernel-4.4.55.git] / drivers / mmc / card / block.c
index bfa7a62cb85c1142fcfe54a31959953d88e4542b..139c4e37735a93eb6f1f43b41d23b796d7e7e983 100644 (file)
@@ -88,7 +88,6 @@ static int max_devices;
 
 /* TODO: Replace these with struct ida */
 static DECLARE_BITMAP(dev_use, MAX_DEVICES);
-static DECLARE_BITMAP(name_use, MAX_DEVICES);
 
 /*
  * There is one mmc_blk_data per slot.
@@ -107,7 +106,6 @@ struct mmc_blk_data {
        unsigned int    usage;
        unsigned int    read_only;
        unsigned int    part_type;
-       unsigned int    name_idx;
        unsigned int    reset_done;
 #define MMC_BLK_READ           BIT(0)
 #define MMC_BLK_WRITE          BIT(1)
@@ -2017,7 +2015,7 @@ static void mmc_blk_packed_hdr_wrq_prep(struct mmc_queue_req *mqrq,
        struct mmc_blk_data *md = mq->data;
        struct mmc_packed *packed = mqrq->packed;
        bool do_rel_wr, do_data_tag;
-       u32 *packed_cmd_hdr;
+       __le32 *packed_cmd_hdr;
        u8 hdr_blocks;
        u8 i = 1;
 
@@ -2029,8 +2027,8 @@ static void mmc_blk_packed_hdr_wrq_prep(struct mmc_queue_req *mqrq,
 
        packed_cmd_hdr = packed->cmd_hdr;
        memset(packed_cmd_hdr, 0, sizeof(packed->cmd_hdr));
-       packed_cmd_hdr[0] = (packed->nr_entries << 16) |
-               (PACKED_CMD_WR << 8) | PACKED_CMD_VER;
+       packed_cmd_hdr[0] = cpu_to_le32((packed->nr_entries << 16) |
+               (PACKED_CMD_WR << 8) | PACKED_CMD_VER);
        hdr_blocks = mmc_large_sector(card) ? 8 : 1;
 
        /*
@@ -2043,14 +2041,14 @@ static void mmc_blk_packed_hdr_wrq_prep(struct mmc_queue_req *mqrq,
                        (rq_data_dir(prq) == WRITE) &&
                        blk_rq_bytes(prq) >= card->ext_csd.data_tag_unit_size;
                /* Argument of CMD23 */
-               packed_cmd_hdr[(i * 2)] =
+               packed_cmd_hdr[(i * 2)] = cpu_to_le32(
                        (do_rel_wr ? MMC_CMD23_ARG_REL_WR : 0) |
                        (do_data_tag ? MMC_CMD23_ARG_TAG_REQ : 0) |
-                       blk_rq_sectors(prq);
+                       blk_rq_sectors(prq));
                /* Argument of CMD18 or CMD25 */
-               packed_cmd_hdr[((i * 2)) + 1] =
+               packed_cmd_hdr[((i * 2)) + 1] = cpu_to_le32(
                        mmc_card_blockaddr(card) ?
-                       blk_rq_pos(prq) : blk_rq_pos(prq) << 9;
+                       blk_rq_pos(prq) : blk_rq_pos(prq) << 9);
                packed->blocks += blk_rq_sectors(prq);
                i++;
        }
@@ -2473,19 +2471,6 @@ static struct mmc_blk_data *mmc_blk_alloc_req(struct mmc_card *card,
                goto out;
        }
 
-       /*
-        * !subname implies we are creating main mmc_blk_data that will be
-        * associated with mmc_card with dev_set_drvdata. Due to device
-        * partitions, devidx will not coincide with a per-physical card
-        * index anymore so we keep track of a name index.
-        */
-       if (!subname) {
-               md->name_idx = find_first_zero_bit(name_use, max_devices);
-               __set_bit(md->name_idx, name_use);
-       } else
-               md->name_idx = ((struct mmc_blk_data *)
-                               dev_to_disk(parent)->private_data)->name_idx;
-
        md->area_type = area_type;
 
        /*
@@ -2535,7 +2520,7 @@ static struct mmc_blk_data *mmc_blk_alloc_req(struct mmc_card *card,
         */
 
        snprintf(md->disk->disk_name, sizeof(md->disk->disk_name),
-                "mmcblk%u%s", md->name_idx, subname ? subname : "");
+                "mmcblk%u%s", card->host->index, subname ? subname : "");
 
        if (mmc_card_mmc(card))
                blk_queue_logical_block_size(md->queue.queue,
@@ -2546,7 +2531,8 @@ static struct mmc_blk_data *mmc_blk_alloc_req(struct mmc_card *card,
        set_capacity(md->disk, size);
 
        if (mmc_host_cmd23(card->host)) {
-               if (mmc_card_mmc(card) ||
+               if ((mmc_card_mmc(card) &&
+                    card->csd.mmca_vsn >= CSD_SPEC_VER_3) ||
                    (mmc_card_sd(card) &&
                     card->scr.cmds & SD_SCR_CMD23_SUPPORT))
                        md->flags |= MMC_BLK_CMD23;
@@ -2697,7 +2683,6 @@ static void mmc_blk_remove_parts(struct mmc_card *card,
        struct list_head *pos, *q;
        struct mmc_blk_data *part_md;
 
-       __clear_bit(md->name_idx, name_use);
        list_for_each_safe(pos, q, &md->part) {
                part_md = list_entry(pos, struct mmc_blk_data, part);
                list_del(pos);
@@ -2885,14 +2870,14 @@ static int mmc_blk_probe(struct mmc_card *card)
 
        dev_set_drvdata(&card->dev, md);
 
-       #if defined(CONFIG_MMC_DW_ROCKCHIP)
+#if defined(CONFIG_MMC_DW_ROCKCHIP) || defined(CONFIG_MMC_SDHCI_OF_ARASAN)
        if (card->host->restrict_caps & RESTRICT_CARD_TYPE_EMMC) {
                this_card = card;
-               md->disk->emmc_disk = 1;
+               md->disk->is_rk_disk = true;
        } else {
-               md->disk->emmc_disk = 0;
+               md->disk->is_rk_disk = false;
        }
-       #endif
+#endif
 
        if (mmc_add_disk(md))
                goto out;
@@ -2926,10 +2911,10 @@ static void mmc_blk_remove(struct mmc_card *card)
 {
        struct mmc_blk_data *md = dev_get_drvdata(&card->dev);
 
-       #if defined(CONFIG_MMC_DW_ROCKCHIP)
+#if defined(CONFIG_MMC_DW_ROCKCHIP) || defined(CONFIG_MMC_SDHCI_OF_ARASAN)
        if (card->host->restrict_caps & RESTRICT_CARD_TYPE_EMMC)
                this_card = NULL;
-       #endif
+#endif
 
        mmc_blk_remove_parts(card, md);
        pm_runtime_get_sync(&card->dev);