android 内核对S5PC110睡眠模式的支持

     在s5pc110平台发现一个现象,睡眠的时候过了一段时间系统自动唤醒了,然后马上就又睡眠下去,期间LCD,backligh都没有亮。当初以为是哪个中断触发了系统唤醒,可细想想不对啊,如果按键中断唤醒话怎么马上就睡下去了呢!带着这个问题大致看了下代码,原来是RTC造成的!这bug不过现在还不知道要不要改!!^_^
     首先得清楚平台下支持哪些模式
 
了解在睡眠的模式的时候支持哪些wake-up的mode
 
 

点击(此处)折叠或打开

  1. static void s5pv210_pm_prepare(void)
  2. {
  3.     unsigned int tmp;

  4.     /* ensure at least INFORM0 has the resume address */
  5.     __raw_writel(virt_to_phys(s3c_cpu_resume), S5P_INFORM0);

  6.     /* WFI for SLEEP mode configuration by SYSCON */
  7.     tmp = __raw_readl(S5P_PWR_CFG);
  8.     tmp &= S5P_CFG_WFI_CLEAN;
  9.     tmp |= S5P_CFG_WFI_SLEEP;
  10.     __raw_writel(tmp, S5P_PWR_CFG);

  11.     printk("hbb test %s read S5P_PWR_CFG = %0x\n",__func__,tmp);

  12.     /* SYSCON interrupt handling disable */
  13.     tmp = __raw_readl(S5P_OTHERS);
  14.     tmp |= S5P_OTHER_SYSC_INTOFF;
  15.     __raw_writel(tmp, S5P_OTHERS);

  16.     __raw_writel(0xffffffff, (VA_VIC0 + VIC_INT_ENABLE_CLEAR));
  17.     __raw_writel(0xffffffff, (VA_VIC1 + VIC_INT_ENABLE_CLEAR));
  18.     __raw_writel(0xffffffff, (VA_VIC2 + VIC_INT_ENABLE_CLEAR));
  19.     __raw_writel(0xffffffff, (VA_VIC3 + VIC_INT_ENABLE_CLEAR));

  20.     tmp = __raw_readl(S5P_WAKEUP_MASK);
  21.     tmp &= ~(1 << 1 | 1 << 5);
  22.     __raw_writel(tmp, S5P_WAKEUP_MASK);

  23.     printk("hbb test %s read S5P_WAKEUP_MASK = %0x\n",__func__,tmp);
  24.     
  25.     s3c_pm_do_save(sromc_save, ARRAY_SIZE(sromc_save));
  26.     s3c_pm_do_save(core_save, ARRAY_SIZE(core_save));
  27. }
上面那段代码很好解释在sleep的模式的仅支持EINT 和RTC wake-up了!
现在再看看唤醒的时候

点击(此处)折叠或打开

  1. static inline void s3c_pm_arch_show_resume_irqs(void)
  2. {
  3.     printk( "S5P_WAKEUP_STAT 0x%X\n", __raw_readl(S5P_WAKEUP_STAT));
  4.     printk("%s: s3c_irqwake_eintmask = 0x%x \n",__func__,__raw_readl(S5P_EINT_WAKEUP_MASK));
  5.     printk( "EINT_PEND 0x%X, 0x%X, 0x%X, 0x%X\n",
  6.         __raw_readl(S5P_EINT_PEND(0)), __raw_readl(S5P_EINT_PEND(1)),
  7.         __raw_readl(S5P_EINT_PEND(2)), __raw_readl(S5P_EINT_PEND(3)));
  8. }
发现在自动唤醒的时候打印S5P_WAKEUP_STAT的value为0x2,再看看下面图

 
<script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>
阅读(451) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值