1 /* 2 * (C) Copyright 2007-2012 3 * Allwinner Technology Co., Ltd. <www.allwinnertech.com> 4 * Berg Xing <bergxing@allwinnertech.com> 5 * Tom Cubie <tangliang@allwinnertech.com> 6 * 7 * Sunxi platform dram register definition. 8 * 9 * SPDX-License-Identifier: GPL-2.0+ 10 */ 11 12 #ifndef _SUNXI_DRAM_H 13 #define _SUNXI_DRAM_H 14 15 #include <asm/io.h> 16 #include <linux/types.h> 17 18 /* dram regs definition */ 19 #if defined(CONFIG_MACH_SUN6I) 20 #include <asm/arch/dram_sun6i.h> 21 #else 22 #include <asm/arch/dram_sun4i.h> 23 #endif 24 25 unsigned long sunxi_dram_init(void); 26 27 /* 28 * Wait up to 1s for value to be set in given part of reg. 29 */ 30 static inline void mctl_await_completion(u32 *reg, u32 mask, u32 val) 31 { 32 unsigned long tmo = timer_get_us() + 1000000; 33 34 while ((readl(reg) & mask) != val) { 35 if (timer_get_us() > tmo) 36 panic("Timeout initialising DRAM\n"); 37 } 38 } 39 40 #endif /* _SUNXI_DRAM_H */ 41