Re: Sandisk MMC I/O errors

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



2014-08-07 8:59 GMT+02:00 Jean-Michel Hautbois
<jean-michel.hautbois@xxxxxxxxxxx>:
> 2014-08-06 16:21 GMT+02:00 Jean-Michel Hautbois
> <jean-michel.hautbois@xxxxxxxxxxx>:
>> 2014-08-06 15:37 GMT+02:00 Fabio Estevam <festevam@xxxxxxxxx>:
>>> On Wed, Aug 6, 2014 at 10:27 AM, Jean-Michel Hautbois
>>> <jean-michel.hautbois@xxxxxxxxxxx> wrote:
>>>> 2014-08-06 13:44 GMT+02:00 Jaehoon Chung <jh80.chung@xxxxxxxxxxx>:
>>>>> Hi,
>>>>
>>>> Hi Jaehoon,
>>>>
>>>>> In my case, -84 error is related with timing.
>>>>> I recommend to check your clock source or pin strength.
>
> I have dumped /sys/kernel/debug/mmc1/ios in both kernel releases.
>
> In the current kernel (3.16) :
> $> cat /sys/kernel/debug/mmc1/ios
> clock:          52000000 Hz
> actual clock:   49500000 Hz
> vdd:            21 (3.3 ~ 3.4 V)
> bus mode:       2 (push-pull)
> chip select:    0 (don't care)
> power mode:     2 (on)
> bus width:      3 (8 bits)
> timing spec:    8 (mmc DDR52)
> signal voltage: 0 (3.30 V)
>
> In the Freescale kernel (3.10.17) :
> $> cat /sys/kernel/debug/mmc1/ios
> clock:          52000000 Hz
> actual clock:   49500000 Hz
> vdd:            7 (1.65 - 1.95 V)
> bus mode:       2 (push-pull)
> chip select:    0 (don't care)
> power mode:     2 (on)
> bus width:      3 (8 bits)
> timing spec:    7 (sd uhs DDR50)
> signal voltage: 0 (3.30 V)
>
> As you can see, there is at least too differences : VDD is not the
> same I don't know why yet, and neither is timing spec. This seems to
> be the real cause...
> Investigating now, but any advice is interesting ! :)
>
> Thanks,
> JM

OK, I juste tested to get back on part of the commit
79f7ae7c45a6ccf04e2908337461dee615f6afb0 :

diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
index 1ab5f3a..e22d851 100644
--- a/drivers/mmc/core/mmc.c
+++ b/drivers/mmc/core/mmc.c
@@ -1264,7 +1264,7 @@ static int mmc_init_card(struct mmc_host *host, u32 ocr,
                                        goto err;
                        }
                        mmc_card_set_ddr_mode(card);
-                       mmc_set_timing(card->host, MMC_TIMING_UHS_DDR50);
+                       mmc_set_timing(card->host, MMC_TIMING_MMC_DDR52);
                        mmc_set_bus_width(card->host, bus_width);
                }
        }


I just did the inverse, that means using MMC_TIMING_UHS_DDR50 and not
MMC_TIMING_MMC_DDR52 and I don't have any errors now.

Reverting the commit is not the solution, I need to know why the
timings are not the good ones now...
JM
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux