On 19.12.2016 11:33, Andre Przywara wrote: > Hi, > > On 19/12/16 10:01, Maxime Ripard wrote: >> On Mon, Dec 19, 2016 at 01:50:09AM +0000, Andre Przywara wrote: >>> According to Jens disabling the on-die-termination should set bit 5, >>> not bit 1 in the respective register. Fix this. >>> >>> Reported-by: Jens Kuske <jensku...@gmail.com> >>> Signed-off-by: Andre Przywara <andre.przyw...@arm.com> >>> --- >>> arch/arm/mach-sunxi/dram_sun8i_h3.c | 2 +- >>> 1 file changed, 1 insertion(+), 1 deletion(-) >>> >>> diff --git a/arch/arm/mach-sunxi/dram_sun8i_h3.c >>> b/arch/arm/mach-sunxi/dram_sun8i_h3.c >>> index 6ee73ae..1bdd738 100644 >>> --- a/arch/arm/mach-sunxi/dram_sun8i_h3.c >>> +++ b/arch/arm/mach-sunxi/dram_sun8i_h3.c >>> @@ -438,7 +438,7 @@ static int mctl_channel_init(uint16_t socid, struct >>> dram_para *para) >>> clrsetbits_le32(&mctl_ctl->dx[i].gcr, (0x3 << 4) | >>> (0x1 << 1) | (0x3 << 2) | (0x3 << 12) | >>> (0x3 << 14), >>> - IS_ENABLED(CONFIG_DRAM_ODT_EN) ? 0x0 : 0x2); >>> + IS_ENABLED(CONFIG_DRAM_ODT_EN) ? 0x0 : 0x20); >> >> You should use a define here if that bit function is known. > > I agree, and I tried but I failed to find one. That part seems to differ > from the Keystone documentation, which doesn't know an ODT _dis_able bit > at all. > > Maybe Jens can add his source?
I think DXnGCR bits 5:4 mean: 0x0 = dynamic ODT 0x1 = ODT always on 0x2 = ODT off But its only guessed, there is no documentation. Compare to A83 boot0 code [1], setting dram_odt_en parameter in H3 boot0 to these values results in matching changes in bits 5:4. Jens [1] https://github.com/allwinner-zh/bootloader/blob/182661abb29d5467a15eb83cf9824e6471d80d8d/basic_loader/bsp/bsp_for_a83/init_dram/mctl_hal.c#L691-L726 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot