RV1106低功耗休眠与唤醒如何实现?

  • 您好,休眠唤醒的实现方式如下
    1 板级支持文件中的 RK_KERNEL_DEFCONFIG_FRAGMENT 属性添加 rv1106-pm.config
    2 开启休眠唤醒打印(此步骤可省略)

    Code: Select all

    echo 1 > /sys/power/pm_print_times
    
    3 进入休眠

    Code: Select all

    echo mem > /sys/power/state
    
    4 添加唤醒源
    设备树添加

    Code: Select all

    / {
    	gpio-keys {
    		compatible = "gpio-keys";
    		autorepeat;
    		pinctrl-names = "default";
    		pinctrl-0 = <&pwr_key>;
    		power-key {
    			gpios = <&gpioX RK_PXX GPIO_ACTIVE_HIGH>;
    			linux,code = <KEY_POWER>;
    			label ="GPIO Key Power";
    			debounce-interval = <100>;
    			wakeup-source;
    		};
    	};
    };
    
    &pinctrl {
    	buttons {
    		pwr_key:pwr-key{
    			rockchip,pins = <X RK_PXX RK_FUNC_GPIO &pcfg_pull_none>;
    		};
    	};
    };
    
    5 触发唤醒源
    短接触发引脚和GND

    打印日志如下

    Code: Select all

    [root@luckfox root]# echo mem > /sys/power/state [   18.433027] PM: suspend entry (s2idle)
    
    [   18.581153] Filesystems sync: 0.148 seconds
    [   18.581373] Freezing user space processes ... (elapsed 0.001 seconds) done.
    [   18.582564] OOM killer disabled.
    [   18.582570] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
    [   18.583697] printk: Suspending console(s) (use no_console_suspend to debug)
    [   18.658434] android_work: sent uevent USB_STATE=DISCONNECTED
    [   26.368044] PM: pm_system_irq_wakeup: 66 triggered gpio_keys
    [   26.369426] rk_gmac-dwmac ffa80000.ethernet: init for RMII
    [root@luckfox root]# [   26.441535] rk_gmac-dwmac ffa80000.ethernet eth0: configuring for phy/rmii link mode
    [   26.441722] dwmac4: Master AXI performs any burst length
    [   26.441741] rk_gmac-dwmac ffa80000.ethernet eth0: No Safety Features support found
    [   26.441755] rk_gmac-dwmac ffa80000.ethernet eth0: PTP not supported by HW
    [   26.513537] rockchip-vop ff990000.vop: [drm:vop_crtc_atomic_enable] Update mode to 720x720p49, type: 17
    [   26.616978] dwc3 ffb00000.usb: device reset
    [   26.690168] android_work: sent uevent USB_STATE=CONNECTED
    [   26.699666] android_work: sent uevent USB_STATE=CONFIGURED
    [   26.730790] OOM killer enabled.
    [   26.730792] Restarting tasks ... done.
    [   26.740708] Resume caused by IRQ 66, gpio_keys
    [   26.740713] PM: suspend exit
    
    注意:该方法目前还存在问题休眠时会概率性出现EMMC错误只能通过重启唤醒,请谨慎使用