[linux-sunxi] [PATCH] Disable HS-DDR mode for Olimex A64-OLinuXino variants with eMMC

Philip Rinn rinni at inventati.org
Sat Oct 24 17:54:53 EDT 2020


Hi Clément,

On 24.10.20 at 15:00, Clément Péron wrote:
> Hi Philip
> 
> <snip>
> 
>>>
>>> I catched a slight difference between the mainline and vendor driver
>>> in DDR mode.
>>>
>>> the phase is set to 1
>>> case MMC_TIMING_UHS_DDR50:
>>> case MMC_TIMING_MMC_DDR52:
>>> dat_drv_ph = 1;
>>> speed_mod = SM2_HSDDR52_DDR50;
>>> break;
>>>
>>> Could you add a hack in DDR mode and see if it's working better ?
>>>
>>> Maybe line 738:
>>>
>>> #define SDXC_REG_DRV_DL (0x0140)
>>> #define SDXC_DAT_DRV_PH_SEL BIT(17)
>>>
>>> rval = mmc_readl(host, REG_DRV_DL);
>>> rval |= SDXC_DAT_DRV_PH_SEL;
>>> mmc_writel(host, REG_DRV_DL, rval);
>>
>> I tried with this patch but no luck, see log below

<snip>

> Sorry this will not work, as H6 uses new timing mode the function will
> return before setting the DRV_PHASE.

I'm actually testing on an A64 - but that shouldn't matter, right?

> Could you retry with a patch like this :
> https://github.com/clementperon/linux/commit/287a62a6e9ccda3ade9b407ce12ee7db0865b41b.patch

Unfortunately that didn't work either:

[...]
[    3.755418] sunxi-mmc 1c0f000.mmc: initialized, max. request size: 16384 KB,
uses new timings mode
[    3.755432] sunxi-mmc 1c0f000.mmc: MMC version: 0.0.0
[    3.758685] sunxi-mmc 1c10000.mmc: allocated mmc-pwrseq
[    3.783369] sunxi-mmc 1c10000.mmc: initialized, max. request size: 16384 KB,
uses new timings mode
[    3.783382] sunxi-mmc 1c10000.mmc: MMC version: 0.0.0
[    3.798267] mmc0: new high speed SDHC card at address aaaa
[    3.799776] mmcblk0: mmc0:aaaa SC16G 14.8 GiB
[    3.804248]  mmcblk0: p1
[    3.811371] sunxi-mmc 1c11000.mmc: initialized, max. request size: 2048 KB,
uses new timings mode
[    3.811385] sunxi-mmc 1c11000.mmc: MMC version: 0.0.0
[...]
[    3.936574] sunxi-mmc 1c11000.mmc: Setting Phase delay
[    3.936890] mmc2: new DDR MMC card at address 0001
[    3.938617] mmcblk2: mmc2:0001 Q2J55L 7.09 GiB
[    3.939692] mmcblk2boot0: mmc2:0001 Q2J55L partition 1 16.0 MiB
[    3.940519] mmcblk2boot1: mmc2:0001 Q2J55L partition 2 16.0 MiB
[    3.943067] sunxi-mmc 1c11000.mmc: data error, sending stop command
[    3.943083] sunxi-mmc 1c11000.mmc: send stop command failed
[...]
[    4.009680] blk_update_request: I/O error, dev mmcblk2, sector 0 op 0x0:(READ)
flags 0x0 phys_seg 1 prio class 0
[    4.009692] Buffer I/O error on dev mmcblk2, logical block 0, async page read
[    4.009817] sunxi-mmc 1c11000.mmc: data error, sending stop command
[    4.009899] blk_update_request: I/O error, dev mmcblk2, sector 2 op 0x0:(READ)
flags 0x0 phys_seg 6 prio class 0
[    4.009906] Buffer I/O error on dev mmcblk2, logical block 2, async page read
[    4.009914] Buffer I/O error on dev mmcblk2, logical block 3, async page read
[    4.009920] Buffer I/O error on dev mmcblk2, logical block 4, async page read
[    4.009926] Buffer I/O error on dev mmcblk2, logical block 5, async page read
[    4.009931] Buffer I/O error on dev mmcblk2, logical block 6, async page read
[    4.009937] Buffer I/O error on dev mmcblk2, logical block 7, async page read
[...]

> Thanks for your test,
> Clement

Thanks for trying to fix that :-)
Philip



More information about the linux-arm-kernel mailing list