summaryrefslogtreecommitdiffstats
path: root/drivers/mci
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2013-08-05 12:50:06 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2013-08-05 12:50:06 +0200
commitfbf082b56540b4f3853015f3686c8f106a91707a (patch)
treee5901744625d45ca075a55eff3c9fc1e2c05a134 /drivers/mci
parent8c5a1c0c81aade3546a18b12e2eeff0b38e79e99 (diff)
parent6a37488917b22fcf24d99c695ed1755198a9393b (diff)
downloadbarebox-fbf082b56540b4f3853015f3686c8f106a91707a.tar.gz
barebox-fbf082b56540b4f3853015f3686c8f106a91707a.tar.xz
Merge branch 'for-next/of'
Conflicts: arch/arm/boards/freescale-mx53-loco/board.c drivers/of/Makefile
Diffstat (limited to 'drivers/mci')
-rw-r--r--drivers/mci/mci-core.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/mci/mci-core.c b/drivers/mci/mci-core.c
index 67668d53f0..66ddb5b4ff 100644
--- a/drivers/mci/mci-core.c
+++ b/drivers/mci/mci-core.c
@@ -406,7 +406,7 @@ static int mci_calc_blk_cnt(uint64_t cap, unsigned shift)
}
static void mci_part_add(struct mci *mci, uint64_t size,
- unsigned int part_cfg, char *name, int idx, bool ro,
+ unsigned int part_cfg, char *name, char *partname, int idx, bool ro,
int area_type)
{
struct mci_part *part = &mci->part[mci->nr_parts];
@@ -414,6 +414,7 @@ static void mci_part_add(struct mci *mci, uint64_t size,
part->mci = mci;
part->size = size;
part->blk.cdev.name = name;
+ part->blk.cdev.partname = partname;
part->blk.blockbits = SECTOR_SHIFT;
part->blk.num_blocks = mci_calc_blk_cnt(size, part->blk.blockbits);
part->area_type = area_type;
@@ -482,13 +483,14 @@ static int mmc_change_freq(struct mci *mci)
unsigned int part_size;
for (idx = 0; idx < MMC_NUM_BOOT_PARTITION; idx++) {
- char *name;
+ char *name, *partname;
part_size = mci->ext_csd[EXT_CSD_BOOT_MULT] << 17;
- name = asprintf("%s.boot%d", mci->cdevname, idx);
+ partname = asprintf("boot%d", idx);
+ name = asprintf("%s.%s", mci->cdevname, partname);
mci_part_add(mci, part_size,
EXT_CSD_PART_CONFIG_ACC_BOOT0 + idx,
- name, idx, true,
+ name, partname, idx, true,
MMC_BLK_DATA_AREA_BOOT);
}
@@ -1104,7 +1106,7 @@ static int mci_startup(struct mci *mci)
err = mci_set_blocklen(mci, mci->read_bl_len);
mci_part_add(mci, mci->capacity, 0,
- mci->cdevname, 0, true,
+ mci->cdevname, NULL, 0, true,
MMC_BLK_DATA_AREA_MAIN);
return err;
@@ -1556,6 +1558,7 @@ static int mci_card_probe(struct mci *mci)
dev_warn(&mci->dev, "No partition table found\n");
rc = 0; /* it's not a failure */
}
+ of_parse_partitions(&part->blk.cdev, host->hw_dev->device_node);
}
if (IS_ENABLED(CONFIG_MCI_MMC_BOOT_PARTITIONS) &&