OSDN Git Service

mmc: core: add proper be32 annotation
authorWinkler, Tomas <tomas.winkler@intel.com>
Sun, 2 Apr 2017 20:56:03 +0000 (23:56 +0300)
committerUlf Hansson <ulf.hansson@linaro.org>
Mon, 24 Apr 2017 19:42:19 +0000 (21:42 +0200)
Annotate big endian values correctly and make sparse happy.
In mmc_app_send_scr remove scr function parameter as it was
updating card->raw_scr anyway.

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
drivers/mmc/core/mmc_ops.c
drivers/mmc/core/sd.c
drivers/mmc/core/sd_ops.c
drivers/mmc/core/sd_ops.h

index 24c58d2..78f75f0 100644 (file)
@@ -305,7 +305,7 @@ mmc_send_cxd_data(struct mmc_card *card, struct mmc_host *host,
 int mmc_send_csd(struct mmc_card *card, u32 *csd)
 {
        int ret, i;
-       u32 *csd_tmp;
+       __be32 *csd_tmp;
 
        if (!mmc_host_is_spi(card->host))
                return mmc_send_cxd_native(card->host, card->rca << 16,
@@ -319,7 +319,7 @@ int mmc_send_csd(struct mmc_card *card, u32 *csd)
        if (ret)
                goto err;
 
-       for (i = 0;i < 4;i++)
+       for (i = 0; i < 4; i++)
                csd[i] = be32_to_cpu(csd_tmp[i]);
 
 err:
@@ -330,7 +330,7 @@ err:
 int mmc_send_cid(struct mmc_host *host, u32 *cid)
 {
        int ret, i;
-       u32 *cid_tmp;
+       __be32 *cid_tmp;
 
        if (!mmc_host_is_spi(host)) {
                if (!host->card)
@@ -347,7 +347,7 @@ int mmc_send_cid(struct mmc_host *host, u32 *cid)
        if (ret)
                goto err;
 
-       for (i = 0;i < 4;i++)
+       for (i = 0; i < 4; i++)
                cid[i] = be32_to_cpu(cid_tmp[i]);
 
 err:
index 89531b4..d109634 100644 (file)
@@ -225,7 +225,7 @@ static int mmc_decode_scr(struct mmc_card *card)
 static int mmc_read_ssr(struct mmc_card *card)
 {
        unsigned int au, es, et, eo;
-       u32 *raw_ssr;
+       __be32 *raw_ssr;
        int i;
 
        if (!(card->csd.cmdclass & CCC_APP_SPEC)) {
@@ -853,7 +853,7 @@ int mmc_sd_setup_card(struct mmc_host *host, struct mmc_card *card,
                /*
                 * Fetch SCR from card.
                 */
-               err = mmc_app_send_scr(card, card->raw_scr);
+               err = mmc_app_send_scr(card);
                if (err)
                        return err;
 
index 9d5824a..47056d8 100644 (file)
@@ -232,14 +232,14 @@ int mmc_send_relative_addr(struct mmc_host *host, unsigned int *rca)
        return 0;
 }
 
-int mmc_app_send_scr(struct mmc_card *card, u32 *scr)
+int mmc_app_send_scr(struct mmc_card *card)
 {
        int err;
        struct mmc_request mrq = {};
        struct mmc_command cmd = {};
        struct mmc_data data = {};
        struct scatterlist sg;
-       void *data_buf;
+       __be32 *scr;
 
        /* NOTE: caller guarantees scr is heap-allocated */
 
@@ -250,8 +250,8 @@ int mmc_app_send_scr(struct mmc_card *card, u32 *scr)
        /* dma onto stack is unsafe/nonportable, but callers to this
         * routine normally provide temporary on-stack buffers ...
         */
-       data_buf = kmalloc(sizeof(card->raw_scr), GFP_KERNEL);
-       if (data_buf == NULL)
+       scr = kmalloc(sizeof(card->raw_scr), GFP_KERNEL);
+       if (!scr)
                return -ENOMEM;
 
        mrq.cmd = &cmd;
@@ -267,23 +267,22 @@ int mmc_app_send_scr(struct mmc_card *card, u32 *scr)
        data.sg = &sg;
        data.sg_len = 1;
 
-       sg_init_one(&sg, data_buf, 8);
+       sg_init_one(&sg, scr, 8);
 
        mmc_set_data_timeout(&data, card);
 
        mmc_wait_for_req(card->host, &mrq);
 
-       memcpy(scr, data_buf, sizeof(card->raw_scr));
-       kfree(data_buf);
+       card->raw_scr[0] = be32_to_cpu(scr[0]);
+       card->raw_scr[1] = be32_to_cpu(scr[1]);
+
+       kfree(scr);
 
        if (cmd.error)
                return cmd.error;
        if (data.error)
                return data.error;
 
-       scr[0] = be32_to_cpu(scr[0]);
-       scr[1] = be32_to_cpu(scr[1]);
-
        return 0;
 }
 
index 784f8e6..0e6c3d5 100644 (file)
@@ -22,7 +22,7 @@ int mmc_app_set_bus_width(struct mmc_card *card, int width);
 int mmc_send_app_op_cond(struct mmc_host *host, u32 ocr, u32 *rocr);
 int mmc_send_if_cond(struct mmc_host *host, u32 ocr);
 int mmc_send_relative_addr(struct mmc_host *host, unsigned int *rca);
-int mmc_app_send_scr(struct mmc_card *card, u32 *scr);
+int mmc_app_send_scr(struct mmc_card *card);
 int mmc_sd_switch(struct mmc_card *card, int mode, int group,
        u8 value, u8 *resp);
 int mmc_app_sd_status(struct mmc_card *card, void *ssr);