lkml.org 
[lkml]   [2006]   [Aug]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: 2GB MMC/SD cards
    Hi Pierre,

    Pierre Ossman wrote:
    > Suggested patch included.

    What's the status on this patch? A Gentoo user at
    http://bugs.gentoo.org/142172 reports that it is required for him to be
    able to access his card, so it definitely works in some form.

    >
    > [MMC] Always use a sector size of 512 bytes
    >
    > Both MMC and SD specifications specify (although a bit unclearly in the MMC
    > case) that a sector size of 512 bytes must always be supported by the card.
    >
    > Cards can report larger "native" size than this, and cards >= 2 GB even
    > must do so. Most other readers use 512 bytes even for these cards. We should
    > do the same to be compatible.
    >
    > Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
    > ---
    >
    > drivers/mmc/mmc_block.c | 49 ++++-------------------------------------------
    > 1 files changed, 4 insertions(+), 45 deletions(-)
    >
    > diff --git a/drivers/mmc/mmc_block.c b/drivers/mmc/mmc_block.c
    > index 587458b..96049e2 100644
    > --- a/drivers/mmc/mmc_block.c
    > +++ b/drivers/mmc/mmc_block.c
    > @@ -325,52 +325,11 @@ static struct mmc_blk_data *mmc_blk_allo
    > md->read_only = mmc_blk_readonly(card);
    >
    > /*
    > - * Figure out a workable block size. MMC cards have:
    > - * - two block sizes, one for read and one for write.
    > - * - may support partial reads and/or writes
    > - * (allows block sizes smaller than specified)
    > + * Both SD and MMC specifications state (although a bit
    > + * unclearly in the MMC case) that a block size of 512
    > + * bytes must always be supported by the card.
    > */
    > - md->block_bits = card->csd.read_blkbits;
    > - if (card->csd.write_blkbits != card->csd.read_blkbits) {
    > - if (card->csd.write_blkbits < card->csd.read_blkbits &&
    > - card->csd.read_partial) {
    > - /*
    > - * write block size is smaller than read block
    > - * size, but we support partial reads, so choose
    > - * the smaller write block size.
    > - */
    > - md->block_bits = card->csd.write_blkbits;
    > - } else if (card->csd.write_blkbits > card->csd.read_blkbits &&
    > - card->csd.write_partial) {
    > - /*
    > - * read block size is smaller than write block
    > - * size, but we support partial writes. Use read
    > - * block size.
    > - */
    > - } else {
    > - /*
    > - * We don't support this configuration for writes.
    > - */
    > - printk(KERN_ERR "%s: unable to select block size for "
    > - "writing (rb%u wb%u rp%u wp%u)\n",
    > - mmc_card_id(card),
    > - 1 << card->csd.read_blkbits,
    > - 1 << card->csd.write_blkbits,
    > - card->csd.read_partial,
    > - card->csd.write_partial);
    > - md->read_only = 1;
    > - }
    > - }
    > -
    > - /*
    > - * Refuse to allow block sizes smaller than 512 bytes.
    > - */
    > - if (md->block_bits < 9) {
    > - printk(KERN_ERR "%s: unable to support block size %u\n",
    > - mmc_card_id(card), 1 << md->block_bits);
    > - ret = -EINVAL;
    > - goto err_kfree;
    > - }
    > + md->block_bits = 9;
    >
    > md->disk = alloc_disk(1 << MMC_SHIFT);
    > if (md->disk == NULL) {

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2006-08-13 12:09    [W:0.032 / U:91.868 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site