在线时间0 小时
UID424083
注册时间2013-3-29
NXP金币0
该用户从未签到
新手上路

- 积分
- 5
- 最后登录
- 1970-1-1
|
情况是这样的,机子跑的是android2.3.4每次用按键关机再重启后Lowpower 寄存器都会被复位,所以每次驱动都会重新设置默认时间。但是关机的情况下测RTC的后备电压是1.17V,RTC的时钟信号是32.768kHZ,但是驱动里probe每次都读到SRTC_LPPDR_INIT寄存器的值都是零,再重设置SRTC_LPPDR_INIT为0x41736166。下面是我的probe涵数里关于RTC的设置部分 if(__raw_readl(ioaddr + SRTC_LPPDR) != SRTC_LPPDR_INIT)
{
/* initialize glitch detect */
__raw_writel(SRTC_LPPDR_INIT, ioaddr + SRTC_LPPDR);
udelay(100);
/* clear lp interrupt status */
__raw_writel(0xFFFFFFFF, ioaddr + SRTC_LPSR);
udelay(100);
/* move out of init state */
__raw_writel((SRTC_LPCR_IE | SRTC_LPCR_NSA),
ioaddr + SRTC_LPCR);
udelay(100);
while ((__raw_readl(ioaddr + SRTC_LPSR) & SRTC_LPSR_IES) == 0)
;
/* move out of non-valid state */
__raw_writel((SRTC_LPCR_IE | SRTC_LPCR_NVE | SRTC_LPCR_NSA |
SRTC_LPCR_EN_LP), ioaddr + SRTC_LPCR);
udelay(100);
while ((__raw_readl(ioaddr + SRTC_LPSR) & SRTC_LPSR_NVES) == 0)
;
__raw_writel(0xFFFFFFFF, ioaddr + SRTC_LPSR);
udelay(100);
bIsInit = 0;
}
下面是重设置RTC 的CODE,也是在probe里:
if(!bIsInit)
{
struct rtc_time semisky_time = {
.tm_sec = 8,
.tm_min = DEF_TIME_MIN,
.tm_hour = DEF_TIME_HOUR,
.tm_mday = DEF_TIME_DAY,
.tm_mon = DEF_TIME_MON - 1,
.tm_year = DEF_TIME_YEAR - 1900
};
printk("--->set time 2012.1.11
|
|