/******************************************************************************** * Allwinner Technology, All Right Reserved. 2006-2010 Copyright (c) * * File: standby.c * * Description: This file implements standby for AW1681 DRAM controller * * History: * * date author version note * * 20140926 liuke v0.1 initial * * * * ********************************************************************************/ #define STANDBY_TEST #ifdef STANDBY_TEST #include "dram.h" //default config __u32 dram_crc_en = 0; __u32 dram_crc_start = 0x40000000; __u32 dram_crc_len = (1024 * 1024); __s32 standby_set_dram_crc_paras(__u32 en, __u32 start, __u32 len) { dram_crc_en = en; dram_crc_start = start; dram_crc_len = len; return 0; } __u32 standby_dram_crc(void) { __u32 *pdata = (__u32 *)(dram_crc_start); __u32 crc = 0; printk("crc begin...\n"); if(0 != dram_crc_en){ printk("start:%x len:%x\n", dram_crc_start, dram_crc_len); while (pdata < (__u32 *)(dram_crc_start + dram_crc_len)) { crc += *pdata; pdata++; } } printk("crc finish...\n"); return crc; } unsigned int dram_power_save_process() { unsigned int reg_val =0; unsigned int i,n = 2; /* disable all master access */ mctl_write_w(0,MC_MAER);//close all master /* DRAM power down. */ //1.enter self refresh reg_val = mctl_read_w(PWRCTL); reg_val |= 0x1<<0; reg_val |= (0x1<<8); mctl_write_w(reg_val,PWRCTL); //confirm dram controller has enter selfrefresh while(((mctl_read_w(STATR)&0x7) != 0x3)); /* 2.disable CK and power down pad include AC/DX/ pad, * ZQ calibration module power down */ for(i=0; i