mmc_test with mmc_spi - Kernel

This is a discussion on mmc_test with mmc_spi - Kernel ; Hi Pierre, I wrote a small hack to be able to use the mmc_test driver on mmc-spi host. You or somebody else might find it useful. All test but "Correct xfer_size at write (start failure)", "Correct xfer_size at read (start ...

+ Reply to Thread
Results 1 to 2 of 2

Thread: mmc_test with mmc_spi

  1. mmc_test with mmc_spi

    Hi Pierre,

    I wrote a small hack to be able to use the mmc_test driver on mmc-spi host. You or somebody else might find it useful.
    All test but "Correct xfer_size at write (start failure)", "Correct xfer_size at read (start failure)" and "Correct xfer_size
    at write (midway failure)" passed.
    I'm not sure what these tests try to do and how they do it, so I don't know if my modifcations of mmc_test, my spi driver or the
    mmc-spi driver are responsible.

    It would be great if you could provide some insight.

    Regards,
    Thomas

    --
    diff --git a/drivers/mmc/card/mmc_test.c b/drivers/mmc/card/mmc_test.c
    index d6b9b48..2366150 100644
    --- a/drivers/mmc/card/mmc_test.c
    +++ b/drivers/mmc/card/mmc_test.c
    @@ -44,7 +44,7 @@ static int mmc_test_set_blksize(struct mmc_test_card *test, unsigned size)

    cmd.opcode = MMC_SET_BLOCKLEN;
    cmd.arg = size;
    - cmd.flags = MMC_RSP_R1 | MMC_CMD_AC;
    + cmd.flags = MMC_RSP_SPI_R1;
    ret = mmc_wait_for_cmd(test->card->host, &cmd, 0);
    if (ret)
    return ret;
    @@ -70,14 +70,14 @@ static void mmc_test_prepare_mrq(struct mmc_test_card *test,
    }

    mrq->cmd->arg = dev_addr;
    - mrq->cmd->flags = MMC_RSP_R1 | MMC_CMD_ADTC;
    + mrq->cmd->flags = MMC_RSP_SPI_R1;

    if (blocks == 1)
    mrq->stop = NULL;
    else {
    mrq->stop->opcode = MMC_STOP_TRANSMISSION;
    mrq->stop->arg = 0;
    - mrq->stop->flags = MMC_RSP_R1B | MMC_CMD_AC;
    + mrq->stop->flags = MMC_RSP_SPI_R1;
    }

    mrq->data->blksz = blksz;
    @@ -103,7 +103,7 @@ static int mmc_test_wait_busy(struct mmc_test_card *test)

    cmd.opcode = MMC_SEND_STATUS;
    cmd.arg = test->card->rca << 16;
    - cmd.flags = MMC_RSP_R1 | MMC_CMD_AC;
    + cmd.flags = MMC_RSP_SPI_R2;

    ret = mmc_wait_for_cmd(test->card->host, &cmd, 0);
    if (ret)
    @@ -155,10 +155,10 @@ static int mmc_test_buffer_transfer(struct mmc_test_card *test,
    if (data.error)
    return data.error;

    - ret = mmc_test_wait_busy(test);
    +/* ret = mmc_test_wait_busy(test);
    if (ret)
    return ret;
    -
    +*/
    return 0;
    }

    @@ -240,7 +240,7 @@ static void mmc_test_prepare_broken_mrq(struct mmc_test_card *test,
    MMC_WRITE_BLOCK : MMC_READ_SINGLE_BLOCK;
    mrq->stop = NULL;
    } else {
    - mrq->cmd->opcode = MMC_SEND_STATUS;
    + mrq->cmd->opcode = MMC_SEND_CID;
    mrq->cmd->arg = test->card->rca << 16;
    }
    }
    @@ -333,7 +333,7 @@ static int mmc_test_simple_transfer(struct mmc_test_card *test,

    mmc_wait_for_req(test->card->host, &mrq);

    - mmc_test_wait_busy(test);
    + //mmc_test_wait_busy(test);

    return mmc_test_check_result(test, &mrq);
    }
    @@ -367,7 +367,7 @@ static int mmc_test_broken_transfer(struct mmc_test_card *test,

    mmc_wait_for_req(test->card->host, &mrq);

    - mmc_test_wait_busy(test);
    + //mmc_test_wait_busy(test);

    return mmc_test_check_broken_result(test, &mrq);
    }

    --
    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/

  2. Re: mmc_test with mmc_spi

    On Thu, 24 Jul 2008 15:23:38 +0200
    Thomas Kunze wrote:

    > Hi Pierre,
    >
    > I wrote a small hack to be able to use the mmc_test driver on mmc-spi host. You or somebody else might find it useful.
    > All test but "Correct xfer_size at write (start failure)", "Correct xfer_size at read (start failure)" and "Correct xfer_size
    > at write (midway failure)" passed.
    > I'm not sure what these tests try to do and how they do it, so I don't know if my modifcations of mmc_test, my spi driver or the
    > mmc-spi driver are responsible.
    >
    > It would be great if you could provide some insight.
    >


    I haven't really thought about the SPI part that much. It has just the
    one driver, so bugs should not be that reoccuring. There's no harm in
    making mmc_test handle it though.

    I don't know why those tests fail. There's a bit hackish, so they might
    not work as intended with the SPI version of the protocol. Basically,
    the send and invalid request to the controller where the card will stop
    the data transaction too early. This is a crude test to make sure the
    controller doesn't over-estimate the amount of data transferred.

    Rgds
    --
    -- Pierre Ossman

    Linux kernel, MMC maintainer http://www.kernel.org
    rdesktop, core developer http://www.rdesktop.org

    WARNING: This correspondence is being monitored by the
    Swedish government. Make sure your server uses encryption
    for SMTP traffic and consider using PGP for end-to-end
    encryption.

    -----BEGIN PGP SIGNATURE-----
    Version: GnuPG v2.0.9 (GNU/Linux)

    iEYEARECAAYFAkiLtJAACgkQ7b8eESbyJLgi0QCgqYZrFa2BPv TU4Hhmc5+OobDn
    pSIAoPQBy6yYa2cLSfPoGNrOqnLe7EMt
    =o3oo
    -----END PGP SIGNATURE-----


+ Reply to Thread