要用闹钟来唤醒休眠中的 am335x, 用的是linux系统。TI代码中RTC好像没有唤醒功能,修改了一下代码在 drivers/rtc/rtc-omap.c 文件中 omap_rtc_probe函数的
rtc = rtc_device_register(pdev->name, &pdev->dev,
&omap_rtc_ops, THIS_MODULE);
前(文件的324行)添加了一行:
device_init_wakeup(&pdev->dev, 1);
结果在休眠测试时出现问题(串口打印如下):
。。。。。。
[ 368.080780] call omap_uart.4+ returned 0 after 29 usecs
[ 368.086334] calling omap_uart.5+ @ 1175
[ 368.090484] call omap_uart.5+ returned 0 after 29 usecs
[ 368.096038] calling omap_rtc+ @ 1175
[ 368.099914] ————[ cut here ]————
[ 368.104827] WARNING: at kernel/irq/manage.c:513 irq_set_irq_wake+0xcc/0xf8()
[ 368.112274] Unbalanced IRQ 76 wake disable
[ 368.116607] Modules linked in: [last unloaded: g_mass_storage]
[ 368.122772] Backtrace:
[ 368.125396] [<c0018764>] (dump_backtrace+0x0/0x110) from [<c047125c>] (dump_stack+0x18/0x1c)
[ 368.134307] r6:c0561274 r5:00000201 r4:c6cc9d60 r3:60000093
[ 368.140380] [<c0471244>] (dump_stack+0x0/0x1c) from [<c0042ab4>] (warn_slowpath_common+0x5c/0x6c)
[ 368.149780] [<c0042a58>] (warn_slowpath_common+0x0/0x6c) from [<c0042b68>] (warn_slowpath_fmt+0x38/0x40)
[ 368.159790] r8:00000010 r7:0000004c r6:00000000 r5:00000000 r4:c0653214
[ 368.166717] r3:00000009
[ 368.169525] [<c0042b30>] (warn_slowpath_fmt+0x0/0x40) from [<c0079420>] (irq_set_irq_wake+0xcc/0xf8)
[ 368.179199] r3:0000004c r2:c056132c
[ 368.183013] [<c0079354>] (irq_set_irq_wake+0x0/0xf8) from [<c0309f5c>] (omap_rtc_resume+0x38/0x68)
。。。。
问题出在休眠过程调用 disable_irq_wake 时 desc->wake_depth 的值为0,
一直不能解决,
还请多多指教
meifeng li:
问题解决,不过目前还不能唤醒