public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] MMC: proposal to support multiple physical partitions
@ 2014-04-24 17:50 Steve Rae
  2014-04-29 17:24 ` Pantelis Antoniou
  0 siblings, 1 reply; 4+ messages in thread
From: Steve Rae @ 2014-04-24 17:50 UTC (permalink / raw)
  To: u-boot

In addition to using the MMC "user area" (the device's physical partition), I am also using the "first MMC boot partition" and the "second MMC boot partition"...
As a result, I am currently using the following code snippet in a number of places:

err = -1;
if (mmc->part_num != part_num) {
        if (mmc_switch_part(dev_num, part_num)) {
                printf("%s: MMC partition switch to %d failed\n",
                       __func__, part_num);
                err = 0;
        }
}

if (err != 0) {
        err = mmc->block_dev.block_read(dev_num, start, blkcnt, buffer);
}

if (mmc->part_num != part_num) {
        if (mmc_switch_part(dev_num, mmc->part_num)) {
                printf("%s: MMC partition switching back from %d failed\n",
                       __func__, part_num);
        }
}

I have two different proposals:
1) overload the "int dev_num" argument with encoded  "dev_num" and "part_num" fields

-          the dev_num  in the [15:0] bits,

-          the part_num in the [30:16] bits,

-          a flag to indicate this encoding in [31] bit.

-          and modify mmc_bread() to handle this encoded argument, and implement the above code...
2) create a wrapper function to perform the above code, with an added argument "int part_num", possibly named:

-          mmc_block_dev_block_read() -- so that it is similar to the original calling convention [mmc->block_dev.block_read], or

-          mmc_pbread() [PartitionBlockRead] -- so that it is similar to the mmc_bread() [which is the implementation of the callback function]



Also, would implement this solution for mmc->block_dev.block_write() and mmc->block_dev.block_erase() too.

Either proposals would affect:

include/mmc.h

drivers/mmc/mmc.c

drivers/mmc/mmc_write.c



Would either of these proposals be acceptable to upstream?

Thanks in advance, Steve

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2014-05-05 16:53 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-04-24 17:50 [U-Boot] MMC: proposal to support multiple physical partitions Steve Rae
2014-04-29 17:24 ` Pantelis Antoniou
2014-04-29 18:08   ` Steve Rae
2014-05-05 16:53     ` Steve Rae

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox