Blackfin arch: Fix Bug - Kernel does not boot if re-program clocks
On BF561 EBIU_SDGCTL bit 31 controls the SDRAM external data path width, typically set 0 for a 32-bit bus width. On other Blackfin derivatives this bit should be set by default. Signed-off-by: Michael Hennerich <michael.hennerich@analog.com> Signed-off-by: Bryan Wu <cooloney@kernel.org>
This commit is contained in:
Родитель
41245ac595
Коммит
331693129d
|
@ -115,7 +115,7 @@
|
|||
#define mem_SDRRC (((CONFIG_SCLK_HZ / 1000) * SDRAM_Tref) / SDRAM_NRA) - (SDRAM_tRAS_num + SDRAM_tRP_num)
|
||||
|
||||
/* Enable SCLK Out */
|
||||
#define mem_SDGCTL (0x80000000 | SCTLE | SDRAM_CL | SDRAM_tRAS | SDRAM_tRP | SDRAM_tRCD | SDRAM_tWR | PSS)
|
||||
#define mem_SDGCTL (SCTLE | SDRAM_CL | SDRAM_tRAS | SDRAM_tRP | SDRAM_tRCD | SDRAM_tWR | PSS)
|
||||
#else
|
||||
#define mem_SDRRC CONFIG_MEM_SDRRC
|
||||
#define mem_SDGCTL CONFIG_MEM_SDGCTL
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
#include <asm/clocks.h>
|
||||
#include <asm/mem_init.h>
|
||||
|
||||
#define SDGCTL_WIDTH (1 << 31) /* SDRAM external data path width */
|
||||
#define PLL_CTL_VAL \
|
||||
(((CONFIG_VCO_MULT & 63) << 9) | CLKIN_HALF | \
|
||||
(PLL_BYPASS << 8) | (ANOMALY_05000265 ? 0x8000 : 0))
|
||||
|
@ -76,7 +77,7 @@ void init_clocks(void)
|
|||
bfin_write_PLL_DIV(CONFIG_CCLK_ACT_DIV | CONFIG_SCLK_DIV);
|
||||
#ifdef EBIU_SDGCTL
|
||||
bfin_write_EBIU_SDRRC(mem_SDRRC);
|
||||
bfin_write_EBIU_SDGCTL(mem_SDGCTL);
|
||||
bfin_write_EBIU_SDGCTL((bfin_read_EBIU_SDGCTL() & SDGCTL_WIDTH) | mem_SDGCTL);
|
||||
#else
|
||||
bfin_write_EBIU_RSTCTL(bfin_read_EBIU_RSTCTL() & ~(SRREQ));
|
||||
do_sync();
|
||||
|
|
Загрузка…
Ссылка в новой задаче